網路擁塞控制 五 傳統TCP存在的缺陷

2021-06-29 13:12:39 字數 2224 閱讀 5551

這個世界在一直變化著,任何事物如果停留在原地,最終是要被淘汰的,tcp的擁塞控制演算法也是如此。

首先來看高頻寬和高時延網路情況,這種網路通常稱之為長肥網路(long fat network, lfn),也稱之為高頻寬時延乘積網路(high-bandwidth-delay-product network,bdp)。頻寬時延乘積(bdp)通常表示網路通道的容量,也就是能夠在網路中緩衝的資料量,顯然頻寬增大一倍或者時延增大一倍都會使得通道的容量加倍。當這個乘積變得越來越大時,tcp的侷限性及開始暴露出來。乙個100mbps的網路,如果時延是100ms,那麼bdp為100,000,000*0.1/8=1,250,000位元組=1220.7k,如果是1gbps的網路時延為100ms,那麼bdp為12207k左右,如果tcp跑在這種網路上,那麼效率是非常低的。從tcp的首部中我們可以看到tcp利用16位來表示接收視窗rwnd大小,16位能表示的最大值是65535,由於tcp的傳送視窗是取擁塞視窗cwnd和對端的接收視窗rwnd兩者之間的最小值,那麼顯然傳送視窗最大只能到65535(以位元組為單位),顯然該值與我們上述的網路bdp相差得太遠,那麼tcp就只能傳送一陣資料然後就等待ack,極端下去就有點像「停等協議」了。這樣tcp就無法充分利用網路頻寬,浪費頻寬現象嚴重。

視窗擴**項:為了解決視窗過小的問題,tcp利用起了它的選項功能,從tcp的頭部可以看到tcp預留了一定的選項功能,用於擴充套件等用途。視窗擴**項增加了額外的16位來表示視窗大小,視窗的值由首部的16位大小和選項的16位值共同組成,不過不是用加法組成的,而是利用移位視窗值的冪來表示的,也就是說如果移位視窗值為10,那麼視窗的最大值就是65535*2

10,這個值就比較大了,足夠表示視窗的大小了。

好,視窗太小的問題解決了,我們再來看視窗增長的機制存在的問題。通過前面的tcp的擁塞控制的機制我們可以看到tcp的增長方式是aimd原則的,即加法增大,在擁塞避免階段,每次增加1,按照我們上面計算的網路環境1gbps,100ms時延,其視窗大小到12,500,000,如果按照最理想的情況每個包大小為1500個位元組的話,那麼必須需要8333個包大小的擁塞視窗,也就是要8333個rtt才能增長到這個值,這個時間還隨著rtt和頻寬的增大而增大,而且在增長過程中只要一出現丟包的話,那麼視窗就立即減半,此時又得重新開始增長,顯然該增長函式不能滿足現在網路的需要。

其次,傳統的tcp總是把包的丟失解釋為網路發生了擁塞,而假定鏈路錯誤造成的分組丟失是忽略不計的,這種情況是基於當時

v. jacobson的觀察,認為鏈路錯誤的機率太低從而可以忽略,然而在高速網路中,這種假設是不成立的,

當資料傳輸速率比較高時,鏈路錯誤是不能忽略的。在無線網路中,鏈路的誤位元速率更高,因此,如果籠統地認為分組丟失就是擁塞所引起的,從而降低一半的速率,這是對網路資源的極大浪費。擁塞的判斷需要兩個連續的分組丟失。

針對上述問題,tcp的擁塞控制進入了新的階段,百花齊放,出現了很多研究熱點,其中比較集中的方面有:「慢啟動」過程的改進,基於速率的擁塞控制,ecn,和針對特殊網路(無線網路和衛星網路)的擁塞控制。最初提出了hstcp,後來又出現了bi-tcp,cubic tcp、fasttcp、tcp-westwood等一系列的改進,udp的應用開始了tcp-friendly的擁塞控制,出現了tfrc,最近又有了dccp。

分類: 

networ

#1樓2009-01-22 09:49

hritian[未註冊使用者]

從應用的角度來說,high bdp網路的問題體現在tcp的rtt不公平性上。

這個事實,你應該很早就注意到了,大時延的連線,往往傳送速率就比小時延的小很多。

擁塞控制設計的三個最重要的指標,效率、公平性和收斂性。從應用的角度來說,我倒是覺得公平性和收斂性更重要,公平性的問題解決了,現在很火的廣域網加速的問題也就解決了一大半。收斂效能好了,小檔案傳輸的時間會驟降。其實反過來說這兩個問題解決了,可能效率的問題也就解決了。

要說起來,tcp的問題,歸根結底是瞎子摸象的問題。

#2樓2013-10-04 15:50

誠實嘚偷包賊

視窗時延機制問題那裡,為什麼需要8333個rtt才能夠達到擁塞視窗呢?

後來查了資料發現乙太網最大的包大小就是1500位元組……

原來是這樣……

網路基礎 TCP擁塞控制

1.擁塞控制和流量控制不同,後者是作用於接受方,保證接收方來得及接收資料。而前者是作用於網路,防止過多的資料擁塞網路,避免出現網路負載過大的情況。2.慢開始演算法 慢開始演算法就是在傳輸開始時將傳送視窗慢慢級數擴大,從而避免一開始就傳輸大量資料導致網路擁塞。具體步驟 1 連線初始設定擁塞視窗為1ms...

TCP的擁塞控制

計算機網路中的頻寬 交換結點中的快取和處理機等,都是網路的資源。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就會變壞。這種情況就叫做擁塞。擁塞控制就是防止過多的資料注入網路中,這樣可以使網路中的路由器或鏈路不致過載。擁塞控制是乙個全域性性的過程,和流量控制不同,流量...

TCP的擁塞控制

計算機網路中的頻寬 交換結點中的快取和處理機等,都是網路的資源。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就會變壞。這種情況就叫做擁塞。擁塞控制就是防止過多的資料注入網路中,這樣可以使網路中的路由器或鏈路不致過載。擁塞控制是乙個全域性性的過程,和流量控制不同,流量...