English Page

Verschiedene Konfigurationsmöglichkeiten für NTP

Konfiguration generell

Der NTP-Daemon liest seine Konfigurationsparameter aus einer Datei namens ntp.conf. Auf Unix-ähnlichen Systemen liegt diese Datei meist im Verzeichis /etc. Unter Windows wird die Datei entweder im Verzeichnis %systemroot% oder im Verzeichnis %systemroot%\system32\drivers\etc abgelegt. In einer Standard-Installation von Windows NT entspricht %systemroot% dabei dem Verzeichnis c:\winnt.

Normalerweise enthält die Datei ntp.conf mindestens eine oder mehrere Zeilen mit dem Keyword server. Jede dieser Zeilen gibt eine Referenzzeitquelle an, die entweder ein anderes Gerät im Netzwerk sein kann, oder auch eine Funkuhr, die direkt an den Computer angeschlossen ist.

Referenzzeitquellen werden durch eine IP-Adresse angegeben oder auch durch einen Hostname, der durch einen DNS Nameserver aufgelöst werden kann. Wenn es sich bei einer IP-Adresse um ein real existierendes Gerät im Netzwerk handelt, geht der NTP-Daemon davon aus, daß auf dem Gerät mit der IP-Adresse ein weiterer NTP-Daemon läuft, den er kontaktieren kann. Außerdem verwendet NTP einige Pseudo-IP-Adressen, die normalerweise im Netzwerk nicht verwendet werden, um spezielle Zeitquellen wie Funkuhren zu adressieren.

Zum Beispiel benutzt NTP die Pseudo-IP-Adresse 127.127.8.n, um eine Funkuhr von Meinberg anzusprechen, die direkt an den Computer angeschlossen ist. Um seine eigene Systemuhr anzusprechen, bei NTP local clock genannt, verwendet NTP die Pseudo-IP-Adresse 127.127.1.0. Diese Adresse darf nicht mit der IP-Adresse 127.0.0.1 verwechselt werden, die auch als localhost oder Loopback-Interface bezeichnet wird.

Achtung:
Einige Versionen von NTP unter Windows haben Probleme mit der DNS-Namensauflösung wenn das Programmpaket mit MD5-Authentifizierung compiliert wurden. In diesem Fall müssen alle IP-Adressen in der Datei ntp.conf als numerische Werte eingegeben werden (z.B. 172.16.1.1). DNS-Hostnamen wie host.domain.com können nicht verwendet werden.

Konfiguration mit Meinberg Funkuhr (Unix)

Unter Unix-ähnlichen Systemen wird der Parse-Treiber verwendet, um Funkuhren von Meinberg mit serieller Schnittstelle als Referenzzeitquelle zu verwenden. Der Parse-Treiber ist Bestandteil des NTP-Pakets. Die unten aufgeführten Konfigurationsschritte müssen von einem Benutzer mit genügend Rechten auf dem System durchgeführt werden, z. B. dem Benutzer root. Der Parse-Treiber spricht Funkuhren als Devices mit Namen /dev/refclock-n an, wobei n ein Index von 0 bis 3 sein kann, da der Parse-Treiber bis zu 4 Funkuhren gleichzeitig verwenden kann.

Jedes der verwendeten Devices wird als symbolischer Link zu einem einem realen Device angelegt, hinter dem sich eine Funkuhr verbirgt. Meist handelt es sich bei dem realen Device um eine serielle Schnittstelle, an die eine Funkuhr angeschlossen ist.

Jede der Funkuhren muß in der Datei ntp.conf durch eine Zeile mit dem Keyword server und einer Pseudo-IP-Adresse 127.127.8.n angegeben werden. Dabei muß der Wert für n jeweils der Index-Nummer entsprechen, die für das oben erwähnte symbolische Device /dev/refclock-n verwendet wurde.

Auf die Pseudo-IP-Adresse folgt noch ein Parameter mode m, der den Typ der Funkuhr angibt, die unter dieser Adresse angesprochen wird. Die Tabelle unten gibt die für Funkuhren von Meinberg verwendeten Werte für den mode-Parameter und die zugehörigen Funkuhr-Typen an:

Mode-Nummer Funkuhr Trust Time
mode 0 Meinberg PZF-Funkuhr mit TCXO 12 Stunden
mode 1 Meinberg PZF-Funkuhr mit OCXO 4 Tage
mode 2 Meinberg Standard Time String mit 9600, 7E2 30 Minuten
mode 7 Meinberg GPS mit OCXO, 19200, 8N1 4 Tage

Wenn beispielsweise eine einzelne Funkuhr an der ersten seriellen Schnittstelle des Computers angeschlossen ist, wird zunächst das symbolische Device angelegt. Die erste serielle Schnittstelle hat oft den Namen /dev/ttyS0, kann aber je nach Unix-System auch anders heißen:

      ln -s /dev/ttyS0 /dev/refclock-0
      

Im nächsten Schritt wird die Datei ntp.conf angepaßt, um dem NTP-Daemon mitzuteilen, welche Funkuhr er verwenden soll. Die Datei muß eine server-Zeile für das Gerät refclock-0 enthalten, das oben angelegt wurde. Wenn die Funkuhr das Meinberg Standard-Zeittelegramm mit 9600 Baud und Datenformat 7E2 ausgibt, muß der Mode-Parameter laut der Tabelle oben mit 2 angegeben werden:

      server 127.127.8.0 mode 2     # standard time string with 9600, 7E2
      
Zusätzlich sollte ein server-Eintrag für die Local Clock angelegt werden, die als Fallback-Reserve genutzt werden kann, wenn keine andere Referenzzeitquelle mehr verfügbar sein sollte. Da die Local Clock nicht sehr genau ist, sollte ihr Stratum auf einen niedrigen Wert gesetzt werden, z.B. Stratum 12:
  
      server 127.127.1.0            # local clock
      fudge  127.127.1.0 stratum 12
      

Um die Änderungen wirksam werden zu lassen, muß der NTP-Daemon neu gestartet werden. Ein NTP-Daemon, der zusammen mit dem Betriebssystem geliefert wurde, kann mit oder ohne Unterstützung für Funkuhren von Meinberg compiliert worden sein.

Wenn nach dem Start des NTP-Daemons die Ausgabe des Befehls ntpq -p eine Referenzzeitquelle mit der Bezeichnung generic auflistet, unterstützt der NTP-Daemon die Funkuhr.

Wenn keine Referenzzeitquelle mit der Bezeichnung generic angezeigt wird, muß das NTP-Paket auf dem Zielsystem neu compiliert werden. Dazu muß ein Compiler auf dem System installiert sein, außerdem müssen die Programmquellen vorliegen, die in der Standard-NTP-Distribution enthalten sind.

In dem Beispiel unten ist name der Hauptname einer NTP-Distribution. NTP-Distributionen stehen als Archive mit Namen name.tar.gz zum Download im Internet bereit und müssen auf dem Zielsystem entpackt werden:

  
      tar xvzf name.tar.gz
      
Durch diesen Befehl wird ein neues Verzeichnis name angelegt, das noch weitere Unterverzeichnisse enthält. Um das Paket zu compilieren, wechselt man in das neu angelegte Verzeichnis, wo man die Befehle configure und make aufruft, um das Programmpaket zu compilieren:
      cd name
      ./configure --enable-MEINBERG
      make
      
Nachdem die Compilierung erfolgreich beendet wurde, liegt jedes der erzeugten Programme in einem Unterverzeichnis mit dem gleichen Namen wie das Programm selbst. Wenn sichergestellt ist, daß nicht bereits ein anderer NTP-Daemon läuft, kann der neu erzeugte Daemon gestartet werden. Wenn es sich um ein NTP-Paket mit der Version 4.x handelt, lautet der Befehl
      ntpd/ntpd
      
Im Fall einer NTP-Version 3.x dagegen lautet der Befehl
      xntpd/xntpd
      

Der Befehl ntpq -p kann verwendet werden, um die korrekte Funktionsweise zu überprüfen. Wenn alles wunschgemäß arbeitet, können die neu ausführbaren Dateien in das Zielverzeichnis kopiert werden, wo sie beim Start des Systems gefunden werden. Diese Installation der Programme kann normalerweise geschehen durch Eingabe des Befehls

  
      make install
      
Falls vorher bereits ein NTP-Paket installiert war, muß sichergestellt sein, daß die alten NTP-Programme gelöscht oder von den neuen Programmen überschrieben werden, so daß beim Systemstart nicht versehentlich der alte NTP-Daemon gestartet wird. Der neue Daemon muß in dem Verzeichnis liegen, wo die Strartup-Scripts ihn erwarten.

Besonders bei einem Versionssprung von NTP v3.x auf NTP v4.x sollte die geänderte Namensgebung berücksichtigt werden, etwa von xntpd nach ntpd.

:: top ::

Konfiguration mit Meinberg Funkuhr (Windows)

Auf Windows-Systemen werden die meisten Funkuhren von NTP noch nicht direkt unterstützt. Stattdessen kann der Treiber von Meinberg eingesetzt werden um die Systemzeit von Windows zu synchronisieren. Der NTP-Service wiederum kann die Windows-Systemzeit als Referenzzeit verwenden, die an die NTP-Clients weitergegeben wird. Da die Windows-Systemzeit von einer Funkuhr synchronisiert wird, kann in diesem Fall der Stratum-Wert der Local Clock hochgesetzt werden. Für diese Konfiguration muß die Datei ntp.conf die folgenden Zeilen enthalten:

      server 127.127.1.0            # local clock
      fudge  127.127.1.0 stratum 1   # disciplined by radio clock
      

:: top ::

Konfiguration ohne Funkuhr

Die Konfiguration der Computer ohne eigene Funkuhr ist sehr einfach. Für jeden Timeserver im Netzwerk, der als Referenzzeitquelle genutzt werden soll, muß die Datei ntp.conf eine server-Zeile mit der IP-Adresse oder dem Hostname des Gerätes enthalten. Dabei sollten Timeserver mit gutem Stratum-Wert angegeben werden, die auf kurzen Netzwerk-Wegen erreichbar sind.

Zusätzlich kann auch hier die Local Clock des Computers angegeben werden, die als Fallback-Reserve genutzt werden kann, wenn keine andere Referenzzeitquelle erreichbar sein sollte.

Da die Local Clock hier nicht durch ein anderes Programm synchronisiert wird, sollte sie auf einen relativ schlechten Stratum gesetzt werden, z.B. 12. Dadurch ist sichergestellt, daß Timeserver im Netz mit besserem Stratum bevorzugt werden:

      server 127.127.1.0            # local clock
      fudge 127.127.1.0 stratum 12  # not disciplined
  
      server ntp_server_1
      server ntp_server_2
      server ...
      

Im Beispiel oben stehen ntp_server_1, ntp_server_2, usw, für den Hostname oder die IP-Adresse existierender Timeserver.

:: top ::

Zusätzliche Konfigurationsparameter

Im laufenden Betrieb ermittelt der NTP-Daemon, wie sehr die Systemzeit des Computers von der Referenzzeit wegdriftet. Der Daemon kann diesen ermittelten Wert in einer Datei speichern, von wo er ihn beim nächsten Start wieder lesen kann. Hierdurch wird die Dauer der Zeitsynchronisierung beim erneuten Start des Daemons verkürzt. Um diese Möglichkeit zu nutzen, muß der Name des Driftfiles in einer Zeile der Datei ntp.conf angegeben werden, z.B.:
        driftfile /etc/ntp.drift
      

Es gibt eine Anzahl weitere Optionen, die in der Kofigurationsdatei eingestellt werden können. Nähere Informationen dazu findet man in der NTP-Dokumentation.

:: top ::

Überprüfung des NTP-Status

Das Kommandozeilen-Programm ntpq kann dazu benutzt werden, den Status des NTP-Daemons auf dem eigenen Computer oder auch auf einem anderen Computer im Netzwerk zu überprüfen.

ntpq kann in einem interaktiven Modus oder im Batchbetrieb arbeiten. Im Batchbetrieb führt ntpq einen Befehl aus und kehrt dann zur Eingabeaufforderung zurück. Bei Aufruf des Programms mit dem Parameter -p ('peers') wird eine Tabelle mit Informationen über die verwendeten Referenzzeitquellen ausgegeben. Um den Status des NTP-Daemons des eigenen Computers anzugeben, wird einfach der Befehl


      ntpq -p
    
verwendet. Man kann auch den Hostname oder die IP-Adresse eines Geräts im Netzwerk angeben, um sich den Status des dort laufenden NTP-Daemons anzeigen zu lassen:
      ntpq -p ntp_server_1, ntp_server_2, ...
    
Die Ausgabe des Programms sollte etwa so aussehen:
    
       remote      refid      st t when poll reach   delay   offset  jitter
    =======================================================================
     LOCAL(0)      LOCAL(0)   12 l   30   64  377    0.000    0.000   0.000
    *GENERIC(0)    .DCFa.      0 -   24   64  377    0.000    0.050   0.003
    +172.16.3.103  .PPS.       1 u   36   64  377    1.306   -0.019   0.043
    
Die Tabelle enthält je eine Zeile für jede in der Datei ntp.conf angegebene Referenzzeitquelle. Im Beispiel oben sind das 3 Zeitquellen: Die eigene Local Clock, eine DCF77-Funkuhr als refclock-0, und ein Timeserver im Netzwerk unter der IP-Adresse 172.16.3.103.

Wenn das erste Zeichen einer Zeile kein Leerzeichen ist, dann enthält es eine Kennung, wie der NTP-Daemon diese Zeitquelle bewertet. Direkt nach dem Start des Daemons enthalten alle Zeilen am Anfang ein Leerzeichen. Der NTP-Daemon benötigt mehrere Abfragezyklen (polling cycles), um die angegebenen Zeitquellen zu prüfen und eine davon als diejenige auszuwählen, auf die er sich synchronisiert.

Ein Stern * als erstes Zeichen einer Zeile kennzeichnet die Referenzzeitquelle, auf die sich der NTP-Daemon zur Zeit synchronisiert, das Pluszeichen + kennzeichnet qualitativ hochwertige Zeitquellen, die ebenfalls als Referenzzeitquelle in Frage kommen, wenn die aktuell genutzte Zeitquelle nicht mehr verfügbar sein sollte (candidates).

Die Spalt remote zeigt den (Pseudo-) Hostname oder die IP-Adresse der Referenzzeitquelle. Dabei bezeichnet z.B. LOCAL die Local Clock, GENERIC(0) das Device refclock-0 des Parse-Treibers. Die refid gibt den Typ der Referenzzeitquelle an, dabei bedeutet z.B. LOCAL oder LCL wiederum Local Clock, .DCFa. ist ein Standard-DCF77-Empfänger, und .PPS. bedeutet, daß die Synchronisierung über ein Hardware-PPS-Signal (Sekundenimpuls) erfolgt. Andere Kennungen sind möglich, abhängig von der Art der Referenzzeitquelle.

Die Spalte st zeigt die Stratum-Nummer der Referenzzeitquelle an. Im Beispiel oben hat die Local Clock den Stratum 12, der Timeserver mit der IP-Adresse 172.16.3.103 hat den Stratum 1, das beste, was über das Netzwerk zu sehen ist, und die Funkuhr hat Stratum 0, daher wird die Funkuhr als Referenzzeitquelle verwendet. Da die Funkuhr Stratum 0 hat, wird der eigenen NTP-Daemon von Clients im Netzwerk als Stratum-1 Timeserver gesehen.

Der Wert in der Spalte when zeigt die Anzahl der Sekunden seit dem letzten Polling-Zyklus an. Wenn dieser Wert den in der Spalte poll gezeigten Wert erreicht, führt der NTP-Daemon einen Zeitvergleich mit der entsprechenden Referenzzeitquelle durch und setzt den Wert für when wieder auf 0. Die Ergebnisse der Zeitvergleiche werden gefiltert und dienen als Maß für die Qualität und Erreichbarkeit einer Zeitquelle.

Die Spalte reach zeigt, ob die Referenzzeitquelle während der letzten Polling-Zyklen erreichbar war. Die Zahl ist ein 8-Bit-Register, dessen Wert in oktaler Schreibweise angezeigt wird. Wenn der NTP-Daemon gerade gestartet ist, ist der reach-Wert für alle Zeitquellen 0. Nach jedem erfolgreichen Polling-Zyklus wird eine '1' von rechts in das Register hineingeschoben, so daß nach dem Start des Daemons nach jedem erfolgreichen Pollingzyklus nacheinander die Werte 0, 1, 3, 7, 17, 37, 77, 177, 377 angezeigt werden. 377 ist der höchstmögliche Wert, der aussagt, daß die letzten 8 Polling-Zyklen erfolgreich waren.

Erfolgreich bedeutet, daß Daten mit der Zeitquelle ausgetauscht werden konnten, und daß die Referenzzeitquelle selbst auch synchron zu ihrer eigenen Zeitquelle war. Im Fall einer Funkuhr bedeutet das konkret, daß der Polling-Versuch als nicht erfolgreich bewertet wird, wenn die Funkuhr nicht synchron zu ihrem Sender ist.

Der NTP-Daemon entscheidet erst nach mehreren erfolgreichen Polling-Zyklen, ob er eine Zeitquelle als Referenz für sich akzeptiert, die wie oben beschrieben durch einen '*' gekennzeichnet wird.

Die Spalten delay, offset und jitter zeigen einige Zeiten an, die aus den gefilterten Daten der Polling-Zyklen gewonnen wurden. In einigen Versionen von ntpq wird die letzte Spalte mit disp (dispersion) bezeichnet statt mit jitter. Alle Werte sind in Millisekunden angegeben. Der Wert delay ist die Laufzeit zwischen der Anfrage des NTP-Daemons bis zum Eintreffen der Antwort. Der Wert offset zeigt die Zeitdifferenz zwischen der Referenzzeit und der eigenen Systemzeit. Der Wert jitter gibt die Größenordnung der Schwankungen zwischen einzelnen Zeitvergleichen an.

:: top ::

Diese Seiten werden von der Firma Meinberg betrieben.
Home | Konfiguration | RFC's | Ressourcen | Hardware | Impressum