上班七天了,有点崩溃,看一篇论文提神:A Delay-Based Approach for Congestion Avoidance in Interconnected Heterogeneous Computer networks,来自 Raj Jain,1989 年。这篇论文基于下图展开:
是不是很熟悉,该图的结论也是 bbr 的基础假设(参见 bbr 论文第一个图)。
我的 更合理的 bbr 也基于该图,目标是寻找最佳效能作为最优操作点。早在 1989 年,Raj Jain 就对 bbr 的基础假设做了性能与公平性方面的论证。
这篇论文有 3 点值得思考:
- 个体最优与全局最优相克不相容。
- 全局最优依赖于节点间信息交互。
- 统计复用网络固有测量精度上限。
首先看个体与全局的最优效能,论文里给出了分别的表达式:
两个表达式以算法无关的方式推导出来,这是个普遍结论:
全局最优要以自身节制收缩抵抗他人的贪婪,保持整体收敛,但个体最优就很容易多,不言他,保持自私,显然这样不可收敛,但这就是现实世界,也是拥塞的根源。
最近看欧文费雪的《繁荣与萧条》,映射流量对稀缺带宽资源的抢占造成拥塞,和自私的人越在大萧条时越囤钱囤货一样。所谓痛则不通,通则不痛,流水不腐,户枢不蠹。
囤积居奇和抢占 buffer 都不高尚,可每个个体都在做,这是典型系统中的典型行为,引出第二点,全局最优需要如何做。
注意公式 2 的最右边项,当个体期望全局最优时,需获得全局信息,换句话说,全局最优要个体间互通有无,对比自私的个体最优,全局最优要额外做功,并不符合自然界最小作用量原则,这或许定性解释了为什么自私策略更普遍,因为它更简单。
另一方面,个体在没有全局信息的情况下无法收敛到全局最优,这对于包括 bbr 在内的任何算法都适用。
这意味着,要收敛到全局最优,一定要合作策略,并 “浪费” 一些带宽来做信息沟通,互通有无,这种 “浪费” 是固有的。这也是我一直强调的 “信息的上限约束了性能的上限” 理由之其一。
最后,“信息的上限约束了性能的上限” 理由之其二即上面总结的第 3 点,统计复用网络中测量精度有上限,随机变量必以统计分布衡量,统计分布量与期望必有误差,这误差导致的信息缺失是第二类无法彻底补足只能越发精确的信息。我经常说除了并不精确的 rtt 以及传输数据量再无其它反馈,性能上限就在那里,再好的算法,也只是拆东墙补西墙而已,无论你服不服你都得服。
论文的其余部分给出标题中的该 A Delay-Based Approach,给出了详细的算法以及分析,但这些并不重要,因为后面的 vegas,bbr 可能更加实用。不过在 1989 年,没有什么比单纯的 loss-based aimd 更加简单且高效了,主要还是简单,loss-based 胜出,成了标准,delay-based 作为补充。
总之,这篇老论文里能找到一些被人遗忘的点,当前工作大多集中在拥塞识别和传输加速,像 bbr 这种新算法也在这两个 “传统” 方向发力,但再往前看 1989 年更 “传统” 的东西,竟然有 “新东西”,它们也许可以作为拥塞控制算法领域未来发展方向上的路标,也算是 “回归传统” 了。
比如,下面的这个(?):
皮鞋没有蹬上,露着白袜子。
浙江温州皮鞋湿,下雨进水不会胖。