我的问题是关于Linux中的TCP参数。到现在为止,我想改变的默认值: Linux中多个接口的自定义TCP参数
我有一个Linux中的内核2.6.x的和2个以太网接口。我知道TCP是一个堆栈,与以太网设备没有任何关系。说,这个问题:有没有办法为每个接口设置自定义值?例如,监听eth0中的连接的服务器将使用空闲连接超时的一个值,并且侦听连接的另一个服务器eth1可以对该参数使用不同的值。
任何考虑将不胜感激。
最好的问候,
蒂亚戈
我的问题是关于Linux中的TCP参数。到现在为止,我想改变的默认值: Linux中多个接口的自定义TCP参数
我有一个Linux中的内核2.6.x的和2个以太网接口。我知道TCP是一个堆栈,与以太网设备没有任何关系。说,这个问题:有没有办法为每个接口设置自定义值?例如,监听eth0中的连接的服务器将使用空闲连接超时的一个值,并且侦听连接的另一个服务器eth1可以对该参数使用不同的值。
任何考虑将不胜感激。
最好的问候,
蒂亚戈
据我所知,你不能。您可以为tcp堆栈设置内核参数(尝试执行sysctl -a | grep tcp
),或者在TCP套接字上设置参数(请参阅man tcp
),但这两个参数都不能控制ACK延迟。如果您拥有内核源代码,则该代码编号为/usr/src/<kernels>/include/net/tcp.h
。
貌似延迟ACK是硬编码here:
#define TCP_DELACK_MAX ((unsigned)(HZ/5)) /* maximal time to delay before sending an ACK */
#if HZ >= 100
#define TCP_DELACK_MIN ((unsigned)(HZ/25)) /* minimal time to delay before sending an ACK */
通过空闲连接超时您可能意味着TCP保持活跃。 这你也不能设置每个接口。它解释了Here。 值控制TCP保活行为是由下列文件设置:
/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes
默认情况下,TCP连接必须保持TCP禁用。愿意使用该功能的应用程序应通过setsockoption(2)
与SO_KEEPALIVE
启用它。