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 分也不容易。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689464.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式C语言高级教程:实现基于STM32的智能健康监测手环

智能健康监测手环能够实时监控用户的生理参数,如心率、体温和活动量,对于健康管理和疾病预防非常有帮助。本教程将指导您如何在STM32微控制器上实现一个基本的智能健康监测手环。 一、开发环境准备 硬件要求 微控制器:STM32L476RG&#xf…

完美撤离暗区突围测试资格获取指南 超简单的暗区突围资格申请

完美撤离!暗区突围测试资格获取指南 超简单的暗区突围资格申请! 最近游戏圈关注度最高的一件事莫过于暗区突围国际服的上线,随着暗区突围PC端的上线,这款游戏的测试资格申请成为了玩家们心头的一个大问题,许多玩家爱不…

二叉树进阶 --- 中

目录 1. find 的递归实现 2. insert 的递归实现 3. erase 的递归实现 3.1. 被删除的节点右孩子为空 3.2. 被删除的节点左孩子为空 3.3. 被删除的节点左右孩子都不为空 4. 析构函数的实现 5. copy constructor的实现 6. 赋值运算符重载 7. 搜索二叉树的完整实现 1. fi…

【Linux】从零开始认识动静态库 -动态库

送给大家一句话: 我不要你风生虎啸, 我愿你老来无事饱加餐。 – 梁实秋 《我把活着欢喜过了》 ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚ ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚ଘ(੭ˊᵕˋ)੭…

基于CCS5.5的双音多频(DTMF)信号检测仿真实验(①检测型音频文件②输入生成音频并检测)

DTMF的优点 我们知道,DTMF根本上仍然是频谱分析,基础还是DFT,但DFT通常需要对一整段数据做变换,而DTMF不同,每输入一个采样点就计算一次,更有利于硬件实现。 基于CCS的双音多频(DTMF)信号检测原理 公式详细推导 详细的公式推导在下面这篇博客中已经进行了详细的描述,…

示例十、红外遥控器

通过以下几个示例来具体展开学习,了解红外遥控器原理及特性,学习红外遥控器的应用(干货版): 示例十、红外遥控器 ino文件源码: //Arduino C demo #include "IRremote.h"IRrecv irrecv(4); decode_results …

python自动化办公的代码

以下是一个简单的Python自动化办公代码示例,用于实现一些基本的自动化任务,例如打开文件、读取数据、写入数据和保存文件等。 python import os # 打开文件 def open_file(filename): try: file open(filename, r) data file.read() file.close() ret…

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案?

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案? 1、打开微信,点击搜索框; 2、打开搜索页面,选择小程序搜索; 3、在搜索框,输入词令搜索点击进入词令微信小程序; 4、打开…

验证码生成--kaptcha

验证码生成与点击重新获取验证码 如图所示&#xff0c;本文档仅展示了验证码的生成和刷新显示。 1. 概述 系统通过生成随机验证码图像和文本。 2. 代码分析 2.1. Maven依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptch…

OpenCV-android-sdk配置及使用(NDK)

opencv官网下载Android版Releases - OpenCV 下载好OpenCV-android-sdk并解压好,然后新建一个jni文件夹测试,测试项目目录结构如下: ├── jni │ ├── Android.mk │ ├── Application.mk │ └── test.cpp Application.mk: APP_STL := c++_static APP_CPP…

perf 中的 cpu-cycles event 介绍

perf 中的 cpu-cycles event 介绍 cycles简介 cycles事件记录处理器核心执行的时钟周期数。每个时钟周期代表处理器内部时钟振荡器的一个周期。这个事件通常用于衡量处理器的执行速度&#xff0c;因为它直接反映了指令执行所需的时间。一个较高的cycles计数可能意味着代码执行…

到东莞樟木头“中国作家第一村”来!这里大有文“樟”

樟木头&#xff0c;古称泰安&#xff0c;一直是康泰平安、物阜民丰之地。作为东莞唯一纯客家镇&#xff0c;传自中原先民的烂漫因子让这座城市崇文重礼&#xff0c;绿水青山更氤氲出古镇芳华。这个文章锦绣地&#xff0c;以其敢为人先、勇立潮头的姿态&#xff0c;成为了各种文…