漫谈拥塞控制: pacing rate

我基于综合效能结合排队论解释过 pacing 发送的益处:为什么 pacing?但该解释仍没有揭露 pacing 的本质。

pacing 的本质是出让时间槽。

出让时间槽无法降低整体等待时延,但可降低甚至消除抖动,即在任意短的采样周期内保持等待时延收敛到固定值。

参考 交换式以太网的诞生,从总线以太网引出出让时间槽。和总线以太网类比是因为 CSMA/CD 是统计复用仲裁机制典范。

总线以太网限制最大帧长 1500B,原因在于避免一个帧过久占据线路,试想一列火车穿过平交道路的场景。过长的帧将造成大量冲突,进而引入大量退避时间而浪费发送能耗。

CSMA/CD 的方式是切分数据为 packet,冲突后随机退避出让时间槽,获得一个统计稳态。

交换式以太网的统计复用方式和 CSMA/CD 总线以太网是同一回事。总线以太网的冲突表现为交换以太网中的排队,而退避时延表现为排队时延,如果交换机 buffer 有限而 buffer overflow,则可能会引入重传时延,也可归入退避时延的等效时延。

既然都一回事,那么总线以太网中出让时间槽在交换式网络中即表现为 pacing 发送,所谓 pacing 就是在发送两个连续的 packet 之间插入一段时间。 而 burst 在总线以太网中则表现为连续发送帧或发送一个超长帧,这是要避免的。

但总线以太网随机退避中的 “随机” 这个修饰最有趣。随机是分布式控制达到稳态的最有效手段,所谓遇事不决就随机。但对于交换式网络,交换机利用 buffer 集中冲突仲裁取代主机分布式仲裁,这赋予主机对时间槽的可测量特征,主机可通过测量 packet 的传输速率而获得交换机对 packet 的仲裁细节。

sender 就按照测量速率导出的时间槽间隔 pacing 发送,即可最小化 buffer 占用,这是所有 rate-based cc 的基础,自带 anti-bufferbloat 属性。bbr 在此基础上携带一个动态带宽自适应机制而已。

话虽如此,但很多人依然觉得 burst 好,因为当他使用 pacing 的时候,吞吐确实下降了,这属实你没测量好,而不是 pacing 的锅,说到底还是算法不行。

以上就是关于 pacing 的一个随笔,数学论证就不写了,可参考李永乐的这个视频,挺有意思:葫芦娃救爷爷为啥一个一个上,pacing vs burst 背后也是一个类似的概率统计问题,设 n 为 burst 率,求证 n = 1 时通过率最高。

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

你可能感兴趣的:(bbr,tcp)