我的問題是關於Linux中的TCP參數。到現在爲止,我想改變的默認值: Linux中多個接口的自定義TCP參數
我有一個Linux中的內核2.6.x的和2個以太網接口。我知道TCP是一個堆棧,與以太網設備沒有任何關係。說,這個問題:有沒有辦法爲每個接口設置自定義值?例如,監聽eth0中的連接的服務器將使用空閒連接超時的一個值,並且偵聽連接的另一個服務器eth1可以對該參數使用不同的值。
任何考慮將不勝感激。
最好的問候,
蒂亞戈
我的問題是關於Linux中的TCP參數。到現在爲止,我想改變的默認值: Linux中多個接口的自定義TCP參數
我有一個Linux中的內核2.6.x的和2個以太網接口。我知道TCP是一個堆棧,與以太網設備沒有任何關係。說,這個問題:有沒有辦法爲每個接口設置自定義值?例如,監聽eth0中的連接的服務器將使用空閒連接超時的一個值,並且偵聽連接的另一個服務器eth1可以對該參數使用不同的值。
任何考慮將不勝感激。
最好的問候,
蒂亞戈
據我所知,你不能。您可以爲tcp堆棧設置內核參數(嘗試執行sysctl -a | grep tcp
),或者在TCP套接字上設置參數(請參閱man tcp
),但這兩個參數都不能控制ACK延遲。如果您擁有內核源代碼,則該代碼編號爲/usr/src/<kernels>/include/net/tcp.h
。
貌似延遲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
啓用它。