来推网站,wordpress页面图片轮播图,苏宁推客如何做网站,资阳网站建设资阳inflight 守恒算法看起来只描述理想情况#xff0c;现实很难满足#xff0c;是这样吗#xff1f;
从 reno 到 bbr#xff0c;无论哪个算法都在描述理想情况#xff0c;以 reno 和 bbr 两个极端为例#xff0c;它们分别描述两种理想管道#xff0c;reno 将 buffer 从恰好…inflight 守恒算法看起来只描述理想情况现实很难满足是这样吗
从 reno 到 bbr无论哪个算法都在描述理想情况以 reno 和 bbr 两个极端为例它们分别描述两种理想管道reno 将 buffer 从恰好的 0 塞到满而保持对带宽 100% 利用而 bbr 则通过寻求维持在 buffer 恰好为 0 的状态保持对带宽 100% 的利用它们分别是范雅各布森管道和 bbr 管道。
它们从一开始的注意力就没有集中在多流共享 buffer 的拉扯场景都试图在算法中附加公平或者在算法外补充公平性从范雅各布森管道的原始论文以及 bbr 原始论文中都找不到最初的公平性约束。而 inflight 守恒算法的公平性是内置的如果不存在一条以上的流算法甚至可以缩短到两行代码以内因为 E bw / srtt当然 buffer 为 0E 最大这个单流效果和复杂到爆的 bbr 竟然一致。
一旦涉及多流bbr 单流不排队约束就无能为力而 reno 的公平性表现却好得多但还是主动公平这显然是拉扯的结果我们需要一种自动的公平in-flight 守恒算法显然就做得到。
多流情况下从收敛图上看本质上需要两种力量一种力量将收敛点拉向 fair–line一种力量将收敛点拉向原点。
先分别看下在 reno 和 bbr 中这两种力量是什么。
reno 拉向 fair-line 的力量随时间流逝两条流在 buffer 中的报文总量趋向接近bw 按 buffer 占比分配reno 拉向原点的力量流属 sender 检测到丢包后主动 multiplicative decreasebbr 拉向 fair-line 的力量一方面 bw 小的流 probebw 加速比更大另一方面 bw 大的流 probertt 减速比更大bbr 拉向原点的力量probe 阶段后立即主动 drain 掉无效 inflight。
可见都需要算法主动去做点什么才能产生这两种力量驱动算法收敛既然主动去做就要有触发点作为依据reno 依靠丢包事件bbr 则依赖内置状态机无论哪一种触发点都存在客观干扰这些干扰作为信息不准的反作用力驱动收敛点偏离 fair-line 靠近原点的位置效果即 reno 总在 fair-line 上做长程震荡(tcp 锯齿)bbr 则在 fair-line 一侧的小范围做无规则震荡。
inflight 守恒算法法则 2进时适可而止天然考虑他者退时什么也不做意味着一旦越过 fair-line算法将失去动力进入滑翔状态此时两条流均 “记住” 了自己的最佳 E以此维持 inflight 守恒并用余量中的负反馈抵消波动余量作为阻尼器起作用。
以下图总结上面的话
避开 bbr说说 aimd-reno 和 inflight 守恒算法之比较。
如果用排队论经典的 queuing_delay-load 坐标曲线解释aimd 顶着 buffer 彻底用曲线下凸而 inflight 守恒算法收着用曲线上凸而向下闭合。
理论上 buff 无限假设aimd 时延无限现实中固定 buff一直丢就要一直重传一直丢只是用无穷大重传时延替代了无穷大排队时延因此这种顶着用的策略必须执行 decrease而 aimd 已经被控制论证明公平的。
而 inflight 守恒算法则假定固定大小 buffer比如 30MB然后考虑如何集约化尽可能少地使用这 30MB buffer所谓集约化就是收着力的意思并形成以下共识寻找 30BM buffer 内最佳收益的占比而不是寻求最大带宽因此剩下的 buffer 则留给别人达到同样的目标。
浙江温州皮鞋湿下雨进水不会胖。