Subject: Re: TCP/RFC 1323 bug
To: None <tech-net@netbsd.org>
From: Heiko W.Rupp <hwr@pilhuhn.de>
List: tech-net
Date: 08/07/1999 13:59:55
Mark Allman wrote:
|The problem occurs when the timestamp option (RFC 1323) is used for
|RTT measurement.  RFC 1323 says that if the echoed timestamp is zero
|it is invalid.  However, the NetBSD code does not check for this
|condition.  This can lead to a big, bogus RTT.  Which, in turn,
|yields a big, bogus RTO.  Which, in turn, leads to a big, bogus
|reduction in performance.  My suggested fix is to change the if
|statement at lines 1103 and 1651 of tcp_input.c (-current version
|grabbed today) from:
|
|		if (opti.ts_present)
|
|to something like:
|
|    		if (opti.ts_present && opti.ts_ecr)
|
|to ensure that the timestamp is valid before using it to compute a
|new RTO.  That seems to have cured my particular problem and seems
|like it should be used in the general case, as well (at least thats
|my reading of the RFC!).

Mine too. Interestingly, Stevens also describes code like ours
(without the check) on page 938 of TCP/IP Illustrated 2.


-- 
          See <a href="http://www.netbsd.org">NetBSD</a> for a multiplatform OS
Die hat soviel Silikon - da kann man ja ein ganzes Schwimmbad mit abdichten 
		    -- Chris Badura am 16.11.94 ueber Dolly Buster