6.1 DECbit
Last updated
Last updated
第一种机制是为Digital Network Architecture (DNA)所开发。DNA 是早期与基于 TCP/IP 的互联网并存的一个网络架构,它也采用无链接和尽力而为的网络模型。有关它的介绍,被K.K. Ramakrishnan 和 Raj Jain发表在 1988 年的 SIGCOMM 上,与Jacobson/Karels的论文在一起。
更多阅读:K.K. Ramakrishnan and R. Jain. A Binary Feedback Scheme for Congestion Avoidance in Computer Networks with a Connectionless Network Layer. ACM SIGCOMM, August 1988.
这个机制的想法是更平均地分担路由器和终端主机之间的有关拥塞控制责任。每个路由器监控它的负载,并在即将发生拥塞时明确通知终端主机。这种通知通过在经过路由器的数据包中设置一个二进制拥塞位来实现,这个拥塞位后来被称为 DECbit。目的主机随后将这个拥塞位复制到它发送回给源主机的ACK中。最后,源主机调整其发送速率以避免拥塞。下面从路由器中发生的情况开始,介绍这个算法的更多细节。
在数据包头部添加了一个拥塞bit。如果路由器在数据包到达时的平均队列长度大于或等于1,则此 bit 位设置为 1。这个平均队列长度是在过去一个繁忙+空闲周期以及当前的繁忙周期内测量的(当路由器在传输时为繁忙 状态,不传输时为空闲 状态)。图34显示了路由器的队列长度随时间变化的函数。本质上,路由器计算曲线下面积,并将此值除以时间间隔来计算平均队列长度。使用队列长度为1 作为设置拥塞 bit 的触发条件,是在显著的排队(此时有更高的吞吐率)和增加的空闲时间(此时有更低的延迟)之间的一种折衷。换句话说,队列长度为1似乎优化了功率函数(注,详见3.2了吞吐和延时)。
现在我们讨论主机在拥塞控制中的作用,源主机记录了有多少数据包导致了某个路由器设置了拥塞bit。具体来说,源主机维护着一个拥塞窗口,就像在 TCP 中一样,并观察在最近一个窗口期内有多少比例的数据包导致了拥塞bit被设置。如果少于50%的数据包设置了拥塞bit,则源增加其拥塞窗口一个数据包的大小。如果最近一个窗口期内50%或更多的数据包设置了拥塞bit,则源将其拥塞窗口减少至之前值的0.875倍。选择50%作为阈值,是因为分析显示它对应于功率曲线的峰值。选择“增加1,乘以0.875减少”的规则是因为加法递增/乘法递减使得拥塞控制可以稳定运行。