Das NTP Zeitprotokoll

Meinberg NTP Zeitserver

Das freie Software-Paket NTP (Network Time Protocol)

Das freie Software-Paket NTP (Network Time Protocol) ist eine Implementierung des gleichnamigen TCP/IP-Protokolls zur Zeitsynchronisierung von Geräten im Netzwerk. NTP wurde in den 1980er Jahren von Dave L. Mills in den USA entwickelt, der versuchte, die Systemzeiten mehrer Rechner im Netzwerk mit möglichst hoher Genauigkeit zu synchronisieren. Das zugrundeliegende Netzwerkprotokoll und die verwendeten Algorithmen wurden in mehreren RFCs veröffentlicht. Seit der Einführung des Protokolls wurde NTP kontinuierlich verbessert und erweitert. Heute ist NTP weltweit das Standard-Protokoll zur Zeitsynchronisierung über das Netzwerk. Das Protokoll selbst unterstützt eine Zeitgenauigkeit bis in den Nanosekundenbereich hinein. Die tatsächlich erreichbare Genauigkeit hängt jedoch in großem Maße von den verwendeten Betriebssystemen und der Qualität der Netzwerkverbindungen ab.

Momentan exististieren zwei Versionen des NTP-Protokolls, die auch miteinander verwendet werden können: NTP v3 ist die letzte Release-Version, die sehr stabil unter vielen Betriebssystemen läuft. In NTP v4 sind einige Verbesserungen vorgenommen worden. Außerden werden einige neuere Betriebssysteme besser unterstützt. Außer der normalen Version des NTP-Protokolls gibt es auch eine vereinfachte Version namens SNTP (Simple Network Time Protocol). SNTP benutzt die gleiche Struktur für die Netzwerk-Pakete, es verwendet jedoch einfachere Algorithmen für die Zeitsynchronisierung und erreicht daher nur eine geringere Genauigkeit. Der Hauptbestandteil eines NTP-Programmpaket ist ein Programm, das komplett im Hintergrund läuft (Daemon oder Service genannt) und die Zeit des eigenen Rechners möglichst synchron zu einer oder mehreren externen Referenzzeiten hält. Ein Referenzzeitgeber kann entweder ein anderes Geräte im Netzwerk sein oder auch eine Funkuhr, die direkt an den Computer angeschlossen ist. .

Zu der Distribution gehören außerdem Kontroll- und Monitorprogramme sowie eine komplette Dokumentation im HTML-Format.

Unterstützte Betriebssysteme

NTP wurde ursprünglich für UNIX entwickelt. Heutzutage läuft das Programm unter vielen Unix-Derivaten und Unix-ähnlichen Systemen. NTP v4 wurde sogar nach Windows portiert und läuft unter Windows NT, Windows 2000 und neueren Versionen einschließlich Windows Vista und Windows 7.

Das Standard-NTP-Paket läuft jedoch nicht unter Windows 9x/ME da diesen Betriebssystemen einige Fähigkeiten fehlen, die NTP für eine gute Zeitsynchronisierung benötigt. Für Windows 9x/ME und andere Betriebssysteme, die nicht direkt durch das Standard-Paket unterstützt werden, sind einige andere NTP- oder SNTP-Programme im Internet verfügbar. Eine Übersicht an verfügbaren Programmen findet man auf der Software-Liste der NTP-Homepage.

Heute werden bereits viele Betriebssysteme mit einem vorinstallierten NTP-Programm ausgeliefert. Aus diesem Grund bietet Meinberg unter dem Produktnamen LANTIME NTP Timeserver eine Serie von NTP-Timeservern an, die mit verschiedenen eingebauten Zeitreferenzen wie z.B. Empfängern für GPS oder DCF77 PZF. Die Geräte haben ein Netzwerkinterface sowie eine Stromversorgung eingebaut und sind sehr einfach in ein vorhandenes Netzwerk zu integrieren.

Verwendete Namen: ntp oder xntp

Die Standard-NTP-Distibution enthält den NTP-Daemon selbst und dazu einige Hilfsprogramme. Frühere Versionen von NTP-Distribution sowie einige in dem Paket enthaltene Programme hatten Namen, die mit xntp begannen (z.B. xntpd) während andere Programme des Pakets Namen mit ntp hatten (z.B. ntpq).

Ab NTP-Version 4 wird eine einheitlichere Namensgebung verwendet, so beginnt jetzt der Name des Paketes selbst sowie die Namen aller enthaltenen Programme mit der Zeichenfolge ntp (z.B. ntpd, ntpq).

Unter Unix-ähnlichen Systemen wird der NTP-Daemon oft beim Hochlaufen des Systems über ein Script gestartet, das manchmal immer noch einen mit xntp beginnenden Namen hat, obwohl der tatsächliche Name des Daemons ntpd ist. Dies ist zum Beispiel bei SuSE / openSUSE Linux der Fall.

Hierarchische Zeitsynchronisierung

Der NTP-Daemon kann nicht nur die Zeit seines eigenen Rechners synchronisieren, sondern kann auch Client, Server, oder Peer für andere NTP-Daemons im Netzwerk sein:

  • Als Client holt er sich die Referenzzeit von einem oder mehreren Servern.
  • Als Server stellt er seine eigene Zeit anderen NTP-Clients im Netzwerk zur Verfügung.
  • Als Peer vergleicht er seine eigene Zeit mit mehreren anderen NTP-Peers, die sich schließlich auf eine gemeinsame Zeit einigen, nach der sich alle richten.

Mit Hilfe dieser Möglichkeiten kann auf einfache Weise eine hierarchische Zeitverteilung in einem Netzwerk eingerichtet werden. Die einzelnen Hierarchie-Ebenen werden Stratum genannt. Eine kleinerer Stratum-Wert bedeutet dabei eine höhere Ebene in der Hierarchie-Struktur.

Stratum Level

Jeder NTP-Daemon hat einen Stratum-Wert, der um eins höher ist als der Stratum-Wert seiner Referenzzeitquelle. Auf der obersten Hierarchie-Ebene befindet sich der NTP-Daemon mit der genauesten Zeit und dem kleinsten Stratum-Wert, der normalerweise als Referenzzeit eine Funkuhr verwendet. Funkuhren haben normalerweise den Stratum-Wert 0. Daher wird der NTP-Daemon, der die Funkuhr direkt als Referenz benutzt, zum Stratum-1-Timeserver, der die höchste Priorität in der NTP-Hierarchie hat. In der Praxis wird man in größeren Netzwerken einen oder mehrere Stratum-1-Timeserver einrichten, die ihre Zeit den Servern in den einzelnen Abteilungen bereitstellen. Diese werden dadurch zu Stratum-2-Servern, auf die sich weitere Geräte und Arbeitsplatzrechner im Netzwerk synchronisieren können.

Im Unterschied zu Telekom-Anwendungen, wo der Begriff stratum z.B. dazu verwendet wird, Oszillatoren nach Ihrer Genauigkeit zu klassifizieren, beinhaltet der bei NTP verwendete stratum-Wert keine Angabe zur Genauigkeit der Zeitquelle, sondern gibt nur die Hierarchie-Ebene wieder.

Redundante Zeitsynchronisierung

Jeder NTP-Daemon kann so konfiguriert werden, dass zyklisch mehrere unabhängige Referenzzeitquellen abgefragt werden. Die einzelnen Zeitquellen werden dann in Gruppen von Zeitquellen zusammengefasst, die die "gleiche" Zeit bereitstellen. Auf diese Weise kann eine Gruppe von "guten" Zeitquellen (im NTP-Jargon truechimers genannt) eine kleinere Gruppe von "schlechten" Zeitquellen (sogenannte falsetickers) überstimmen. Der sogenannte system peer wird dann aus der Gruppe der "guten" Zeitquellen selektiert.

Wenn diese ausgewählte Referenzzeitquelle irgendwann nicht mehr erreichbar sein sollte, wählt sich der NTP-Daemon die nächstbeste Referenzzeitquelle aus. Der Stratum-Wert, unter dem der NTP-Daemon im Netzwerk sichtbar ist, entspricht jeweils dem Stratum-Wert der ausgewählten Referenzzeitquelle plus 1.

Nähere Beschreibung des Auswahlverfahrens zur Gruppierung der Zeitquellen:
http://www.eecis.udel.edu/~mills/ntp/html/prefer.html

Kriterien für die optimale Anzahl der zu konfigurierenden Zeitquellen:
http://support.ntp.org/bin/view/Support/SelectingOffsiteNTPServers#Section_5.3.3.