From Wikipedia, the free encyclopedia
Jump to: navigation, search




Slow-start begins initially with a congestion window Size (cwnd) of 1, 2 or 10.[1] The value of the Congestion Window will be increased with each acknowledgment received, effectively doubling the window size each round trip time ("although it is not exactly exponential because the receiver may delay its ACKs, typically sending one ACK for every two segments that it receives"[2]). The transmission rate will be increased with slow-start algorithm until either a loss is detected, or the receiver's advertised window (rwnd) is the limiting factor, or the slow start threshold (ssthresh) is reached. - If a loss event occurs, TCP assumes that it is due to network congestion and takes steps to reduce the offered load on the network. These measurements depend on the used TCP congestion avoidance algorithm. - Once ssthresh is reached, TCP changes from slow-start algorithm to the linear growth (congestion avoidance) algortihm. At this point, the window is increased by 1 segment for each RTT.

Although the strategy is referred to as "Slow-Start", its congestion window growth is quite aggressive, more aggressive than the congestion avoidance phase.[3] Before slow-start was introduced in TCP, the initial pre-congestion avoidance phase was even faster.

Behaviour upon packet loss[edit]

The behaviour upon packet loss depends on the TCP congestion avoidance algorithm that is used.

TCP Tahoe[edit]

In TCP Tahoe, when a loss occurs, fast retransmit is sent, half of the current CWND is saved as a Slow Start Threshold (SSThresh) and slow start begins again from its initial CWND. Once the CWND reaches the SSThresh, TCP changes to congestion avoidance algorithm where each new ACK increases the CWND by SS × SS / CWND. This results in a linear increase of the CWND.

TCP Reno[edit]

TCP Reno implements an algorithm called Fast Recovery. A fast retransmit is sent, half of the current CWND is saved as Slow Start Threshold (SSThresh) and as new CWND, thus skipping slow-start and going directly to Congestion Avoidance algorithm

other congestion avoidance algorithm[edit]

See TCP congestion avoidance algorithm


Slow-start assumes that unacknowledged segments are due to network congestion. While this is an acceptable assumption for many networks, segments may be lost for other reasons, such as poor data link layer transmission quality. Thus, slow-start can perform poorly in situations with poor reception, such as wireless networks.


See also[edit]


  2. ^ Template:Title = TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms
  3. ^ Jacobson, Van; Karels, MJ (1988). "Congestion avoidance and control". ACM SIGCOMM Computer Communication Review 18 (4): 314–329. doi:10.1145/52325.52356. 

External links[edit]