我的问题是关于Linux中的TCP参数。到现在为止,我想更改默认值:
我有一个内核2.6.x和2个以太网接口的Linux Box。我知道TCP是一个与以太网设备无关的堆栈。说,问题是:有没有办法为每个接口设置自定义值?例如,侦听 eth0 中的连接的服务器将使用一个值用于空闲连接超时,而另一个侦听 eth1 中的连接的服务器可以使用该参数的值不同。
任何考虑因素都将受到赞赏
最诚挚的问候,
蒂亚戈
答案 0 :(得分:1)
看起来延迟的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
来启用该功能。
答案 1 :(得分:0)
据我所知,你不能。
您可以为tcp堆栈设置内核参数(尝试执行sysctl -a | grep tcp
),或在TCP套接字上设置参数(请参阅man tcp
),但两者都不能控制ACK延迟。如果您有内核源代码,则在/usr/src/<kernels>/include/net/tcp.h
中编码。