Verzögern Sie die erneute TCP-SYN-Übertragung unter Linux

Verzögern Sie die erneute TCP-SYN-Übertragung unter Linux

Unsere Anwendung stellt eine Verbindung zu einem Gerät in einem Funknetzwerk her. Das Netzwerk muss das Gerät aufwecken, bevor es kommunizieren kann, was etwa 3 Sekunden dauert. In diesen 3 Sekunden senden unsere CentOS-Maschinen (Linux 3.10.0-957.62.1.el7.x86_64 x86_64) 2 Neuübertragungen des TCP-SYN-Pakets. Die Neuübertragung verursacht Probleme im Funknetzwerk, daher möchte ich mit den Neuübertragungen mindestens 3 Sekunden warten.

Das Herabsetzen tcp_syn_retriesändert die ersten Wiederholungsversuche nicht wirklich und führt zu unerwünschtem Verhalten, wenn der Wert unter 4 konfiguriert wird (was auchNicht empfohlen). Es reduziert lediglich die Anzahl der Wiederholungsversuche, folgt aber dennoch dem gleichen Wiederholungsmuster (nur weniger davon).

Die Einstellung tcp_frtoauf 1und setting tcp_low_latencyauf 1hatte nicht den gewünschten Effekt.

Eine ähnliche Frage für Windows wurde gepostetHier

Wie ändere ich das TCP-SYN-Neuübertragungsschema unter Linux?

Antwort1

rtoDie TCP-Neuübertragung des Syn hängt mit dem Wert für das Empfangstimeout ( ) zusammen (sieheQuellcode). Standardmäßig entspricht es 1 Sekunde (definiertHierUndHier; min. = 0,2 Sek., max. = 120 Sek.).

ipSie können den RTO-Wert für die angegebene Route mit Util ändern .

ip route replace 0/0 via <wifi-gw> dev <wifi-iface> rto_min 5s

Aber die Anwendung selbst kann den RTO-Wert mit dem Setsockopt-Aufruf ändern.

verwandte Informationen