Hi,
In Linux 2.3.99pre6, TCP_RTO_MAX is set to (120*HZ) in include/net/tcp.h
(line 297). I think it should be set to (240*HZ).
In net/ipv4/tcp_timer.c:tcp_retransmit_timer in Linux 2.3.99pre6,
there's a comment lines 590-604 saying:
/* Increase the timeout each time we retransmit. Note that
* we do not increase the rtt estimate. rto is initialized
* from rtt, but increases here. Jacobson (SIGCOMM 88) suggests
* that doubling rto each time is the least we can get away with.
* In KA9Q, Karn uses this for the first few times, and then
* goes to quadratic. netBSD doubles, but only goes up to *64,
* and clamps at 1 to 64 sec afterwards. Note that 120 sec is
* defined in the protocol as the maximum possible RTT. I guess
* we'll have to use something other than TCP to talk to the
* University of Mars.
*
* PAWS allows us longer timeouts and large windows, so once
* implemented ftp to mars will work nicely. We will have to fix
* the 120 second clamps though!
*/
I checked RFC 793 and it doesn't mention a limit of 120 secs. RFC 1122
says the following in Section 4.2.3.1 "Retransmission Timeout
Calculation", page 96:
The recommended upper and lower bounds on the RTO are known
to be inadequate on large internets. The lower bound SHOULD
be measured in fractions of a second (to accommodate high
speed LANs) and the upper bound should be 2*MSL, i.e., 240
seconds.
I therefore believe that the comment is incorrect and that TCP_RTO_MAX
should be set to 240 seconds, or to be strict (240*HZ). Please confirm
or correct me if I'm wrong.
Thanks
JP
____________________________________________________________
J.P. Martin-Flatin, EPFL-DSC-ICA, 1015 Lausanne, Switzerland
Email: jp.martin-flatin@xxxxxxxx Fax: +41-21-693-66-10
Web: http://icawww.epfl.ch/~jpmf/
|