6.4 Explicit Congestion Notification
尽管TCP 的拥塞控制机制最初是基于数据包丢失作为主要的拥塞信号,但是人们早已认识到如果路由器能发送更明确的拥塞信号,TCP 将能做得更好。也就是说,不是通过丢弃 一个数据包并期待 TCP 最终会注意到(例如,由于收到重复 ACK),如果任何 AQM 算法如果能改为标记 该数据包并继续沿着它到目的地的路线发送,可能可以达到更好的效果。这个想法体现在 IP 和 TCP 包头的更改中,并作为Explicit Congestion Notification (ECN) 且定义在RFC3168中,被大家所知。
更多阅读:K. Ramakrishnan, S. Floyd, and D. Black. The Addition of Explicit Congestion Notification (ECN) to IP. RFC 3168, September 2001.
具体来说,拥塞信号是通过IP的TOS
字段中的2个bit来传递。发送端设置一位以表示它能够响应拥塞通知,即具备ECN能力,这一位称为ECT
位(ECN-Capable Transport)。另一位由网络路径上的路由器在遇到拥塞时设置,这一设置依据路由器运行的任何AQM算法计算得出,这一位称为CE
位(Congestion Encountered)。
除了IP头部的这两个bit之外,ECN还在TCP头部新增了两个可选的标志。第一个是ECE
(ECN-Echo),它用于接收端向发送端表明它已经接收到一份设置了CE
位的数据包。第二个是CWR
(Congestion Window Reduced),它用于发送端向接收端表明它已经减小了拥塞窗口。
尽管IP 头的 TOS
字段中的两个bit作为ECN已经成为标准,并且支持ECN是强烈推荐的,但它还不是必需要支持的。此外,使用哪个 AQM 算法与ECN配合使用并没有共识,有共识的是好的AQM 算法应该满足的一系列要求。与TCP拥塞控制算法一样,不同的AQM算法有各自的优缺点,因此我们需要比较它们。
Last updated