Google的TCP BBR擁塞控制算法深度解析
宏觀背景下的BBR
慢啟動(dòng)、擁塞避免、快速重傳、快速恢復(fù):
說(shuō)實(shí)話,這些機(jī)制完美適應(yīng)了1980年代的網(wǎng)絡(luò)特征,低帶寬,淺緩存隊(duì)列,美好持續(xù)到了2000年代。
隨后互聯(lián)網(wǎng)大爆發(fā),多媒體應(yīng)用特別是圖片,音視頻類的應(yīng)用促使帶寬必須猛增,而摩爾定律促使存儲(chǔ)設(shè)施趨于廉價(jià)而路由器隊(duì)列緩存猛增,這便是BBR誕生的背景。
正文之前,給出本文的圖例:
BBR的組成
bbr算法實(shí)際上非常簡(jiǎn)單,在實(shí)現(xiàn)上它由5部分組成:
BBR(Bottleneck Bandwidth and Round-trip time)擁塞控制算法是由Google開(kāi)發(fā)的一種現(xiàn)代化的TCP擁塞控制算法。與傳統(tǒng)的TCP擁塞控制算法(如TCP Cubic)相比,BBR采用了不同的工作原理和算法策略。
BBR擁塞控制算法具有以下幾個(gè)顯著的優(yōu)勢(shì):
- 高帶寬利用率:BBR算法通過(guò)準(zhǔn)確估算網(wǎng)絡(luò)的瓶頸帶寬,能夠充分利用可用的帶寬資源。相比傳統(tǒng)的擁塞控制算法,如TCP Cubic,它能夠更有效地利用網(wǎng)絡(luò)帶寬,提供更高的吞吐量。
- 低延遲:BBR算法通過(guò)實(shí)時(shí)測(cè)量往返時(shí)間(RTT)和帶寬來(lái)調(diào)整發(fā)送速率,以最小化網(wǎng)絡(luò)延遲。它能夠更快地適應(yīng)網(wǎng)絡(luò)變化,并通過(guò)動(dòng)態(tài)的發(fā)送速率控制來(lái)減少排隊(duì)延遲,從而提供更低的端到端延遲。
- 公平性:BBR算法采用了公平共享帶寬的策略,以避免某些連接占據(jù)過(guò)多的帶寬,導(dǎo)致其他連接的性能下降。它能夠在網(wǎng)絡(luò)負(fù)載較高的情況下,相對(duì)公平地分配帶寬資源,確保多個(gè)連接能夠公正地競(jìng)爭(zhēng)帶寬。
- 適應(yīng)性:BBR算法具有較好的自適應(yīng)性,能夠根據(jù)網(wǎng)絡(luò)條件的變化進(jìn)行實(shí)時(shí)調(diào)整。它能夠快速響應(yīng)網(wǎng)絡(luò)的帶寬和延遲變化,自動(dòng)調(diào)整發(fā)送速率,以適應(yīng)不同的網(wǎng)絡(luò)環(huán)境和擁塞程度。
- 丟包率減少:由于BBR算法采用了基于帶寬和延遲的擁塞控制策略,它能夠減少網(wǎng)絡(luò)中的擁塞和丟包情況。相比傳統(tǒng)算法,BBR能夠更好地探測(cè)和應(yīng)對(duì)網(wǎng)絡(luò)擁塞,從而減少丟包率。
a. 噪聲丟包
如果是噪聲丟包,在收到reordering個(gè)重復(fù)ACK后,由于bbr并不區(qū)分一個(gè)確認(rèn)是ACK還是SACK引起的,所以在bbr看來(lái),即時(shí)帶寬并沒(méi)有降低,可能還有所增加,所以一個(gè)數(shù)據(jù)包的丟失并不會(huì)引發(fā)什么,bbr依舊會(huì)給出一個(gè)比較大的cwnd配額,此時(shí)雖然TCP可能已經(jīng)進(jìn)入了Recovery狀態(tài),但bbr依舊按照自己的bw以及調(diào)整后的增益系數(shù)來(lái)計(jì)算cwnd的新值,過(guò)程中并不會(huì)受到任何TCP擁塞狀態(tài)的影響。
如此一來(lái),所有的噪聲丟包就被區(qū)別開(kāi)來(lái)了!bbr的宗旨是:“首先,在我的bw計(jì)算指示我發(fā)生擁塞之前,任何傳統(tǒng)的TCP擁塞判斷-丟包/時(shí)延增加,均全部失效,我并不care丟包和RTT增加”,隨后brr又會(huì)說(shuō):“但是我比較care的是,RTT在一段時(shí)間內(nèi)(隨你怎么配,但我個(gè)人傾向于自學(xué)習(xí))都沒(méi)有達(dá)到我所采集到的最小值或者更小的值!這也許意味著著鏈路真的發(fā)生擁塞了!”…
b. 擁塞丟包
將a的論述反過(guò)來(lái),我們就會(huì)得到奇妙的封閉性結(jié)論。這樣,bbr不光是消除了吞吐曲線的鋸齒(ssthresh所致,bbr并不使用ssthresh!),而且還消除了傳統(tǒng)擁塞控制算法的判斷滯后性問(wèn)題。在cubic發(fā)現(xiàn)丟包進(jìn)而判斷為擁塞時(shí),擁塞可能已經(jīng)緩解了,但是cubic無(wú)法發(fā)現(xiàn)這一點(diǎn)。為什么?原因在于cubic在計(jì)算新的cwnd的時(shí)候,并沒(méi)有把當(dāng)前的網(wǎng)絡(luò)狀態(tài)(比如bw)當(dāng)作參數(shù),而只是一味的按照數(shù)學(xué)意義上的三次方程去計(jì)算,這是錯(cuò)誤的,這不是一個(gè)正確的反饋系統(tǒng)的做法!
基于a和b,看到了吧,這就是新的擁塞判斷機(jī)制!綜合考慮丟包和RTT的增加:
b-1.如果丟包時(shí)真的發(fā)生了擁塞,那么測(cè)量的即時(shí)帶寬肯定會(huì)減少,否則,丟包即擁塞就是謊言。
b-2.如果RTT增加時(shí)真的發(fā)生了擁塞,那么測(cè)量的即時(shí)帶寬肯定會(huì)減少,否則,時(shí)延增加即擁塞就是謊言。
bbr測(cè)量了即時(shí)帶寬,這個(gè)統(tǒng)一cwnd和rtt的計(jì)量,完全忽略了丟包,因此bbr的算法思想是TCP擁塞控制的正軌!事實(shí)上,丟包本就不應(yīng)該作為一種擁塞的標(biāo)志,它只是擁塞的表現(xiàn)。
擁塞控制算法(如TCP擁塞控制算法)的主要目標(biāo)是通過(guò)監(jiān)測(cè)丟包事件來(lái)判斷網(wǎng)絡(luò)的擁塞程度,并調(diào)整發(fā)送速率以緩解擁塞。然而,對(duì)于噪聲丟包,這些算法并不會(huì)做出相應(yīng)的調(diào)整,因?yàn)樵肼晛G包并不表示網(wǎng)絡(luò)擁塞。因此,對(duì)于擁塞控制算法來(lái)說(shuō),區(qū)分噪聲丟包和擁塞丟包是非常重要的。
的調(diào)整,因?yàn)樵肼晛G包并不表示網(wǎng)絡(luò)擁塞。因此,對(duì)于擁塞控制算法來(lái)說(shuō),區(qū)分噪聲丟包和擁塞丟包是非常重要的。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-775800.html
BBR擁塞控制算法在這方面相對(duì)于傳統(tǒng)算法具有優(yōu)勢(shì),它通過(guò)觀察發(fā)送數(shù)據(jù)包的出隊(duì)情況和接收確認(rèn)ACK的延遲時(shí)間,估計(jì)網(wǎng)絡(luò)的瓶頸帶寬,并使用這些信息來(lái)動(dòng)態(tài)調(diào)整發(fā)送速率。BBR算法在設(shè)計(jì)上能夠更好地識(shí)別和應(yīng)對(duì)擁塞丟包,從而提供更好的網(wǎng)絡(luò)性能和擁塞控制。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-775800.html
到了這里,關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)【Google的TCP BBR擁塞控制算法深度解析】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!