摘要:傳輸控制協(xié)議(TCP)承載了公共網(wǎng)絡(luò)和專用內(nèi)部網(wǎng)絡(luò)的絕大多數(shù)的數(shù)據(jù)傳輸。Web所使用的HTTP、文件傳輸、文件共享和系統(tǒng)備份通常都是使用TCP。Windows桌面配置在啟動(dòng)加載時(shí)就是基于TCP。
然而,如果您企業(yè)的系統(tǒng)是備份到遠(yuǎn)程站點(diǎn),而且是到一個(gè)相當(dāng)遠(yuǎn)的距離,那么您企業(yè)可能僅僅只使用了您所購(gòu)買的帶寬的非常一小部分。當(dāng)您企業(yè)的安全攝像機(jī)采用遠(yuǎn)程或是使用無線連接的網(wǎng)絡(luò)傳輸視頻錄像時(shí),視頻錄像的數(shù)據(jù)會(huì)傳輸?shù)梅浅p緩或發(fā)生傳輸中斷。
TCP性能差主要有兩大原因:顯著的網(wǎng)絡(luò)延遲和網(wǎng)絡(luò)損耗。的確,TCP已被重新設(shè)計(jì)以重新傳輸丟失的數(shù)據(jù)段,但其很可能會(huì)被推遲。在很長(zhǎng)的電路的情況下,更高的延遲所導(dǎo)致的結(jié)果使TCP必須限制其傳輸速率,以便使其不會(huì)超出接收器的緩沖區(qū)。
而由于大多數(shù)網(wǎng)絡(luò)分析工具能夠告訴企業(yè)其TCP存在性能問題,但卻無法解釋這些問題為什么會(huì)發(fā)生,進(jìn)而使得上述問題進(jìn)一步加劇。鑒于此,業(yè)界是否有相關(guān)糾正措施方面的建議呢。
在我們對(duì)該問題進(jìn)行深入挖掘之前,或許我們可以來分析一下哪些方法可以幫助企業(yè)提高TCP性能。我們必須牢記,TCP有一套特定的算法,控制其行為。我們無法改變?cè)撍惴ǎ覀兛梢赃m應(yīng)該算法,以便更有效地利用該算法。
1、增加緩沖區(qū)
我們需要盡量減少因網(wǎng)絡(luò)錯(cuò)誤所導(dǎo)致的丟包的可能性。請(qǐng)務(wù)必記住,無線通信是容易出現(xiàn)錯(cuò)誤的,這些錯(cuò)誤通常是網(wǎng)絡(luò)運(yùn)營(yíng)商看不見的。故而您需要與您企業(yè)的網(wǎng)絡(luò)設(shè)備供應(yīng)商溝通,以確保路由器和交換機(jī)的緩沖區(qū)大于傳統(tǒng)的64K字節(jié),這在早期的無線設(shè)備中是常見的。現(xiàn)代的TCP部署傳輸遠(yuǎn)遠(yuǎn)超過了64K字節(jié)的緩沖區(qū)可以容納的數(shù)據(jù)組段。
2、縮短網(wǎng)絡(luò)通信線路
我們必須保持讓網(wǎng)絡(luò)通信線路盡可能的短,這無疑是非常良好的商業(yè)慣例。從紐約到費(fèi)城的備份絕對(duì)遠(yuǎn)遠(yuǎn)快于從紐約到丹佛或紐約到倫敦的備份,即使可用的帶寬和終端系統(tǒng)是相同的。在這種情況下,內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)供應(yīng)商就能夠提供非常顯著的優(yōu)勢(shì)。他們能夠讓內(nèi)容更貼近用戶,減少網(wǎng)絡(luò)延遲,提高傳輸性能。
3、考慮HTTP 流水線技術(shù)
如果一項(xiàng)任務(wù),如文件傳送,可以同時(shí)分離成兩個(gè)或更多的TCP 連接數(shù)(TCP sessions)和轉(zhuǎn)移,可用帶寬的使用將更加有效。這便是HTTP流水線技術(shù)(HTTP pipelining)背后的理念。Netflix網(wǎng)絡(luò)電視的許多客戶就是采用這種方法來迅速實(shí)現(xiàn)電視播放緩沖。
4、更新您企業(yè)的堆棧
我們應(yīng)該盡可能的使用最新的TCP堆棧。最新部署的TCP要比舊版本要好得多。例如,使用Windows XP系統(tǒng)使用的是通常被稱為New Reno的TCP版本。而Windows 7/ 8則使用的是較新的版本的稱為復(fù)合TCP。這個(gè)版本對(duì)于字段損失和其他一些變化有更好的反應(yīng),有助于提高其性能。如果您是一個(gè)Linux用戶,確保您所使用的版本至少是2.3.13。其TCP的部署版本被稱為Cubic。據(jù)研究人員稱,其性能類似于復(fù)合TCP。
5、使用數(shù)據(jù)包分析器
請(qǐng)務(wù)必確保您企業(yè)內(nèi)部至少有一個(gè)人知道如何使用數(shù)據(jù)包分析器。他們將能夠看到,客戶端和服務(wù)器協(xié)商使用TCP中的一些較新的選項(xiàng)。其中一些是選擇性確認(rèn)(SACK),窗口縮放和快速傳輸。盡管分析儀不會(huì)告訴您為什么這些是重要的,但其會(huì)證明他們是被使用的。這將可能指向在兩端的系統(tǒng)較新的TCP協(xié)議棧。
通過上述五大要點(diǎn)的介紹,我們并不想給讀者留下我們不能直接改變TCP算法的印象。我們可以在有限的范圍內(nèi)進(jìn)行改變。例如,在微軟網(wǎng)站上的一些研究表明,我們可以改變TCP協(xié)議棧的一些參數(shù)。
然而,我們認(rèn)為這樣所導(dǎo)致的問題會(huì)和其所能夠解決的問題一樣多,特別是如果我們沒有時(shí)間在即那個(gè)其投入正式生產(chǎn)之前仔細(xì)試驗(yàn)其變化的情況下。我們所建議的以上步驟是安全的,可以為企業(yè)帶來顯著的好處。
HTTP如何發(fā)揮作用
由于瀏覽器的大量使用,HTTP協(xié)議也發(fā)生了一些變化,影響其吞吐量。兩大最為顯著的特點(diǎn)便是持久連接和流水線技術(shù)。幾乎所有的HTTP傳輸均是通過TCP。建立一個(gè)連接到一個(gè)單一的HTTP獲得請(qǐng)求所需要的時(shí)間往往是整個(gè)TCP連接時(shí)間的一個(gè)重要部分,已然相當(dāng)明顯。
當(dāng)考慮到一個(gè)典型的網(wǎng)頁(yè)檢索通常會(huì)涉及到包括50-100個(gè)人“獲得”請(qǐng)求的這一現(xiàn)實(shí)情況,而且如果每個(gè)請(qǐng)求均發(fā)生在一個(gè)單獨(dú)的TCP會(huì)話,無疑會(huì)是浪費(fèi)相當(dāng)長(zhǎng)的時(shí)間,而這原來是在HTTP 1.0規(guī)范中完成的。
該問題的解決方案就是保持持續(xù)的連接,在HTTP 1.1中實(shí)現(xiàn)。如果我們通過解決多個(gè)“獲得”請(qǐng)求的能力加倍這種行為,而在流水線技術(shù)無需等待對(duì)每個(gè)請(qǐng)求必須得到滿足,我們可以顯著改善HTTP的性能。而我們從HTTP中學(xué)到的教訓(xùn)同樣適用于TCP。更新瀏覽器。最新的版本的運(yùn)行是最好的。
當(dāng)前,大量的研究都集中在這些新的TCP版本中,哪一款版本的性能更好。總結(jié)所有這些研究是一項(xiàng)艱巨的任務(wù),但我們可以大致的進(jìn)行一些概括。在這些研究中,經(jīng)常性被考慮的包括兩件事情:該版本的TCP到底有多有效;其處理預(yù)期競(jìng)爭(zhēng)的其他流量的公平性如何?大多數(shù)研究對(duì)于Cubic 版本的TCP在這兩方面的評(píng)價(jià)均高于其他兩個(gè)版本的TCP(New Reno或復(fù)合TCP)。通常復(fù)合TCP的性能要優(yōu)于New Reno TCP。但是,鑒于我們?cè)絹碓蕉嗟膹奈覀兊囊苿?dòng)設(shè)備上使用網(wǎng)絡(luò),如果我們看到TCP進(jìn)一步演變,以滿足無線運(yùn)營(yíng)商的需求時(shí),請(qǐng)不要感到驚訝。