On a TCP connection that has just starter, where initial Threshold value is 32000bytes and MSS=1000 bytes:
- What is the Congestion Window value after 16 RTT if we assume there is an endless data supply from the application layer, sender's window is unlimitted and flow control is allowing any possible segment transmission.
- Same as 1 but where first segment of 8th RTT is lost.
- Same as 1 but there is a time out event of the first segment of 10th RTT.
Exercises are due by December 11th lecture.
Note on Fast Recovery: Due to some of your questions let me clarify the scope of the exercise. Fast Recovery was not mentioned in the lectures trying to make things simpler, as Fast Recovery is an optional part of congestion control. For the sake of simplicity we can do without it, but if you want to provide a more accurate response, here you have the explanation about it (borrowed from RFC 2581).
Note on Fast Recovery: Due to some of your questions let me clarify the scope of the exercise. Fast Recovery was not mentioned in the lectures trying to make things simpler, as Fast Recovery is an optional part of congestion control. For the sake of simplicity we can do without it, but if you want to provide a more accurate response, here you have the explanation about it (borrowed from RFC 2581).
The fast retransmit and fast recovery algorithms are usually implemented together as follows. 1. When the third duplicate ACK is received, set ssthresh to no more than the value given in equation 3.
ssthresh = max (FlightSize / 2, 2*SMSS) (3)
2. Retransmit the lost segment and set cwnd to ssthresh plus 3*SMSS. This artificially "inflates" the congestion window by the number of segments (three) that have left the network and which the receiver has buffered. 3. For each additional duplicate ACK received, increment cwnd by SMSS. This artificially inflates the congestion window in order to reflect the additional segment that has left the network. 4. Transmit a segment, if allowed by the new value of cwnd and the receiver's advertised window. 5. When the next ACK arrives that acknowledges new data, set cwnd to ssthresh (the value set in step 1). This is termed "deflating" the window. This ACK should be the acknowledgment elicited by the retransmission from step 1, one RTT after the retransmission (though it may arrive sooner in the presence of significant out- of-order delivery of data segments at the receiver). Additionally, this ACK should acknowledge all the intermediate segments sent between the lost segment and the receipt of the third duplicate ACK, if none of these were lost.
Please note the use of FlightSize/2 and and not cwnd/2 after a loss event. The purpose of it all is to consider only the effectively used part of the congestion window instead of its total size. FlightSize represents the amount of data already transmitted but pending of acknowledgment.