2011-02-15 37 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啓用它。