傳統擁塞控制

2021-08-09 01:59:53 字數 1436 閱讀 8687

rtt(round-trip time):往返時延

在計算機網路中它是乙個重要的效能指標,表示從傳送端傳送資料開始,到傳送端收到來自接收端的確認(接收端收到資料後便立即傳送確認),總共經歷的時延。

rtt測量方法

1、tcp timestam選項: rtt = 當前時間 -  資料報中timestamp選項的回顯時間。 2

、重傳佇列中資料報的tcp控制塊。在

tcp重傳佇列中儲存著傳送而未被確認的資料報,資料報

skb中的

tcp控制塊包含著乙個變數,

tcp_skb_cb->when

,記錄了該資料報的第一次傳送時間。rtt = 當前時間– when。

rto(retransmissiontimeout)即重傳超時時間。

什麼時候進行慢啟動?

1)新建連線;

2)rto超時;

3)連線空閒超過一定時間;

慢開始演算法的思路就是,不要一開始就傳送大量的資料,先探測一下網路的擁塞程度,也就是說由小到大逐漸增加擁塞視窗的大小;

1、當cwnd

2、cwnd初始化為1個mss長度;

3、每收到乙個ack,cwnd增加1個mss長度;

(第一次傳送乙個包,收到乙個ack,cwnd變為2,意味著下一次可以同時發兩個包,當兩個包都收到了ack,則cwnd則加2,變為4了,其實一點都不慢!)

linux 3.0版本核心之後,初始化cwnd為10了。

1、 當cwnd>ssthresh時,改用擁塞避免演算法

2、擁塞避免演算法讓擁塞視窗緩慢增長,即每經過乙個往返時間rtt就把傳送方的擁塞視窗cwnd加1;

當發生rto時,tcp認為情況太糟糕,反應也很強烈

處理方法:

1、sshthresh =  cwnd /2

2、cwnd 重置為 1(或者10)

3、進入慢啟動過程

收到3個重複ack,即啟動快速重傳和快速恢復

處理方法:

1)引入ssthresh, ssthresh = cwnd / 2;

2)cwnd重新設為,cwnd = ssthresh + 3 * mss;

3)重傳丟失的資料段;

4)每收到乙個重複ack,cwnd增加乙個分組大小,重傳乙個資料段;

5)收到新的ack,設定cwnd為ssthresh,其實就是原來的cwnd減半;

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

這個世界在一直變化著,任何事物如果停留在原地,最終是要被淘汰的,tcp的擁塞控制演算法也是如此。首先來看高頻寬和高時延網路情況,這種網路通常稱之為長肥網路 long fat network,lfn 也稱之為高頻寬時延乘積網路 high bandwidth delay product network,...

tcp擁塞控制演算法 WebRTC擁塞控制原理解析

webrtc包含三種擁塞控制演算法,gcc bbr和pcc。其中,bbr一開始是針對tcp的擁塞控制提出來的。它的輸入為ack sack,輸出為擁塞視窗 congestion window 傳送速度 pacing rate bbr是怎樣運用到udp,甚至運用到實時流 傳輸之上的?拜讀一下在webrt...

tcp 擁塞控制 TCP流量控制與擁塞控制

流量控制 流量控制的定義 一條tcp連線每一側主機都為該連線設定了接收快取。當該tcp連線收到了正確的 按序的位元組後,他就將資料放入接收快取。相關聯的應用程序會從該快取中讀取資料。但不必是資料一到達就立即讀取。事實上,接收方也許正忙於其他任務,甚至要過很長時間後才讀取該資料。如果某個應用程序讀取比...