d traffic overload at the beginning of a new connection, the congestion avoidance algorithm is designed for congestion situation, which arises during the data transmission phase. The TCP protocol detects congestion and packet losses either through a timeout or through reception of multiple (usually three) duplicate acknowledgements. In both cases, the sender will assume that a packet is lost due to congestion and thus triggers the retransmission of that packet. Although slow start and congestion avoidance are two independent mechanisms, in practice they are implemented together and make up the congestion control mechanism of TCP. These two algorithms require two parameters, the congestion window cwnd and a slow start threshold ssthresh. In addition, the advertised receiver window size (rwnd) has to be considered. The two algorithms work together as follows: 1. Initially, cwnd is set to one segment and ssthresh is set to 65535 bytes (maximum possible window size). 2. The TCP output routine follows the sliding window mechanism. The window size at any time is the minimum of rwnd and cwnd. 3. With every received acknowledgement, cwnd is incremented by one segment size (slow start) until cwnd reaches rwnd. When congestion occurs, the TCP sender reduces ssthresh to one-half of the current window size. If the congestion is indicated by a timeout, cwnd is reduced to one segment and slow start is invoked. If the congestion is indicated by the reception of multiple (three) duplicate acknowledgements, fast retransmit algorithm is invoked and cwnd is set to ssthresh plus 3 times the segment size. 5. When new data is acknowledged by the receiver, cwnd is increased by the way of either slow start or congestion avoidance. If cwnd ssthresh, slow start algorithm is performed; otherwise, congestion avoidance algorithm is in operation. This corresponds to an additive increase of about one segment size per RTT period. The congestion avoidance mechanism leads to the characteristic behavior of additive increase, multiplicative decreas