2013-03-18 2 views
6

Ich programmiere Linux-Gerätetreiber über eine sehr langsame Schnittstelle, deren Ping-Rundenzeit mehrere Minuten dauern kann. Wenn ich versuche, TCP zu verwenden, um eine Verbindung zwischen zwei Knoten herzustellen, überschreitet die Verbindung immer das Zeitlimit.Ändern Sie das TCP-Timeout für ein Linux-Netzwerkgerät

Gibt es eine Methode, um das TCP-Retransmission oder Handshaking-Timeout im Treiber länger zu setzen, oder gibt es Befehle, um es einzurichten? Danke

Antwort

4

Haben Sie versucht, nach einer Antwort auf diese Frage zu suchen? Eine schnelle Google-Suche gab mir this, die scheint, dieses Problem direkt zu adressieren. Die Zusammenfassung ist, dass die Einstellung der net.ipv4.tcp_syn_retries bestimmt, dass maximale Zeitüberschreitung für TCP-Verbindungen verfügbar ist.

Wenn dieses Dokument nicht Ihre Frage beantworten, sollten Sie angeben, was Sie versuchten und wie das Verhalten von dem, was Sie erwartet, abweicht.

+0

+1 - einfach nur ordentlich :) – linski

+0

Danke. Ihre Antwort hilft wirklich. Kann ich für verschiedene Schnittstellen unterschiedliche Timeouts einstellen? –

0
/proc/sys/net/ipv4/tcp_retries1 
/proc/sys/net/ipv4/tcp_retries2 

.

tcp_retries1 - INTEGER 


This value influences the time, after which TCP decides, that 
    something is wrong due to unacknowledged RTO retransmissions, 
    and reports this suspicion to the network layer. 
    See tcp_retries2 for more details. 

    RFC 1122 recommends at least 3 retransmissions, which is the 
    default. 


tcp_retries2 - INTEGER 

This value influences the timeout of an alive TCP connection, 
when RTO retransmissions remain unacknowledged. 
Given a value of N, a hypothetical TCP connection following 
exponential backoff with an initial RTO of TCP_RTO_MIN would 
retransmit N times before killing the connection at the (N+1)th RTO. 

The default value of 15 yields a hypothetical timeout of 924.6 
seconds and is a lower bound for the effective timeout. 
TCP will effectively time out at the first RTO which exceeds the 
hypothetical timeout. 

RFC 1122 recommends at least 100 seconds for the timeout, 
which corresponds to a value of at least 8. 
Verwandte Themen