Linux中多个接口的自定义TCP参数

时间:2011-02-15 11:19:03

标签: linux tcp

我的问题是关于Linux中的TCP参数。到现在为止,我想更改默认值:

  • 初始超时
  • ACK延迟
  • 空闲连接超时
  • 我有一个内核2.6.x和2个以太网接口的Linux Box。我知道TCP是一个与以太网设备无关的堆栈。说,问题是:有没有办法为每个接口设置自定义值?例如,侦听 eth0 中的连接的服务器将使用一个值用于空闲连接超时,而另一个侦听 eth1 中的连接的服务器可以使用该参数的值不同。

    任何考虑因素都将受到赞赏 最诚挚的问候,
    蒂亚戈

    2 个答案:

    答案 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中编码。