Frage Was ist eine NTP-Dispersion und wie kontrolliere ich sie?


Wir führen Ubuntu 14.04 Server in isolierten Netzwerken mit ntpd 4.2.6p5 aus, die so konfiguriert sind, dass sie mehrere NTP-Server verwenden, die von Kunden bereitgestellt werden (kein Zugriff auf pool.ntp.org). Auf unseren dummen Terminal-Client-Geräten läuft eine alte Version von BusyBox (1.00-rc2) und ntpclient 2010 von Larry Doolittle.

Dieses Setup hat seit Jahren gut funktioniert, aber in letzter Zeit haben wir einen Roadblock mit einem neuen Kunden gefunden. Sie haben uns 5 hauseigene NTP-Server-Adressen zur Verfügung gestellt, die für sich allein gut zu funktionieren scheinen ntpdate-debian ist auf dem Linux-Server betroffen. Auf der BusyBox-Seite jedoch ntpclient beklagt sich mit "Dispersion zu hoch". Von der Debug-Ausgabe ntpclient ruft "1217163.1" vom NTP-Server ab, aber der von ihm unterstützte Maximalwert ist absolut (65536).

$ /usr/sbin/ntpclient -s -i 15 -h 10.17.162.250 -d
Configuration:
  -c probe_count 1
  -d (debug)     1
  -g goodness    0
  -h hostname    10.17.162.250
  -i interval    15
  -l live        0
  -p local_port  0
  -q min_delay   800.000000
  -s set_clock   1
  -x cross_check 1
Listening...
Sending ...
recvfrom
packet of length 48 received
Source: INET Port 123 host 10.17.162.250
LI=0  VN=3  Mode=4  Stratum=4  Poll=4  Precision=-20
Delay=60745.2  Dispersion=1346801.8  Refid=10.31.10.21
Reference 3668859928.942079
(sent)    3668859928.708371
Originate 3668859928.708371
Receive   3668859928.963271
Transmit  3668859928.963369
Our recv  3668859928.708371
Total elapsed:      0.00
Server stall:      93.09
Slop:             -93.09
Skew:          255443.94
Frequency:             0
 day   second     elapsed    stall     skew  dispersion  freq
42463 56728.708  rejected packet: abs(DISP)>65536

Das sind alles Geräte im selben LAN, also ehrlich gesagt bin ich verblüfft. Entsetzt sogar.

Hier ist die ntpq -pn Ausgabe vom Ubuntu 14.04 Server:

user@host:~$ ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 127.127.1.0     .LOCL.          10 l 1025   64    0    0.000    0.000   0.000
 10.17.162.249   10.17.6.10       5 u   23 1024   37    0.865  1381.07 697.260
 10.31.10.22     .LOCL.           1 u 1044 1024   17   29.586  -838.06 397.342
 10.17.6.10      10.31.10.21      4 u 1065 1024   17    0.366  105.245 402.999
*10.31.10.21     132.246.11.238   3 u    5 1024   37   29.418  794.292 616.796
 10.17.6.11      10.31.10.21      4 u 1038 1024   17    0.408  120.030 381.058

Meine Fragen sind:

  1. Was ist Dispersion und was kann ihren Wert verändern?
  2. Welche Befehle könnte ich ausführen, um mehr Details von den NTP-Servern zu erhalten?
  3. Könnte der Fehler auf der Ubuntu Server Seite liegen, mit einem unpassenden ntp.conf? Da ist wirklich nichts besonderes.
  4. Würde in diesem Fall der Wechsel zu Chrony etwas verändern?

20
2018-04-05 12:50


Ursprung


Nimm einfach an - sind die Uhren der fünf zur Verfügung gestellten NTP-Server gut? Kannst du die schlimmsten aus deinen Konfigurationen entfernen? - Criggie
Ihre Offsets und Jitter sind viel zu hoch. Holen Sie sich mindestens ein richtige Quelle. - Martin Schröder


Antworten:


Ich sehe einige Verwirrung in den Antworten hier. Für Starter, ntpclientzumindest in -s Modus, fungiert nicht als ein vollständiger NTP-Client, es ist nur Senden und Empfangen ein Paket, also gibt es keine "letzten 8 empfangenen Pakete". Es schätzt seine eigene Dispersion überhaupt nicht ein.

Stattdessen ist der Wert, den es druckt, der Wert "root dispersion" (rootdisp) in dem vom Server zurückgegebenen Paket, der eine Schätzung der gesamten Fehler / Varianz zwischen diesem Server und der richtigen Zeit ist. Die Art und Weise, wie dies berechnet wird, ist ziemlich einfach: Jeder NTP-Server bekommt seine Zeit entweder von einer externen Uhr (zum Beispiel einem Radio- oder GPS-Empfänger) oder von einem anderen NTP-Server. Wenn ein Server seine Zeit von einer externen Uhr bezieht, ist seine Grundstreuung der geschätzte maximale Fehler dieser Uhr. Wenn es seine Zeit von einem anderen NTP-Server bekommt, ist seine Wurzelverteilung die Wurzelausbreitung des Servers Plus die Dispersion durch die Netzwerkverbindung zwischen ihnen hinzugefügt.

Ein Punkt der Verwirrung hier ist, dass während NTPQ und Chrony Dispersion und Root-Dispersion in Sekunden anzeigen, was die Leute gewohnt sind zu suchen, ntpclient zeigt es in Mikrosekunden. Unabhängig davon ist ein Wert von 1217163 immer noch ziemlich hoch. Ein guter NTP-Server kennt die Zeit innerhalb weniger Millisekunden; eine schlechte innerhalb weniger zehn oder hundert Millisekunden. Ihr sagt Ihnen, dass seine Zeit nur innerhalb von +/- 1,2 Sekunden vertraut werden kann.

Sie können tatsächlich ntpclient dazu bringen, sich trotzdem mit diesem Server zu synchronisieren, indem Sie den -x 0 oder -t Option (abhängig von der Version von ntpclient), die NTP-Plausibilitätsprüfungen deaktiviert. Wenn Sie nur ungefähr genaue Zeit benötigen (innerhalb weniger Sekunden), kann das gut genug sein. Allerdings ist ntpclient ziemlich vernünftig, wenn es sich weigert, sich mit einem so schlechten Server zu synchronisieren. Ihre ntpqAusgabe auf der Ubuntu-Maschine zeigt einen Jitter von Hunderten von Millisekunden für alle seine Server, obwohl sie geringe Verzögerung haben, die entweder ein sehr unzuverlässiges Netzwerk, eine Verschwörung von zeigt alles der Server, um unregelmäßige Zeit oder ein grundlegendes Zeitnahmeproblem auf dem Server selbst bereitzustellen.

Es geht mir auch darum, dass der Server 10.31.10.22 eine Nachreservierung von LOCL (undisziplinierte lokale Uhr), hat aber eine Schicht von 1. Normalerweise wird die lokale Uhr zu einer Schicht von 10 gemufft, so dass sie nur als eine letzte Synchronisationsquelle verwendet wird, um eine Herde davon abzuhalten auseinander zu driften. Entweder ist 10.31.10.22 falsch konfiguriert und stellt dem Rest des Netzwerks eine schlechte Zeit zur Verfügung, oder es wird von einem Programm außerhalb der Kontrolle von NTP rechtzeitig diszipliniert, in welchem ​​Fall die Fehlkonfiguration einfach darin besteht, dass es Werbung für das Netzwerk macht LOCL refidieren; es sollte z.B. GPS oder was auch immer seine Zeit zur Verfügung stellt.


19
2018-04-06 04:47



Fantastische Antwort. ich werde versuchen -x 0 oder -t und melde dich zurück. Bezüglich 10.31.10.22Ich könnte es aus der Serverliste nehmen. Großer Fang. Ich habe wirklich keine Informationen über diese Server, gibt es irgendwelche anderen Debug-Befehle, um Details von einem NTP-Server zu bekommen, oder ist es ziemlich viel ntpq -p? - Jeff
Wie du gesagt hast, die -t switch vertraut dem hauseigenen NTP-Server trotz hoher Streuung. Wir können immer noch nicht erklären, warum es zufällig so hoch ist, aber das ist vielleicht für einen anderen Beitrag. Vielen Dank. - Jeff
@Jeff froh zu helfen :) - hobbs


Nur eine unvollständige Antwort für "Was ist Dispersion?":

Eine typische NTP-Rundreise:

client |        | server
    t1 |------->| t2
    t3 |<-------| t4

Dies ergibt zwei Werte, Offset (die Zeitdifferenz zwischen Client und Server) und die Verzögerung (wesentlich die Netzwerklaufzeit) mit den folgenden Formeln:

offset= ((t4 - t3) + (t1 - t2)) / 2
delay = (t4 - t1) - (t3 - t2)

Der Client wählt den aktuellen Offset aus den letzten 8 empfangenen Paketen aus und wählt denjenigen mit der kleinsten Verzögerung aus.

Die gleichen 8 Pakete werden verwendet, um die zu berechnen Dispersion indem ein gewichteter Mittelwert der Differenz dieser 8 Offsets zu demjenigen gemacht wird, der im letzten Schritt ausgewählt wurde, wobei die Verzögerung als Gewichtungsfaktor verwendet wird, was kleineren Verzögerungen größeres Gewicht verleiht. Es ist ein Maß für die "Verbreitung" der Werte und wird verwendet, um die Qualität eines Zeitservers zu berechnen, insbesondere wenn Sie mehrere auswählen müssen.


12
2018-04-05 13:32



Sicher über die Formeln? Schließlich sind nur t4-t2 und t3-t1 für die beteiligten Parteien erkennbar - Hagen von Eitzen
@HagenvonEitzen Die Zeit kann im Paket enthalten sein - Thomas
@Sieben Ich glaube auch, dass es ein Problem mit den Formeln gibt; sehen Seite 28 hier und auch dieses Weißbuch, beide von Mills. Übrigens, du hast deine T-Shirts angelegt, sollte es sein offset = 1/2 * [(T2-T1) + (T4-T3)] und "Verzögerung = (T3-T1) - (T4-T2)" - Ian Riley
Sven, hast du? t3/t4 an der richtigen Stelle in dir typische Rundreise? Die Verkehrsfluss- und Verzögerungsberechnung scheint darauf hinzudeuten, dass sie genau umgekehrt sein sollten: t4 -t1 sollte die gesamte RTT sein, t3-t2 sollte die Zeit in den Server verbracht werden.


Ihre Dispersion und Verzerrung sind enorm, es gibt einen sehr großen Versatz von der lokalen Uhr zu diesem Peer. Sie sollten die Offsets mit dem lokalen vergleichen date und stellen Sie die Uhr manuell ein.

Lass ntpd laufen und zeigen ntpq -p von einem Host, der alle Peers verwendet. Es wird die besseren auswählen.


7
2018-04-05 13:11



Hinzugefügt ntpq -pn Ausgabe auf meine Frage. Danke, dass du dir das angeschaut hast. - Jeff
Offset und Jitter in den Hunderten? Das ist nicht sehr gut. Du hast keinen Zugang zu Internetquellen wie pool.ntp.org erwähnt, aber diese funktionieren viel besser. Erwägen Sie, eine Referenzuhr wie GPS, eine Radioquelle, einen PPS-Eingang oder ähnliches hinzuzufügen. Oder wählen Sie einen Gastgeber mit einer lokalen Uhr, die nicht überall ist. - John Mahowald


Laut diese Cisco-Dokumentation"Dispersion, in Sekunden berichtet, ist die maximale Zeitdifferenz, die zwischen der lokalen Uhr und dem Server-Takt jemals beobachtet wurde. "Bei NTP-Servern, die nicht vollständig unterbrochen sind, sollte nie eine hohe Streuung auftreten. Das einzig mögliche Szenario ist, wenn Ihr Client ntp und bis jetzt ist nur seine lokale Uhr verfügbar, und selbst dann entspricht eine Dispersion, so hoch wie Sie berichten, den Uhren, die um mehr als zwei Wochen.

Es sollte ausreichen, um sicherzustellen, dass die lokale Uhr zu Beginn nicht zu weit entfernt ist (sogar ein paar Stunden wären noch akzeptabel), entweder durch Einstellen der Uhr (und des Datums sogar!) Im BIOS oder durch Ausgeben ntpdate einmal vor dem Start ntpd auf dem Client.


5
2018-04-05 14:18



ntpclient meldet Werte in Mikrosekunden, sodass die aufgelistete Dispersion tatsächlich ~ 1,2 Sekunden beträgt, keine Wochen :) Auch die Interpretation in diesem Cisco-Dokument gilt nicht für diesen Wert. - hobbs