TCP BBR算法學習筆記(1)

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

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

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

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

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

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

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

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

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

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

而我們的直覺是:數據穿過網線的速度

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

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

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

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

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

由以上3式可得:

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

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

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

上半圖

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

下半圖

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

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

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

因為基于丟包探測的算法總會使inflight的數據量達到BDP+BtlBufSize這個狀態(tài)溯街,在現代的路由器中由于緩存很大,相當于把物理鏈路人為的拉長了洋丐,使數據傳輸的延時變大呈昔,即RTT變大。

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

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末榄檬,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子衔统,更是在濱河造成了極大的恐慌鹿榜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缰冤,死亡現場離奇詭異犬缨,居然都是意外死亡,警方通過查閱死者的電腦和手機棉浸,發(fā)現死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門怀薛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迷郑,你說我怎么就攤上這事枝恋。” “怎么了嗡害?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵焚碌,是天一觀的道長。 經常有香客問我霸妹,道長十电,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任叹螟,我火速辦了婚禮鹃骂,結果婚禮上,老公的妹妹穿的比我還像新娘罢绽。我一直安慰自己畏线,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布良价。 她就那樣靜靜地躺著寝殴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪明垢。 梳的紋絲不亂的頭發(fā)上蚣常,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音痊银,去河邊找鬼史隆。 笑死,一個胖子當著我的面吹牛曼验,可吹牛的內容都是我干的泌射。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼鬓照,長吁一口氣:“原來是場噩夢啊……” “哼熔酷!你這毒婦竟也來了?” 一聲冷哼從身側響起豺裆,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拒秘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后臭猜,有當地人在樹林里發(fā)現了一具尸體躺酒,經...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年蔑歌,在試婚紗的時候發(fā)現自己被綠了羹应。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡次屠,死狀恐怖园匹,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情劫灶,我是刑警寧澤裸违,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站本昏,受9級特大地震影響供汛,放射性物質發(fā)生泄漏。R本人自食惡果不足惜涌穆,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一怔昨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒲犬,春花似錦朱监、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奋隶,卻和暖如春擂送,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唯欣。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工嘹吨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人境氢。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓蟀拷,卻偏偏與公主長得像碰纬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子问芬,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內容