[R-C] Simplifying the TCP throughput algorithm

Harald Alvestrand harald at alvestrand.no
Thu Mar 29 13:50:51 CEST 2012


On 03/29/2012 01:19 PM, Colin Perkins wrote:
> On 29 Mar 2012, at 13:04, Harald Alvestrand wrote:
>> I did some extremely rough numerical experiments with the TCP throughput algorithm.
>>
>> Results for TCP throughput in bits/sec at MSS=1440 bytes at various loss rates:
>>
>> 0.001% loss: Throughput 4.5 Mbits/sec (HD can survive)
>> 0.01% loss: Throughput 1.4 Mbits/sec
>> 0.1% loss: Throughput 458 Kbits/sec (VGA can survive)
>> 1% loss: Throughput 144 Kbits/sec (good audio can survive)
>> 10% loss: Throughput 43 Kbits/sec (crappy audio can survive)
>>
>> These are stable in the first 2 digits over a large range of RTT (1 ms to 100 ms).
>>
>> Interesting numerical result: In all cases, the second term of the TCP throughput denominator is less than 1% of the first term, so a reasonable approximation is:
>>
>> T = s / sqrt(p * 2/3)
>>
>> That's a simple formula.
>
> Add the RTT, and you get the usual TCP throughput approximation. That seemed to be the suggestion to use from ICCRG.
Ah - thanks for spotting the error!

It should be X = s / R * sqrt(2*p/3) - which makes a huge difference in 
my numbers, and makes the cost of the simplification grow to around 30% 
for the 10% loss cases. Still low when loss < 1%.

This of course also makes the number of packets strongly dependent on 
the RTT, which seems consistent with the commonly held belief that TCP 
is RTT dependent.

For the 100 ms RTT case (~transatlantic), the new numbers are:

0.001%: 45 Mbits
0.01%: 14 Mbits
0.1%: 4.5 Mbits
1%: 1.3 Mbits
10%: 284 Kbits

So we can get rudimentary video through at 10% packet loss without being 
TCP-unfriendly, but for reasonable quality video, packet loss needs to 
be below 1% at this RTT.

(I've tried TCP at 10% packet loss, real life, transatlantic RTT, back 
in the bandwidth crunch of the 90s. I didn't get 284 Kbits/sec, though.....)

Full formula, copied from draft:

                                     s
      X = --------------------------------------------------------------
          R*sqrt(2*b*p/3) + (t_RTO * (3*sqrt(3*b*p/8) * p * (1+32*p^2)))


with b=1 and t_RTO = 4 RTT.





More information about the Rtp-congestion mailing list