BBR 动力学仅在纯 BBR 与模型匹配,否则需要各种技巧和其它算法共存,BBRv2 便是这种妥协。
本文着重说 BBR 之 ProbeRTT。

该状态有意思,它的收敛机制如此精致。以一大一小两流为例,大流指它侵入 buffer,足以影响 minrtt 采集:

  • 大流进入 ProbeRTT,清让 buffer,大流小流同时采到 minrtt。
  • 小流进入 ProbeRTT,采集到偏大 minrtt,待大流进入 ProbeRTT,两流同时采到 minrtt。

只要所有 BBR 流配置相同 ProbeRTT 窗口,收敛点就天然同步,就是 BBR 带宽/时间 图上向下凸起的那些小尖。

像高架桥面或铁轨上那些接缝,固定距离就要咯噔一下,BBR 对于一些流媒体也存在该问题,同步卡顿。随机化 ProbeBRR 窗口可解决,比如 5s~15s 内随机进入 ProbeRTT。

每条流 ProbeRTT 间隔随机,并不影响所有流依然在同一时间采到 minrtt,这是根本。

所有流采到 minrtt 那一刻开始,BBR 在 ProbeBW 状态收敛到公平,参见下文 “ProbeBW状态probe阶段BBR如何公平收敛” 一节:
The math behind dynamics of TCP BBR

走出理想,来到现实世界。

BBR 没有和 CUBIC 公平收敛的动力学,只能靠调参。

实践中发现与 CUBIC 共存,不抢 buffer,BBR 自己都立不稳,无法稳定维持状态机,此时带宽数据依然比 CUBIC 好,并非受益于 BBR 的模型,而是:

  • BBR 可以憋住 10 rounds 的 maxbw 不退让。
  • BBR 丢包状态依然试图稳住状态机并在恢复后 undo。

不过重传率也增加了,这已在透支资源维持状态机。至于 ProbeBW 中的 probe/drain,几乎完全乱套,因为 BDP 不再可信。

与 CUBIC 共存,ProbeRTT 将会给 BBR 带来厄运而不是机会,突然主动降低 inflight 给了其它流 buffer 依然未满的假象,等 BBR 退出 ProbeRTT 时,依然无法采集 minrtt,反而出让的带宽也让人给占了。

ProbeRTT 目标是采集 minrtt,当确认该目标无法达成,不再进 ProbeRTT 是良策,而不是将 4 inflight 改成 70%,后者依然无法采到 minrtt,又何必。

看起来有两个选择:

  • 降低 minrtt 的期望,维持 CUBIC 状态下 midrtt 作为 minrtt。
  • 依照 BBRv2 的做法,比例降低 inflight。

理想 BBR 的姿势很容易被现实的 buffer 打乱,它太依赖 pacing ,还是上文,看 “probe挤占导致的排队问题以及解法” 。

有 trick 可应对,长流有效。

在进入 ProbeRTT 前后分别测量 srtt 和 delivery rate,看结果是否有大改观,可区分 RTT 升高是否自己所为,若非自己所为,则记入链路画像。

若自己 ProbeRTT,RTT 依然居高不下,可判定自己未占 buffer,若一个窗口内采集到相仿的 minrtt,则对方同为 BBR,不进 ProbeRTT 概率减少,否则增加。每次进入 ProbeRTT 与否,全凭该概率决定,此举将 ProbeRTT 与 采集 minrtt 分离,不再依赖。

解释一下:

第一次 ProbeRTT 后,至少可保证自己 inflight 是 4(或者 10),此时的递增 RTT 肯定是别人所为,下次ProbeRTT,若 RTT 还高,大概率可说明还是别人造成,因为按照 BBR 规则不会占 buffer,既然不是我所为,再降 inflight 也无法采集 minrtt,纯吃亏,也就不再进入这次 ProbeRTT。
minrtt 不必每次都通过 inflight = 4 获得,确认 buffer 不是自己所为,可继承最近相对可信的 minrtt,或取两次 10s 间最小 RTT,把别人造成的排队延时都算进去。

总之,要在连接中持续刻画一幅链路画像,它将越来越准确。

CUBIC, BBR,25 Gbps,50 us 链路,无丢包,1000 pkts buffer,5v5,看下效果:

调参概率 10 倍增益,本意是 BBR 在 150 秒后吊打 CUBIC。修改偏好可以维持公平,但不吊打显示不出区别。

本准备去南汇赶海听潮,虽没法和深圳盐田大小梅沙,大鹏南澳杨梅坑比,但至少也是个海…无奈小小明天有个考试,就去不成了,本想今晚在酒店调试这个,就在这大热天的下午折腾完了。这次不放代码,因为不能总放,连 stap poc 也不放了。昨晚有朋友提示,跟那些长篇大论后面贴一个公众号二维码的作者相比,和那些大厂高 P 相比,我就是个 SB,他们拿了我太多输出,我却依然显得怡然自得。我回味无穷,也非常感谢

BBR 遭遇 CUBIC相关推荐

  1. BBR/Vegas/CUBIC拥塞控制算法对比

    文章目录 环境 结果统计 结果分析 总结 发生丢包时的反应 环境 基于本地通信,通过tcconfig设置丢包率,rtt和带宽上限. 测试程序阻塞发包. 结果统计 Vegas BBR CUBIC 不做任 ...

  2. Facebook:对比COPA 与CUBIC,BBR v1在拥塞控制及视频质量的表现

    Facebook的测试结果显示,COPA较于常用算法CUBIC及BBR v1存在一定优势,来看看具体表现. 文 / Nitin Garg 译 / Adrian Ng 原文 https://engine ...

  3. 从TCP拥塞本质看BBR算法及其收敛性(附CUBIC的改进/NCL机制)

    本文试图给出一些与BBR算法相关但却是其之外的东西. 1.TCP拥塞的本质 注意,我并没有把题目定义成网络拥塞的本质,不然又要扯泊松到达和排队论了.事实上,TCP拥塞的本质要好理解的多!TCP拥塞绝大 ...

  4. BBR 会取代 CUBIC 吗?

    先说结论:不会.还是那句话,TCP 拥塞控制的问题根本就不是技术问题,而是社会学问题. 先列举一些既证事实. 实验测量事实: BBR vs CUBIC,1 v 1,Buffer 小于一定阈值,BBR ...

  5. BBR到底好在哪里?

    BBR到底好在哪里? 都说BBR好,特别是在长传场景,一试就知道,也有很多分析BBR细节的文章,但很少有在理论上详细对比BBR和传统Loss based CCA的,BBR到底好在哪里,周末例行写作,今 ...

  6. [译] Cilium:基于 BPF+EDT+FQ+BBR 更好地带宽网络管理

    译者序 本文翻译自 KubeCon+CloudNativeCon Europe 2022 的一篇分享:Better Bandwidth Management with eBPF. 作者 Daniel ...

  7. 深夜聊聊Bufferbloat以及TCP BBR

    这篇文章的写作动机来源于知乎上的一个问题,有人问既然Bufferbloat是个问题,为什么路由器的缓存还要设计那么大.起初,我也是觉得缓存越大越好,这个就像人们拼命比拼谁的电脑内存大一样,因为在一般人 ...

  8. Google's BBR拥塞控制算法如何对抗丢包

    我不知道该怎么说.总之,便舍船,从口入,我看不到黄发垂髫并怡然自乐!我不会说什么,除了咒骂!         在BBR之前,存在着两种拥塞控制算法,基于丢包的和基于时延的,不管哪一种都是基于探测的,换 ...

  9. TCP BBR 短评

    盯着 BBR 带宽吊打 CUBIC 时,要看它为此能力而付出的代价. BBR 在轻微丢包( < 1% )场景重传率比 CUBIC 高 6-10 倍,稍重到重丢包场景可超过 20 倍甚至上百倍,这 ...

最新文章

  1. Windows10下Python3做OpenGL的编程
  2. 微生态、生信和植物领域最新资讯合集,不看你就亏大啦!!!
  3. viewport实现html页面动态缩放/meta viewport/viewport
  4. oracle的本地安装和PUTTY+XMING远程连接安装和oracle翻页功能
  5. SOLID 原则的可靠指南
  6. 2.5D屏幕有什么好处?
  7. gerrit 数据迁移_gerrit importer 使用方法
  8. 【转】HBase架构解析
  9. SVN实现自动更新(Windows平台)
  10. 【cherry键盘白送】有人在云上送来一波双十一福利
  11. jsp银行排队叫号系统
  12. CoFlash 基本操作说明和Flash编程算法
  13. 调用百度地图API去掉地图左下角的百度LOGO方法
  14. 电子密码锁的设计(Verilog HDL实现)
  15. 微信 java抓取_【java】微信文章抓取
  16. 电视剧《乡村爱情2》之演员表(ZT)
  17. easyExcel中导入文件参数校验实现方案
  18. Camera知识问答
  19. 2006世界杯32强
  20. 考虑不同充电需求的电动汽车协调充电调度方法 提出了一种电动汽车(EV)的协调充电调度方法

热门文章

  1. CentOS8下载及设置安装源(最新设置)
  2. XML配置文件的读取
  3. 驱动开发笔记3—SSDT表详解
  4. Excel:一步搞定平均分 妙用TRIMMEAN函数(转)
  5. 如何批量将 ppt 后缀格式的演示文稿转换为 pptx 格式
  6. 普通人除了打工,究竟如何才能赚到钱?
  7. blastn 输出结果每列啥意思_如何看懂NCBI BLAST输出结果
  8. Android app crash的问题排查思路与反思
  9. Crash自动修复系统
  10. ubuntu mysql-admin_ubuntu 14.04中安装phpadmin即mysql图形管理界面