- Slow-start
Slow-start is part of the
congestion control strategy used by TCP, the data transmission protocol used by manyInternet applications, such asHTTP andSecure Shell . Slow-start is used in conjunction with otheralgorithms to avoid sending more data than the network is capable of transmitting, that is,network congestion .Algorithm
Slow-start is one of the algorithms that TCP uses in its quest to control congestion inside the network and it is also known as the
exponential growth phase.During the exponential growth phase, Slow-start works by increasing the TCP
congestion window each time the acknowledgment is received. It increases the window size by number of segments acknowledged. This happens until either an acknowledgment is not received for some segment or a predetermined threshold value is reached. If a loss event occurs, TCP assumes this it is due to network congestion and takes steps to reduce the offered load on the network. Once a loss event has occurred or the threshold has been reached, TCP enters the linear growth (congestion avoidance) phase. At this point, the window is increased by 1 segment for each RTT. This happens until a loss event occurs.Although the strategy is referred to as "slow-start", its congestion window growth is quite aggressive. (Jacobson, 1988)
Basic Slow-Start
The algorithm begins in the exponential growth phase initially with a congestion window size (cwnd) of 1 or 2 segments and increases it by 1 Segment Size (SS) for each ACK received. This behavior effectively doubles the window size each round trip of the network. This behavior continues until the congestion window size (cwnd) reaches the size of the receiver's advertised window or until a loss occurs.
When a loss occurs 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 goes into congestion avoidance mode where each ACK increases the cwnd by SS*SS/cwnd. This results in a linear increase of the cwnd.
See RFC 2001.
Fast Recovery
There is a variation to the slow-start algorithm known as fast recovery. In the fast recovery
algorithm , during congestion avoidance mode, when packets (detected through 3 duplicate ACKs) are not received, thecongestion window size is reduced to the slow-start threshold, rather than the smaller initial value.Problems
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
*
TCP congestion avoidance algorithm External links
* [http://www.eventhelix.com/RealtimeMantra/Networking/TCP_Slow_Start.pdf TCP Slow Start Sequence Diagram]
Wikimedia Foundation. 2010.