I'm trying to understand what happens to the TCP Congestion Window (Cwnd) if the transfer rate is limited by the Receive Window (Rwnd). I know that the transfer rate is the minimum of Rwnd and Cwnd. I also know that Cwnd increases for each ACK received. Suppose the receive buffer is very small, so Rwnd always stays very low, but all the packets are received and ACKed. Does this mean that Cwnd just keeps increasing forever? Is there some limit to it?
1 Answer
It depends to which mechanism you are using, and yes the Cwnd keep increasing till your first packet drop happens, you can read more about slow start and other mechanism in the links below.
Basic slow-start[edit] The algorithm begins in the exponential growth phase initially with a Congestion Window Size (CWND) of 1, 2 or 10[2] segments and increases it by one Segment Size (SS) for each new ACK received. If the receiver sends an ACK for every segment, this behavior effectively doubles the window size each round trip of the network. If the receiver supports delayed ACKs, the rate of increase is lower, but still increases by a minimum of one MSS each round-trip time. This behavior continues until the congestion window size (CWND) reaches the size of the receiver's advertised window or until a loss occurs.
-
Hi, thank you for your answer. It would help, if you could add quotes from the pages you hyperlinked to support your answer. Nov 29, 2013 at 10:35
-
Yes, I read that, but I don't think it's very clear. "This behaviour" presumably means the doubling of Cwnd. OK, so assuming no loss occurs, what happens once Cwnd reaches Rwnd? It doesn't explicitly say. During the congestion avoidance phase does Cwnd still increase by 1 for every RTT, regardless of Rwnd?– EM0Dec 9, 2013 at 19:21
-
No if there is no loss the CWND is increased until it reaches the RWND, so the CWND increases by 1 for every RTT till it reaches the limit which is the RWND.– rmaanDec 10, 2013 at 10:27
-
The whole idea of a CWND is how to reach the maximum transfer limit without creating congestion, so different algorithm behave differently, but it goes for all of them if there is no congestion the windows is increased till its limit which is the advertised by the receiver. Think of it this way, what is the point of sending more packets if the intended recipient can not handle them and has to drop them.– rmaanDec 10, 2013 at 10:36