cubic 相比 bbr 并非很糟糕

2024-05-11 22:04
文章标签 并非 相比 bbr cubic 糟糕

本文主要是介绍cubic 相比 bbr 并非很糟糕,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

迷信 bbr 的人是被它的大吞吐所迷惑,我也不想再解释,但我得反过来说一下 cubic 并非那么糟。
想搞大吞吐的,看看我这个 pixie 算法:https://github.com/marywangran/pixie,就着它的思路改就是了。

cubic 属于 aimd-based 算法,以 aimd 描述全程。以下是一个参数为 1,0.5 的 aimd 过程 tcptrace 图,md 采用 prr 过程:
在这里插入图片描述
prr 降窗细节请参考:数据包守恒

简单的一个 cubic 优化请参考:cubic 与随机丢包

cubic 公平性不必说,但它吞吐低的原因也明确,图中 XXX 区域太大了。追查 XXX 太大的原因有二,rtt 越大,XXX 越宽,丢包越多, XXX 越深,越深的区域肯定越宽(长肥管道),但越宽却不一定越深(小带宽场景)。若要优化 cubic,目标也明确,减小 XXX。

rtt 无法改变,XXX 区域多由丢包决定,而丢包分为随机丢包和拥塞丢包。拥塞丢包情况下,执行 md 是 aimd 算法核心,所以不要试图通过 “不 md 降窗(换成 ad 降窗?)” 来优化吞吐,另一方面,丢包恢复后,cwnd 起点低,不要试图加速 ai 过程来优化吞吐,因为这同样破坏了 aimd 内核。 若在 aimd 框架下优化,可参考 tcp scalable 的思路。

常说的 aimd-based 算法吞吐低的原因就是 “cwnd 下降后,恢复太慢,在长肥管道尤为严重”,而似乎又什么都做不了,这是 ack 自时钟(self-clock)驱动的传输协议内在性质决定的。

但有个事可做,即隔离随机丢包。这可是个顽固难题,只有 ack 序列,信息量有限,所以不要试图折腾复杂的启发预测算法,写论文可以,实践肯定失败,要做的是引入一个非常简单的自适应机制。

相比 rfc3517 和 rate halving,tcp undo 和 prr 结合已覆盖误判,prr 让 cwnd 慢慢下降而不是一下子下降,过程中如果误判,cwnd 直接 restore。但如果随机丢包,哪怕重传一个报文,也无法 undo,任凭 cwnd 降到 ssthresh 再重新 additive increase,此时展出来的 XXX 宽度至少 2 个 rtt,rtt 越大,情况越糟。

如果只是随机丢包,噩梦将在 prr 过程中开始,在 cwnd 达到 ssthresh 时结束,在漫长的 additive increase 中惊魂未定。

对 prr 做一番修改是高尚的,尽量截止住微弱丢包对 cwnd 的影响,但在丢包加剧时迷途知返而不是一意孤行。文章开头提到链接里 “让 cwnd 先慢后快收敛到 ssthresh” 是个主意,但还有更简单的,即 “只有在有‘足够’报文被 mark lost 时才执行 prr”。

如果只 mark lost 了一个报文,prr 只将 cwnd 拉低一点点,如果继续 mark lost,则继续 prr 降 cwnd,这样就将丢包数量和丢包频度和 prr 过程关联起来,至于 ‘足够’ 是多少,调参。

另一个高尚的修改有关 undo。采集丢包时的 srtt,若 srtt 方差 ‘足够小’,绝对值与 open 状态相比 ‘足够小’,即可直接 undo,而不是缓慢 additive increase,至于 “足够小” 是多小,调参。

看图,虚划线是原始的,粗实线是改后的:
在这里插入图片描述
总结:

  • 用丢包过程(数量和频度)驱动 prr 过程;
  • 结合丢包时 srtt 决定恢复后是否 undo。

PS:你要把 bbr 的缺陷全克服了,它的吞吐就会变的和 cubic 差不多,最多只是 bugfix 级提升,且 bbr 已经这么做了,参考 bbr3。怎么会这样?因为 tcp ack 只带回那么些信息,信息量作用力有上限。带宽 x 的链路,必须用掉至少 a% 带宽作为代价做拥塞控制,有效吞吐最多 x - xa%,不要指望 a 能足够小,它其实是个确定数值,要做的是逼近 x - xa%,而不是 x。bbr 想多了。

但也不针对 bbr,所有 tcp 拥塞控制算法优化到极致后都存在不太高的上限,但它们的下限又足够低,所以提供了足够的岗位供我们瞎折腾,我们对此表示感谢🙏 。

如果你想提高上限,就要减小 a,但 a 是针对 tcp 的,所以,若要提高上限,必须往协议头里加东西,至于下限,无底线,有空比试比试看谁的吞吐低,但稳定。这并不是一件简单事,考 99 分很难,但不多也不少考 9 分也不容易。

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

这篇关于cubic 相比 bbr 并非很糟糕的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980775

相关文章

全倒装COB超微小间距LED显示屏的工艺技术,相比SMD小间距有何优势

全倒装COB(Chip On Board)超微小间距LED显示屏,在工艺技术上的革新,相较于传统的SMD(Surface Mount Device)小间距LED显示屏,展现出了多方面的显著优势。 首先,全倒装技术极大地提升了LED芯片的散热性能。通过将芯片直接焊接在基板上,减少了热阻,使得热量能够更快速地传导至基板并散发出去,有效避免了因高温导致的光衰和色彩偏移问题,从而保证了显示屏的长期稳定性

软文发稿相比其他广告形式有哪些持续性优势?

软文发稿在品牌宣发中具有显著的持续性优势,特别是在与其他广告形式的比较中更能体现这些特点。凭借其潜移默化的影响力、增强品牌权威性和公信力、持续性的曝光优势、精准触达目标受众的能力、强互动性与引导性,以及较高的性价比,已经成为品牌推广不可或缺的手段 一 长期存在与持续曝光 长时间的内容可见性     软文发表后,通常会长时间存在于各种平台上,无论是官网、博客、行业网站还是社交媒体帖子。读

BBR 与 AIMD 共存公平性探究

一个古已有之的结论: deep buffer 场景,bbr 相对 reno/cubic 等 aimd 有优势,侵占性强;shallow buffer 场景,aimd 有优势,bbr 带宽被挤占。 本文用实例分析 why 并给出 how。 先看 deep buffer 场景 bbr 单挑 aimd 双流的效果,下图是标准 bbr,被虐成经理: 下图是用 max(bw/delay) 替代 ma

TCP拥塞控制算法BBR源码分析

BBR是谷歌与2016年提出的TCP拥塞控制算法,在Linux4.9的patch中正式加入。该算法一出,瞬间引起了极大的轰动。在CSDN上也有众多大佬对此进行分析讨论,褒贬不一。   本文首先对源码进行了分析,并在此基础上对BBR算法进行总结。 1.源码分析 /* Bottleneck Bandwidth and RTT (BBR) congestion control** BBR co

云计算和传统IT相比,有哪些优势?

云计算相比于传统的IT基础设施,具有以下一些显著的优势: 成本效益: 云计算通常采用按需付费模式,用户只需为实际使用的资源支付费用,避免了高昂的前期硬件投资和维护成本。 弹性计费方式使得企业可以根据业务需求灵活调整资源,从而优化成本。 可伸缩性: 云服务提供了几乎无限的计算能力和存储空间,允许用户根据需要快速增加或减少资源,以应对业务高峰或低谷。 这种灵活性使得企业能够更轻松地管理业务增长,而无需

用相图分析 bbr,inflight 守恒的收敛速度

以下的代码绘制了 bbr 的收敛相图: #!/opt/homebrew/bin/python3import numpy as npimport matplotlib.pyplot as pltfrom scipy.integrate import odeintdef model(vars, t, C, g):x, y = varsdxdt = C * (g * x) / (g * x + y

flutter和原生Android以及IOS开发相比有什么优缺点?

Flutter 是 Google 开发的一个开源移动应用开发框架,它使用 Dart 语言编写。Flutter 的主要目标是使开发者能够从单一的代码库构建高性能、高保真的应用程序,这些应用程序可以在 iOS 和 Android 平台上运行,同时保持原生应用的感觉。 Flutter 与 Android 原生开发的优缺点如下: Flutter 的优点: 跨平台开发:Flutter 允许开发者使

bbr 微观建模与 inflight 守恒

bbr 解决 bufferbloat 的核心在于一个负反馈方程,设 x 为预估带宽,x_i 为 inflt,则: d x i d t = x ⋅ R − x i \dfrac{dx_i}{dt}=x\cdot R-x_i dtdxi​​=x⋅R−xi​ 这个简单的负反馈能让数据流收住 buffer,显然,当其 inflt 大于 bdp 时,方程为负数,直到排空 buffer。如果没有这个方程

3、三次样条(cubic spline)插值

三次样条(cubic spline)插值 - 知乎

Fortify相比其他扫描工具的优势在哪里?

最新发布的 Fortify 22.1.0 版本,不仅能高度兼容最新的软件技术,同时继续保持对运营环境常见的应用安全用例的广泛兼容性。经过强化的 Fortify 进一步提升了性能、准确性、可扩展性和易用性。 无论是运行 DevSecOps、开展云计算转型,还是确保软件供应链平稳运行与规模成熟度,Fortify提供了全面、包容和可扩展的智慧平台,支持软件组合从广度与深度两方面同步推进。 更新亮点