什么是TCP?
TCP始于1970年,作為協(xié)議套件的一部分, TCP / IP將數(shù)據(jù)格式化成數(shù)據(jù)包在網(wǎng)絡(luò)上進(jìn)行傳輸。IETF工作人員表示,超過90%的IP流量都通過TCP傳輸。
在過去的幾十年里,為加快TCP / IP的速度,很多人都在為TCP如何處理?yè)矶碌膯栴}不斷努力。TCP通過監(jiān)控傳輸中丟失的分組數(shù)量減慢在感知擁塞時(shí)發(fā)送流量的速度。由于網(wǎng)絡(luò)交換機(jī)和路由器的小緩沖區(qū)與互聯(lián)網(wǎng)連接的低帶寬很匹配,所以BBR的效果還是很不錯(cuò)的。遺憾的是,“基于損失”擁塞控制在當(dāng)今的環(huán)境中并不適用。
BBR優(yōu)勢(shì)
BBR以一定速度不斷評(píng)估多個(gè)路由的吞吐量和往返流量時(shí)間,得出遍歷網(wǎng)絡(luò)需要的時(shí)間。這樣一來(lái),BBR以網(wǎng)絡(luò)可處理的速度發(fā)送流量,比最初的TCP擁塞控制更有效果。
BBR還兼容由Google設(shè)計(jì)的替代傳輸協(xié)議——快速UDP互聯(lián)網(wǎng)連接(QUIC),并被IETF作為標(biāo)準(zhǔn)。
BBR并不是工程師們?yōu)榧铀賂CP所做出的第一個(gè)努力。北卡羅來(lái)納州立大學(xué)的研究人員表示,當(dāng)今開發(fā)TCP中使用的最流行的基于丟失的擁塞控制算法之一是二進(jìn)制增加擁塞控制(BIC),其次是CUBIC,還有另一種流行的擁塞控制算法叫做Reno。這些算法都是使用分組丟失來(lái)確定擁塞的,盡管開發(fā)BBR的Google工程師Jacobson表示,在他看來(lái),BBR才是唯一一個(gè)通過實(shí)際估計(jì)流量速度來(lái)確定最佳傳輸速度的TCP算法。
BBR取得初步成功
Mirja Kuhlewind是蘇黎世網(wǎng)絡(luò)系統(tǒng)集團(tuán)的高級(jí)研究員,也是IETF的運(yùn)輸區(qū)域主管,負(fù)責(zé)TCP的維護(hù)和改進(jìn)工作。她表示,在傳輸與擁堵控制方面建立標(biāo)準(zhǔn)需要很長(zhǎng)的時(shí)間,在BIC和BBR的發(fā)展之前,通過數(shù)十次TCP技術(shù)改進(jìn),才僅有一個(gè)成為了標(biāo)準(zhǔn),擁塞控制計(jì)劃的標(biāo)準(zhǔn)化不是一件易事。
Reno和CUBIC基于相同的原理工作,將丟失包作出的反應(yīng)作為擁塞的標(biāo)志,檢測(cè)到丟失時(shí)降低發(fā)送速率。而BBR利用的是分組定時(shí)信息來(lái)確定鏈路是否擁塞。
谷歌的一些客戶已經(jīng)意識(shí)到BBR的重要性,Wordpress在Google Cloud和Founder中托管了50萬(wàn)個(gè)站點(diǎn),谷歌的CTO Jason Cohen也表示BBR與其他基于丟失的擁塞控制相比提高了2700倍的吞吐量、延遲降低了25倍。
BBR原理簡(jiǎn)介
擁塞現(xiàn)象是指到達(dá)通信子網(wǎng)中某一部分的分組數(shù)量過多,使得該部分網(wǎng)絡(luò)來(lái)不及處理,以致引起這部分乃至整個(gè)網(wǎng)絡(luò)性能下降的現(xiàn)象,嚴(yán)重時(shí)甚至?xí)?dǎo)致網(wǎng)絡(luò)通信業(yè)務(wù)陷入停頓,即出現(xiàn)死鎖現(xiàn)象。這種現(xiàn)象跟公路網(wǎng)中經(jīng)常所見的交通擁擠一樣,當(dāng)節(jié)假日公路網(wǎng)中車輛大量增加時(shí),各種走向的車流相互干擾,使每輛車到達(dá)目的地的時(shí)間都相對(duì)增加(即延遲增加),甚至有時(shí)在某段公路上車輛因堵塞而無(wú)法開動(dòng)(即發(fā)生局部死鎖)。
擁塞控制就是針對(duì)此問題的控制技術(shù)/解決方案,但也不能說(shuō)是解決,控制技術(shù)只能起到盡量避免/緩解擁塞的作用。TCP-BBR技術(shù)呢,用了一種溢水原理的思想,來(lái)預(yù)判丟包率,調(diào)配發(fā)包速率。
假設(shè)你有一支較細(xì)的U形管,下面還有一堆不可溶的填塞物,你從一邊開始大量灌水,如果另一邊出水正常,你就可以繼續(xù)加大灌水量,達(dá)到最大帶寬。如果另一邊發(fā)現(xiàn)水時(shí)斷時(shí)有,就證明下面出現(xiàn)了隨機(jī)擁堵,這時(shí),你就要減小灌水量,等待水位落下。這時(shí)如果采用傳統(tǒng)繼續(xù)灌水時(shí),也就會(huì)造成水溢出(丟包現(xiàn)象的產(chǎn)生)。所以這是真正的按需發(fā)包。當(dāng)然,這一切是建立在系統(tǒng)預(yù)估的情況下。