Linux TCP中的最大段生存期(MSL)是多少?

Linux TCP中的最大段生存期(MSL)是多少?,linux,networking,tcp,network-protocols,Linux,Networking,Tcp,Network Protocols,我们有一台自制的XMPP服务器,有人问我服务器的MSL(最大段生存期)是多少。 这意味着什么?我如何获得它?它是否在Linux/procTCP设置中?这似乎可以回答您的问题: 我建议您询问为什么有人问您这个问题,并了解这如何适用于XMPP TCP/IP插图第1卷在线,更详细地描述了2MSL: MSL也在TCP中进行了描述,如中所述。MSL(最大段生存期)是TCP段预计在网络中存在的最长时间(以秒为单位)。最明显的是,它在TCP连接关闭期间发挥作用——在CLOSE_WAIT和CLOSED状态之间

我们有一台自制的XMPP服务器,有人问我服务器的MSL(最大段生存期)是多少。

这意味着什么?我如何获得它?它是否在Linux
/proc
TCP设置中?这似乎可以回答您的问题:

我建议您询问为什么有人问您这个问题,并了解这如何适用于XMPP

TCP/IP插图第1卷在线,更详细地描述了2MSL:

MSL也在TCP中进行了描述,如

中所述。MSL(最大段生存期)是TCP段预计在网络中存在的最长时间(以秒为单位)。最明显的是,它在TCP连接关闭期间发挥作用——在CLOSE_WAIT和CLOSED状态之间,机器等待2个MSL(从概念上讲,是往返于internet末端)以等待任何延迟数据包。在这段时间内,机器将为大部分关闭的连接保留资源。如果服务器忙,那么以这种方式保存的资源可能会成为一个问题。一个“修复”是降低MSL,以便更快地释放它们。一般来说,这可以正常工作,但偶尔会导致混乱的故障场景

在Linux上(无论如何,RHEL,这是我所熟悉的),“变量”
/proc/sys/net/ipv4/tcp\u fin\u timeout
是2*MSL值。通常为60秒。 要查看它,请执行以下操作:

cat /proc/sys/net/ipv4/tcp_fin_timeout
要更改它,请执行以下操作:

echo 5 > /proc/sys/net/ipv4/tcp_fin_timeout
这是一个TCP状态图。您可以在底部找到有问题的等待。

您还可以在netstat或ss中看到使用-o的套接字倒计时,这有助于显示等待时间的具体数字。例如,使用tcp_fin_timeout(它基于tcp_TIMEWAIT_LEN,通常硬编码为60秒)


我想你的意思是“在等待时间和关闭状态之间”。等待时间和关闭状态之间的延迟不能通过tcp\u fin\u TIMEOUT配置。tcp协议规定,任何数据包在网络中的“生存”时间都不得超过MSL,但我仍然很好奇-网络实际上如何保证数据包的最大生存期,据我所知,这需要一个全球同步的时钟,对吗?否则,任何路由器如何知道它接收的数据包是否正在消亡并相应地停止转发?这应该是接受答案。
cat /proc/sys/net/ipv4/tcp_fin_timeout
3

# See countdown timer for all TIME_WAIT sockets in 192.168.0.0-255
ss --numeric -o state time-wait dst 192.168.0.0/24

NetidRecv-Q  Send-Q    Local Address:Port    Peer Address:Port                             
tcp  0       0         192.168.100.1:57516   192.168.0.10:80    timer:(timewait,55sec,0)   
tcp  0       0         192.168.100.1:57356   192.168.0.10:80    timer:(timewait,25sec,0)   
tcp  0       0         192.168.100.1:57334   192.168.0.10:80    timer:(timewait,22sec,0)   
tcp  0       0         192.168.100.1:57282   192.168.0.10:80    timer:(timewait,12sec,0)   
tcp  0       0         192.168.100.1:57418   192.168.0.10:80    timer:(timewait,38sec,0)   
tcp  0       0         192.168.100.1:57458   192.168.0.10:80    timer:(timewait,46sec,0)   
tcp  0       0         192.168.100.1:57252   192.168.0.10:80    timer:(timewait,7.436ms,0) 
tcp  0       0         192.168.100.1:57244   192.168.0.10:80    timer:(timewait,6.536ms,0)