[e2e] Some questions about TCP.
jnc at mercury.lcs.mit.edu
Tue Nov 24 16:08:04 PST 2009
> From: "David P. Reed" <dpreed at reed.com>
> there is no statistical certainty of loss here. There are lots of ways
> that three duplicate ACKs can be sent, and then received. Every time
> the receiver receives a duplicate of a previously accepted segment it
> will transmit another ACK with the same content - there need be no
> "hole" and no segments to the "right" of the hole.
Sure, but the circumstances required to generate multiple ack-only packets
(i.e. no data), where those aren't due to a lost packet causing a hole, are
pretty unusual (i.e. rare).
If you are seeing multiple ack-only TCP packets for the same segment, and
those aren't due to a lost packet causing a hole, then either i) you
retransmitted that segment several times, and either the original data
segments, or the acks, all got wildly delayed (so long that you timed out and
retransmitted it several times _before_ either a) the first segment got to
the far end, or b) the first ack got back to you), or ii) it got duplicated
somehow in the network.
In other words, no, it's not 100% guaranteed that if you see multiple
ack-only packets, there is a lost packet making a hole, but absent rare
circumstances, it _most likely_ indicates a lost packet. I dunno what your
definition of "statistical certainty" is, but that looks rather like it
to me... :-)
> TCP doesn't estimate certainties of loss
Well, not directly, no. But fast-retransmit does effectively do just that
("estimate certaint[y] of loss"), doesn't it?
More information about the end2end-interest