3. Protocol Modes (Protokollmodi)
Es gibt drei NTP-Protokollvarianten: symmetrisch (symmetric), Client/Server (client/server) und Broadcast (broadcast). Jede ist mit einem Assoziationsmodus (association mode, Beschreibung der Beziehung zwischen zwei NTP-Sprechern) verbunden, wie in Abbildung 1 dargestellt. Darüber hinaus werden persistente Assoziationen (persistent associations) beim Start mobilisiert und niemals demobilisiert. Ephemere Assoziationen (ephemeral associations) werden bei der Ankunft eines Pakets mobilisiert und bei Fehler oder Timeout demobilisiert.
+-------------------+-------------------+------------------+
| Association Mode | Assoc. Mode Value | Packet Mode Value|
+-------------------+-------------------+------------------+
| Symmetric Active | 1 | 1 or 2 |
| Symmetric Passive | 2 | 1 |
| Client | 3 | 4 |
| Server | 4 | 3 |
| Broadcast Server | 5 | 5 |
| Broadcast Client | 6 | N/A |
+-------------------+-------------------+------------------+
Abbildung 1: Assoziations- und Paketmodi
In der Client/Server-Variante sendet ein persistenter Client Pakete im Modus 4 an einen Server, der Pakete im Modus 3 zurücksendet. Server stellen die Synchronisation für einen oder mehrere Clients bereit, akzeptieren jedoch keine Synchronisation von ihnen. Ein Server kann auch ein Referenzuhren-Treiber (reference clock driver) sein, der die Zeit direkt von einer Standardquelle wie einem GPS-Empfänger oder Telefon-Modem-Dienst erhält. In dieser Variante ziehen (pull) Clients die Synchronisation von Servern.
In der symmetrischen Variante arbeitet ein Peer sowohl als Server als auch als Client, wobei entweder eine symmetrisch-aktive (symmetric active) oder eine symmetrisch-passive (symmetric passive) Assoziation verwendet wird. Eine persistente symmetrisch-aktive Assoziation sendet symmetrisch-aktive (Modus 1) Pakete an eine symmetrisch-aktive Peer-Assoziation. Alternativ kann eine ephemere symmetrisch-passive Assoziation bei der Ankunft eines symmetrisch-aktiven Pakets ohne passende Assoziation mobilisiert werden. Diese Assoziation sendet symmetrisch-passive (Modus 2) Pakete und besteht bis zu einem Fehler oder Timeout. Peers schieben und ziehen die Synchronisation zueinander. Für die Zwecke dieses Dokuments arbeitet ein Peer wie ein Client, sodass Verweise auf Clients auch Peers implizieren.
In der Broadcast-Variante sendet eine persistente Broadcast-Server-Assoziation periodische Broadcast-Server (Modus 5) Pakete, die von mehreren Clients empfangen werden können. Bei Empfang eines Broadcast-Server-Pakets ohne passende Assoziation wird eine ephemere Broadcast-Client (Modus 6) Assoziation mobilisiert und besteht bis zu einem Fehler oder Timeout. Es ist nützlich, eine erste Salve (initial volley) bereitzustellen, bei der der im Client-Modus arbeitende Client mehrere Pakete mit dem Server austauscht, um die Ausbreitungsverzögerung (propagation delay) zu kalibrieren und das Autokey-Sicherheitsprotokoll auszuführen, wonach der Client in den Broadcast-Client-Modus zurückkehrt. Ein Broadcast-Server schiebt die Synchronisation zu Clients und anderen Servern.
Unter loser Befolgung der von der Telekommunikationsindustrie etablierten Konventionen wird die Ebene jedes Servers in der Hierarchie durch eine Stratumnummer (stratum number) definiert. Primären Servern wird Stratum eins zugewiesen; sekundären Servern auf jeder niedrigeren Ebene werden Stratumnummern zugewiesen, die um eins größer sind als die vorherige Ebene. Mit steigender Stratumnummer verschlechtert sich die Genauigkeit abhängig vom jeweiligen Netzwerkpfad und der Systemuhr-Stabilität. Mittlere Fehler, gemessen durch Synchronisationsdistanzen (synchronization distances), nehmen ungefähr proportional zu Stratumnummern und gemessener Rundlaufverzögerung (round-trip delay) zu.
Als Standardpraxis sollte die Timing-Netzwerktopologie so organisiert werden, dass Timing-Schleifen (timing loops) vermieden und die Synchronisationsdistanz minimiert wird. In NTP wird die Subnetz-Topologie unter Verwendung einer Variante des verteilten Bellman-Ford-Routing-Algorithmus (Bellman-Ford distributed routing algorithm) bestimmt, der den kürzesten-Pfad-Spannbaum (shortest-path spanning tree) berechnet, der auf den primären Servern verwurzelt ist. Als Ergebnis dieses Designs reorganisiert der Algorithmus automatisch das Subnetz, um die genaueste und zuverlässigste Zeit zu erzeugen, selbst wenn es Ausfälle im Timing-Netzwerk gibt.
3.1. Dynamic Server Discovery (Dynamische Serverentdeckung)
Es gibt zwei spezielle Assoziationen, Manycast-Client (manycast client) und Manycast-Server (manycast server), die eine dynamische Serverentdeckungsfunktion (dynamic server discovery function) bereitstellen. Es gibt zwei Arten von Manycast-Client-Assoziationen: persistente und ephemere. Der persistente Manycast-Client sendet Client (Modus 3) Pakete an eine designierte IPv4- oder IPv6-Broadcast- oder Multicast-Gruppenadresse. Designierte Manycast-Server innerhalb der Reichweite des TTL-Feldes (time-to-live, Lebenszeit) im Paketheader hören auf Pakete mit dieser Adresse. Wenn ein Server für die Synchronisation geeignet ist, gibt er ein gewöhnliches Server (Modus 4) Paket unter Verwendung der Unicast-Adresse des Clients zurück. Nach Empfang dieses Pakets mobilisiert der Client eine ephemere Client (Modus 3) Assoziation. Die ephemere Client-Assoziation besteht bis zu einem Fehler oder Timeout.
Ein Manycast-Client sendet weiterhin Pakete, um nach einer Mindestanzahl von Assoziationen zu suchen. Er beginnt mit einem TTL gleich eins und fügt kontinuierlich eins hinzu, bis die Mindestanzahl von Assoziationen hergestellt ist oder wenn der TTL einen Maximalwert erreicht. Wenn der TTL seinen Maximalwert erreicht und dennoch nicht genügend Assoziationen mobilisiert sind, stoppt der Client die Übertragung für eine Timeout-Periode, um alle Assoziationen zu löschen, und wiederholt dann den Suchzyklus. Wenn eine Mindestanzahl von Assoziationen mobilisiert wurde, beginnt der Client, ein Paket pro Timeout-Periode zu übertragen, um die Assoziationen aufrechtzuerhalten. Feldbeschränkungen begrenzen den Mindestwert auf 1 und den Maximalwert auf 255. Diese Grenzen können für individuelle Anwendungsbedürfnisse angepasst werden.
Die ephemeren Assoziationen konkurrieren untereinander. Wenn neue ephemere Assoziationen mobilisiert werden, führt der Client die in den Abschnitten 10 und 11.2 beschriebenen Mitigationsalgorithmen (mitigation algorithms) für die besten Kandidaten aus der Bevölkerung aus, die verbleibenden ephemeren Assoziationen laufen ab und werden demobilisiert. Auf diese Weise umfasst die Bevölkerung nur die besten Kandidaten, die zuletzt mit einem NTP-Paket geantwortet haben, um die Systemuhr zu disziplinieren.