• Zeitsynchronisierung;
    Zeitsynchronisierung;

In industriellen Automatisierungsanwendungen war der Einsatz von Ethernet-Netzwerken immer durch das Latenzzeit-Jitter bei der Übertragung der Datenpakete im Innern der Switches begrenzt. Je nach Netzwerklast, Größe des Datenpakets und Anzahl der Switches zwischen Server und Client erzeugt die Datenübertragung im Innern eines Ethernet-Switch ein Latenzzeit-Jitter von bis zu mehreren Millisekunden. Die zur Prozess-Automatisierung erforderliche präzise Datenauswertung wird hierdurch unmöglich gemacht (zum Beispiel zur Synchronisierung mehrerer Achsen in Montagemaschinen).

Die Antwort heißt Hochpräzisions-Ethernet-Switches mit Zeitstempeln (time stamping). Hierdurch wird die zeitliche Zuordnung von Datenereignissen komplett und exakt gesichert. Komplizierte oder kritische industrielle Prozesse, in Echtzeit oder versetzt, können dann mit einem handelsüblichen SNTP-Ethernet-Protokoll verwaltet werden. Hierdurch werden bei industriellen Automatisierungsnetzwerken beträchtliche Kosteneinsparungen für Anwendungen wie Hochgeschwindigkeits-Datenerfassung, sehr schnelle mechanische Montagen oder Automatisierungen von Hoch- oder Mittelspannungs-Schaltstationen und Ähnlichem ermöglicht.

Der vorliegende Artikel beschreibt die grundlegenden Prinzipien des SNTP/NTP-Internet-Zeitprotokolls und dessen Implementierung in einem Ethernet-Switch und einem von Ethernet aktivierten Endknoten zum Erhalt einer von der Netzwerklast unabhängigen Zeitgenauigkeit von unter einer Mikrosekunde (µs).

Die erzielbare Zeitgenauigkeit in einem auf ''switched'' Ethernet basierenden lokalen Netzwerk, über das Daten zur zeitlichen Synchronisierung verteilt werden, hängt von zwei Faktoren ab: Zeitstempeln der ein- und ausgehenden Zeitpakete sowie variable Netzwerk-Latenz.

SNTP/NTP
Das SNTP- und das NTP-Protokoll sind gut gesicherte Lösungen zur Verteilung von Zeitdaten in einem IP-basierten Netzwerk. Sowohl die SNTP, als auch die NTP-Server verwenden 123 als ihre UDP-Portnummer. Der SNTP/NTP-Server enthält die Referenzuhr des Systems. Diese Uhr benutzt meist GPS, eine Funk-Zeitfrequenz oder eine freie interne Uhr als Zeitbasis.

SNTP/NTP-Zeit-Aktualisierungen
Eine SNTP/NTP-Server-Client-Implementierung basiert entweder auf einer einzeln (unicast) oder an mehrere Clients gleichzeitig (multicast) erfolgenden Übersendung der Zeitinformation.

Einzeln übersendete Zeitaktualisierungen:
Einzeln erfolgende Zeitaktualisierungen (unicast) werden durch eine vom Client an den Server gesendete Zeitanfrage eingeleitet, auf welche der Server mitRücksendung des Zeitwerts antwortet. Der die Zeit anfordernde Client erzeugt einen Zeitstempel (time stamp) T0, welchen er in das Zeitanfragepaket stellt. Der Server kopiert den Zeitstempel von der Zeitanfragein die Zeitantwort. Dieser Zeitstempel wird verwendet, um Zeitanfrageund Zeitantwort zu paaren. Der Client speichert zwei weitere, auf seiner lokalen Uhr basierende Zeitstempel, wobei es sich um die lokale Zeit T1 handelt, bei der die Zeitanfrage vom Client gesendet wird, und die lokale Zeit T4, bei der die Zeitantwort vom Client erhalten wird. Der Server erzeugt einen Zeitstempel T2 beim Erhalt der Zeitanfrage und einen Zeitstempel T3 beim Aussenden der Antwort. Die beiden letzteren Zeitstempel werden unter Bezugnahme auf die Uhr des Servers erzeugt, welche auch die Referenzuhr des Systems ist. Die Zeitstempel werden in die Zeitantwort gesetzt. Der Client kann dann die auf den vier Zeitstempeln basierenden Werte der Übertragungszeit (tpd) und des Offsets der lokalen Uhr (toffset) berechnen:

tpd = ((T4-T1) - (T3-T2))/2
toffset = ((T2 - T1) + (T3 -T4))/2

An mehrere Clients gleichzeitig übersendete Zeitaktualisierungen:
An mehrere Clients gleichzeitig übersendete SNTP/NTP-Zeitaktualisierungen (Multicast) basieren auf Zeitantwort-Paketen, die in regelmäßigen Abständen an eine hierfürvorgesehne IP-Multicast-Zeitaktualisierungs-Gruppenadresse gesendet werden. Ein Multicast-Server erwartet keine Client-Anfragen. Ein Multicast-Client schließt sich der vordefinierten IP-Multicast-Gruppe an undhört auf Zeitantwort-Pakete.

Zeitstempeln
Die Zeitgenauigkeit hängt davon ab, an welcher Stelle das Zeitstempeln der ein- und ausgehenden Zeit-Datenpakete erfolgt, sowie von den Schwankungen der Netzwerk-Latenz.

Zeitstempeln in der SNTP/NTP-Anwendungsschicht (application layer):
Die meisten SNTP/NTP-Implementierungen führen alles Zeitstempeln in der Anwendungsschicht durch (siehe Einzelheiten inAbb.1). Dies hat zur Folge, dass die bei den Clients erzielbare Zeitgenauigkeit unter der variablen Latenz beim Durchgang durch das Stack des UDP/IP-Protokolls leidet.
Trotz Verwendung von NTP- oder ähnlichen Filtermethoden liegt dann die typische Zeitgenauigkeit im Millisekundenbereich.

Der Server fügt den Zeitantwort-Paketen sowohl den Empfangs-Zeitstempel der Zeitanfrage T2 als auch den Sendezeitstempel der Zeitantwort T3 bei. Der Zeitstempel T3 wird somit in das Paket gestellt bevor dieses übersendet wird.

Zeitstempeln am Ethernet-Treiber:
Die Empfangszeitstempel, z.B. T2 und T4, werden in der Interrupt-Service-Routine (ISR) von Ethernet erstellt, wohingegen der Client-Sendezeitstempel T1 in der Ethernet-Senderoutine des Ethernet-Treibers erzeugt wird. Die Erstellung des Zeitstempels T3 ist etwas komplizierter, da dieser bereits in dem in der Anwendungsschicht erzeugten Antwort-Paket enthalten ist.
Das Sendezeitstempeln kann sehr genausein, wohingegen die entsprechenden Empfangszeitstempel unter Jitterin der Interrupt-Latenz leiden können, was von der RTOS-Implementierung und der Belastung der Rechnerplattform abhängt. Eine verwendbare alternative Software-Lösung zur Behebung dieses Problems besteht in der Implementierung eines von RTOS unabhängigen ISR, welches das Zeitstempeln der eingehenden Zeitdatenpakete erledigt.
Die Zeitgenauigkeit liegt typischerweise in der Größenordnung von einigen Zehntelmikrosekunden bis 100 Mikrosekunden.

Zeitstempeln in Data-Link-Layer und Physical-Layer von Ethernet:
Das Zeitstempeln kann im Ethernet-Controller in Hardware implementiert werden oder zum Beispiel in einem separaten FPGA erfolgen, das als medienunabhängige Schnittstelle (MII) zwischen Ethernet-Controller und Ethernet-PHY-Chip fungiert. Bei Durchführung des Zeitstempelns innerhalb der Hardware kann eine äußerst präzise zeitliche Synchronisierung erzielt werden. Die Genauigkeit bei den Zeit-Clients kann bei Verwendung dieser Methode und Vorhandensein einer Direktverbindung zwischen Server und Client eine Mikrosekunde unterschreiten.

Warum ist die Switch-Latenz problematisch?
Die meisten neueren Ethernet-Switch-Designs basieren auf einer ''store-and-forward''-Technologie. Dies heißt, ein Ethernet-Paket muss vollständig an einem Eingangs-Port empfangen werden, bevor es auf Bit-Fehler überprüftund an den entsprechenden Ausgangs-Port übermittelt werden kann. Die Latenz hängt somit von der Geschwindigkeit des Drop-Links und den Paketgrößen ab. So wird zum Beispiel ein Ethernet-Paket maximaler Größe (1522 Bytes) an einem 10-Mbps-Drop-Link auf Grund des ''store-and-forward''-Mechanismus um 1,2 Millisekunden verzögert. Ein entsprechendes 100-Mbps-Drop-Link erzeugt eine Verzögerung von 122 Mikrosekunden. Zusätzliche Verzögerungen des Pakets können sich ergeben, wenn andere Pakete in der Ausgabe-Warteschlange auf ihre Übertragung am gleichen Ausgangs-Port warten. Die Switch-Latenz kann auch in Folge einer allgemeinen Switch-Belastung schwanken. NTP- oder ähnliche Filtertechniken können verwendet werden, um die Auswirkungen variabler Netzwerk-Latenz zu reduzieren.


Time-Server im Ethernet Switch
Das Switch-Latenz-Problem kann durch Integrierung des Zeit-Servers im Ethernet-Switch behoben werden. Bei Verwendung dieser Implementierung befindet sich nur ein Drop-Link zwischen dem Server und dem Client und die Genauigkeitdes Timings wird von der Netzwerklast unabhängig gemacht, wenn die Zeit-Pakete ihre Zeitstempel über Hardware erhalten. Eine Genauigkeit von unter einer Mikrosekunde kann beim Client der Zeitdaten erzielt werden, wenn dieser auch die Zeitstempel in Hardware erstellt.

Wieerzielt man einen präzisen T3-Zeitstempel?
Die SNTP-Zeitantwort enthält sowohl den Empfangszeitstempel des Zeitanfragepakets T2 als auchden Sendezeitstempel T3 des Zeitantwort-Pakets. Die tatsächliche Zeit muss deshalb beim Auftreffen des Zeitantwort-Pakets auf dem Drop-Link den Wert T3 haben. Dies bedeutet, dass der Server deterministischen Zugang zu den Netzmedien haben muss. Folgende Implementierungen können verwendet werden:
- Die Flusskontrolleigenschaft des Ethernet-Switchs kann im Falle von Vollduplex-Verbindung verwendet werden um das Antwortpaket solange zurückzuhalten bis die Absolutzeit gleich dem in der Zeitantwort gegebenen T3-Zeitstempel ist.
- Die Rückstau-Eigenschaften des Ethernet-Switch können im Falle einer Halbduplex-Verbindung verwendet werden um das Antwortpaket solange zurückzuhalten bis die Absolutzeit gleich dem in der Zeitantwort gegebenen T3-Zeitstempel ist.
- Für beide Drop-Links (halb- und vollduplex) kann die Sendung eines Testpakets gegebener Länge verwendet werden. Das Zeitantwort-Paket ist dann unmittelbar nach dem Testpaket zu senden.

Schlussfolgerungen
Ein Timing einer Präzision von unter einer Mikrosekunde (s) kann unabhängig von der Netzlast erhalten werden, wenn die Zeitsynchronisierung in einer auf Switches basierenden Ethernet-Infrastruktur durchgeführt wird. Hierzu sind die Server in den Ethernet-Switches zu implementieren und die Zeitstempel an den ein- und ausgehenden Zeitdaten-Paketen sind sowohl in den Server-, als auch in den Client-Implementierungen in den untersten Lagen des OSI-Protokoll-Stacks vorzunehmen.
Die Genauigkeit liegt im Bereich 10 Mikrosekunden ( s) oder darunter, wenn die Zeitstempelung auf Time-Stamps im Ethernet-Software-Treiber des Clients beruht.
Das bewährte SNTP-Internetprotokoll kann als Protokoll für die Zeitsynchronisierungen verwendet werden, weshalb keine erweiterten Filtertechniken erforderlich sind.