TCP retransmission efficiency

Phil R. Karn (
Mon, 21 Jul 86 15:27:53 edt

A virtual circuit link layer on Ethernet? Surely you jest! I guess Ethernet
was too simple, cheap, fast and reliable to be left alone by IBM. Must be
the second law of thermodynamics in action...

I'm not sure John Shriver's scenario with TCP is up to date. More modern
implementations ("modern" defined as "implementing John Nagle's
recommendations in RFC 896") seldom suffer from this problem. First of all,
in the majority of situations the Nagle Rule allows only one segment to be
in flight at a time. Obviously a lot of problems go away if you can operate
in "stop and wait" mode.

Only when the bandwidth requirement on the connection exceeds one Maximum
Segment Size per round trip interval will there be more than one segment in
flight at one time. (This assumes that the receive window is greater than
the MSS, of course.) Even so, if an early segment gets lost, the receiving
TCP is supposed to place the later segments on its resequencing queue and
quietly await retransmission of the missing segment. When the sender times
out, it is supposed to resend ONLY the oldest unacknowledged segment. This
fills in the hole, and the receiver will now acknowledge all the segments
that it has received. The transfer now continues without any unnecessary

So as long as the receiver uses "in-window" acceptance (i.e., implements
resequencing) and the sender uses "first-only" retransmission, it's pretty
easy to see that only those segments actually lost are retransmitted. And
this is done without any incompatible changes to the protocol.

Of course, this assumes that ACKs aren't lost very frequently. If they are,
then it makes sense to consider ACKing ACKs. I.e., ACKs are retransmitted by
the receiver until it gets either a new data packet from the transmitter or
an indication that there is no more data to send. This looks like a good
idea on very lossy networks (e.g., packet radio -- this idea was first
proposed by the Alohanet folks) and I've proposed it for use as an
experimental amateur packet radio link level protocol. At the transport
layer, however, you had better have reasonably low loss rates or the more
costly end-to-end retransmissions (even ACK retransmissions) would eat you


This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:36:34 GMT