1

In a AIMD TCP connection, What happens to the packets in the sender buffer when "eventually a timeout would be reached" for a delayed ACK for a specific packet at the sender side?

Suppose the unit of sender congestion window is (packet) and the sender has congestion window = 2 packets (already sent) and at that instance the occupied buffer at the receiver side equals (2 out of 2 packets that already received from the sender i.e. the buffer is fully occupied).

When timeout happens, the congestion window size at the sender will drop to 1 packet due to multiplicative decrease of the AIMD and the effective window by which the sender is sending is already = 0, (i.e. no available space in the path between the sender and the receiver to accept more packets), so in that case what happens to the packets (packet 1 and packet 2) in the sender buffer?
Suppose that the sender buffer contains packet 1 and packet 2 and packet 1 delayed ACK caused timeout.
Note that:

 MAXWINDOW = min(sender congestion window, advertised window of the receiver)
 Effective window = MAXWINDOW -[last packet sent - last packet ACKED]
  1. I know that timeout must happen but how the retransmission can happen at the time of ZERO effective window size. one more thing that retransmission should not happen directly after time out in this case is that the retransmitted packet 1 will NOT be received by the receiver because the buffer at the other side i.e. the receiver side is fully occupied.

  2. So the retransmission of packet 1 should be also delayed until the Effective window size become not equal to zero

  3. if the retransmission of the packet 1 has to be delayed, What if the Acknowledgment of the packet 1 was received after timeout happens and before that time after the Effective window size become not equal to zero, will it has to be sent?

  4. Also the congestion window size at the sender will drop to 1 so what happens to the packet in the sender buffer ?

EDIT : consider the receiver window is only advertised once at the beginning of the connection establish phase and considered constant after that during the connection.

0

1 Answer 1

2

You seem to be confusing the congestion window with the receive window. The congestion window is always >=1. The receive window can be 0. The congestion window is controlled and only known by the sender, and the receive window is controlled by the receiver and transmitted to the sender. They are two completely different things.

The receive window is advertised in the ACK, so without an ACK, the receive window does not change. If the ACK is lost, then the congestion window will drop to 1, but the receive window will not change, and any packets for the lost ACK can be retransmitted.

2
  • I am not confused about the concept of them , but what if the receiver window is only advertised once at the beginning of the connection establish phase and considered const after that ?!
    – AAEM
    Commented Feb 27, 2021 at 23:44
  • 1
    No, the receive window is advertised in each segment, and it constantly changes as the receiver fills and frees its receive buffer. The receive buffer can drop so that the receive window goes to 0, pausing a sender. The congestion buffer is not sent to the other side, it is only something the sender calculates and uses, and it does not drop to 0.
    – Ron Maupin
    Commented Feb 27, 2021 at 23:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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