摘要

  • 1988 年的 DECbit 方案不是看到一次排队就标记:路由器在与忙闲周期相适应的区间内计算平均队列,达到一个包才设置拥塞位。
  • 发送端也不服从单个标记;它在一个窗口的反馈中看到至少一半被标记时,才把窗口降至原来的八分之七,否则只增加一个包。

一个灯只有亮与灭两种状态,但点亮它的判断可以很长。K. K. Ramakrishnan 与 Raj Jain 在 1988 年提出二进制拥塞反馈时,把网络要说的话装进一个比特,却把“何时算拥塞”和“何时该减速”分别留给两段时间。这个区别解释了 DECbit 的真正精度:精度不在包头宽度,而在测量与响应的纪律。

让队列完成一次呼吸

论文 《A Binary Feedback Scheme for Congestion Avoidance in Computer Networks with a Connectionless Network Layer》规定,发现拥塞的路由器在向目的地前进的包中设置一位;后续不拥塞的路由器不能把已经设置的位清除。目的端通过传输层确认把信号带回源端,由源端调整可以同时在途的包数。论文由两人共同署名,因此这段历史不能写成 Jain 一人的发明故事。

路由器所看的不是某一刹那的队列长度。计算把正在服务的包也算在队列内,并以平均值达到一个包为标记阈值。平均区间由“上一个完整的忙期加闲期”以及“当前忙期已经发生的部分”组成。队列从繁忙到排空,形成与资源自身节奏相连的再生周期;观察窗口会随这一节奏伸缩。

作者比较过更简单的办法。固定采样周期面对不同往返时延时,可能对一条路径太长、对另一条路径太短。指数移动平均会在突发结束后继续携带旧信息。互不相关的采样时钟也可能让相似路由器得出不同结论。按照忙闲周期取平均,目的不是消灭判断误差,而是避免让一次突发或一段过时历史单独主宰拥塞位。

“一个包”也不是适用于所有网络的神奇常数。在论文的模型里,平均队列超过这一点后,瓶颈服务速率不会再提高,等待却会继续累积;低于这一点时,仍可能存在可利用容量。这是把利用率与排队成本放在一起的操作阈值,应当按其证据边界理解,而不是当作跨时代最优定理。

一个被标记的包还不是命令

第二次过滤发生在源端。发送端等待与上一窗口和当前窗口数量之和相当的确认,再用当前窗口对应的回传位作决定。若其中至少 50% 被标记,它把窗口乘以 0.875,也就是降到八分之七;否则窗口只加一。

50% 的门槛把零星标记与普遍标记分开。加一让发送者逐步试探新容量,八分之一的回撤则在减轻压力与避免剧烈振荡之间取折中。论文说明,0.875 兼顾实现便利与较小振荡。另一个关于 0.8 的仿真例子讨论整数舍入怎样造成不公平,并非最终响应系数;把两者混用会改变算法本身。

论文的仿真覆盖多个用户、随机包长、非同质路径、卫星链路、服务时间变化以及新源加入等情形。作者据此报告了模型和实验范围内的效率、适应性与公平性。这些结果是严肃的设计证据,却不是今天互联网的部署普查,也不能替代对现代传输协议、队列与不合作参与者的实测。

从反馈机制走向协作问题

1991 年由 A. Mankin 和 K. Ramakrishnan 编辑的 RFC 1254,综述了网关拥塞控制方案,其中包括 DECbit 的一个包平均阈值、跨两个窗口的判断以及八分之七回退。它的类别是 Informational,不是要求互联网统一采用这一算法的标准。

这份综述还指出,拥塞避免需要用户合作。网关能够提供标记,真正减少负载的却是端系统。不响应的发送者短期内可能占到更多吞吐,把延迟与丢失成本留给其他人;所有网关和主机又不可能同时升级。因此,比特的意义不只由格式决定,还取决于有多少参与者愿意按照同一反馈契约行动。

Washington University 的现任教师页面称 Jain 是 DECbit 的共同发明者,并说它以不同形式用于 DECnet、OSI、Frame Relay 与 ATM 网络。“不同形式”只能支持影响范围,不能证明每种实现完整复制了 1988 年算法。该校2017 年的 SIGCOMM 获奖消息则把这项工作放回他长期研究性能分析与拥塞控制的脉络。

来源与边界

本文依据 1988 年合著论文、Informational RFC 和上述校方资料,不提供现行部署数量,不拿 DECbit 与今天的算法做实测比较,也不宣称所有后来的显式标记都沿用了同一机制。下文监测建议属于从控制结构作出的编辑推论。AI 编辑肖像以 Washington University 的公开照片为身份依据,背景实验室为虚构场景。