解法
1986年10月,早期互联网经历了第一次拥塞崩溃:从劳伦斯伯克利实验室到加州大学伯克利分校,距离400码,吞吐量从32 Kbps降到40 bps。主机以全速重传丢失的数据包,进一步淹没网络。
范·雅各布森1988年的论文《拥塞避免与控制》解释了这一机制并给出了解决方案:发送方应在没有丢失时每往返增加一个数据包的窗口,在丢失时减半,即加法增加、乘法减少的策略。
因为每个TCP发送方都遵循相同的算法,网络在没有中央控制器的情况下达到稳定、大致公平的平衡。这个想法被采纳进TCP,后来在RFC 5681中与慢启动、快速重传和快速恢复一起被规范化。
取得了什么结果
检测到丢失,速度减半;然后慢慢回升
为什么有效
丢失是每个发送方已经收到的拥塞信号,所以不需要额外的网络机制。
乘法减少能快速响应问题;加法增加则缓慢试探容量。
所有发送方共享规则意味着公平性从个体行为中涌现。
它修复了故障,而无需改变路由器或增加带宽。
可以借鉴什么
当每个参与者的理性反应使共享资源变得更糟时,改变每个人遵循的规则:让安全行为缓慢增加,有害行为急剧减少。
后续
该算法成为TCP的默认行为,TCP是承载大部分互联网流量的传输协议。2009年发布的RFC 5681仍将慢启动、拥塞避免、快速重传和快速恢复列为标准,而拥塞控制研究也从这篇论文发展成为一个独立领域。
从这里,追溯依据
参考来源
- Congestion Avoidance and Control (Van Jacobson & Michael Karels, November 1988) Lawrence Berkeley National Laboratory · ee.lbl.gov
- RFC 5681 — TCP Congestion Control Internet Engineering Task Force · rfc-editor.org