...
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)
...