bbr 和 cubic 的共存

有 100 个 cubic 用户准备切到 bbr,总带宽一共 100mbps,平均一个用户 1mbps,等切换完成,平均一个用户还是 1mbps,有一种可能会发生下面的情况:第一个切到 bbr 的用户获得了超过 1mbps 的带宽,直到第 n 个用户获得刚刚好 1mbps,第 n + 1 个用户切到 bbr 后发现还不如以前的 cubic,于是又切回,升级就此打住,因为没人喜欢出力不讨好。

这种情况是否会真的发生呢?

早先看过一篇论文说的是存量 cubic 切换 bbr 的过程会在一个纳什均衡点(NE)停止,我用一个新模型再分析一下,这个模型主要关注 bbr 和 cubic 对 buffer 的不同使用风格。

早先有过一个简易版分析,文字最后贴有相关论文的链接:bbr 会取代 cubic 吗?

先看一个均匀模型,即假设它们使用 buffer 的风格相同,都是 aimd 风格:

( N − n c ) λ b + n c ⋅ λ c = C (N-n_c)\lambda_b+n_c\cdot\lambda_c=C (Nnc)λb+ncλc=C

其中 N 为总用户数,n_c 为 cubic 用户数,lambda_b 为 bbr 单流带宽,lambda_c 为 cubic 带宽,C 为总带宽。

它的图像如下:
在这里插入图片描述

接下来将此模型按照 bbr 和 cubic 对 buffer 不同的使用风格进行偏置,偏置原则如下:

  • bbr 保持 2bdp in-flight,in-flight 应该在 1bdp <= in-flight <= 2*bdp,取最大值放大 bbr 的 buffer 优势;
  • 用 y = (x - 1) / x 拟合 cubic 的 buffer 最低使用率,x 为 cubic 流数量;
  • 用 g = x / (x + 1) 拟合 cubic 的 buffer 平均使用率,x 为 cubic 流数量。

解释一下为啥用两个渐进函数拟合 buffer 用量,主要是承认流在常规场景的统计异步性和异构性,没必要用 aimd 动力学微分方程建模(流太多时,统计一抹糊),相反,用正态分布特征去拟合 W t o t a l = Σ i = 0 n c w i W_{total}=\Sigma_{i=0}^{n_c}w_i Wtotal=Σi=0ncwi更有效,用期望,均值特征去分析。但我觉得还是太麻烦,索性进一步简化:

  • y 表示最低 buffer 用量,当 n_c 为 1,queue 刚刚退空,典型的范雅各布森管道场景,当 n_c 趋向无穷,进入异步统计稳态,buffer 长期被占;
  • G 表示平均 buffer 用量,当 n_c 为 1,典型 aimd 管道利用率为 50%,当 n_c 趋向无穷,进入异步统计稳态,buffer 长期被占;
  • 另一个原因是在真实场景下,各种 cc 共存本就无迹可循,只能分析统计特征。
    总体表达式如下:

( N − n c ) λ b ( R T p r o p + 2 ∗ B ∗ ( n c − 1 ) λ c n c 2 ) + B ∗ n c n c + 1 − ( 20 − n c ) ( R T p r o p + 2 ∗ B ∗ ( n c − 1 ) λ c n c 2 ) ≤ B (N-n_c)\lambda_b(RT_{prop}+2*\dfrac{B*(n_c-1)}{\lambda_c n_c^2})+B*\dfrac{n_c}{n_c+1}-\left(20-n_c\right)(RT_{prop}+2*\dfrac{B*(n_c-1)}{\lambda_c n_c^2})\leq B (Nnc)λb(RTprop+2λcnc2B(nc1))+Bnc+1nc(20nc)(RTprop+2λcnc2B(nc1))B

其中:

  • bbr 单流占用 buffer 由 2 ∗ b d p − i n f l i g h t w i r e 2*bdp - inflight_{wire} 2bdpinflightwire 表达,后者由 2 ∗ λ b ∗ ( R p r o p + R q u e u i n g ) − λ b ∗ R p r o p 2*\lambda_b*(R_{prop} + R_{queuing}) - \lambda_b*R_{prop} 2λb(Rprop+Rqueuing)λbRprop 化简;
  • bbr 的 R q u e u i n g R_{queuing} Rqueuing由 cubic 的 b u f f e r m i n n c ∗ λ c \dfrac{buffer_{min}}{n_c * \lambda_c} ncλcbuffermin 化简。

通过调整 B,C,N,R 等参数,可获得一个如下相对激进的图像:
在这里插入图片描述

纳什均衡点很轻松获得。下面结合 bbr,aimd 动力学解释一下。

bbr 的 2*bdp in-flight 自带适应性反馈,如果基础 queuing 大,bdp = maxbw * minrtt 中 minrtt 就很大,稳态 in-flight 就大,这种与 aimd 共存时 cwnd_gain = 2 不会成为限制因素,但 queuing 退却后,cwnd_gain 可以确保 bbr 自身 probe 不会过激。

接下来,少量 bbr 初始加入 cubic 群,单流 probe 的 multiplicative increase 行为迅速挤占带宽,注意,buffer 挤占效果可确保 bbr 流获得更大 maxbw,不会在下面 drain 周期回到原点。

随 bbr 流渐多,其行为将主导 buffer 动力学,bbr probertt 将反制 probebw 中挤占的 buffer,此时 cubic 流将会拿掉 bbr 腾出的 buffer,随 bbr 流增多,这效应越发显著,若最后剩有一条 cubic 流,其带宽将大于此时 bbr 单流带宽。

除非 bbr probe 更激进,除此之外 bbr 只被动响应,minrtt 可随大量 aimd 行为增加,但越来越少的 aimd 行为则减少 minrtt,而可观测的 maxbw 在 bbr 本身的公平性动力学中随 bbr 流量增加而减少,抵消掉了部分 buffer 中的增益。

换句话说,bbr 只能对 bbr 感知和反应,aimd 也一样。不同 cc 没有共识,感知和反应不会在预期之内。

bbr 流多,虽可从持续减少的 cubic 方 probe 一些带宽,但所有 bbr 的同步 probertt 及自己的 cwnd gain(量多,值就小了,很容易被限制在很小的buffer)会限制甚至反制 in-flight,如果相反,bbr 少,cubic 多就不同,大量异步 aimd 造成统计波动平稳(平方反比律还记得吗),minrtt 不会减少,而 maxbw 在 mi probe 中纯增加,bbr 带宽持续攀爬向上。

2bdp 等于 2b*d,如果没有一增一减,就是持续增加,目标指标本身也会卷着增加而自适应。

so?纳什均衡几乎是必然的,这不是仅用边际收益递减原则能解释的,还和博弈双方的秉性有关。
更进一步推广,这几乎是世界的本质,这也是世界万物多世代多样化共存的根源,如果再套用控制论的术语,纳什均衡点后面其实是一个 “稳态误差”,如果没有更进一步的持续激励,这个误差将永远存在。

软件升级过程很容易消除稳态误差而突破纳什均衡点,比如忽略存量,只搞增量,随时间推移,存量总会自然流失,这是另一个层面的自然淘汰。升级 bbr 也不一定要强迫 cubic 用户切换到 bbr,等到 cubic 用户升级操作系统,新版系统中如果没了 cubic,cubic 再好也用不成了。

时间长河中,一切现状都是历史在叠加,这就是卷积,而另一方面,如本文所描述的模型 ( N − n c ) λ b + n c ⋅ λ c = C (N-n_c)\lambda_b+n_c\cdot\lambda_c=C (Nnc)λb+ncλc=C,这是个无限可能的均匀共存模型,为其加上偏置就可能获得纳什均衡点,而这些纳什均衡点决定了共存的长期性,进一步解释了世界多样性的卷积本质,纳什均衡点决定的是 “单位激励响应” 函数尾巴的形状。

浙江温州皮鞋湿,下雨进水不会胖。

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CubicBBR都是TCP拥塞控制算法,用于在网络中实现拥塞控制和调整发送速率。它们在拥塞控制的策略和机制上有一些区别。 1. 拥塞控制策略: - CubicCubic采用了拟三次函数的增长曲线来调整发送速率。它通过监测网络的拥塞情况并根据RTT(往返时间)估算拥塞窗口大小。Cubic具有慢启动、拥塞避免和快恢复等阶段,通过调整拥塞窗口大小来逐步增加发送速率,并在网络拥塞时快速减少发送速率。 - BBRBBR(Bottleneck Bandwidth and RTT)是一种基于带宽和往返时间的拥塞控制算法。BBR通过测量网络链路的带宽和RTT,并根据这些信息来推断网络的可用带宽,以达到最佳的发送速率。BBR的目标是尽可能地充分利用网络带宽,同时避免引入过多的排队延迟。 2. 带宽估计和延迟反馈: - CubicCubic主要通过观察丢包事件来判断网络拥塞,然后相应地调整发送速率。它没有直接的机制来测量带宽和延迟,而是通过拥塞窗口大小的调整来间接反映网络状态。 - BBRBBR使用了延迟和带宽的反馈信息来进行拥塞控制。它通过测量数据包的发送和接收时间以及传输时延,估算网络链路的带宽和RTT。BBR利用这些信息来调整发送速率和拥塞窗口,以实现更高的带宽利用率和更低的延迟。 总体而言,CubicBBR拥塞控制策略和机制上有所不同。Cubic采用了拟三次函数的增长曲线来调整发送速率,而BBR基于测量的带宽和延迟信息来达到最佳的发送速率。BBR相对于Cubic在某些情况下可以实现更高的带宽利用率和更低的延迟。然而,选择使用哪种算法取决于具体的网络环境和应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值