亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

先說一下我的思路,由于我自從中學(xué)開始就是一個深度的數(shù)形結(jié)合控,希望能把一切都畫在一個坐標系里,然后無非就是找最高點,最低點,找規(guī)律這些了,所謂求極值,展示特征無非也就是那些慣用的方法, 求導(dǎo),積分,數(shù)列展開這些,所以對于BBR算法,我依然循著這樣的思路。

現(xiàn)在要做的,就是怎么把BBR的行為畫在一個坐標系里。如果這一步做到了的話,我相信以我20年的經(jīng)驗順水推舟事情就一定能成。

其實,BBR最初的slides和paper中,不斷展示的圖示是下面這個:

Google tcp擁塞控制 bbr算法

 

然后,我仔細觀察了這兩個坐標系,分別是BW(其實是Deliveryrate) vs Inflight以及RTT vs Inflight,都有Infligh。其實,這兩張圖是用于展示BBR特征的,它只說了What,并沒有解釋W(xué)hy,實際上,難道Inflight不應(yīng)該是 計算出來的 嗎?如果說我能根據(jù)另一個坐標系的曲線進行一系列計算,最后 推導(dǎo)出Inflight的值必須是那個值才能達到某種最優(yōu)的效果,那就解釋了Why。

就是這個思路。讓我們一步一步去做。

既然我們把Inflight當(dāng)成了一個結(jié)果而不是原因,為了找這個原因,我們合并兩個坐標系,消去公共的Inflight,那么我們就可以得到RTT vs BW的曲線了!

為了數(shù)學(xué)上表述的方便,后面統(tǒng)一一下符號:BW:ww wwRTT:tt ttInflight:ff ff臨界的Inflight:fcfc f_cfc?

下圖是消去ff ff的方法:首先給出圖像的方程表示:

r={1f−fc−1f≤fcf>fcr={1f≤fcf−fc−1f>fc r =

{1f−fc−1amp;f≤fcamp;fgt;fc{1amp;f≤fcf−fc−1amp;fgt;fc

r={1f−fc?−1?f≤fc?f>fc??

 

w={ffc1f≤fcf>fcw={ffcf≤fc1f>fc w=

?????ffc1amp;f≤fcamp;fgt;fc{ffcamp;f≤fc1amp;fgt;fc

w=????fc?f?1?f≤fc?f>fc??

 

Google tcp擁塞控制 bbr算法

 

很簡單,方程組聯(lián)立就可以消去變量ff ff。

我們可以看到,最終ww ww和tt tt的取值范圍就是那條開向第二象限的折線,現(xiàn)在的問題是,在這條折線中,P(w,t)P(w,t) P(w,t)P(w,t)在哪里是最優(yōu)的,而此時的Inflight值就是最適合灌進網(wǎng)絡(luò)中的數(shù)據(jù)包的數(shù)量,換句話說,它反映了Cwnd應(yīng)該取什么值。

問題轉(zhuǎn)化為了 如何度量所謂的最優(yōu) 。

一般工業(yè)界和經(jīng)濟學(xué)領(lǐng)域都會采用 ***產(chǎn)出/成本***的比值來衡量一個系統(tǒng)是不是優(yōu)秀,換句話說就是 最優(yōu)的系統(tǒng)是用最少的代價換取最高的收益。對于我們目前的模型而言,用語言來表達,即 最少的時間傳輸最多的數(shù)據(jù)包

因此,很顯然,我給出下列的比值,最為衡量系統(tǒng)是否最優(yōu)的度量:E=wtE=wt E=dfrac{w}{t}E=tw?問題變成了 P(w,t)取在哪里,上述的比值E最大?

肉眼看得出來,ww ww取最大值wmax=1wmax=1 w_{max}=1wmax?=1,tt tt取最小值tmin=1tmin=1 t_{min}=1tmin?=1即可,即取點Pe(wmax,tmin)Pe(wmax,tmin) P_{e}(w_{max},t_{min})Pe?(wmax?,tmin?),所謂的最優(yōu)的EE EE值就是11 11,而此時,Inflight的值就是所謂的BDP=wmax×tmin=fc=1BDP=wmax×tmin=fc=1 BDP=w_{max} times t_{min}=f_c=1BDP=wmax?×tmin?=fc?=1

這確實說明了Inflight取值為臨界的恰好要使得隊列增加的fcfc f_cfc?時,系統(tǒng)的效能真的是最優(yōu)的。

Google tcp擁塞控制 bbr算法

 

如果你將P(w,t)P(w,t) P(w,t)P(w,t)在允許的定義域值域稍微偏離PePe P_ePe?點,你會發(fā)現(xiàn)EE EE值均會減少,這反映在TCP數(shù)據(jù)傳輸上,就是:

  1. 要么帶寬沒有用滿,沒有達到wmaxwmax w_{max}wmax?;
  2. 要么帶寬超額了,數(shù)據(jù)排隊了,數(shù)據(jù)到達的太快,因此延遲增加了;

無論發(fā)生了上述的什么情況,顯然都不是什么好事。

這算完成了任務(wù)嗎?證明了BBR是最優(yōu)的。看起來算是吧…


如果這樣就算是一個BBR背后完備的數(shù)學(xué)模型,這篇文章一個多月前就能寫出了。。。


我們發(fā)現(xiàn),上面的推導(dǎo)基于一個明顯的事實,即 用肉眼看,之所以可以用肉眼觀測出最值,那是因為Yuchung Cheng和Neal Cardwell在描述BBR算法時,簡化了模型,基于簡化的模型,才給出了那兩幅BW vs Inflight和RTT vs Inflight的坐標圖示,在這兩個圖示中,所有的線均為直線。

所謂的簡化模型,即假設(shè)數(shù)據(jù)包是間隔均勻勻速到達的,數(shù)據(jù)包也是勻速經(jīng)過網(wǎng)絡(luò)節(jié)點設(shè)備的。但是在實際上,這并不是事實,真實的情況畫在坐標系里并不是直線,而是曲線,類似下面的樣子:

Google tcp擁塞控制 bbr算法

 

此時如果我們依然要求解E=wtE=wt E=dfrac{w}{t}E=tw?的極大值,很顯然要求這條曲線函數(shù)tt tt針對ww ww的導(dǎo)數(shù),這下麻煩有點大!我怎么能知道帶寬ww ww和傳輸時間tt tt之間的關(guān)系呢?顯然,必須有二者之間的關(guān)系,才能求導(dǎo)啊!

怎么辦?這件事讓我搞了一個多月時間!

我能理解數(shù)據(jù)包的到達其實是柏松到達,被服務(wù)時間符合指數(shù)分布特征,但是我并沒有就著這個思路思考下去(不然我一定能想到排隊論),而是希望能先有一個通用的解。

起初,我是反著求解,我假設(shè)傳輸時間tt tt已經(jīng)可以用帶寬ww ww來表示,即t=f(w)t=f(w) t=f(w)t=f(w)然后,就會有:

```

E=wt=wf(w)E=wt=wf(w) E=dfrac{w}{t}=dfrac{w}{f(w)}E=tw?=f(w)w?進一步按照求導(dǎo)法則針對ww ww求導(dǎo),推導(dǎo)如下:E'=w×df(w)dw−f(w)f2(w)E′=w×df(w)dw−f(w)f2(w) Eprime=dfrac{wtimes dfrac{d f(w)}{d w}-f(w)}{f^2(w)}E′=f2(w)w×dwdf(w)?−f(w)?若求EE EE的極大值,那么它一定出現(xiàn)在曲線的拐點處,其導(dǎo)數(shù)一定為00 00,因此:E'=w×df(w)dw−f(w)f2(w)=0E′=w×df(w)dw−f(w)f2(w)=0 Eprime=dfrac{wtimes dfrac{d f(w)}{d w}-f(w)}{f^2(w)}=0E′=f2(w)w×dwdf(w)?−f(w)?=0f(w)=w×df(w)dwf(w)=w×df(w)dw f(w)=wtimes dfrac{d f(w)}{d w}f(w)=w×dwdf(w)?

```

這便是最終的關(guān)系式,雖然我不知道tt tt如何用ww ww來表示,但這個關(guān)系是存在的,這是個普遍適用的關(guān)系。

我為得到這個關(guān)系式興奮了一個周末,非常有成就感,雖然它現(xiàn)在看起來很簡單,但在當(dāng)時,這個想法真的顯得來得太晚!

我是從初中開始就喜歡擺置坐標系的,一直到大學(xué),幾乎任何數(shù)學(xué)題,我都能采用數(shù)形結(jié)合的方案一題多解,某種程度上,我老婆就是當(dāng)時我如此炫技追到的…最近幾年,我用同樣的方式設(shè)計了iptables的優(yōu)化方案,DxR的優(yōu)化方案…不多的幾次失敗包括Bloom Filter的形象化展示。

所以面對上述的表達式子,依然可以任意把玩。式子兩邊同時除以ww ww:f(w)w=df(w)dwf(w)w=df(w)dw dfrac{f(w)}{w}=dfrac{d f(w)}{dw}wf(w)?=dwdf(w)?

看看左邊右邊分別是什么?

  • 左邊:f(w)f(w) f(w)f(w)上任意一點到原點的直線的斜率;
  • 右邊:曲線f(w)f(w) f(w)f(w)上任意一點切線的斜率。

兩個斜率一致的時候,ww ww取值計算的EE EE是最優(yōu)的,即 曲線f(w)f(w) f(w)f(w)上任意一點PP PP和原點之間的直線與該點的切線共線! 的時候,該點PP PP的ww ww和tt tt的取值為最優(yōu)!

形象地看,我們可以通過 操作 來獲取最優(yōu)的點,即:從經(jīng)過原點的t=0這條直線開始,任其繞著原點逆時針旋轉(zhuǎn),第一次切到曲線f(w)f(w) f(w)f(w)的那個點,就是最優(yōu)點。

很簡單,是吧。


現(xiàn)在已經(jīng)定性地把問題解決了,無論曲線t=f(w)t=f(w) t=f(w)t=f(w)長什么樣子,我們可以從上述的操作步驟中獲取最優(yōu)的PP PP點,進而求出Inflight值,最終確定Cwnd。

然而,這并不能定量地分析,如果要定量地分析,則必須要有t=f(w)t=f(w) t=f(w)t=f(w)的表達式。

這個表達式何來?我花了好長時間也沒有思路。


再仔細看看帶寬和RTT之間的關(guān)系,在固定的帶寬下,RTT受到Inflight的影響,然而Inflight正是我們要求解的,這貌似進入了一個循環(huán),消除Inflight變量并無法確定二者的關(guān)系,這便是陷入了兩難!

我略過了好多文字,這些文字描述了大概將近一個月的見聞,然后我就想到了 排隊論, 排隊論, 排隊論, 排隊論, 排隊論


排隊論基于概率理論給出精確的逗留時長和到達率以及服務(wù)率之間的關(guān)系。

排隊論是一個復(fù)雜的理論,能寫幾大部頭都寫不完,我自己也只是略懂一二,并不是專門研究這個的,所以本著解決手頭當(dāng)前問題的廣度優(yōu)先原則,下面我依據(jù)排隊論的一些結(jié)論性的公式進行推導(dǎo),關(guān)于這個公式的推導(dǎo),我會在本文后面給出一個附錄。

我們依然根據(jù)最簡單的情況建立模型,即經(jīng)典的M/M/1排隊模型下的場景,在該場景下,先設(shè)以下的變量:

  • 到達率:λλ lambdaλ
  • 服務(wù)率:μμ muμ
  • 系統(tǒng)負荷水平:ρρ rhoρ
  • 用戶停留時間:WsWs W_sWs?

然后,有一些用到的定義以及公式,我們根據(jù)這些公式來進行后續(xù)的關(guān)于BBR最優(yōu)化的證明。需要聲明的是,M/M/1排隊模型是一個簡化的模型,并不代表現(xiàn)網(wǎng)中運行BBR算法的TCP傳輸發(fā)包特征就一定符合這個模型,但這是一個很好的開始。

這些結(jié)論性的定義和公式如下:

  • 系統(tǒng)負荷水平
    ρ=λμρ=λμ rho=dfrac{lambda}{mu}ρ=μλ?
  • 用戶停留時間(包括排隊時間和被服務(wù)的時間)
    Ws=1μ−λWs=1μ−λ W_s=dfrac{1}{mu-lambda}Ws?=μ−λ1?
  • 當(dāng)前系統(tǒng)中用戶數(shù)(包括排隊的和正在被服務(wù)的)
    Ls=λμ−λLs=λμ−λ L_s=dfrac{lambda}{mu-lambda}Ls?=μ−λλ?
  • 排隊等待時間
    Wg=λμ×(μ−λ)Wg=λμ×(μ−λ) W_g=dfrac{lambda}{mu times (mu-lambda)}Wg?=μ×(μ−λ)λ?

有了這些,便可以建立BBR的模型了。

在一個帶寬固定的網(wǎng)絡(luò)中,我們假設(shè)帶寬為CC CC(基于這種固定帶寬的假設(shè),實際上這是M/D/1排隊模型,但是推導(dǎo)過程并無傷大雅!),而我們發(fā)送的帶寬可以理解為 到達率, 即λλ lambdaλ,此時我們可以把WsWs W_sWs?等效于RTT,因此RTT和帶寬的關(guān)系則為:

RTT=f(λ)=Ws=1μ−λ=1C−λRTT=f(λ)=Ws=1μ−λ=1C−λ RTT=f(lambda)=W_s=dfrac{1}{mu-lambda}=dfrac{1}{C-lambda}RTT=f(λ)=Ws?=μ−λ1?=C−λ1?

根據(jù)我們上面的那個最優(yōu)解公式:

f(λ)=λ×df(λ)dλf(λ)=λ×df(λ)dλ f(lambda)=lambda times dfrac{d f(lambda)}{d lambda}f(λ)=λ×dλdf(λ)?

帶入則有:

f(λ)=λ×df(λ)dλ=1C−λf(λ)=λ×df(λ)dλ=1C−λ f(lambda)=lambdatimes dfrac{d f(lambda)}{d lambda}=dfrac{1}{C-lambda}f(λ)=λ×dλdf(λ)?=C−λ1?

而這里的df(λ)dλdf(λ)dλ dfrac{d f(lambda)}{dlambda}dλdf(λ)?則可以對f(λ)f(λ) f(lambda)f(λ)簡單求導(dǎo):

df(λ)dλ=1(C−λ)2df(λ)dλ=1(C−λ)2 dfrac{d f(lambda)}{dlambda}=dfrac{1}{(C-lambda)^2}dλdf(λ)?=(C−λ)21?

代入則有了結(jié)論:

λ(C−λ)2=1C−λλ(C−λ)2=1C−λ dfrac{lambda}{(C-lambda)^2}=dfrac{1}{C-lambda}(C−λ)2λ?=C−λ1?λ=C−λλ=C−λ lambda=C-lambdaλ=C−λλ=C2λ=C2 lambda=dfrac{C}{2}λ=2C?

最終,我們發(fā)現(xiàn)了最有點PP PP,即:

P(C2,2C)P(C2,2C) P(dfrac{C}{2},dfrac{2}{C})P(2C?,C2?)

這個結(jié)論有什么用呢?它意味著什么呢?

我們再來看M/M/1模型中的另外一個公式,即計算當(dāng)前系統(tǒng)的用戶數(shù):

Ls=λμ−λ=C2C−C2=1Ls=λμ−λ=C2C−C2=1 L_s=dfrac{lambda}{mu-lambda}=dfrac{dfrac{C}{2}}{C-dfrac{C}{2}}=1Ls?=μ−λλ?=C−2C?2C??=1

這意味著系統(tǒng)中只有一個用戶,這意味著沒有排隊!!這意味著最優(yōu)的情況,即EE EE最大的時候,系統(tǒng)是沒有隊列堆積的!這個時候,我們來計算一下BDP:

BDP=λ×f(λ)=C2×2C=1BDP=λ×f(λ)=C2×2C=1 BDP=lambdatimes f(lambda)=dfrac{C}{2}times dfrac{2}{C}=1BDP=λ×f(λ)=2C?×C2?=1

正解于天下!這也是我在這方面工作的一個里程碑,現(xiàn)在總結(jié)一下就是:在M/M/1排隊模型的假設(shè)下,BBR擁塞控制算法是效能E最優(yōu)的。

然而,M/M/1模型只是一個開始,事實上,基于端到端的TCP協(xié)議,在鏈路上會經(jīng)過非常多的中間節(jié)點,即,至少起碼的,我們也要在M/M/k排隊模型上再次證明上述結(jié)論的正確性才行。

而這是簡單的。

我們假設(shè)一個端到端的鏈路上有kk kk個中間節(jié)點,那么每一個節(jié)點都遵循M/M/1排隊模型的法則,綜合起來就是M/M/k了,我們假設(shè)這些節(jié)點的處理能力并不相同,并假設(shè)其中有一個能力最弱的節(jié)點m,其處理能力μmμm mu_mμm?,在排隊論模型中,只要有排隊現(xiàn)象,就會增加時延而降低效能E,所以為了不排隊每一個節(jié)點的到達率均要滿足:λk≤μm2λk≤μm2 lambda_k le dfrac{mu_m}{2}λk?≤2μm??,所以最終的系統(tǒng)中的用戶數(shù)是要小于kk kk的,這就是說,系統(tǒng)的吞吐是由最弱的節(jié)點決定的這個典型的漏桶理論

我們來看BBR的名稱,Bottleneck Bandwidth and RTT,其中以 Bottleneck Bandwidth為M/M/k排隊模型的依據(jù)保證了RTT不會因為排隊引入的延遲而增加。

換句話說,BBR擁塞控制算法告訴你,別發(fā)太多包,超過Bottleneck Bandwidth的限額,你多發(fā)了也過不去,還平添時延,因為已經(jīng)偏離了最優(yōu)的操作點!

算法是OK的,代表了一種正確的方法,退一步,至少可以說是一種引向正確方法的趨勢。然而在實現(xiàn)上,它的根基在于 測量的準確性。算法實現(xiàn)的具體實施過程中,TCP協(xié)議固有的不可測量性是最大的掣肘,而這是TCP的固有缺陷所導(dǎo)致,永遠也無法被解決!

那么QUIC的實現(xiàn)呢?我準備花大力氣測測看。


在很早之前介紹BBR算法的文章中,我提到了 帶寬和RTT互為正交 的概念:google’s BBR擁塞控制算法模型解析:https://blog.csdn.net/dog250/article/details/52895080

現(xiàn)在我們可以基于本文上述的關(guān)于最優(yōu)化的結(jié)論再來理解這個 正交

先從固定的D/D/1排隊模型看,我們再看BW vs RTT圖:

Google tcp擁塞控制 bbr算法

 

我們可以看到最優(yōu)點PePe P_ePe?處,帶寬和RTT的乘積正好是矩形的面積,而它就是BDP,無論你在折線上怎么移動PP PP點,你均無法獲得更大的矩形面積,往左移動,面積減少,這意味著不夠,效能當(dāng)然低,往上移動,面積不再增加,這說明多發(fā)數(shù)據(jù)包也沒用,并不能增加有效BDP。

好完美的既視感!貌似打消了任何企圖通過多發(fā)包來提升性能的念頭,然而突然發(fā)現(xiàn)這只是理想D/D/1排隊模型下的結(jié)論。

稍微真實點的M/M/1排隊模型下,是這樣子的:

Google tcp擁塞控制 bbr算法

 

你會發(fā)現(xiàn),在最優(yōu)化點附近,還是可以 通過比較小的RTT增加的代價,獲得更多有效BDP的。這似乎給了人們稍微增加一點Cwnd以理由和意義。黑暗壓下來的時候,總是留下一絲的光亮,沒有辦法。


通過相對嚴格的數(shù)學(xué)推導(dǎo),我們發(fā)現(xiàn)BBR算法在BW vs RTT坐標系的曲線上的操作點確實是最優(yōu)的,然而我們又從同樣一張圖的M/M/1表述中發(fā)現(xiàn)了一點可以利用的Trick…

不管怎么說,不想排隊是為了自己,然而制造排隊則是毀了大家,你能控制的,僅僅是自己不排隊,這是個博弈,答案卻非常簡單!


如此簡單的數(shù)學(xué)推導(dǎo),展示了事實,那么,為什么路由器和交換機還要設(shè)計隊列緩存呢?

從商業(yè)的角度,如今的存儲設(shè)備越來越便宜,更多的緩存可以換取更多的 不丟包指標,極低的代價換一個噱頭。

從工程的角度來看,隊列不僅僅是 為了緩存多出來的數(shù)據(jù)包,更多的是一種主動式的管理設(shè)施,比如流量整形,按照不同的產(chǎn)品進行限速,優(yōu)先級管理等等。

最后,從數(shù)學(xué)上看,假設(shè)數(shù)據(jù)包到達行為是泊松到達,其到達率期望是λλ lambdaλ,那么為了獲得最佳的效能,其服務(wù)率必然是2λ2λ 2lambda2λ,但是這些都是統(tǒng)計分布,到達率的期望只是一個均值,在可計算的概率下,到達率完全可以達到3λ3λ 3lambda3λ,4λ4λ 4lambda4λ…為了吸收這些統(tǒng)計峰值,則必須設(shè)計隊列緩存。

現(xiàn)在的問題是轉(zhuǎn)發(fā)節(jié)點設(shè)備上的緩存要設(shè)計多大?有了BW vs RTT這張圖,這是可以計算出來的!

我們依然假設(shè)這個模型是簡單的M/M/1排隊模型。我將D/D/1模型和M/M/1模型放在一張圖里解釋:

Google tcp擁塞控制 bbr算法

 

虛線和橘黃色真實的實線圍成部分的面積就是節(jié)點需要的緩存的大小(事實上要稍微大一點,畢竟這里的RTT也是均值),因為它在泊松到達的正常波動范圍內(nèi)。

此外根據(jù)本文上面的推論,當(dāng)λ=μ2λ=μ2 lambda=dfrac{mu}{2}λ=2μ?的時候,系統(tǒng)的效能E最大,在上圖中,這也是可以解釋的:

Google tcp擁塞控制 bbr算法

 

其中藍線圍成的區(qū)域面積為 最佳的BDP,這個是和D/D/1模型不同的。

由于泊松到達的統(tǒng)計效應(yīng)造成了不可避免的排隊和空轉(zhuǎn),且二者不能抵消,因此必須設(shè)計緩存隊列,曲線相對t=1t=1 t=1t=1往上下凸了,因此從原點出發(fā)相切于t=f(λ)t=f(λ) t=f(lambda)t=f(λ)的切線肯定在λ=μλ=μ lambda=muλ=μ的左邊,這意味著相對于D/D/1模型,M/M/1模型在其它條件都相同的情況下,損失了一點Inflight!這是統(tǒng)計的不確定性帶來的不可消除的代價!

所以說,在非主動管理的意義上,隊列的作用是什么?隊列的作用是,平滑泊松到達的統(tǒng)計特性引發(fā)的突發(fā)。突發(fā)總是存在的,為了能容忍這些突發(fā), 而不至于丟包。

從示意圖上看,即便是BBR,也是無法100%避免排隊的,這是泊松到達的統(tǒng)計特征決定的,即便單一服務(wù)節(jié)點的服務(wù)率μμ muμ是到達率λλ lambdaλ的1000倍(而不是計算出來的最優(yōu)值2倍),也會有小概率的突發(fā)會造成輕微排隊。故而,隊列算是一個基礎(chǔ)設(shè)施,必不可少,但你要明白,隊列是用來干嘛的!

然而,還有一個話題,與統(tǒng)計突發(fā)概率相等的對稱的現(xiàn)象就是系統(tǒng)空轉(zhuǎn),而空轉(zhuǎn)是無法彌補的,沒有任務(wù)到達,系統(tǒng)確實什么也做不了。因此,引入主動隊列管理是必要的,上一時間周期來不及處理的任務(wù)通過緩存隊列推遲到下一個時間周期,填補空轉(zhuǎn)期,這方面,我覺得帶突發(fā)的令牌桶這個設(shè)計,簡單又直接。

慢啟動在BBR中仍然保留,它的意義是在不知道連接的瓶頸帶寬時,以起始較低的發(fā)送速率,以每RTT兩倍的速度快速增加發(fā)送速率,直到到達一個閾值,對應(yīng)上圖中0-4秒。到該閾值后,進入線性提高發(fā)送速率的階段,該階段叫做擁塞避免,直到發(fā)生丟包,對應(yīng)上圖中8-11秒。丟包后,發(fā)速速率大幅下降,針對丟包使用快速重傳算法重送發(fā)送,同時也使用快速恢復(fù)算法把發(fā)送速率盡量平滑的升上來。

如果瓶頸路由器的緩存特別大,那么這種以丟包作為探測依據(jù)的擁塞算法將會導(dǎo)致嚴重問題:TCP鏈路上長時間RTT變大,但吞吐量維持不變。

事實上,我們的傳輸速度在3個階段被不同的因素限制:

1、應(yīng)用程序限制階段,此時RTT不變,隨著應(yīng)用程序開始發(fā)送大文件,速率直線上升;

2、BDP限制階段,此時RTT開始不斷上升,但吞吐量不變,因為此時瓶頸路由器已經(jīng)達到上限,緩沖隊列正在不斷增加;

3、瓶頸路由器緩沖隊列限制階段,此時開始大量丟包。


宏觀背景下的BBR

1980年代的擁塞崩潰導(dǎo)致了1980年代的擁塞控制機制的出爐,某種意義上這屬于見招拆招的策略,針對1980年代的擁塞,提出了1980年代的擁塞控制算法,即ss,ssthresh,congestion avoid這些。

說實話,這些機制完美適應(yīng)了1980年代的網(wǎng)絡(luò)特征,低帶寬,淺緩存隊列,美好持續(xù)到了2000年代。

隨后互聯(lián)網(wǎng)大爆發(fā),多媒體應(yīng)用特別是圖片,音視頻類的應(yīng)用促使帶寬必須猛增,而摩爾定律促使存儲設(shè)施趨于廉價而路由器隊列緩存猛增,這便是BBR誕生的背景。換句話說,1980年代的CC已經(jīng)不適用了,2010年代需要另外的一次見招拆招。

如果說上一次1980年代的CC旨在 收斂,那么這一次BBR則旨在 效能E最大化,這里的E就是本文上面大量篇幅描述的那個E,至少我個人是這么認為的,這也和BBR的初衷 提高帶寬利用率 相一致!

分享到:
標簽:算法 bbr
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定