...

An improved form of the above formula that takes into account the TCP initial retransmit timer and the Maximum TCP window size, and is generally more accurate for larger (> 2%) packet losses, can be found in: . The formula is given below (derived from eqn 31 of Padhye et. al.):.

if w(p) < wmax

Wiki Markup |
---|

```
Rate = MSS * \[\(\(1-p\)/p\) + w\(p\) + Q\{p,w\{p\}\}/\(1-p\)\] /
\(RTT * \[\(w\{p\}+1\)\]+\(Q\{p,w\{p\}\}*G\{p\}*T0\)/\(1-p\)\)
``` |

otherwise:

Wiki Markup |
---|

```
Rate = MSS * \[\(\(1-p\)/p\)+ wmax+Q\{p,wmax\}/\(1-p\)\] /
\(RTT * \[0.25*wmax+\(\(1-p\)/\(p*wmax\)+2\)\] + \(Q\{p,wmax\}*G\{p\}*T0\)/\(1-p\)]\)
``` |

Where:

We have assumed the number of packets acknowledged by a received ACK is 2 (this is b in the Padhye et. al. formula 31)

wmax is the maximum congestion window size

w{p} = (2/3)(1 + sqrt{3*((1-p)/p) + 1} from eqn. 13 of Padhye et. al. substituting b=2

Wiki Markup |
---|

```
Q\{p,w\} = min\{1,\[\(1-\(1-p\)3\)*\(1+\(1-p\)3\)*\(1-\(1-p\)\(w-3\)\)\] /
\[\(1-\(1-p\)w\)\]\}
``` |

G{p} = 1+p+2*p2+4*p3+8*p4+16*p5+32*p6 from eqn 28 of Padhye et. al.

T0 = Initial retransmit timeout (typically this is suggested by RFCs 793 and 1123 to be 3 seconds).

Wmax = Maximum TCP window size (typical default for Solaris 2.6 is 8192 bytes)

...