This preview shows page 1. Sign up to view the full content.
Unformatted text preview: r 21. TCP Timeout and Retransmission Slow start, which we described in Section 20.6, is the way to initiate data flow across a
connection. But at some point we'll reach the limit of an intervening router, and packets can
be dropped. Congestion avoidance is a way to deal with lost packets. It is described in
The assumption of the algorithm is that packet loss caused by damage is very small (much
less than 1%), therefore the loss of a packet signals congestion somewhere in the network
between the source and destination. There are two indications of packet loss: a timeout
occurring and the receipt of duplicate ACKs. (We saw the latter in Section 21.5. If we are
using a timeout as an indication of congestion, we can see the need for a good RTT
algorithm, such as that described in Section 21.3.)
Congestion avoidance and slow start are independent algorithms with different objectives.
But when congestion occurs we want to slow down the transmission rate of packets into the
network, and then invoke slow start to get things going again. In practice they are
Congestion avoidance and slow start require that two variables be maintained for each
connection: a congestion window, cwnd, and a slow start threshold size, ssthresh. The
combined algorithm operates as follows:
1. Initialization for a given connection sets cwnd to one segment and ssthresh to 65535
2. The TCP output routine never sends more than the minimum of cwnd and the
receiver's advertised window.
Congestion avoidance is flow control imposed by the sender, while the advertised
window is flow control imposed by the receiver. The former is based on the sender's
assessment of perceived network congestion; the latter is related to the amount of
available buffer space at the receiver for this connection.
3. When congestion occurs (indicated by a timeout or the reception of duplicate ACKs),
one-half of the current window size (the minimum of cwnd and the receiver's
advertised window, but at least two segments) is saved in ssthre...
View Full Document
- Spring '12