
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_frto
auf 1
und setting tcp_low_latency
auf 1
hatte nicht den gewünschten Effekt.
Eine ähnliche Frage für Windows wurde gepostetHier
Wie ändere ich das TCP-SYN-Neuübertragungsschema unter Linux?
Antwort1
rto
Die 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.).
ip
Sie 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.