Subject: RTO calcuation in NetBSD/FreeBSD

From: Ramesh Shankar <[email-masked]>
Date: Wed, 14 Jun 2000 18:42:23 -0600

It appears that NetBSD and FreeBSD's RTO calculation (from SRTT and
RTTVAR) is different from the Van Jacbson's paper and the code described
in TCP/IP Illustrated vol2.

TCP/IP illustrated vol 2 has the calculation for delta as:

delta = rtt - 1 - (tp->t_srtt >> TCP_RTT_SHIFT);

where TCP_RTT_SHIFT is 3.

whereas NetBSD/FreeBSD have an equivalent of:

delta = ((rtt - 1) << 2 ) - (t_srtt >> 2);

Are the reasons for this change explained in detail in some paper or
something like that?

Thanks,

S.R.

---

From: Ramesh Shankar <[email-masked]>
Date: Thu, 15 Jun 2000 07:34:17 -0600

I guess I found the answer :-#. The final computation for RTO:

RTO = t_srtt/8 + t_rttvar

in the TCP/IP Illustrated vol2 has now become in NetBSD and FreeBSD:

RTO = (t_srtt/8 + t_rttvar)/4

This would probably offset the initial multiplication by 4 of the RTT.

Thanks,

S.R.

---

From: Ramesh Shankar <[email-masked]>
Date: Thu, 15 Jun 2000 17:33:43 -0600

Some more info:

The modified FreeBSD/NetBSD implementation is described in Brakmo and
Peterson's paper, "Performance problems in BSD4.4 TCP". I read it long
back and probably forgot about it. Just in case anyone is interested ...

Thanks,

S.R.