正文 改善TCP性能的5個技巧(1 / 1)

改善TCP性能的5個技巧

網絡通信

作者:沈建苗

TCP使用一種特定的算法來控製其行為,我們改變不了算法,但可以靈活應變、更高效地使用算法。

使用HTTP的Web會話、文件傳輸、文件共享和係統備份通常使用TCP,係統啟動時裝入的Windows桌麵配置同樣基於TCP,可以說,與互聯網相關的絕大部分數據是由傳輸控製協議(TCP)承載的。

然而,如果係統備份到距離相當遠的遠程站點,那麼實際使用的帶寬可能隻有所購帶寬的一小部分。比如,監控攝像頭將視頻傳輸到遠程錄像機或者使用無線連接的錄像機時,這個傳輸過程可能緩慢或受到幹擾。

造成TCP性能糟糕主要有網絡時延和網絡中斷兩個原因。TCP被設計成可重新傳輸丟失的數據段,但數據段可能會延遲傳輸。在線路很長的情況下,TCP必須限製傳輸速率,以免接收端的緩衝區應接不暇。

由於大多數網絡分析工具隻告訴我們遇到了TCP性能問題,但並不會告知為何會發生,這類工具也沒有建議采取何種可行的糾正措施,這使問題變得更嚴重。

在更深入地探究這個問題之前,不妨看一下有助於改善TCP性能的幾個技巧。TCP使用一種特定的算法來控製其行為,我們改變不了算法,但可以靈活應變,以便更高效地使用算法。

技巧1 加大緩衝區

減小網絡中導致數據包丟失的出錯可能性。無線通信很容易出現錯誤,那些錯誤通常是網絡操作人員看不見的。谘詢網絡設備廠商,確保路由器和交換機的緩衝區大於傳統的64k字節,64k字節在早期的無線設備中很常見。現代的TCP版本傳輸的數據段比64k緩衝區的數據容納量大得多。

技巧2 縮短線路

確保網絡線路盡量短。從紐約備份到費城要比從紐約備份到丹佛或備份到倫敦快速得多,即使可用帶寬和終端係統都一樣。這種情況下,內容分發網絡(CND)提供商可以提供幫助。他們將內容放到更靠近用戶的地方,因而縮短了網絡時延,提高了分發性能。

技巧3 考慮使用HTTP管線化

如果某任務(比如批量文件傳輸)可以分成兩個或多個TCP會話,然後同時傳輸,那麼可用帶寬能得到更高效的利用,這就是HTTP管線化(HTTP pipelining)的原理。

技巧4 更新堆棧

盡可能使用最新的TCP堆棧。新版本的TCP工作起來效果遠勝過舊版本。比如說,Windows XP使用通常被稱為New Reno的TCP版本,而Windows 7/8使用名為Compound TCP的較新版本。這個版本對數據段丟失有更好的控製,還有另外幾處變化,有助於提升其性能。如果你是Linux用戶,就要確保版本至少是2.3.13,其性能類似Compound TCP的性能。

技巧5 使用數據包分析儀

確保企業中至少有一人懂得如何使用數據分析儀,此人能夠明白客戶機和服務器在約定TCP中使用一些較新的選項。其中一些選項是選擇性確認(SACK)、窗口縮放和快速傳輸。雖然分析儀無法告知這些選項為何很重要,但它會證實它們已使用。這將表明兩頭終端係統可能都使用了較新的TCP堆棧。

另外,我們可以在有限的程度上改變算法。比如說,微軟網站上的一些研究披露,企業IT管理人員可以改變TCP堆棧中的一些參數。大多數研究認為,Cubic TCP在這兩個因素方麵都比New Reno或Compound TCP更勝一籌。Compound TCP的表現通常比New Reno TCP要好一點。