何時使用和不使用BBR


原文鏈接:https://blog.apnic.net/2020/01/10/when-to-use-and-not-use-bbr/

TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由Google設計,並於2016年發布的擁塞算法,以往大部分擁塞算法是基於丟包來作為降低傳輸速率的信號,而BBR基於模型主動探測。

不過,在具體談論應該BBR合適的應用場景之前,有必要先回顧一下傳統擁塞控制算法的弊端所在。

1.傳統擁塞控制算法的弊端(即BBR試圖解決的問題)

TCP擁塞控制算法已經持續發展了30多年,主流的擁塞控制算法是基於丟包的,即它們將數據包丟失作為擁塞信號。例如,Linux的默認TCP算法Cubic在遇到數據包丟失時將其擁塞窗口降低了30%。

但是,在某些情況下,基於丟包的TCP算法效果不佳。例如,在淺緩沖區中,數據包丟失可能被誤解為網絡擁塞,從而導致吞吐量降低和網絡利用率降低。另一方面,在較深的緩沖區中,數據包通常要花很長時間才能填滿緩沖區。這將導致較高的網絡延遲,這稱為緩沖膨脹問題

為了解決此類問題,Google在2016年提出了BBR。BBR不會使用數據包丟失作為擁塞信號,而是根據觀察到的帶寬和延遲值來調節其流量。具體來說,BBR將其傳輸中的數據包數量限制為時延帶寬積(BDP)的倍數。此外,BBR還使用 pacing來控制數據包之間的間隔。

重點:

  • 瓶頸緩沖區大小和時延帶寬積(BDP)之間的差異通常指示BBR何時運行良好。在較大的BDP和較淺的緩沖區大小下,BBR可獲得更高的吞吐量。
  • 與Cubic相比,BBR可能導致100倍的數據包重傳。
  • BBR和Cubic之間的不公平性取決於瓶頸緩沖區的大小—如果緩沖區大小較小(10KB),則BBR可以獲取總帶寬的90%以上;具有較大的緩沖區大小(10MB),Cubic可獲得大約80%的總帶寬。

2.BBR的優勢和劣勢

雖然BBR是為了解決基於丟包的擁塞控制算法的某些問題而提出的,但是這並不意味着在所有的情況下,BBR都比基於丟包的擁塞控制算法有更好的性能。

為了探究BBR在何種情況下相比較基於丟包的擁塞控制算法有更好的性能,原作者進行了幾個相關的實驗,旨在探究:

  • BBR什么時候更有用(與基於丟包的算法(例如Cubic)相比)
  • BBR忽略數據包丟失的缺點是什么?
  • BBR是否對基於丟包的算法不公平?(答案是yes

原作者和其在石溪大學的同事們在不同的網絡條件下,跨不同的網絡測試平台(LAN,WAN,Mininet)進行了廣泛的測量研究,從而做到了這一點。他們在路由器上部署了流量控制器,以進行細粒度的網絡參數控制,並使用帶有NetEm的Linux流量控制(TC)來設置網絡延遲,並使用令牌桶過濾器(TBF)來設置網絡帶寬和緩沖區大小。

2.1BBR在何時更有效?

為了研究BBR或Cubic在不同情況下能否獲得更高的吞吐量,他們在局域網中進行了640個iperf3實驗。在這些實驗中,收集了BBR和Cubic的有效值,並通過決策樹(使用Python3中的DecisionTreeClassifier包)將這些值進行了概括。

在決策樹中,橙色節點表示BBR獲得更高吞吐量的實例,而藍色節點代表Cubic獲得更高吞吐量的實例。圖中可以觀察到,瓶頸緩沖區大小和BDP之間的相對差異通常決定了BBR何時運行良好-在較小的BDP和較深的緩沖區大小下,Cubic可獲得較高的吞吐量,而在較大的BDP和較淺的緩沖區大小下,BBR可獲得較高的吞吐量。更高的產量。

也就是BBR與CDP呈現正相關,與緩沖區大小呈現負相關,而Cubic恰恰相反。

 

 

 為了分析和量化BBR與淺緩沖區中的Cubic相比,吞吐量的提高,定義一個以下指標:

GpGain = (goodput|BBR – goodput|Cubic) / goodput|Cubic x 100(顯然,當BBR更有效時,GpGain為正數)

 對於較淺的緩沖區大小(100KB)的情況下,在圖2中展示了在不同的RTT和帶寬值下GpGain指標的熱圖。我們觀察到BBR與Cubic相比有顯着改善。例如,在200ms的RTT和500Mbps的帶寬下,與Cubic相比,BBR的吞吐量提高了115%。這是因為BBR使用帶寬和延遲估計作為擁塞信號而不是數據包丟失。

 2.2忽略丟包的缺點

BBR需要將2BDP數據保留在網絡中(額外的BDP數據用於處理延遲/聚合的ACK),在淺緩沖區中,這些額外的數據BDP將導致巨大的數據包重傳。

更糟糕的是,BBR不會將丟包視為擁塞信號,這會導致高重傳率的保持。下面的熱圖(圖3)顯示了在不同的RTT和帶寬值下BBR和Cubic的數據包重傳次數。

圖3中可以觀察到,BBR導致的數據包重傳比Cubic的重傳100倍。這表明BBR是以淺緩沖區中的高數據包重傳為代價提高吞吐量。因此,如果傳遞的內容對丟包敏感,那么BBR可能不是一個好選擇。在這種情況下,內容提供商需要仔細檢查吞吐量和體驗質量之間的權衡。

 

 

 

 

 3.BBR的cliff point

在這些實驗中可以發現有一個“cliff point”-即損失百分比,超出此百分比,BBR的實際吞吐量會大大下降。如圖5(左)所示,BBR的吞吐量保持幾乎滿負荷,直到損失百分比達到20%。

 

 經分析,cliff point與BBR的最大pacing_gain參數密切相關,該參數決定了其探測能力。如果丟包概率為p,則在帶寬探測期間,BBR的速度為pacing_gain×帶寬(BW)。但是,由於損耗,其有效pacing為pacing_gain×BW×(1- p)。因此,如果此值小於帶寬,則BBR將不會探測額外的容量,並且會因丟包而推斷出較低的容量。

4.總結

總的來說,BBR作為在Cubic之后提出的擁塞控制算法,它的有很多優點,並且解決了Cubic算法存在的一些問題,但是因為它並非是采用丟包作為擁塞信號,也帶來了一些新的問題。

  • BBR的公平性存在問題,它會搶占Cubic算法的帶寬(取決於瓶頸緩沖區的大小)
  • BBR的機制會導致高重傳率

 BBR目前來看,只能說和Cubic更有優劣,兩者擅長處理的網絡環境並不相同。不過它不采用丟包作為擁塞信號,而是通過自己評估,也許會在其他的環境下取得更好的成績,比如說和強化學習相結合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM