TCP BBR算法學習筆記(1)

(本篇文章主要是給自己以后看,協(xié)助記憶,不會過于在意菜鳥讀者是否能夠完全讀懂)

TCP BBR的ACM論文中,開篇就引入了圖1,以此來說明BBR算法的切入點:

  • 為何當前基于丟包探測的TCP擁塞控制算法還有優(yōu)化空間?
  • BBR算法的優(yōu)化極限在哪兒?
圖1

為了理解這張圖花了我整整一個晚上的時間,它使我重新審視了所有基礎概念,而我以下的討論對于TCP定義的RTT、帶寬、Inflight data都作了簡化,從而使討論更易于滿足物理直覺,但又不影響最終結論。

為了便于討論,先引入形式符號。當我們使用TCP從A端到B端傳輸數(shù)據(jù)時,A與B間的網絡鏈路是復雜的并且是動態(tài)變化的,但我們可以把A到B的網絡想象成一段黑盒鏈路,這條鏈路有以下物理屬性:

  • RTprop:光信號從A端到B端的最小時延(其實是2倍時延,因為是一個來回,但不影響討論),這取決于物理距離
  • BtlBw:在A到B的鏈路中,它的帶寬取決于最慢的那段鏈路的帶寬,稱為瓶頸帶寬,可以想象為光纖的粗細
  • BtlBufSize:在A到B的鏈路中,每個路由器都有自己的緩存,這些緩存的容量之和,稱為瓶頸緩存大小
  • BDP:整條物理鏈路(不含路由器緩存)所能儲藏的比特數(shù)據(jù)之和,BDP = BtlBw * RTprop

僅有物理屬性還不夠,在實際應用中我們最關心的是TCP鏈接的兩個真實屬性:

  • T(時延):數(shù)據(jù)從A到B的實際時延,對應于圖中的round-trip time(其實是單程的trip time,2倍即為RTT,不影響討論)
  • R(帶寬):數(shù)據(jù)的實際傳輸帶寬,對應于圖中的delivery rate(并非嚴格對應,與T一樣做了等效簡化)

我再啰嗦一句:TCP BBR協(xié)議定義的帶寬(delivery rate)與我們的直覺不一樣,它的定義是:

帶寬 = 數(shù)據(jù)量/從發(fā)送出去至收到ACK的時長

而我們的直覺是:數(shù)據(jù)穿過網線的速度

為了利于的直覺想象,本文使用T來代替RTT,使用R來代替delivery rate,下文的所有概念也一樣作為簡化,請注意!

此外,為了定量分析T與R,再引入一個概念:

  • D:已經從A發(fā)出但未被B收到的數(shù)據(jù)(對應于inflight data,我故意修改了它的原始定義——A已經發(fā)出但未收到B返回的ACK的數(shù)據(jù)——是為了直覺想象,不影響結論)

有了以上定義,很自然就有了以下3個式子:

  • T >= RTprop,即實際時延總是大于等于最小時延
  • R <= BtlBw,即實際帶寬總是小于等于瓶頸帶寬
  • R = D/T

由以上3式可得:

  1. T/S >= 1/BtlBw
  2. R/S <= 1/RTprop

1,2兩式就是圖中兩個斜率(slope)的由來。

有了上面的討論,就可以較為輕松地理解上半圖與下半圖的物理意義了:

上半圖

  • 當鏈路上正在傳輸?shù)谋忍財?shù)據(jù)未超過整條鏈路的物理容量(BDP)之前,傳輸時延的極限就是RTprop,對應上半圖中藍色的橫線
  • 當數(shù)據(jù)塞滿了整條鏈路的物理容量后,路由器開始啟用緩存來存儲比特數(shù)據(jù),這相當于拉長了整個鏈路,造成傳輸時延開始變大,偏離了物理極限RTprop,于是有了slope = 1/BtlBw那條綠色斜線
  • 當路由器的緩存填滿后(BDP+BtlBufSize),整條鏈路開始丟數(shù)據(jù),1/BtlBw斜線消失,對應于上半圖中紅點虛線

下半圖

  • 當鏈路上正在傳輸?shù)谋忍財?shù)據(jù)未超過整條鏈路的物理容量(BDP)之前,在B端觀察到的數(shù)據(jù)帶寬是逐漸往上漲的,這個帶寬的上漲速率由5式確定,即slope = 1/RTprop,對應下半圖中藍色斜線
  • 當數(shù)據(jù)塞滿了整條鏈路的物理容量后,路由器開始啟用緩存來存儲比特數(shù)據(jù),但不影響B(tài)端觀察到的帶寬,這個帶寬的極限就是BtlBw,對應于圖中那條綠色的BtlBw橫線
  • 當路由器的緩存填滿后(BDP+BtlBufSize),整條鏈路開始丟數(shù)據(jù),但B端觀察到的帶寬極限還是BtlBw,對應于下半圖中紅點虛線

由此就可以解答這兩個問題了:

  • 為何當前基于丟包探測的TCP擁塞控制算法還有優(yōu)化空間?

因為基于丟包探測的算法總會使inflight的數(shù)據(jù)量達到BDP+BtlBufSize這個狀態(tài),在現(xiàn)代的路由器中由于緩存很大,相當于把物理鏈路人為的拉長了,使數(shù)據(jù)傳輸?shù)难訒r變大,即RTT變大。

  • BBR算法的優(yōu)化極限在哪兒?

BBR算法不再基于丟包探測,而是努力去估算BDP和RTprop,從而使RTT向它的物理極限RTprop靠近,從而減少傳輸時延,達到提速TCP的目的。

那么BBR與丟包探測算法的共同點在哪里?——它們都試圖使鏈路的帶寬趨于它的物理極限:BtlBw。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容