Next: User Datagram Protocol Up: Flow Management in Previous: Sliding window

Timeout and retransmission

Because data segment and acknowledgement can get lost in the network, timeout and retransmission machenism has to be used. In TCP, four different timers are used for each connection:

  1. Retransmission timer: This timer is used when expecting an acknowledgement from the other end;
  2. Persist timer: This is used to keep window size information flowing even if the other end closes its receive window;
  3. Keepalive timer: This is used to detects when the other end on an otherwise idle connection crashes or reboots;
  4. 2MSL timer: This measures the time a connection has been in the time_waitstate.

We only look at the retransmission timer. This timer expires when an acknowledgement is supposed to come, but has not come for a long time, this means that the acknowledgement may have been lost. Further wait would be meaningless. But the problem here is that it may be that the acknowledgement was not lost but took a long time to arrive, therefore, premature timeout and retransmission will also waste network bandwidth. The key here is to come up with a realistic estimate of the round trip time, which can be quite difficult at times, as shown in our homework measurement results. The timer should be chosen such that it expires only after the round trip time. But unlike the data link layer, which is point-to-point, round trip time between two end points tranversing possibly many nodes can be very difficult to estimate. A poor choice of retransmission timer value can cause unnecessary network congestions.


zhangj@
Mon May 23 15:29:10 EDT 1994