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