(本篇文章主要是給自己以后看,協助記憶祖灰,不會過于在意菜鳥讀者是否能夠完全讀懂)
TCP BBR的ACM論文中,開篇就引入了圖1颂碘,以此來說明BBR算法的切入點:
- 為何當前基于丟包探測的TCP擁塞控制算法還有優(yōu)化空間邀层?
- BBR算法的優(yōu)化極限在哪兒返敬?
為了理解這張圖花了我整整一個晚上的時間,它使我重新審視了所有基礎概念寥院,而我以下的討論對于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式可得:
- T/S >= 1/BtlBw
- 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粘室。