Re: RTO [was Re: my broken TCP is faster on broken networks [Re: Very poor TCP/SACK performance]]

Savochkin Andrey Vladimirovich (saw@msu.ru)
Wed, 16 Sep 1998 13:37:45 +0400


Dave,

On Tue, Sep 15, 1998 at 10:23:10PM -0700, David S. Miller wrote:
> Setting the initial mdev to m<<1 is a bug in the BSD code which we
> just copied blindly in 2.0.x, the calculation in 2.1.x (m<<2) is the
> correct one, check the RFCs :-). I believe this is mentioned in
> Steven's books and the tcp-impl "known TCP implementation problems"
> draft, amongst other places.

The current code does
tp->srtt = m<<3; /* take the measured time to be rtt */
tp->mdev = m<<2; /* make sure rto = 3*rtt */
...
tp->rto = (tp->srtt >> 3) + tp->mdev;
tp->rto += (tp->rto >> 2) + cwnd_stuff
where m is a round trip time for a single packet.

So we initialize our RTO to (m + 4m) * (1+1/4+C)
i.e. at least to 25/4 m (about 6m).
The value seems to be fairly large and contradicts to the comments.

I haven't look though all RFCs thoroughly. The only point to
mdev initialization I remembered was a phrase in RFC1122
that mdev should be initialized so that RTO be 3 sec.

I have no arguments for a certain initial value of RTO.
If 25/4 of the initial RTT is a design decision rather than a misprint
I'm quite satisfied.

Best wishes
Andrey V.
Savochkin

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/