原文 https://datatracker.ietf.org/doc/html/rfc3465 TCP Congestion Control with Appropriate Byte Counting (ABC) 具有适当字节计数 (ABC) 的 TCP 拥塞控制
概述
本文档对 TCP 增加其拥塞窗口的方式提出了一个小的修改。与为每个到达的确认增加一个恒定数量的拥塞窗口的传统方法不同,该文档建议基于每个 ACK 覆盖的先前未确认字节数的增加。此更改提高了 TCP 的性能,并关闭了 TCP 接收方可以用来诱导发送方过快提高发送速率的安全漏洞。
1 简介
本文档建议修改算法以增加 TCP 的拥塞窗口 (cwnd),从而提高性能和安全性。不是根据到达数据发送方的确认 (ACK) 的数量(根据当前规范 [RFC2581])来增加 TCP 的拥塞窗口,而是根据到达的 ACK 确认的字节数来增加拥塞窗口。该算法通过减轻延迟 ACK 对 cwnd 增长的影响来提高性能。同时,该算法提供了与网络路径的探测容量直接相关的 cwnd 增长,因此与 ACK 计数相比,对仅覆盖少量数据(小于完整段大小)的 ACK 提供了更具测量性的响应。这种更合适的 cwnd 增长既可以提高性能,也可以防止响应于行为不端的接收器的不当 cwnd 增长。另一方面,在某些情况下,修改后的 cwnd 增长算法会导致将更大的段突发发送到网络中。在某些情况下,这可能会导致掉率和性能下降的不可忽视的增加(有关问题的更大讨论,请参阅第 4 节)。
本文档组织如下。第 2 节概述了用于增加 TCP 拥塞窗口的修改算法。第 3 节讨论了使用改进算法的优点。第 4 节讨论了本文档中概述的方法的缺点。第 5 节概述了修改后的算法必须考虑的一些公平问题。第 6 节讨论安全注意事项。
2 一种增加拥塞窗口的改进算法
正如最初在 [Jac88] 中概述并在 [RFC2581] 中指定的那样,TCP 使用两种算法来增加拥塞窗口。在稳态期间,TCP 使用拥塞避免算法线性增加 cwnd 的值。在传输开始时,重传超时后或长时间空闲后(在某些实现中),TCP 使用慢启动算法以指数方式增加 cwnd。根据 RFC 2581,慢启动基于传入确认的数量增加 cwnd。在拥塞避免期间,RFC 2581 允许在增加 cwnd 方面有更大的自由度,但传统上的实现基于到达的 ACK 数量的增加。在接下来的两个小节中,我们详细介绍了对这些算法的修改,以根据每个到达的 ACK 确认的字节数而不是到达的 ACK 数来增加 cwnd。我们将这些更改称为“适当的字节计数”(ABC) [All99]。
2.1 拥塞避免
RFC 2581 指定在传输的拥塞避免阶段,每个往返时间 (RTT) 应将 c