• BBR 会取代 CUBIC 吗?


    先说结论:不会。还是那句话,TCP 拥塞控制的问题根本就不是技术问题,而是社会学问题。
    先列举一些既证事实。

    实验测量事实:

    • BBR vs CUBIC,1 v 1,Buffer 小于一定阈值,BBR 完爆 CUBIC。
    • BBR vs CUBIC,1 v 1,Buffer 超过一定阈值,BBR 不敌 CUBIC。

    经济学事实:

    • BBR 收敛需要成本,增加 BBR 流的边际收益递减。
    • CUBIC 收敛需要成本,增加 BBR 流的边际收益递减。

    本文简单推演。

    假设场景, BBR vs CUBIC,N v N,Buffer 小于阈值,总带宽 C,N 条 BBR 流所占带宽大于 N 条 CUBIC 流所占带宽:

    α C > ( 1 − α ) C αC>(1−α)C αC>(1α)C

    因此, α > 12 α>12 α>12

    式子转换几下:

    α N + α > α N − α + 1 \alpha N+\alpha > \alpha N-\alpha+1 αN+α>αNα+1
    α > α N − α + 1 N + 1 \alpha>\dfrac{\alpha N-\alpha+1}{N+1} α>N+1αNα+1
    α N > α N + ( 1 − α ) N ( N + 1 ) \dfrac{\alpha}{N}>\dfrac{\alpha N+(1-\alpha)}{N(N+1)} Nα>N(N+1)αN+(1α)
    α C N > α C + ( 1 − α ) C N N + 1 \dfrac{\alpha C}{N}>\dfrac{\alpha C+\dfrac{(1-\alpha)C}{N}}{N+1} NαC>N+1αC+N(1α)C

    来看看最后一个式子的物理意义。

    它实际上就是在表达边际收益递减。式子右边就是一个 CUBIC 流叛变加入 BBR 后,新的 BBR 平均带宽。这意味着加入一个叛徒后,新平均带宽竟然变小了。

    正式表述为:

    现在有一个 CUBIC 切换成 BBR,N+1 v N-1,简单边际收益递减,1 个叛徒带过来的 CUBIC 带宽平分后的份额不足以弥补新加入者带来的收敛成本:
    在这里插入图片描述
    从 BBR 这一边观之,这意味着切换 BBR 的意愿越来越低,且 BBR 存量也不希望再有新的 BBR 加入,蓝海逐渐变红。

    现在看 CUBIC 一边。

    随着 CUBIC 切换到 BBR,CUBIC 红海逐渐变蓝。

    CUBIC 收敛成本随着数量的降低而降低,打个比方,Buffer 大小为 b,N 条 CUBIC 流时,每条流在平均占据 b/N Buffer 时便会收敛,随着 N 的减少,收敛时 Buffer 占据变多了。这等价于,Buffer 变深了。
    随着这种等价的 Buffer 变深,总能超过一个阈值,CUBIC 的带宽大于 BBR 的带宽。

    BBR 那边的收益在不断减少,CUBIC 这边反而逐渐扳回,总能达到一个平衡点,CUBIC 不再切 BBR,BBR 也不会回退到 CUBIC。

    当然,上面的分析太朴素而简陋,我只是简单评说,没有分析 BBR 和 CUBIC 之间的交互动力学。详情请看:

    https://conferences.sigcomm.org/events/apnet2021/papers/apnet2021-4.pdf
    https://www.comp.nus.edu.sg/~bleong/publications/imc2022-nash.pdf
    本文来自周五对一个 BBR 邮件组 issue 的思考:
    在这里插入图片描述
    千般苦,万般难,任何事都要付出代价。

    若说为什么 CUBIC 完美取代了 Reno,原因很简单,它们是一类的,CUBIC 本就是 Reno 的升级版。但 BBR 不同,BBR 是另一回事,所以事情就不会那么简单。

    BBR 是否会取代 CUBIC,这不就是所有社会学实验的必然结论吗,只是用数学论证一下就是一个paper。社会主义 vs 资本主义,君主立宪 vs 君主专制,麦当劳 vs 肯德基,议会民主 vs 寡头民主… 最终都是异构共存。

    本质就是 “边际收益递减”,这是个类似能量守恒一样的真理。

    跟同事聊到一个 issue,看了篇论文,周末了,开始写点东西,本文形而上,不过也是经过了些思考。

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

  • 相关阅读:
    陪诊小程序|陪诊系统让就医服务更加人性化
    NSS [NCTF 2018]小绿草之最强大脑
    K8s之零故障升级Pod健康探测详解
    NL80211驱动
    区分公私件教程
    <C++> 反向迭代器
    模拟实现十字路口交通灯管理系统(Java)
    openGauss学习笔记-62 openGauss 数据库管理-两地三中心跨Region容灾
    零基础自学C语言|自定义类型:结构体
    增值税发票OCR识别功能介绍
  • 原文地址:https://blog.csdn.net/dog250/article/details/126552095