Jump to content

Maximum segment lifetime

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Maximum segment lifetime or MSL is the time a TCP segment can exist in the internetwork system. It was defined in 1981 to be 2 minutes.[1]

For this specification the MSL is taken to be 2 minutes. This is an engineering choice, and may be changed if experience indicates it is desirable to do so.

The specification calls for this value to be used for the "time-wait" interval, the minimum time a system must keep the socket in the TIME_WAIT state before designating the socket closed, thus preventing the socket from being re-used before that interval.

Values in various operating systems

The command that can be used on Solaris systems (prior to v11) to determine the time-wait interval is:

   ndd -get /dev/tcp tcp_time_wait_interval

60000 (60 seconds) is a common value.

On FreeBSD systems this description and value can be checked by the command sysctl:[2]

   sysctl -d net.inet.tcp.msl
   sysctl net.inet.tcp.msl

which gets the result:

   net.inet.tcp.msl: Maximum segment lifetime
   net.inet.tcp.msl: 30000

In Linux, the time-wait interval is defined by the TCP_TIMEWAIT_LEN, hard-coded as 60 seconds. Linux implements several possible optimizations to shorten the TIME_WAIT state through recycling, down to a minimum of 3.5s in recent kernels.[3][4]

References

  1. ^ "RFC 793". Transmission Control Protocol. Retrieved December 5, 2006.
  2. ^ "Tuning FreeBSD to serve 100-200 thousands of connections".
  3. ^ "Linux Kernel socket implementation".
  4. ^ "Linux Kernel headers for TCP".