|
|
|
|
This is the moment that TCP exits SS and enters CA
So the second equation indeed increases congestion window W(t) by ONE per RTT seconds.
|
|
|
Then the segment (packet) transmission rate of the TCP connection is:
RTT
|<-------------------------------->|
W(t)
---+----------------------------------+---------
\
\
W(t) segments en route to destination
W(t)
Transmission rate = B(t) = ------ (# packets / sec)
RTT
|
|
NOTE: the notation
B(t)
in the Hybla TCP paper
means: "segment transmission rate at time t"
The notation B(t) in Padhye's paper means: "Throughput of TCP at time t" Yes, it's confusing, but I try to keep the same notation used in each paper |
|
integrate( 2^(t/RTT)/RTT, t);
/ t \
|---|
\RTT/
2
------ (+ constant)
ln(2)
|
(This situation is similar to the relationship between velocity and distance traveled:)
|
RTT
ρ = ------
RTT0
|
where RTT0 is some pre-determined round trip time (e.g., 25 msec).
| ALL TCP Hybla connection that have the SAME slow start threshold will that the SAME amount of time to exit the slow start phase |
Reno Slow Start threshold value = γ RTT TCP Hybla Slow Start threshold value = ρ * γ = ------ γ RTT0 |
|
where
RTT ρ 2(ρ*t/RTT) = ----- 2(t/RTT0) . . . . . . . . (SS) RTT0 WH(t) = t - tγ,0 RTT t - tγ,0 ρ ( ρ ---------- + γ ) = ----- ( --------- + γ ) . . . . (CA) RTT RTT0 RTT0 |
Reason:
RTT WH(t) = ----- 2(t/RTT0) = ρ * γ RTT0 |
1
= ----- 2(t/RTT0) . . . . . (SS)
RTT0
WH(t)
BH(t) = -----
RTT
1 t - tγ,0
= ----- ( --------- + γ ) . . . . (CA)
RTT0 RTT0
|
As we have just seen before, tγ,0 is independent of RTT
Therefore, RTT does not appear anywhere as a factor in BH(t) --- so BH(t) is independent of RTT
|
A TCP Hybla connection with longer RTT needs to end up at a higher CWND to achieve the SAME throughput per time unit (second)
|
|
Now HOW should the CWND be updated ( per each NEW ACK) so that TCP Hybla's CWND will be equal to the given function ?
What are the values for α and β for the update of CWND W:
WHi + α . . . . (SS) WHi+1 = WHi + β . . . . (CA) |
so that:
|
|
WHi + 2ρ - 1 . . . . (SS)
WHi+1 =
ρ2
WHi + ----- . . . . (CA)
WHi
|
In a homework, you can verify this fact (it's a lot easier to verify the correctness of a solution than to find a solution)
NOTE: I think in their implemetation, they set:
NOTE: The way they implemented CWND = ρ is changing wnd_init_:
They then call TcpAgent::timeout(tno); which will use wnd_init_ as initial cwnd_
See: click here - look for the function void HyblaSTcpAgent::timeout(int tno)
(The paper did not say - but I found the statement slowdown(CLOSE_SSTHRESH_HALF|CLOSE_CWND_HALF); in the source code)
|