Google tcp拥塞控制 bbr算法

先说一下我的思路,由于我自从中学开始就是一个深度的数形结合控,希望能把一切都画在一个坐标系里,然后无非就是找最高点,最低点,找规律这些了,所谓求极值,展示特征无非也就是那些惯用的方法, 求导,积分,数列展开这些,所以对于BBR算法,我依然循着这样的思路 。
现在要做的,就是怎么把BBR的行为画在一个坐标系里 。如果这一步做到了的话,我相信以我20年的经验顺水推舟事情就一定能成 。
其实,BBR最初的slides和paper中,不断展示的图示是下面这个:

Google tcp拥塞控制 bbr算法

文章插图
 
然后,我仔细观察了这两个坐标系,分别是BW(其实是Deliveryrate) vs Inflight以及RTT vs Inflight,都有Infligh 。其实,这两张图是用于展示BBR特征的,它只说了What,并没有解释Why,实际上,难道Inflight不应该是 计算出来的 吗?如果说我能根据另一个坐标系的曲线进行一系列计算,最后 推导出Inflight的值必须是那个值才能达到某种最优的效果,那就解释了Why 。
就是这个思路 。让我们一步一步去做 。
既然我们把Inflight当成了一个结果而不是原因,为了找这个原因,我们合并两个坐标系,消去公共的Inflight,那么我们就可以得到RTT vs BW的曲线了!
为了数学上表述的方便,后面统一一下符号: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算法

文章插图
 
很简单,方程组联立就可以消去变量ff ff 。
我们可以看到,最终ww ww和tt tt的取值范围就是那条开向第二象限的折线,现在的问题是,在这条折线中,P(w,t)P(w,t) P(w,t)P(w,t)在哪里是最优的,而此时的Inflight值就是最适合灌进网络中的数据包的数量,换句话说,它反映了Cwnd应该取什么值 。
问题转化为了 如何度量所谓的最优  。
一般工业界和经济学领域都会采用 ***产出/成本***的比值来衡量一个系统是不是优秀,换句话说就是 最优的系统是用最少的代价换取最高的收益 。对于我们目前的模型而言,用语言来表达,即 最少的时间传输最多的数据包 。
因此,很显然,我给出下列的比值,最为衡量系统是否最优的度量: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?),所谓的最优的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?时,系统的效能真的是最优的 。
Google tcp拥塞控制 bbr算法

文章插图
 
如果你将P(w,t)P(w,t) P(w,t)P(w,t)在允许的定义域值域稍微偏离PePe P_ePe?点,你会发现EE EE值均会减少,这反映在TCP数据传输上,就是:
  1. 要么带宽没有用满,没有达到wmaxwmax w_{max}wmax?;
  2. 要么带宽超额了,数据排队了,数据到达的太快,因此延迟增加了;
无论发生了上述的什么情况,显然都不是什么好事 。
【Google tcp拥塞控制 bbr算法】这算完成了任务吗?证明了BBR是最优的 。看起来算是吧…


    推荐阅读