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連線收到了正確的 按序的位元組後,他就將資料放入接收快取。相關聯的應用程序會從該快取中讀取資料。但不必是資料一到達就立即讀取。事實上,接收方也許正忙於其他任務,甚至要過很長時間後才讀取該資料。如果某個應用程序讀取比...