zurück zum Artikel

Zeit-Abgleich

| Ernst Ahlers

Eine falsche Zeit aus der Onboard-Uhr stört bei einer Runde Solitaire nicht, doch in Logfiles sieht das schon anders aus. Öffentliche Server und Freeware teilen dem PC mit, wie spät es wirklich ist.

Nicht nur in E-Mails oder wenn ein Textverarbeitungsprogramm das Datum automatisch einsetzt, auch in anderen Anwendungen oder Systemfunktionen spielt die Zeit mit. Sie fließt beispielsweise in Log-Dateien, Kerberos-Tickets, SSL [1]-Zertifikate, differenzielle Backups oder den Datenabgleich mit PDAs ein. Ganz direkt wirkt sie bei zeitgesteuerten Aktionen, etwa den Geplanten Tasks unter Windows, cron unter Unix oder wenn man einen digitalen Videorecorder etwa unter Linux betreibt.

Einmal gestellt, beginnt die in PCs und Macs integrierte Echtzeituhr wie jede Wand- oder Armband-Uhr, von der wahren Zeit wegzudriften, sie geht falsch. Für viele Anwendungen reicht es wohl, wenn die Systemuhr höchstens um wenige Minuten abweicht. Das schafft sie auch, wenn man sie einmal monatlich nachstellt. Solange die auf dem Mainboard steckende Batterie frisch ist, läuft das System dann halbwegs genau. Wird der Energiespeicher aber nach einigen Jahren schwächer, dann beginnt die Onboard-Uhr nach dem Mond zu gehen. Abweichungen von Stunden und Tagen sind dann keine Seltenheit. Später droht sogar der Verlust der BIOS-Konfiguration, höchste Zeit, eine neue Batterie einzusetzen.

Oft genügt eine Minutengenauigkeit jedoch nicht: Wer auf der Suche nach Fehlfunktionen in einem Netzwerk ist, dem helfen Logfiles auf den verschiedenen Maschinen oft weiter. Driften allerdings die internen Uhren der Rechner im Laufe der Zeit auseinander, dann lässt sich im Nachhinein irgendwann nicht mehr rekonstruieren, ob ein fehlerauslösendes Ereignis A auf Rechner X nun vor oder nach Ereignis B auf Server Y auftrat.

Bei Versuchsaufbauten etwa in der Forschung, bei denen mehrere PCs eine gemeinsame Messaufgabe erfüllen, ist eine möglichst genaue Synchronisation meist unerlässlich. Langzeitmessungen, bei denen ein Rechner über Wochen oder Monate kontinuierlich Daten aufzeichnet, würden unter der Drift der PC-internen Uhr ebenfalls leiden.

Für einzelne Rechner mag es genügen, eine Funkuhr anzuschließen, die den Langwellen-Zeitzeichensender [2] DCF77 empfängt, das kodierte Zeitsignal auswertet und den Rechner sekundengenau hält. Edlere Ausführungen nutzen dazu Satellitensignale des Global Positioning System (GPS [3]). Beide Lösungen kosten Geld, brauchen eventuell eine separate Stromversorgung und belegen eine Schnittstelle am PC.

Atomuhr CS2 der PTB

Die Atomuhr CS2 der PTB bestimmt die gesetzliche Zeit in Deutschland. In mehreren Jahrmillionen würde sie nur um eine Sekunde abweichen.

Langwellenempfang funktioniert meist auch innerhalb von Gebäuden, aber bisweilen können schon Blechjalousien das DCF77-Signal beeinträchtigen, was zu Aussetzern führt. Platziert man eine DCF77-Uhr nah neben einem Fernsehgerät, dann ist es spätestens zur Tagesschau mit genauer Funk-Zeit oft vorbei: Die fünfte Oberwelle der TV-Horizontalablenkung (5 × 15,625 = 78,125 kHz) liegt sehr dicht beim Zeitsignal (77,5 kHz) und stört dessen Empfang. Bei bestimmten Kombinationen von Auflösung und Bildwiederholfrequenz [4], zum Beispiel 1280 × 1024 Bildpunkte und 75 Hertz, kann auch ein PC-Röhrenmonitor in dem Bereich senden. Mit diesem Effekt hat eine GPS-Uhr zwar kein Problem, aber dafür muss man ihre Antenne so aufstellen, dass sie wenigstens einen Teil des Himmels und die dort kreisenden GPS-Satelliten sieht.

Zwar betreibt beispielsweise die Physikalisch-Technische Bundesanstalt (PTB [5]), Hüterin der gesetzlichen Zeit [6] in Deutschland, einen Modem-Server, den man abfragen kann, aber das kostet auch jedes Mal ein paar Cent. Im Laufe der Zeit kommt die Modemabfrage teurer als eine Funkuhr.

Eine alternative Quelle für die Zeit stellt das ISDN dar. Allerdings ist auch das nicht unbedingt der Weisheit letzter Schluss: Die ISDN-Zeit kann von der gesetzlichen Zeit bis zu einer Minute differieren, sogar mit unterschiedlichem Fehler zwischen verschiedenen Vermittlungsstellen. Außerdem überträgt das ISDN-System die Zeit nur bei einem gelungenen Verbindungsaufbau. Zwar funktioniert das auch mit 0800er-Nummern, aber die Zeit übermittelt das ISDN-Netz erst, wenn jemand abnimmt. Hinter TK-Anlagen kann die angezeigte Zeit überdies deutlich von der übertragenen abweichen.

Wer einen Internetzugang eingerichtet hat und gelegentlich online geht, der gelangt dagegen ohne großen Aufwand und zusätzliche Kosten an die genaue Zeit.

Schon früh in der Geschichte des Internet kam die Frage auf, wie man zwischen vernetzten Rechnern die Zeit übermitteln könne. Die ersten Ansätze waren simpel: Ein Server kann über Port [7] 13 (daytime, RFC 867 [8]) seine Zeit als ASCII [9]-Klartext zur Verfügung stellen. Alternativ gibt er über Port 37 (time, RFC 868 [10]) die Zahl der seit 1.1.1900, 0 Uhr verstrichenen Sekunden als 32-Bit-Binärwert aus. Feiner als eine Sekunde kann man die Zeit mit diesen Services nicht auflösen.

Obendrein sind simple Verfahren wie daytime und time nur innerhalb eines LAN [11] einigermaßen genau, weil dort IP-Pakete [12] mit Millisekundenverzögerung durchlaufen. Beim Zugriff über das Internet mit seinen nicht vorhersagbaren Latenzen kann es dagegen größere und vor allem zeitlich schwankende Abweichungen (Jitter) geben. Schließlich müssen manche Server bei jeder Zeitanfrage über daytime oder time einen neuen Prozess starten: Greifen viele Clients häufig auf diese Dienste zu, steigt die Systemlast übermäßig an. Schon deshalb sollte man diese Funktionen nur in Ausnahmefällen verwenden.

Zwar läuft der time-Zähler erst anno 2036 über, aber die Genauigkeit hängt, genauso wie bei daytime, hauptsächlich von der internen Uhr des Servers ab. Stellt der Administrator diese nicht regelmäßig nach, kann sie im Laufe der Zeit erheblich abweichen. David L. Mills, Chefentwickler von NTP [13], fand 1988 heraus, dass damals sechzig Prozent von 1158 überprüften Servern mehr als eine Minute von der wahren Zeit abwichen, zehn Prozent sogar mehr als 13 Minuten.

Die Mängel von daytime und time führten zur Entwicklung des hierarchischen Network Time Protocol [14], kurz NTP (Port 123, RFC 1305 [15] und andere). Darüber können Server untereinander eine gemeinsame Zeit ermitteln. Die Paketlaufzeiten im Netz misst und kompensiert NTP dabei weitgehend. Der NTP-Prozess eines Servers arbeitet zugleich selbst als Uhr, er verlässt sich nicht auf die Systemuhr.

Jeder NTP-Server ist in ein Stratum (Schicht, Ebene, Mehrzahl Strata) eingeordnet. Dieses gibt an, wie weit der Server in einem NTP-Netz von einer externen Zeitquelle (Atomuhr, GPS- oder Zeitzeichenempfänger) entfernt ist: Ein Stratum-1-Server besitzt eine externe Quelle, eine Stratum-2-Maschine dagegen einen Stratum-1-Server als Referenz, und so weiter. Das höchste Stratum ist 16, ein Server dieser Stufe hat sich noch nicht mit anderen NTP-Servern synchronisiert. In der Praxis kommt man jedoch mit vier Stufen aus.

Beispielsweise sind ptbtime1.ptb.de und ptbtime2.ptb.de Stratum-1-Server, die die aus den Cäsium-Atomuhren der PTB abgeleitete gesetzliche Zeit bereitstellen. Der von T-Online betriebene Stratum-1-Server ntp1.t-online.de verwendet dagegen als externe Zeitquelle das Signal eines DCF77-Empfängers. Der gibt zwar auch die PTB-Zeit aus, weicht aber wegen des Umwegs über Langwellenfunk stets etwas ab, wenn auch nur um wenige Millisekunden.

Von Stratum zu Stratum steigt die Ungenauigkeit aufgrund der serverinternen Verarbeitung etwas an. Wie stark die Abweichung ausfällt, hängt vom jeweiligen Server, seiner Konfiguration und den Paketlaufzeiten im Netz ab. Doch selbst wenn eine Stratum-2-Maschine als Zeitquelle beispielsweise um 50 Millisekunden danebenliegen sollte, reicht diese Genauigkeit für den Hausgebrauch immer noch völlig aus.

Auf dem Arbeitsplatzrechner oder der Surfstation zu Hause einen ausgewachsenen NTP-Server zu installieren, ist gewiss übertrieben. Mit Client-Programmen, die per SNTP [16] (Simple NTP, RFC 4330 [17]) die Zeit eines Stratum-2-Servers nach dem Hochfahren oder in bestimmten Abständen abfragen, kann man eine ausreichende Genauigkeit erzielen. Solche Tools [18] gibt es für alle gängigen Betriebssysteme.

Bei allen Programmen gilt, dass einmal ausgewählte Server eventuell in Zukunft abgeschaltet werden oder einen anderen Namen bekommen können. Man überprüft deshalb die Erreichbarkeit der gewählten Zeitquellen von Zeit zu Zeit und sucht gegebenenfalls andere. Ebenso kommt stets der Name und nicht die IP-Nummer des Servers in die Client-Konfiguration, denn die Nummer kann sich ändern, aber der Name bleibt normalerweise über Jahre gleich.

Soll nur der private Surf-PC oder ein DSL-Router die Zeit abfragen, kann man diesen auf den NTP-Pool [19] ansetzen. Dort haben Freiwillige die Adressen ihrer NTP-Server eingetragen, die sie der Allgemeinheit zur Verfügung stellen. Bei jedem Zugriff auf pool.ntp.org liefert der DNS [20]-Server eine andere Adresse aus, damit sich die Last verteilt. Eine vorangestellte Ziffer liefert mehrere unterschiedliche Quellen: 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org. Allerdings bekommt man so weltweit verteilte NTP-Server zugeordnet. Ist möglichst gute Synchronität mit der eigenen Region wichtig, fügt man noch eine Kontinents- oder Länderkennung hinzu, etwa 0/1/2.europe.pool.ntp.org oder 0/1/2.de.pool.ntp.org. Ende Juni 2007 waren rund 160 deutsche Pool-Server aktiv, ziemlich genau ein Sechstel der weltweiten Zahl.

Als Quelle der gesetzlichen Zeit in Deutschland betreibt die PTB zwei Stratum-1-Server. Wer einen eigenen NTP-Server für das Firmennetz aufsetzen will, darf sie nach formloser Benachrichtigung per E-Mail nutzen. Solche Server öffentlicher Institutionen gibt es auch in anderen europäischen Ländern, etwa beim Schweizer Bundesamt für Metrologie oder dem Pariser Observatorium. Auch manche Internet-Provider betreiben NTP-Server, die nicht nur aus ihren Netzen erreichbar sind. In die Konfiguration des eigenen NTP-Servers [21] trägt man mindestens drei Quellen ein.

Bei der Auswahl eines Stratum-1- [22] oder Stratum-2-Servers [23] muss man die genannten Nutzungsbedingungen beachten: Viele Server versorgen nur ein Land oder einen Kontinent, manche gar nur die Clients eines bestimmten Netzes (Service Area). Auch der Zugriff (Access Policy) ist nicht immer offen. Meist genügt eine E-Mail an den Betreiber (Notify). Günstigerweise wählt man NTP [24]-Server, die geografisch nah liegen. Das erhöht die Wahrscheinlichkeit für niedrige Paketlaufzeiten.

Europäische NTP-Server
Land Stratum Notify Servername
Belgien 2 ntp1/2.belbone.be
Deutschland 1 ntps1-0/1-1.cs.tu-berlin.de
Deutschland 1 ntp0...3.fau.de
Deutschland 1 ja ptbtime1/2.ptb.de
Frankreich 2 ja ntp.obspm.fr
Großbritannien 2 ntp.cis.strath.ac.uk
Italien 1 ja ntp1/2.inrim.it
Niederlande 1 ntp0...2.nl.net
Polen 1 ntp.certum.pl
Schweden 1 ntp1/2.sp.se, time1/2.stupi.se
Schweiz 2 ja ntp11/12.metas.ch
Stand: Juni 2007
Zeitserver ausgewählter Firmen
Provider Stratum Servername
Apple 2 time.euro.apple.com
Datum Inc. 1 time.datum.com
EWETel 1 ntp0/1.ewetel.de
Freenet 2 ntp0/1.freenet.de
Fujitsu 2 ntp.fujitsu.com
Microsoft 2 time.windows.com
T-Online 1 ntp1.t-online.de
Versatel 2 ntp1/2.versatel.de
Web.de 2 ntp.web.de

Zum Lieferumfang von MacOS gehört schon seit der Version 8.5 ein Client für NTP, integriert ins Kontrollfeld Datum und Uhrzeit. Hier trägt man den gewünschten Zeit-Server ein und wählt komfortabel per Mausklick das Abfrageintervall aus. Mit MacOS X ist natürlich alles anders geworden: Apples Unix-System bringt eine angepasste Version des NTP-Pakets mit.

Seine Einstellungen holt sich der ständig im Hintergrund laufende ntpd jedoch nicht aus den üblichen Konfigurationsdateien, sondern aus der NetInfo-Datenbank. Änderungen an dieser Stelle erfordern einen Neustart des Serverprozesses und vertragen sich nicht mit dem Benutzer-Interface in den Systemeinstellungen, wo man lediglich den abzufragenden Server vorgeben kann. Unter Linux kann man entweder das im NTP-Paket enthaltene Tool ntpdate oder den ntpd selbst zum Stellen der Zeit [25] nutzen.

Microsofts Windows XP kann seine Uhr automatisch nachstellen. Läuft es in einem LAN mit Domänencontroller, greift es auf dessen Zeit zu, doch die ist auch nur dann verlässlich, wenn sich der Admin regelmäßig darum kümmert oder dort einen NTP-Server eingerichtet hat. Letzteren gibt es auch für Windows-Server [26] inklusive grafischem Konfigurations- und Überwachungswerkzeug.

Alternativ kann man bei XP in Eigenschaften von Datum und Uhrzeit unter der Lasche Internet-Zeit die Synchronisierung aktivieren. Selbstverständlich ist dort in Windows-typischer Manier als Zeitquelle ein Microsoft-eigener Server voreingestellt. Außerdem synchronisiert sich das Betriebssystem nur einmal wöchentlich mit der angegebenen Zeitquelle. Das mag für manche Anwender zu untragbaren Abweichungen im Sekundenbereich führen.

Zwar kann man leicht einen anderen Server einstellen, aber erst bei XP Professional sowie Vista Business und Ultimate über die Gruppenrichtlinien (gpedit.msc) auch ein anderes Intervall oder den Abfragetyp (NT5DS, NTP) wählen. Die Parameter findet man unter Computerkonfiguration → Administrative Vorlagen → System → Windows-Zeitdienst → Zeitanbieter.

XP-Home-Anwender, die keinen separaten Client verwenden wollen, haben diverse Möglichkeiten, die NTP-Zeitsynchronisierung zu aktivieren. Die einfachste führt in der Registry über das Hinzufügen des W32time-Schlüssels mit Parameters als Unterschlüssel unter HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft. Unter dem Schlüssel Parameters muss man anschließend den Wert Type (als REG_SZ) einfügen und dort NTP eintragen. Daraufhin lässt sich im Dialog für die Zeiteinstellungen der Name eines NTP-Servers vorgeben, gegen den XP fürderhin seine Zeit synchronisiert. Das Abfrageintervall lässt sich von der Vorgabe 15 Minuten unserer Erkenntnis nach nicht verstellen.

Rechnern, die unter alten Windows-Ausgaben (95, 98, ME) oder den Home-Versionen von XP und Vista laufen, verhilft Tom Horsleys Freeware-Client NTPTime [27] zur richtigen Zeit. Man kann ihn auf zweierlei Weise benutzen: Erstens transient, sodass er beim Aufruf die Betriebssystemuhr einmalig nachstellt und zweitens resident, wobei er die Zeit in regelmäßigen Abständen korrigiert.

Unter den alten Windows-Versionen läuft NTPTime als reguläres Programm in einem versteckten Fenster. Damit es beim Systemstart automatisch anläuft, legt man eine Verknüpfung im Autostart-Ordner ab. Um NTPTime unter Windows NT, 2000 und XP als Service zu installieren, ruft man als Administrator auf der Kommandozeile das Programm mit dem Parameter --install auf und startet den Service einmal von Hand: net start ntptime. Danach startet er bei jedem Hochfahren des Systems automatisch. Soll NTPTime wie unter Windows 9x und ME als reguläres Programm laufen, braucht ntptime.exe den zusätzlichen Parameter -w95. Die als Administrator zu startende Batchdatei ntpquick.bat automatisiert den ganzen Vorgang.

Die Einstellungen nimmt man am einfachsten mit dem mitgelieferten Control Panel ntptime.cpl vor. Kopiert man diese Datei in Windows´ Unterverzeichnis system32 und ruft sie von dort einmal auf, sollte anschließend ein Eintrag NTPTime in der Systemsteuerung erscheinen. Unter Windows XP kann dazu ein kleiner Registry-Hack nötig werden, falls die Systemsteuerung nicht im klassischen Modus läuft. Details zum Hack stehen in der Dokumentation zu NTPTime.

Mit dem Control Panel für NTPTime legt man eine Liste von Zeitservern an. Den obersten benutzt das Programm als Hauptquelle. Die weiteren zieht es in der eingestellten Reihenfolge heran, falls der vorige nicht antwortet. Wenn der PC nur über einen Wählzugang zum Internet verfügt, aktiviert man "Wait for dial up".

Normalerweise reicht es, die Rechnerzeit stündlich nachzustellen, denn die Soft-Uhr des Betriebssystems weicht typischerweise nicht mehr als eine halbe Sekunde pro Stunde ab. Sollten die Logfiles von NTPTime unter clock adjustment eine stärkere Drift offenbaren, stellt man eine höhere Update-Frequenz ein. Allerdings sollte man den ersten Eintrag in den tageweise geführten Logfiles ignorieren: Der fällt normalerweise durch wesentlich größere Differenzen auf. Schließlich war der PC über Nacht, das Wochenende oder gar einen längeren Urlaub ausgeschaltet. In solchen Aus-Zeiten laufen ohne weiteres größere Abweichungen bis zu Minuten auf. Überschreitet die festgestellte Abweichung einen einstellbaren Grenzwert, dann kann NTPTime sicherheitshalber das Nachstellen verweigern (Sanity Check).

Hat man die Systemzeit seines PC nun in den Griff bekommen, bleibt nur eins zu beachten: Das Nachlassen der Onboard-Batterie macht sich nicht mehr mit einer falsch gehenden Uhr bemerkbar. Deshalb sollte man die Batterie sicherheitshalber alle zwei Jahre überprüfen oder gegebenenfalls prophylaktisch erneuern, damit einen das System nicht eines Tages beim Hochfahren mit der Fehlermeldung BIOS Checksum Error begrüßt. (ea [28]) (ea [29])


URL dieses Artikels:
https://www.heise.de/-221728

Links in diesem Artikel:
[1] http://www.heise.de/glossar/entry/Secure-Socket-Layer-398703.html
[2] http://www.cl.cam.ac.uk/~mgk25/lf-clocks.html
[3] http://www.heise.de/glossar/entry/Global-Positioning-System-395580.html
[4] http://www.heise.de/glossar/entry/Bildwiederholfrequenz-395877.html
[5] http://www.ptb.de/
[6] http://www.ptb.de/de/publikationen/download/zeit_dt.pdf
[7] http://www.heise.de/glossar/entry/Port-398693.html
[8] http://www.heise.de/netze/rfc/rfcs/rfc867.shtml
[9] http://www.heise.de/glossar/entry/American-Standard-Code-for-Information-Interchange-395592.html
[10] http://www.heise.de/netze/rfc/rfcs/rfc868.shtml
[11] http://www.heise.de/glossar/entry/Local-Area-Network-399387.html
[12] http://www.heise.de/glossar/entry/IP-Paket-397497.html
[13] http://www.ntp.org/
[14] http://www.heise.de/glossar/entry/Network-Time-Protocol-398841.html
[15] http://www.heise.de/netze/rfc/rfcs/rfc1305.shtml
[16] http://www.heise.de/glossar/entry/Simple-Network-Time-Protocol-397551.html
[17] http://www.heise.de/netze/rfc/rfcs/rfc4330.shtml
[18] http://support.ntp.org/bin/view/Main/ExternalTimeRelatedLinks
[19] http://www.pool.ntp.org/
[20] http://www.heise.de/glossar/entry/Domain-Name-System-398615.html
[21] https://www.heise.de/ratgeber/Zeitdienst-221732.html
[22] http://support.ntp.org/bin/view/Servers/StratumOneTimeServers
[23] http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers
[24] http://www.heise.de/glossar/entry/Network-Time-Protocol-398841.html
[25] https://www.heise.de/ratgeber/Zeitdienst-221732.html
[26] http://www.meinberg.de/german/sw/ntp.htm
[27] http://home.att.net/~Tom.Horsley/ntptime.html
[28] mailto:ea@heise-netze.de
[29] mailto:ea@ct.de