nicht innerhalb einer Timeout-Zeit quittiert, wird das Datenpaket erneut gesendet.
Doppelte Pakete werden beim Empfänger erkannt und verworfen. Der Datentransfer
an sich kann aber jederzeit nach dem Verbindungsaufbau gestört, verzögert oder
ganz unterbrochen werden. Ein erfolgreicher Verbindungsaufbau stellt also keinerlei
Gewähr für eine nachfolgende, dauerhaft gesicherte Übertragung dar.
Insbesondere gestaltet sich der Erkennung und Einschätzung von aktuellen
Leitungsstörungen als schwierig, wenn nur sporadische Kommunikation auf der
Verbindung stattfindet, bei der Datenpakete nur in eine Richtung gesendet werden.
Wie kann man erkennen, ob die Leitung gestört ist oder aktuell keine Daten vom
Partner gesendet werden?
Um diese Verbindungsproblematik zu entschärfen, bietet TCP einen sog. Keepalive-
Mechanismus. Keepalives sind besondere Datenpakete, die in regelmäßigen
Abständen durch einen bestehenden Kommunikationskanal zwischen den Partnern
ausgetauscht werden. Vom Empfänger eines solchen Paketes wird innerhalb
einer gewissen Zeitschranke eine Antwort erwartet. Bleibt das Keepalive-
Paket oder die Reaktion darauf (ggf. mehrfach) aus, geht der entsprechende
Kommunikationspartner von einer Unterbrechung der Verbindung oder einer
Nichtfunktion des Kommunikationspartners aus.
Der TCP-Keepalive-Mechanismus ist standardmäßig deaktiviert und muss über die
Funktion setsockopt explizit für jede Verbindung eingeschaltet werden. Die API-
Funktionen zur Verbindung mit einem AnaGate - wie z.B. CANOpenDevice() -
aktivieren grundsätzlich den TCP-KeepAlive-Mechanismus.
Anmerkung
Unter Windows können verschiedene Parameter hinsichtlich KeepAlive
eingestellt werden. Diese sind aber für alle Netzwerkverbindungen des
Rechners gültig und nicht nur für eine bestimmte Verbindung.
In
der
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Tcpip\Parameters
können die Einstellungen KeepAliveTime und KeepAliveInterval
entsprechend angepasst werden (erfordert Administratorrechte).
Insbesondere können die CAN-Ethernet-Gateways von der Problematik der
Verbindungskontrolle betroffen sein, wenn kundenspezifische Systemanforderungen
eine schnellere Erkennung eines Verbindungsabbruches benötigen, als dies
über den Standard-Mechanismus möglich ist. Speziell für diese Geräte wurde
ein anwendungsspezifischer Algorithmus in die Firmware integriert, über den
eine individuelle Verbindungskontrolle durchgeführt werden kann. Über einen
vorgegebenes Zeitintervall werden zwischen der Anagate-Hardware und der
steuernden Einheit sog. Alive-Pakete (ALIVE_REQ, siehe [TCP-2010]) ausgetauscht,
die von der Gegenseite entsprechend quittiert werden müssen. Dieser integrierte
Alive-Mechanismus kann individuell für jede Verbindung mit unterschiedlichem
Timeout-Intervall eingeschaltet werden.
Anmerkung
Für Nutzer der AnaGate-API muss der anwendungsspezifische Alive-
Mechanismus nicht mehr implementiert werden. Über den Aufruf der
Funktion CANStartAlive wird ein nebenläufiger Prozess gestartet, der die
Kontrolle von der PC-Seite aktiviert und zeitgesteuert überwacht.
Anmerkungen zum
Kommunikationsprotokoll TCP
Windows-Registry
8
unter
dem
© 2007-2015 Analytica GmbH
Schlüssel