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