||It has been suggested that this article be merged with Congestion window, Slow-start, Fast retransmit, Additive increase/multiplicative decrease, TCP congestion-avoidance algorithm and Taxonomy of congestion control to TCP congestion control. (Discuss) Proposed since April 2014.|
|This article does not cite any references or sources. (December 2009)|
|Internet protocol suite|
In the Transmission Control Protocol (TCP), the congestion window is one of the factors that determines the number of bytes that can be outstanding at any time. The congestion window is maintained by the sender.
Note that this is not to be confused with the TCP window size which is maintained by the receiver. The congestion window is a means of stopping a link between the sender and the receiver from getting overloaded with too much traffic, and is calculated by estimating how much congestion there is between the two places.
When a connection is set up, the congestion window, a value maintained independently at each host, is set to a small multiple of the maximum segment size (MSS) allowed on that connection. Further variance in the congestion window is dictated by an Additive Increase/Multiplicative Decrease approach.
This means that if all segments are received and the acknowledgments reach the sender on time, some constant is added to the window size. The window keeps growing exponentially until a timeout occurs or the receiver reaches its limit (a threshold value "ssthresh"). After this the congestion window increases linearly at the rate of 1/(congestion window)packets on each new acknowledgement received.
- Congestion window is reset to 1 MSS
- "ssthresh" is set to half the window size before packet loss started
- "slow start" is initiated.
The flow of data over a TCP connection is also controlled by the use of the receiver advertised TCP Receive Window. By comparing its own congestion window with the receive window of the receiver, a sender can determine how much data it may send at any given time.
|This computer networking article is a stub. You can help Wikipedia by expanding it.|