a
Increase: W = W + ---
W
Decrease: W = W - b * W
------------
1 / a (2 - b)
Avg TCP Throughput = ----- \ / ---------- (# packets/sec)
RTT \/ 2bp
|
------------
/ a (2 - b)
Avg TCP CWND = \ / ---------- (# packets)
\/ 2bp
|
|
|
Therefore:
|
|
|
|
$64,000 question:
|
Ingenious solution:
|
(The "how" is explained below....)
|
Average CWND used by classic TCP Reno:
Packet Drop Rate P Congestion Window W
------------------ -------------------
10^-2 12
10^-3 38 (Low speed links)
10^-4 120
10^-5 379
10^-6 1200
10^-7 3795 (High speed links)
10^-8 12000
10^-9 37948
10^-10 120000
Table 2: TCP Response Function for Standard TCP.
The average congestion window W in MSS-sized segments (packets)
is given as a function of the packet drop rate P.
|
Conclussion:
|
|
Notes:
|
|
Example: (not scientifically correct, just to illustrate the concept of "dynamic update rate")
|
|
|
120,000 × CWND = 1,000,000,000
==> CWND = 1,000,000,000 / 120,000 = 83,333
==> CWND ~= 83,000
|
|
------------
/ a (2 - b) 1
Avg TCP Throughput = \ / ---------- × -------
\/ 2bp RTT
------------
/ a (2 - b)
Avg TCP CWND = \ / ----------
\/ 2bp
|
-------------
/ a (2 - b)
83000 = \ / ----------
\/ 2b * 10−7
|
|
|
Verify:
---------------------
/ 72 (2 - 0.1)
\ / ------------- * 107
\/ 2*0.1
------------------
/ 72 * 1.9
= \ / ---------- * 107
\/ 0.2
--------
/
= \ / 684 * 107
\/
= 82704.29 (approximately 83000)
|
Verify:
---------------------
/ 459 (2 - 0.5)
\ / ------------- * 107
\/ 2*0.5
------------------
/ 459 * 1.5
= \ / ---------- * 107
\/ 1.0
--------
/
= \ / 688.5 * 107
\/
= 82975.90 (also approximately 83000)
|
|
Which CWND update method is better ?
|
|
|
|
|
Notes:
|
|
$64,000 Question:
|
Initial answer:
|
|
So far:
|
|
Observation on the interpolation functions:
|
|
Note:
|
u
W(p) = -----
pv
|
W( 10−7 ) = 83,000 ........ (1)
W( 10−3 ) = 38 ........ (2)
|
We can find u and v as follows:
u
------ = 83,000 ........ (1a)
(10−7)v
u
------ = 38 ........ (2a)
(10−3)v
|
0.12
W(p) = --------- . . . . . . . . . . . . . . (5)
0.835
p
|
|
(The scale is too large :-))
|
0.12 W = --------- 0.835 p 0.12 <==> p0.835 = ------ (1/(0.835) = 1.1976) W 0.121.1976 <==> p = ------------ W1.1976 |
a(w) Increase: w <- w + ------ w Decrease: w <- w - b(w) * w |
------------
/ a (2 - b) 1
Avg TCP Throughput = \ / ---------- × ------- ........ (7)
\/ 2bp RTT
------------
/ a (2 - b)
Avg TCP CWND = \ / ---------- (# packets) ........ (8)
\/ 2bp
|
--------------
/ a (2 - b)
w = \ / ------------- (# packets)
\/ 2 b p
2 a (2 - b)
<==> w = -----------
2 b p
<==> a * (2 - b) = w2 * 2 * b * p
2 w2 b p
<==> a = ----------
2 - b
|
0.0789 p(W) = --------- . . . . . . . . . . . . . (6) W1.2 |
Notice that there are two undetermined variables (degrees of freedom) in Equation (9):
2 w2 b(w) p(w)
a(w) = ---------------- . . . . . . . . . (9)
2 - b(w)
|
Namely:
|
|
2 w2 b(w) p(w)
a(w) = ---------------- . . . . . . . . . (9)
2 - b(w)
|
It is obvious that we should:
|
|
Graphically:
|
Consider the choices:
|
Note:
|
|
log(w) - log(38) b(w) = (0.1 - 0.5) * ---------------------- + 0.5 . . . . . (10) log(83000) - log(38) |
The Interpolation curve for b(w) looks like this:
|
|
(I will continue with the paper....)
a(w)
New ACK: w <- w + ------
w
Triple Dup ACK: w <- w - b(w) * w
|
a(w) and b(w) depends on the current congestion window CWND = w.
|
log(w) - log(38)
b(w) = (0.1 - 0.5) * ---------------------- + 0.5 .......(10)
log(83000) - log(38)
|
2 w2 b(w) p(w)
a(w) = ---------------- .......... (9)
2 - b(w)
|
The value p(w) is computed from w using Equation (6):
0.0789
p(w) = --------- ........ (6)
w1.2
|
# These values are set in TCL Agent/TCP set low_window_ 38 ; # default changed on 2002/8/12. Agent/TCP set high_window_ 83000 Agent/TCP set high_p_ 0.0000001 # 10^-7 Agent/TCP set high_decrease_ 0.1 Agent/TCP set max_ssthresh_ 0 |
|
|