Search code examples
tcpiptransport

TCP RENO MSS, Sender Window, Threshold and Receiver window


I'm struggling to understand what happens when a sender receives a triple duplicate ACK from the receiver and what happens when a timeout occurs.

My understanding so far is that:

Upon a triple duplicate ACK: (1) set threshold to half of the size of the sender window, (2) set receiver window size to 1 MSS

I'm not really sure about what happens when a timeout occurs besides a retransmit.

I am working on this problem listed below. If someone could help me confirm what happens when a triple ACK occurs and when a timeout occurs it would be much appreciated.

Consider a TCP connection has an initial Threshold of 24 kB and a Maximum Segment Size (MSS) of 4 kB. The receiver advertised window is 40 kB. Suppose all transmission attempts are successful except for a triple duplicate ACK received (for the same previously transmitted data) on the number 7 transmission and a timeout at transmission number 12. The first transmission attempt is number 0. Find the size of the sender’s congestion window for the first 18 transmission attempts (number 0-17) assuming the sender’s TCP implementation is using the slow-start congestion control scheme

Trans. #    Sender wnd. (kb)    Threshold (kb)  Receiver wnd. (kb)
0   4   24  40
1   8   24  40
2   16  24  40
3   24  24  40
4   28  24  40
5   32  24  40
6   4   16  40
7   8   16  40
8   12  16  40
9   16  16  40
10  20  16  40
11  24  16  40
12          40
13          40
14          40
15          40
16          40
17          40

Solution

  • For future readers, the correct answer for TCP Reno is below:

    Upon a triple duplicate ACK, the threshold is set to half of the sender window size and the sender window size is halved.

    Upon a timeout, the threshold is set to half of the sender window size and the sender window is reset to 1 MSS and uses slow start.

    For TCP Tahoe:

    Upon a triple duplicate ACK the threshold is sent to half of the sender window size and the sender window size is reset to 1 MSS. Slow start is then used until the sender hits the threshold.

    Upon a timeout, Tahoe and Reno perform the same function.

    The correct answer: (for TCP Reno)

    Trans. #    Sender wnd. (kb)    Threshold (kb)  Receiver wnd. (kb)
    0   4   24  40
    1   8   24  40
    2   16  24  40
    3   24  24  40
    4   28  24  40
    5   32  24  40
    6   36  24  40
    7   40  24  40 <- tripple duplicate ack after attempting to transmit 
    8   20  20  40 
    9   24  20  40
    10  28  20  40
    11  32  20  40
    12  36  20  40 <- timeout after attempting to transmit 
    13   4  18  40
    14   8  18  40
    15  16  18  40
    16  18  18  40
    17  22  18  40