Wenn eine TCP-Verbindung als im Leerlauf?

Habe ich eine Anforderung zum aktivieren der TCP-keepalive auf alle Anschlüsse und jetzt Kämpfe ich mit den Ergebnissen aus unserem test-Fall. Ich denke, das ist, weil ich nicht wirklich verstehen, wenn die ersten keepalive-probe gesendet wird. Ich Lesen Sie die folgenden in der Dokumentation für tcp_keepalive_time auf Linux:

den Intervall zwischen dem letzten Datenpaket gesendet (einfach ACKs werden nicht als Daten) und den ersten keepalive-Sonde; nach der
Verbindung markiert ist, müssen Sie keepalive, wird dieser Zähler nicht
weitere

Einige andere Quellen besagen, dass dies ist die Zeit, die eine Verbindung im Leerlauf ist, aber Sie nicht weiter zu definieren, was das bedeutet. Ich schaute auch in Stevens zu finden, eine formale definition dazu, weil ich mich Frage, was "das Letzte Datenpaket gesendet" bedeutet eigentlich, wenn man bedenkt Weiterverbreitung.

In meinem test-Fall habe ich eine Verbindung, bei der Daten nur dann gesendet werden, von einem server zu einem client zu einem Recht hohen Preisen. Um zu testen, keepalive, wir unplugged die Kabel auf der client-NIC. Ich kann jetzt sehen, dass der Netzwerk-stack versucht, Daten zu senden und in die Weiterverbreitung Zustand, aber keine keep-alive-probe gesendet wird. Ist es korrekt, dass keep-alive Sonden werden nicht gesendet, während Weiterverbreitung?

  • Wenn Sie 'senden zu einem Recht hohen Preisen "Ihre" Anforderung zum aktivieren der TCP-keepalive' nicht sinnvoll in den ersten Platz.
  • Wir haben andere verbindungen, die z.B. keine Daten gesendet werden, und andere, die senden nur bei niedrigen Preisen. Darüber hinaus ist es eine Anforderung direkt auferlegt, die uns von unseren Kunden. Sie nutzen es weltweit.
  • Ich nehme an, Sie beziehen sich auf Einstellung, SO_KEEPALIVE, auf alle Ihre verbindungen (der Standardwert ist "off")? Wenn Sie sehen nur ein keepalive-Paket nach (der Standard auf linux ist 2 Stunden), aber dann das entfernen trick funktionieren sollte (wenn es sendet keine weiteren Daten).
  • Ja, wir hatten zu aktivieren, lebendig zu halten, die auf alle verbindungen standardmäßig als obligatorische Anforderung der Kunden. Die Zeit, bis der erste keep-alive Paket gesendet wird, beinhaltet auch die TCP-retry Zeit. cnicutar die Antwort liefert die details.
InformationsquelleAutor Jens | 2016-06-20
Schreibe einen Kommentar