9 Punkte von kunggom 2020-03-22 | 7 Kommentare | Auf WhatsApp teilen

Facebook hat unter der Adresse time.facebook.com einen neuen NTP-Zeitdienst vorgestellt. Er soll genauer sein als andere öffentliche Zeitdienste und Nutzer nicht über ihre IP-Adresse identifizieren. Außerdem hat Facebook dazu einen Beitrag im eigenen Engineering-Blog veröffentlicht. (Englisch)

Dass große IT-Unternehmen wie Facebook Interesse an Zeitdiensten haben, liegt am Betrieb verteilter Systeme. Um Transaktionen in verteilten Datenbanken zu verarbeiten oder korrektes Logging sicherzustellen, müssen mehrere Server ihre Uhren mit hoher Präzision synchronisieren.

Facebook hat professionelle Testgeräte der Klasse Stratum 1 angeschafft, die Zeitinformationen direkt von den Atomuhren der Satelliten empfangen, und damit einen Benchmark zwischen dem bisher häufig als Zeitserver eingesetzten ntpd und dem vergleichsweise neueren NTP-Daemon chrony ( https://chrony.tuxfamily.org/ ) durchgeführt. ntpd zeigte nach dem ersten Start vorübergehend eine Abweichung von -10 ms und näherte sich danach schrittweise einer Abweichung von ±1 ms an. chrony hingegen blieb bei den meisten Abweichungen dauerhaft innerhalb von ±0.2 ms und erwies sich damit als deutlich präziser als ntpd.

chrony hat noch weitere Vorteile. Einer davon ist die Unterstützung von Hardware-Timestamps. Das Zeitsynchronisationsprotokoll NTP versucht, die möglichst genaue aktuelle Uhrzeit zu bestimmen, indem bei jedem Hin- und Hergehen von Paketen zwischen Server und Client Zeitstempel gesetzt und daraus die Laufzeitdifferenz berechnet werden. Bei Systemen, die kein Echtzeitbetriebssystem sind, lässt sich jedoch nicht garantieren, dass die Verzögerung bestimmter Verarbeitungen unter einem festen Grenzwert bleibt. Das gilt auch für NTP und ist einer der Gründe, warum die Abweichung bei der Zeitsynchronisation über das Netzwerk größer wird.

Einige NICs (Netzwerkkarten) unterstützen jedoch Hardware-Timestamps. Dabei verwaltet die NIC über eigene Hardware eine interne Uhr und verarbeitet die Zeitstempel selbst; die Verarbeitungsverzögerung liegt dann nur bei wenigen Nanosekunden. In einer idealen Situation in einem lokalen Netzwerk, in dem sowohl NTP-Server als auch Client Hardware-Timestamps unterstützen, soll eine Zeitsynchronisation mit einer Abweichung von unter 1 Mikrosekunde möglich sein. Ein realer Zeitdienst läuft allerdings nicht in einem lokalen Netzwerk, und auf Client-Seite unterstützt die NIC Hardware-Timestamps oft nicht, sodass sich dieses Niveau nicht erwarten lässt. Dennoch lagen in Benchmarks mit der Kombination aus chrony und Hardware-Timestamping die meisten Synchronisationsabweichungen innerhalb von ±0.1 ms.

Deshalb bietet Facebook seinen öffentlichen Zeitdienst mit einer Konfiguration an, in der Hardware-Timestamps in chrony aktiviert sind. Bei anderen öffentlichen Zeitservern, etwa von Google oder Apple, kann die Abweichung der bereitgestellten Zeit auch über ±2 ms liegen; bei Facebooks Dienst liegt sie meist innerhalb von ±1 ms. Der Dienst wird übrigens mit Endpunkten an fünf verschiedenen Standorten betrieben. Weitere Details finden sich im Originalartikel.

7 Kommentare

 
ryuheechul 2020-03-29

Wow. Das war ein interessanter Artikel. Die Bemühungen um Präzision wurden kurz(?) und zugleich detailliert dargestellt. Nachdem ich diesen Artikel gelesen hatte, habe ich den NTP-Server meines Macs auf time3.facebook.com geändert.

 
kunggom 2020-04-05

Ich verwende time1.facebook.com. Als ich es angepingt habe, reagierten die anderen Endpunkte von 2 bis 5 entweder gar nicht auf Pings oder waren ziemlich langsam. Wenn ich in chrony time1.facebook.com als Zeitserver einstelle, wird die erwartete Abweichung mit etwas über ±1 ms angegeben. Wenn ich einfach time.facebook.com einstelle, wird die Zeit dagegen gar nicht abgerufen.

 
kunggom 2020-04-05

Zur Referenz: Andere Zeitserver, etwa time.google.com oder time.windows.com, weisen ausnahmslos eine Abweichung von mehr als 30 ms auf. Das gilt ebenso für NTP-Pools wie kr.pool.ntp.org. Der Zeitserver mit der bislang geringsten Zeitabweichung, den ich gesehen habe, ist ntp.postech.ac.kr, ein Stratum-1-Server; chrony schätzt diese auf etwa ±5 ms.

 
kunggom 2022-11-15

Kürzlich habe ich herausgefunden, dass chrony, wenn man time.apple.com als Pool verwendet, hochpräzise NTP-Server in Korea und Japan auswählt. Es wird sogar als Stratum 1 angezeigt. Offenbar nutzt Apple seine eigenen CDN-Server als Zeitserver, indem dort GPS-Empfänger angebracht sind.

 
xguru 2020-03-22

Wow, interessant. An den Ausdruck „at Facebook scale“ gewöhnt man sich inzwischen richtig.

 
kunggom 2020-03-22

Nebenbei: Auf dem Twitter-Account von GeekNews wurde dieser Beitrag offenbar nicht gepostet. Gibt es vielleicht besondere Bedingungen dafür, welche News der Twitter-Bot veröffentlicht?

 
xguru 2020-03-22

Ah, ich habe nachgesehen: Beim Teil, der den Text anhand der Zeichenanzahl abschneidet und hochlädt, wurde die URL ganz am Anfang des Inhalts automatisch in einen Link umgewandelt, wodurch die Zeichenanzahl überschritten wurde und die Twitter-API einen Fehler ausgegeben hat schnief.

Bei Twitter werden URLs unabhängig vom Inhalt wohl immer in 22 Byte umgewandelt.

Diesen Teil müsste man wohl korrigieren, seufz.