[e2e] Minimum RTO values
Venkata.Naidu at Marconi.com
Wed Nov 10 14:19:57 PST 2004
-> I am trying to probe webservers in the Internet for TCP Min
-> RTO values.
-> Based on my preliminary tests I saw the following results,
-> which I want to
-> Linux : around 200 ms
Yes. This is correct. Most of the Lunux TCP constants are
defined in ~/include/net/tcp.h :
#define TCP_RTO_MAX ((unsigned)(120*HZ))
#define TCP_RTO_MIN ((unsigned)(HZ/5))
Linux 2.4 and previous versions use HZ of 100ms (default) and
Linux 2.6 uses HZ of 1000ms (default). But, the defines are
tuned to reflect TCP_RTO_MIN to 200ms.
-> FreeBSD : around 1s
This value of 1s is used in old FreeBSD versions. Now the min
RTO in FreeBSD is 30ms. Note that, this constants are specific
to FreeBSD and very different from NetBSD and OpenBSD. If you
are looking for NetBSD and OpenBSD values, let me know.
* Minimum retransmit timer is 3 ticks, for algorithmic stability.
* TCPT_RANGESET() will add another TCPTV_CPU_VAR to deal with
* the expected worst-case processing variances by the kernels
* representing the end points. Such variances do not always show
* up in the srtt because the timestamp is often calculated at
* the interface rather then at the TCP layer. This value is
* typically 50ms. However, it is also possible that delayed
* acks (typically 100ms) could create issues so we set the slop
* to 200ms to try to cover it. Note that, properly speaking,
* delayed-acks should not create a major issue for interactive
* environments which 'P'ush the last segment, at least as
* long as implementations do the required 'at least one ack
* for every two packets' for the non-interactive streaming case.
* (maybe the RTO calculation should use 2*RTT instead of RTT
* to handle the ack-every-other-packet case).
* The prior minimum of 1*hz (1 second) badly breaks throughput on any
* networks faster then a modem that has minor (e.g. 1%) packet loss.
#define TCPTV_MIN ( 3 ) /* minimum allowable value */
#define TCPTV_CPU_VAR ( hz/5 ) /* cpu variance allowed (200ms) */
#define TCPTV_REXMTMAX ( 64*hz) /* max allowable REXMT value */
-> Sun Solaris : around 4s
Should be 400ms as per Solaris 9 Tunable parameters document:
-> Microsoft windows server : around 2s
Sorry I don't have access to such kernels or (at least) header files
-> Can anybody throw some light on the actual Min RTO values used by
-> different OSes? (listed above or otherwise)?
-> Thanks a lot,
More information about the end2end-interest