当前位置:网站首页>BBR 遭遇 CUBIC
BBR 遭遇 CUBIC
2022-07-02 22:10:00 【dog250】
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,他们拿了我太多输出,我却依然显得怡然自得。我回味无穷,也非常感谢这位朋友的善意,我怡然自得,但也总被误会拿到了什么好处,可现实中我却连一场江浙沪旅行都要因为没钱让老婆孩子失望。但无论如何,在我看来交流是目的,反正自己不干这行当很久了,目前也不是靠这个吃饭,还是写点思路,和谁都没有冲突,SB 就 SB 吧。
浙江温州皮鞋湿,下雨进水不会胖。
边栏推荐
- PMP project integration management
- Innovation strength is recognized again! Tencent security MSS was the pioneer of cloud native security guard in 2022
- STM32之ADC
- [chestnut sugar GIS] ArcMap - why should the tick of classic capture be removed when using custom capture?
- 【硬件】标准阻值的由来
- P1007 single log bridge
- 首批 | 腾讯云完成国内首个云原生安全成熟度评估
- QT qsplitter splitter
- P7072 [csp-j2020] live broadcast Award
- 2016. 增量元素之间的最大差值
猜你喜欢
Set right click to select vs code to open the file
Value sequence < detailed explanation of daily question >
创新实力再获认可!腾讯安全MSS获2022年度云原生安全守护先锋
Brief introduction of emotional dialogue recognition and generation
中国信通院、清华大学、腾讯安全,云原生安全产学研用强强联合!
严守工期,确保质量,这家AI数据标注公司做到了!
PMP project integration management
Odoo13 build a hospital HRP environment (detailed steps)
Xshell configuration xforward forwarding Firefox browser
Addition, deletion, modification and query of handwritten ORM (object relationship mapping)
随机推荐
To myself who is about to work
xshell配置xforward转发火狐浏览器
Go condition variable
AES高级加密协议的动机阐述
LeetCode 968. 监控二叉树
Splunk audit setting
力扣刷题(2022-6-28)
深度剖析数据在内存中的存储----C语言篇
情感对话识别与生成简述
景联文科技低价策略帮助AI企业降低模型训练成本
Golang's learning route
从2022年Q1财报看携程的韧性和远景
The threshold value of fusing proportion cannot be changed with sentinel, and setting the slow call proportion has no effect
Stop slave is stuck -- the event of the transaction is not copied completely
Jerry's prototype has no touch, and the reinstallation becomes normal after dismantling [chapter]
easyclick,ec权朗网络验证源码
Jerry's prototype will trigger shutdown after multiple touches [chapter]
Sword finger offer II 099 Sum of minimum paths - double hundred code
Brief introduction of emotional dialogue recognition and generation
海思3559万能平台搭建:在截获的YUV图像上画框