2011-02-15 40 views
1

我的问题是关于Linux中的TCP参数。到现在为止,我想改变的默认值: Linux中多个接口的自定义TCP参数

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

    任何考虑将不胜感激。
    最好的问候,
    蒂亚戈

    回答

    0

    据我所知,你不能。您可以为tcp堆栈设置内核参数(尝试执行sysctl -a | grep tcp),或者在TCP套接字上设置参数(请参阅man tcp),但这两个参数都不能控制ACK延迟。如果您拥有内核源代码,则该代码编号为/usr/src/<kernels>/include/net/tcp.h

    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启用它。