[e2e] 10% packet loss stops TCP flow
craig at aland.bbn.com
Fri Feb 25 13:11:26 PST 2005
10% sounds a little low for the connection to regularly fail (poor throughput
yes, failure no).
But a few points.
10% loss means that about once every 10 segments sent, you'll reset the
congestion window and restart slow start/congestion avoidance. In general,
you'll find that ssthresh gets stuck around 2 to 3, and so you're running
at or close to 1 or 2 segments outstanding at time. That's horrible
throughput but functional.
The next step is to figure out when the connection dies. If you're in one
segment at a time mode, that means that for a round-trip to succeed, your
data segment needs to get through and an ack needs to come back. (Acks
don't come back spontaneously, only in response to retransmissions, and
since the window size is 1, you don't get the win of cumulative acks).
So the chance of a successful round-trip is .9*.9 or .81 -- failure is .19
TCP's typically retransmit 7 to 10 times (if I'm remembering right). The
probability of 7 straight failures is (.19)^7 or around 10^-5. So a
connection of about 10,000 segments (with large variance around that number)
just plain fails.
Of course, this assumes loss is independent. If losses tend to cluster,
you'll launch your retransmissions straight into the loss episode and lose
There are probably much better models, but these work pretty well for
rough envelope calculations in my experience.
More information about the end2end-interest