BBR擁塞控制算法的幾個(gè)細(xì)節(jié)詳解
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
0. 說明
BBR熱了一段時(shí)間后終于回歸了理性,這顯然要比過熱地炒作要好很多。這顯然也是我所期望的。
本文的內(nèi)容主要解釋一些關(guān)于BBR的細(xì)節(jié)問題。這些問題一般人可能不會(huì)關(guān)注,但是針對(duì)這些問題仔細(xì)思考的話,會(huì)得到很多有用的東西。在解釋這些問題時(shí),我依然傾向于使用圖解的方式,但這一次我不再使用Wireshark的tcptrace圖了,而是使用時(shí)序圖的方式,因?yàn)檫@種時(shí)序圖既然能夠令人一目了然地解釋TCP三次握手,四次分手,TIME-WAIT等,那它自然也能解釋更復(fù)雜的機(jī)制,比如說擁塞控制。
1. 延遲ACK以及ACK丟失并不會(huì)影響TCP的傳輸速率
在大的時(shí)間尺度上看,延遲ACK以及ACK丟失并不會(huì)對(duì)速率造成任何影響,比如一個(gè)文件4個(gè)TCP段正好發(fā)完,即便前面幾個(gè)ACK全部丟失,只有最后一個(gè)到達(dá),那它的傳輸總時(shí)間也是不變的。
但是在細(xì)微的時(shí)間段內(nèi),由于延遲ACK或者ACK丟失帶來的時(shí)間偏差卻是不可忽略的。
首先我們?cè)俅慰匆幌翨BR是如何測(cè)量即時(shí)速率的。測(cè)量即時(shí)速率需要做一個(gè)除法,分子是一段時(shí)間內(nèi)成功到達(dá)對(duì)端的數(shù)據(jù)包總量,分母就是這段時(shí)間。BBR會(huì)在每收到一次ACK的時(shí)候測(cè)量一次即時(shí)速率。計(jì)算需要的數(shù)據(jù)分別在數(shù)據(jù)傳輸和數(shù)據(jù)被ACK的時(shí)候采樣。很顯然,我們可以想當(dāng)然地拍腦袋得出一個(gè)算法:
設(shè)數(shù)據(jù)包x發(fā)出的時(shí)間為t1,數(shù)據(jù)包x被應(yīng)答的時(shí)間為t2,則在數(shù)據(jù)包x被應(yīng)答時(shí)采集的即時(shí)速率為:
Rate=(從x被發(fā)出到x被應(yīng)答之間一共ACK以及SACK了多少個(gè)數(shù)據(jù)包)/(t2-t1)
但是這會(huì)造成什么問題呢?這會(huì)造成誤差。
非常好我支持^.^
(3) 100%
不好我反對(duì)
(0) 0%