The loopback interface has an MTU of
16436 bytes. With regard to the
RFC3390 initial sending rate this means for the packet size
s=22:
W_init/RTT = min(4*22, max(2*22, 4380)) bytes / 63usec = 88bytes / 63usec = 11.17 Mbps
which is the value of the first point plotted above.
CCID-3 then
performs a kind of slow-start until about 2 seconds. This is not a
crystal-clear case of slow-start, so a more detailed analysis is
necessary.
The Linux implementation uses the
revision
00 of draft rfc3448bis,
where an
idle sender is
defined as one which hasn't sent anything for
more than 2 RTTs. Since the RTT is low in this case, in each
computation of X the sender is classified as "idle" and gets the
benefit of being constrained by the RFC 3390 initial rate rather than
2 * X_recv.
min_rate = max(W_init/RTT, 2 * X_recv) = max(4*22*8/RTT, 2*X_recv)
X = max(min(2*X, min_rate), s/RTT) = max(min(2*X, min_rate), 22*8/RTT)
Considering that since the sender is
application limited and that therefore we have a near-constant
X_recv equalling the
application-sending rate of 1800 bits per second, we get the following
simplification:
X = max(min(2*X, max(W_init/RTT, 2*X_recv), s/RTT)
= max(min(2*X, max(4*s/RTT, 2*X_recv) s/RTT)
= max(min(2*X, max(4*22*8/RTT, 1800), 22*8/RTT)
The inner `
max' simplifies
to
W_init/RTT since this
is greater than 1800 for all RTTs less than 391 msec. Hence
X = max(min(2*X, 4*s/RTT), s/RTT)
= max(min(2*X, 4*22*8/RTT), 22*8/RTT)
This means that a "classic" slow-start
(where X' = 2*X) is performed
only as long as
s/RTT < 2*X < 4*s/RTT = W_init/RTT
which, with the initial RTT of 63 usec, gives the interval 1.4 Mbps
< X < 5.6 Mbps. This is only a narrow stretch in the above diagram
(in the dccp_probe log, this doubling of the sending rate
happened between 0.826 seconds and 1.022 seconds). As long as
X <= 2*s/RTT, the
s/RTT term dominates so that
X = s/RTT (in the log this happened from the begin up to
0.826 seconds).
Lastly,
consider the stage where
2 * X
>= W_init/RTT: since
W_init/RTT
is always greater than
s/RTT,
at this stage the value of
X
solely depends on
W_init/RTT
(in the log this happens from 1.022 seconds
onwards).
The end of this phase was reached when the RTT converged towards the
actual link RTT, peaking at about 2 seconds. This peak value is 234.7
Mbps
(reached at 2.391 seconds)
and it is simply
4*s/RTT
with the link RTT of 3 microseconds, i.e. 4*22*8/3 Mbps.
The
t_ipi plot is inverse
to the
X plot: