E[n] * E[Y] + E[R] TCP Throughput = ----------------------- (See: click here) E[n] * E[A] + E[Z] |
With:
---------------------- / 1-p 2+b / 8(1-p) 2+b 2 E[Y] = ----- + ----- + \ / -------- + ( ----- ) . . . . . . . . (5) p 3b \/ 3bp 3b |
|
We must first determine:
|
Graphically:
The only way to know how many packets are transmitted in one TO period is by observation :-)
|
E[R] = h1 * Prob[R=1] + h2 * Prob[R=2] + h3 * Prob[R=3] + ... = h * Prob[R=1] + 2 * h * Prob[R=2] + 3 * h * Prob[R=3] + ... where: R = number of retransmissions h = number of packets transmitted in one round of retransmission |
E[R] = 1 * Prob[R=1] + 2 * 1 * Prob[R=2] + 3 * 1 * Prob[R=3] + ... = 1 * Prob[R=1] + 2 * Prob[R=2] + 3 * Prob[R=3] + ... |
Prob[ R = k ] = probability that there are k retransmission rounds = Prob[ (k - 1 transmissions end in TO) AND last transmission success ]
Summary: Prob[ R = k ] = pk-1 * (1 - p) |
E[R] = 1*Prob[R=1] + 2*Prob[R=2] + 3*Prob[R=3] + ... = 1 * (1-p) + 2 * p*(1-p) + 3 * p2*(1-p) + .... |
Note: the base timeout value if set to:
|
........ but the doubling occurs upto 6 (SIX) times.
# Times TCP times out | Timeout value used | Start to end of Timeout ------------------------+---------------------+---------------------------- Initial timeout | TO | TO 2nd timeout | 2*TO | 3*TO 3rd timeout | 4*TO | 7*TO 4th timeout | 8*TO | 15*TO 5th timeout | 16*TO | 31*TO 6th timeout | 32*TO | 63*TO 7th timeout | 64*TO | (63+64)*TO 8th timeout | 64*TO | (63+2*64)*TO 9th timeout | 64*TO | (63+3*64)*TO ... |
Notes:
|
E[Z] = L1 * Prob[R=1] + L2 * Prob[R=2] + L3 * Prob[R=3] + ...
Or: E[Z] = TO (1-p) * { p0 + p1 * (3) + p2 * (7) + p3 * (15) + p4 * (31) + p5 * (63) + p6 * (63+1*64) + p7 * (63+2*64) + p8 * (63+3*64) + .... } |
> assume( p>=0, p<1 ); > h1 := p^0 + 3*p^1 + 7*p^2 + 15*p^3 + 31*p^4 + 63*p^5 \ + sum( (63+(k-5))*p^k, k=6..infinity); 6 2 3 4 5 p~ (63 p~ - 64) h1 := 1 + 3 p~ + 7 p~ + 15 p~ + 31 p~ + 63 p~ - ---------------- 2 (p~ - 1) |