【问题标题】:Custom TCP Parameters for multiple interfaces in LinuxLinux 中多个接口的自定义 TCP 参数
【发布时间】:2011-02-15 11:19:03
【问题描述】:

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

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

    我们将不胜感激。
    最好的问候,
    蒂亚戈

    【问题讨论】:

      标签: linux tcp


      【解决方案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 来启用它。

      【讨论】:

        【解决方案2】:

        据我所知,你不能。

        您可以为 tcp 堆栈设置内核参数(尝试执行sysctl -a | grep tcp),或在 TCP 套接字上设置参数(请参阅man tcp),但两者都无法让您控制 ACK 延迟。如果您有内核源代码,这将在/usr/src/<kernels>/include/net/tcp.h 中编码。

        【讨论】:

          猜你喜欢
          • 2011-05-03
          • 2013-08-30
          • 1970-01-01
          • 2013-03-09
          • 1970-01-01
          • 2019-07-29
          • 2021-11-16
          • 2010-09-19
          • 2020-02-21
          相关资源
          最近更新 更多