tcp cubic 与随机丢包

news/2024/10/31 3:20:16/

前面提到过一个 AIMD 的修正方法,“二次机会 MD”:首次丢包只 MD 收缩一个相对较小的比例,再次丢包时再继续收缩,直到 beta * Wmax。

效果如下图:
在这里插入图片描述
大意是在检测到丢包时,先 MD 一个相对小的缩放比例,如果再次丢包再继续缩放,由此可在不损害公平性(cc 只为拥塞才会降速收敛,随机丢包本来就不应该降速)的前提下抵抗随机丢包:如果随机丢包,由于缩放系数较小,带宽损失不大,cwnd 可从相对高的位置开始描绘 cwnd/time 曲线,如下图所示:
在这里插入图片描述

如果真拥塞,PRR 过程的发送线将变成一条上凸曲线(线 2),逐渐弯下去,最终和标准 PRR 的结果相汇。虽 “有悖于 PRR” 按比例收敛到 0.7 * Wmax,但减速收敛到 0.7 * Wmax 也没什么不好。

做这个修改一开始就是想让 MD 过程也呈现一条曲线而不是一条直线,就像 AI 过程一样,收敛到结果,而非过程。减速收敛显然可以抗随机丢包,在随机丢包后不至于下降太多,但代价是真拥塞时响应没有标准 PRR 过程快,不过即使标准 PRR 不是论证的结果。

简单写了个代码:https://github.com/marywangran/tcp_cubic_v2

虽然二次机会 MD 算法可以抵抗明确的随机丢包,但随机丢包太频繁的话也扛不住,大概就是积累 AI 和 MD 总量持平或更小的时候,由于没有足够的数据量进行 probe,有效吞吐将明显下跌。但凡 probe 都需要超过有效 BDP 的数据量做支撑,因此在小 buffer 链路,probe 本身也会造成 buffer 溢出而丢包,如 BBR 代码的 probe 注释所说:We do not persist if packets are lost, since a path with small buffers may not hold that much。

和 BBR 抗丢包相比,它那个是憋住 maxbw 守恒观望,我这个是损失一点点代价赌能跨过去。BBR 像是油门踩到底跨过随机丢包,我这个像轻踩刹车。

AIMD 公平性很重要,否则大可使用别的 “更好” 的算法,AIMD 的核心就是收敛到公平。任何魔改都不要破坏这一点。AIMD 的公平收敛其实就是一个勾兑的过程,一杯葡萄汁液:橙汁为 3:1 的混合液体,如何勾兑成 2:1,就是 AIMD:先加入 1:1 液体一小勺,这就是 AI,均匀混合后舀出去相同的量,舀出去的液体中二者的比例很容易计算,这就是 MD,重复这个过程 n 次即可,数学上很容易计算 n。

为判断随机丢包,不要引入过于复杂的逻辑,ACK 时钟信息量有限,判断精度必有上限,类似于硬币猜正反,因为你的信息就那么多,50% 的概率,那就随机猜即最优解,不要启发。丢包判断也一样,别做假设,一旦误判就要为负方向买单,这是信息论决定的。

通用场景,不做假设,最简单最好。我们都明白,特定场景优化很容易,这相当于事前已经告诉你要做什么,但问题是当这个 “特定场景” 混杂在通用场景中时,很难将其识别出来,这才是最难的问题,这个问题无解,结果就是拆了东墙补西墙,统计意义上看跟没有优化一样。

上周那个 “二次机会 AIMD” 跟朋友介绍了一下,挺不错,本来不到 5 分钟就能改一版 cubic ++,结果还是因为 Linux tcp 开放的 cc 模块受制于拥塞状态机,我若实现脱缰的 cong_control 回调,就要亲自调用 PRR,不过还算简单,吃点烧烤的工夫就能写完。相比 ns-3 写模拟,我还是倾向于直接写 Linux 模块的 cong_control 回调。

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


http://www.ppmy.cn/news/65798.html

相关文章

电脑缺少msvcp140.dll怎么办,缺少msvcp140一键修复方法

电脑缺少msvcp140.dll怎么办?这个问题相信不少小伙伴都遇到过,msvcp140.dll文件是很多软件跟游戏运行必须用到的文件,如果丢失或者损坏,很多软件都会无法打开运行。其实知道知道方法,修复起来其实也不会很难&#xff0…

路由器配置方法(固定地址)

前言 由于学校给分配了IP地址,因此我们的路由器接入的时候不能选择自动接入方式,而要选择固定地址方式。 step 1 我们首先先将路由器接上网线,这里注意一定要接wan口 因为路由器分为两个口,wan口是入口,lan口是出口…

我们花一个月调研了小红书种草的新机会和增长策略

分析师:Jane、彬超 编辑:yolo 出品:增长黑盒研究组 *本报告为增长黑盒独立研究系列, 与第三方不存在任何利益关系 随着618的临近,小红书再次成为了品牌重要的“营销战场”。面临着经济环境的不确定性,想必各…

性能测试-电商系统tps计算方法【杭州多测师_王sir】【杭州多测师】

怎么计算得出tps指标?1.第一个通过运维那边给的生产数据,看一下生产进件有多少,计算得来的,如果没有生产数据,或者不过就看如下的方法2.第二个就是根据最近一个月的实际访问数据,比如每天调用了多少个接口&…

ChatGPT使用9大技巧详解

目录 技巧1:To Do and Not To Do 技巧2:增加示例 技巧3:使用引导词,引导模型输出特定内容

javaweb前置知识

1.CSS CSS的角色:页面显示的美观风格CSS的基础语法:标签样式;类样式;ID样式;组合样式;嵌入式样式表;内部样式表;外部样式表盒子模型:border、margin、padding定位和浮动…

Flutter 自定义裁剪之圆形豁口/缺口

目录 Flutter自定义裁剪Flutter的自定义裁剪类CustomClipper裁剪的实际代码思路分析注意点完整代码总结如图所示,图中的圆形缺口,需要我们自定义裁剪,才能实现。 Flutter自定义裁剪 裁剪,我们想到的是剪刀,实际上,Flutter的裁剪原理,和我们现实物理世界的剪刀是一样的…

域名历史查询工具-批量域名历史注册记录查询

批量备案域查询 在互联网时代,域名备案已经成为一项必要工作,但是批量备案域名是一项繁琐和费力的工作。为了帮助企业和个人轻松应对域名备案,出现了一种新型的解决方案——批量备案域名查询监控软件。 这种软件的最大优势是自动化&#xf…