TCP Keep-Alive Messages

Ein Keep-Alive Telegramm ist eine Bestätigungsnachricht bzw. ein Acknowledge. Damit kann im Hintergrund überprüft werden, ob ein Kommunikationspartner, welcher eine Verbindung hergestellt hat, noch aktiv ist und somit noch an der Kommunikation teilnimmt. Sollte ein Kommunikationspartner nicht mehr aktiv sein, wird der Kommunikationskanal sauber und regulär geschlossen, um für einen neuen Teilnehmer frei zu sein.

Keep-Alive unter Windows

Keep-Alive kann unter Windows durch die Schlüssel „KeepAliveTime“ und „KeepAliveInterval“ in der Registrierung konfiguriert werden. Der Defaultwert für die Keep-Alive-Time ist auf zwei Stunden eingestellt, die Interval-Time, also die Zeit bis zur Wiederholung einer nicht beantworteten Alive-Anfrage, liegt Default bei einer Sekunde. Alle Werte werden in Millisekunden angegeben. Wenn die entsprechenden Schlüssel noch nicht in der Registrierung vorhanden sind, müssen sie wie folgt angelegt werden.

TCP Keep-Alive Messages 1:

Es handelt sich nicht um TwinCAT Einstellungen, sondern um spezifische Einstellungen des Betriebssystems. Weiterführende Informationen finden Sie daher in der Betriebssystemdokumentation z. B. auf der Microsoft Internetseite.

Unter Windows W2K, XP, Windows Embedded Standard:

Unter Windows CE:

TCP Keep-Alive Messages 2:
TCP Keep-Alive Messages 3:

Keep-Alive unter TC/BSD

Es werden die "sysctl" Parameter vom Betriebssystem verwendet, um TCP-Keep-Alive-Messages zu konfigurieren.

> sysctl -d net.inet.tcp | grep -e keep

net.inet.tcp.keepidle: time before keepalive probes begin

net.inet.tcp.keepintvl: time between keepalive probes

net.inet.tcp.keepinit: time to establish connection

net.inet.tcp.keepcnt: Number of keepalive probes to send

net.inet.tcp.always_keepalive: Assume SO_KEEPALIVE on all TCP connections

Beispiel:

keepidle wid auf 4000 (ms) und keepintvl auf 4000 (ms) gesetzt.

sysctl net.inet.tcp.keepidle=4000

sysctl net.inet.tcp.keepintvl=4000

Eine dauerhafte (persistente) Konfiguration der TCP-Keep-Alive-Meldungen wird in der Datei /etc/sysctl.conf vorgenommen.

Siehe auch hier: https://www.freebsd.org/cgi/man.cgi?query=tcp