Congestion Avoidance
When the sender’s upper layer desires to send more data, TCP throughput increases assuming that the receiver-window is not a limiting factor. But this increased rate may cause network congestion leading to a packet drop. The sender reacts to this packet loss by reducing the congestion-window by half and backing off the RTO exponentially. In other words, during congestion, TCP reduces the volume of traffic exponentially and the rate of retransmission exponentially. Meanwhile, the sender retransmits the lost packet. 当发送方上层希望发送更多数据时,假设接收窗口不是限制因素,TCP 吞吐量就会增加。但增加的速率可能会造成网络拥塞,导致数据包丢失。发送方对数据包丢失的反应是将拥塞窗口减半,并以指数方式后退 RTO。换句话说,在拥塞期间,TCP 会以指数方式减少流量和重传率。与此同时,发送方会重传丢失的数据包。
After reducing the congestion-window by half, the sender may again go through the slow-start phase to scale up the transmission. To avoid increasing the window size too quickly and causing additional congestion, TCP adds one additional restriction. Once the congestion-window reaches one-half of its original size before congestion, TCP enters a congestion avoidance phase and increments the congestion-window by one (not exponential) if all segments in the window have been acknowledged. 将拥塞窗口减半后,发送方可能会再次进入慢启动阶段,以扩大传输规模。为避免窗口大小增加过快,造成更多拥塞,TCP 增加了一项限制。一旦拥塞窗口在拥塞前达到原来的二分之一,TCP 就会进入拥塞避免阶段,如果窗口中的所有分段都已确认,拥塞窗口就会递增一个(非指数)。
Because the congestion-window is reduced by half (multiplicative) under congestion, and increased by one (additive) after congestion, this technique for congestion avoidance is called additive-increase/multiplicative-decrease (AIMD). 由于拥塞窗口在拥塞时减半(乘法),而在拥塞后增加 1(加法),因此这种避免拥塞的技术被称为