6

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
  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can post and accept your own answer.
    – Ron Maupin
    Jan 5 at 1:47
3

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.

4
  • 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 '13 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?
    – EM0
    Dec 9 '13 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.
    – rmaan
    Dec 10 '13 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.
    – rmaan
    Dec 10 '13 at 10:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.