Byłbym szczególnie zainteresowany podsumowaniem dotyczącym tego, w jaki sposób protokoły NTP pozwalają dwóm komputerom zsynchronizować swój czas w niewiarygodnej sieci ...
Xavier Nodet
@XavierNodet Chociaż jestem pewien, że tak, nie o to pyta to pytanie. Sugeruję, abyś zadał własne pytanie (zakładając, że nie zostało jeszcze zadane; najpierw wyszukaj). To pytanie dotyczy tego, w jaki sposób zegary serwerów NTP nie mogą dryfować, podczas gdy współczesne zegary sprzętowe dryfują.
CVn
@XavierNodet To samo tutaj. Lubię się uczyć, jak i dlaczego rzeczy działają tak, jak działają! :)
Jason
Odpowiedzi:
58
Serwery NTP polegają na bardzo dokładnych zegarach w celu precyzyjnego pomiaru czasu. Częstym źródłem czasu dla centralnych serwerów NTP są zegary atomowe lub odbiorniki GPS (pamiętaj, że satelity GPS mają zegary atomowe na pokładzie). Zegary te są zdefiniowane jako dokładne, ponieważ zapewniają bardzo dokładne odniesienie do czasu. W GPS lub zegarach atomowych nie ma nic magicznego, co sprawiłoby, że powiedzą Ci dokładnie, która jest godzina; z powodu, jak działają zegary atomowe, są one po prostu bardzo dobry, po raz mówiono, która jest godzina, zachować mówiąc dokładny czas (ponieważ drugi jest zdefiniowany w kategoriach efektów atomowych ). W rzeczywistości warto zauważyć, że czas GPS różni się od UTC , do którego jesteśmy bardziej przyzwyczajeni. Z kolei te zegary atomowe są zsynchronizowaneMiędzynarodowy czas atomowy lub TAI w celu nie tylko dokładnie powiedzieć upływ czasu, ale także w czasie.
Kiedy masz dokładny czas na jednym systemie podłączonym do sieci takiej jak Internet, jest to kwestia inżynierii protokołów umożliwiającej przesyłanie dokładnych czasów między hostami przez niewiarygodną sieć. Pod tym względem serwer NTP warstwy 2 (lub dalej od rzeczywistego źródła czasu) nie różni się od synchronizacji systemu pulpitu z zestawem serwerów NTP.
Do czasu, gdy będziesz mieć kilka dokładnych czasów (uzyskanych z serwerów NTP lub gdzie indziej) i znasz tempo zaawansowania lokalnego zegara (co jest łatwe do ustalenia), możesz obliczyć współczynnik dryfu lokalnego zegara w stosunku do „uważanej za dokładną” " upływ czasu. Po zablokowaniu wartość ta może być następnie wykorzystana do ciągłego dostosowywania lokalnego zegara, aby raportował wartości bardzo zbliżone do dokładnego upływu czasu, nawet jeśli sam lokalny zegar czasu rzeczywistego jest bardzo niedokładny; tak długo, jak lokalny zegar nie jest bardzo nieregularny, powinno to pozwolić na zachowanie dokładnego czasu przez pewien czas, nawet jeśli źródło czasu upstream będzie z jakiegokolwiek powodu niedostępne. Niektóre implementacje klienta NTP (prawdopodobnie większość implementacji ntpddemona lub usług systemowych) to robią, a inne (jak towarzysz ntpdntpdateco po prostu ustawia zegar raz) nie. Jest to powszechnie określane jako plik driftowy, ponieważ przechowuje on stale miarę dryfu zegara, ale ściśle mówiąc, nie musi być przechowywany jako konkretny plik na dysku.
W NTP warstwa 0 jest z definicji dokładnym źródłem czasu. Warstwa 1 jest systemem, który wykorzystuje źródło czasu warstwy 0 jako źródło czasu (a zatem jest nieco mniej dokładny niż źródło czasu warstwy 0). Warstwa 2 znowu jest nieco mniej dokładna niż warstwa 1, ponieważ synchronizuje swój czas ze źródłem warstwy 1. I tak dalej. W praktyce ta utrata dokładności jest tak mała, że jest całkowicie nieistotna we wszystkich przypadkach poza najbardziej ekstremalnymi.
Odpowiednio „wysoka warstwa” nie oznacza niskiej liczby warstw, którą należy usunąć z odpowiedzi. S2 jest wyższy niż S1. Dla dowodów przyjrzyj się wyjaśnieniu Prof. Millsa (znanego również jako Prof NTP) „Podsieć NTP działa z hierarchią poziomów, w której do każdego poziomu przypisana jest liczba zwana warstwą. Serwery warstwy 1 (podstawowe) na najniższym poziomie są bezpośrednio synchronizowane do krajowych usług czasu ... Serwery warstwy 2 (wtórne) na wyższym poziomie są synchronizowane z serwerami warstwy 1 i tak dalej. ” eecis.udel.edu/~mills/ntp/html/warp.html
dfc
2
Jest lepiej, ale nie sądzę, że warstwa 0 jest „z definicji dokładnym źródłem czasu”. Warstwa 0 oznacza po prostu, że jest to pewnego rodzaju zegar odniesienia. To, że jest to zegar S0, nie oznacza, że działa poprawnie. Poziom warstwy dotyczy odległości od zegarów referencyjnych, co nie gwarantuje dokładności.
dfc
@dfc Doceniam wkład, ponieważ pozwala mi poprawić odpowiedź. To powiedziawszy, nie zgadzam się z twoim stwierdzeniem, że S0 nie oznacza, że jest dokładny. Być może jest to całkowicie ścisłe, ale jeśli czas podany przez zegar S0 jest niedokładny, zegar ten jest bezużyteczny w praktyce jako źródło S0. Ergo, zegary S0 są dokładne. Innymi słowy, jeśli masz izolowany zestaw hostów, z których jeden jest podłączony do źródła czasu S0, a wszystkie inne są z nim zsynchronizowane, czas podany przez źródło S0 jest poprawnym czasem, jeśli chodzi o te hosty. Nie musisz się wtedy martwić TAI.
CVn
10
W sieciowym pomiarze czasu specyfikacja, która informuje, w jaki sposób serwer uzyskuje źródło czasu, nazywa się poziomem warstwy. Im niższy poziom, tym lepszy czas przechowywania tego serwera.
Urządzenia poziomu 0 nie są bezpośrednio podłączone do sieci. Są one samym urządzeniem do pomiaru czasu i muszą być podłączone do komputera, aby uzyskać rzeczywisty czas. Ten komputer staje się następnie serwerem NTP poziomu 1.
Komputer łączący się z warstwą poziomu 1 może również stać się serwerem czasu, ale byłby to poziom warstwy 2. Gdy komputery łączą się z serwerami czasu, im niższy poziom warstwy, tym dokładniejsze może być utrzymywanie czasu.
Urządzenia poziomu 0 obejmują zegary atomowe uczestniczące w TAI (międzynarodowy czas atomowy)lub zsynchronizowane z nim, a odbiorniki sygnału czasu wysyłane przez taki zegar. Najczęściej są to odbiorniki pomiaru czasu GPS z odpowiednim interfejsem, który zawiera sygnał GPS PPS. Sygnał PPS, gdy GPS ma dobrą blokadę na kilku satelitach, wysyła jeden impuls na sekundę, a krawędź wiodąca tego impulsu znajduje się w nanosekundach od rzeczywistego początku tej sekundy. W zależności od specyfikacji odbiornika GPS sygnał PPS może być mniej lub bardziej dokładny. Jest tak, ponieważ każdy satelita GPS ma zegar atomowy. Gdy odbiornik GPS znajdzie swoją pozycję i lokalizację satelitów GPS, których słucha, może skorygować propagację fal radiowych i dać ci czas prawie tak dokładny jak posiadanie zegara atomowego bezpośrednio przy odbiorniku GPS.
Tak więc serwery poziomu 1 łączą się z zegarami atomowymi lub odbiornikami GPS, a serwery NTP łączą się z nimi. Nawet połączenie z serwerem poziomu 2 lub 3 warstwy z częstymi korektami zapewni komputerowi dokładność pomiaru czasu mierzoną w nanosekundach. Ale jeśli potrzebujesz lepszego pomiaru czasu, połącz się z serwerem poziomu 1 lub kup odpowiedni odbiornik GPS mierzący czas i stań się źródłem jednego poziomu warstwy.
Istnieje wiele osób zmieniających komputery Raspberry PI w serwery NTP Stratum 1 z dodatkiem tanich odbiorników GPS. Możesz mieć w swojej sieci kompletny serwer poziomu 1 za mniej niż 80 USD: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis
2
Więc teoretycznie smartfon z odbiornikiem GPS (prawie wszystkie teraz) może być urządzeniem warstwy 0/1?
Bob
1
Jeśli telefon użył wyjścia pps odbiornika GPS, tak. Należy pamiętać, że telefony CDMA muszą również stosować precyzyjne taktowanie, więc chipset CDMA może być również źródłem warstwy 0 dla procesora telefonu. Oem moduł GPS i Raspberry Pi byłyby jednak tańsze.
Adam Davis
2
Raspberry Pi nie jest jednak świetnym serwerem NTP, ponieważ używa nieco niestabilnej karty sieciowej niskiej jakości (układ LAN9512).
duskwuff
1
@duskwuff Tak, ale jest lepszy niż wiele serwerów Stratum poziomu 2 przez Internet, a przy odpowiednio skonfigurowanych ustawieniach NTP zarówno na serwerze, jak i kliencie, drgania i przesunięcia wprowadzone przez niskiej jakości układ LAN oparty na USB mogą zostać przezwyciężone. Ze względu na koszty trudno go pokonać, ale wydać trochę więcej i możesz rozwiązać ten drobny problem.
Adam Davis
3
Wszystkie zegary dryfują do pewnego stopnia, zależy to od źródła sygnału taktowania i od tego, jak dobrze jest śledzony. Na PC jest to obecnie HPET, ale komputer może stracić kontrolę nad liczbą tyknięć, które zostały przeciążone.
Serwery NTP, z którymi rozmawia Twój komputer, prawdopodobnie również tracą czas, jednak przenoszą czas z powrotem do lepszego źródła.
Ostatecznie lepszymi źródłami są bardzo dokładne zegary, takie jak zegary atomowe. Możesz myśleć o NTP jako o sieci maszyn, każda z nich będzie miała wiele źródeł, na których opiera się w czasie, i przekrzywia swój czas do tego, co uważa się za dokładniejsze.
Jest to regulowane przez źródło deklarujące swoją warstwę. Zegar atomowy lub GPS to warstwa 0 i autorytet na temat czasu. Każda warstwa od tego jest następną warstwą - warstwą 1, i sprawdzi wiele źródeł warstwy 0 wraz z rówieśnikami na tym samym poziomie, w celu rozsądnego sprawdzenia źródeł czasu.
Prawdopodobnie rozmawiasz z warstwą czasu 2 lub 3.
To, co napisali inni, jest prawdą: serwer Stratum 1 korzysta z urządzenia Stratum 0. Nie wiem, w jakich odstępach czasu to się dzieje, ale myślę, że są one dość dokładne.
Serwer Stratum n z n> 1 otrzymuje swój czas poprzez NTP z serwera Stratum n-1. Oznacza to, że synchronizuje się z nim w regularnych odstępach czasu. Po uruchomieniu usługi NTP synchronizacja odbywa się w dość krótkich odstępach czasu, a wraz z upływem czasu odstępy zaczynają się zwiększać. Ostatecznie odstęp wynosi aż 1024 s, około 17 minut.
Nie poruszono jednak pytania, co dzieje się w międzyczasie? Istnieje funkcja zwana plikiem drift . Pomaga NTP monitorować wszelkie przesunięcia między zegarem lokalnym a zegarem odniesienia. Częstotliwość zegara lokalnego jest następnie dostosowywana zgodnie z wykrytym dryftem, dzięki czemu czas jest również dokładny między sondowaniami serwera.
Inne implementacje NTP mogą korzystać z innych udogodnień, ale jedna rzecz jest powszechna: potrzeba i możliwość dostosowania częstotliwości zegara.
Twierdziłbym jednak, że plik drift jest szczegółem implementacji konkretnego oprogramowania i nie jest związany z tym, jak zegar sprzętowy serwera NTP może być tak dokładny.
Odpowiedzi:
Serwery NTP polegają na bardzo dokładnych zegarach w celu precyzyjnego pomiaru czasu. Częstym źródłem czasu dla centralnych serwerów NTP są zegary atomowe lub odbiorniki GPS (pamiętaj, że satelity GPS mają zegary atomowe na pokładzie). Zegary te są zdefiniowane jako dokładne, ponieważ zapewniają bardzo dokładne odniesienie do czasu. W GPS lub zegarach atomowych nie ma nic magicznego, co sprawiłoby, że powiedzą Ci dokładnie, która jest godzina; z powodu, jak działają zegary atomowe, są one po prostu bardzo dobry, po raz mówiono, która jest godzina, zachować mówiąc dokładny czas (ponieważ drugi jest zdefiniowany w kategoriach efektów atomowych ). W rzeczywistości warto zauważyć, że czas GPS różni się od UTC , do którego jesteśmy bardziej przyzwyczajeni. Z kolei te zegary atomowe są zsynchronizowaneMiędzynarodowy czas atomowy lub TAI w celu nie tylko dokładnie powiedzieć upływ czasu, ale także w czasie.
Kiedy masz dokładny czas na jednym systemie podłączonym do sieci takiej jak Internet, jest to kwestia inżynierii protokołów umożliwiającej przesyłanie dokładnych czasów między hostami przez niewiarygodną sieć. Pod tym względem serwer NTP warstwy 2 (lub dalej od rzeczywistego źródła czasu) nie różni się od synchronizacji systemu pulpitu z zestawem serwerów NTP.
Do czasu, gdy będziesz mieć kilka dokładnych czasów (uzyskanych z serwerów NTP lub gdzie indziej) i znasz tempo zaawansowania lokalnego zegara (co jest łatwe do ustalenia), możesz obliczyć współczynnik dryfu lokalnego zegara w stosunku do „uważanej za dokładną” " upływ czasu. Po zablokowaniu wartość ta może być następnie wykorzystana do ciągłego dostosowywania lokalnego zegara, aby raportował wartości bardzo zbliżone do dokładnego upływu czasu, nawet jeśli sam lokalny zegar czasu rzeczywistego jest bardzo niedokładny; tak długo, jak lokalny zegar nie jest bardzo nieregularny, powinno to pozwolić na zachowanie dokładnego czasu przez pewien czas, nawet jeśli źródło czasu upstream będzie z jakiegokolwiek powodu niedostępne. Niektóre implementacje klienta NTP (prawdopodobnie większość implementacji
ntpd
demona lub usług systemowych) to robią, a inne (jak towarzysz ntpdntpdate
co po prostu ustawia zegar raz) nie. Jest to powszechnie określane jako plik driftowy, ponieważ przechowuje on stale miarę dryfu zegara, ale ściśle mówiąc, nie musi być przechowywany jako konkretny plik na dysku.W NTP warstwa 0 jest z definicji dokładnym źródłem czasu. Warstwa 1 jest systemem, który wykorzystuje źródło czasu warstwy 0 jako źródło czasu (a zatem jest nieco mniej dokładny niż źródło czasu warstwy 0). Warstwa 2 znowu jest nieco mniej dokładna niż warstwa 1, ponieważ synchronizuje swój czas ze źródłem warstwy 1. I tak dalej. W praktyce ta utrata dokładności jest tak mała, że jest całkowicie nieistotna we wszystkich przypadkach poza najbardziej ekstremalnymi.
źródło
W sieciowym pomiarze czasu specyfikacja, która informuje, w jaki sposób serwer uzyskuje źródło czasu, nazywa się poziomem warstwy. Im niższy poziom, tym lepszy czas przechowywania tego serwera.
Urządzenia poziomu 0 nie są bezpośrednio podłączone do sieci. Są one samym urządzeniem do pomiaru czasu i muszą być podłączone do komputera, aby uzyskać rzeczywisty czas. Ten komputer staje się następnie serwerem NTP poziomu 1.
Komputer łączący się z warstwą poziomu 1 może również stać się serwerem czasu, ale byłby to poziom warstwy 2. Gdy komputery łączą się z serwerami czasu, im niższy poziom warstwy, tym dokładniejsze może być utrzymywanie czasu.
Urządzenia poziomu 0 obejmują zegary atomowe uczestniczące w TAI (międzynarodowy czas atomowy)lub zsynchronizowane z nim, a odbiorniki sygnału czasu wysyłane przez taki zegar. Najczęściej są to odbiorniki pomiaru czasu GPS z odpowiednim interfejsem, który zawiera sygnał GPS PPS. Sygnał PPS, gdy GPS ma dobrą blokadę na kilku satelitach, wysyła jeden impuls na sekundę, a krawędź wiodąca tego impulsu znajduje się w nanosekundach od rzeczywistego początku tej sekundy. W zależności od specyfikacji odbiornika GPS sygnał PPS może być mniej lub bardziej dokładny. Jest tak, ponieważ każdy satelita GPS ma zegar atomowy. Gdy odbiornik GPS znajdzie swoją pozycję i lokalizację satelitów GPS, których słucha, może skorygować propagację fal radiowych i dać ci czas prawie tak dokładny jak posiadanie zegara atomowego bezpośrednio przy odbiorniku GPS.
Tak więc serwery poziomu 1 łączą się z zegarami atomowymi lub odbiornikami GPS, a serwery NTP łączą się z nimi. Nawet połączenie z serwerem poziomu 2 lub 3 warstwy z częstymi korektami zapewni komputerowi dokładność pomiaru czasu mierzoną w nanosekundach. Ale jeśli potrzebujesz lepszego pomiaru czasu, połącz się z serwerem poziomu 1 lub kup odpowiedni odbiornik GPS mierzący czas i stań się źródłem jednego poziomu warstwy.
źródło
Wszystkie zegary dryfują do pewnego stopnia, zależy to od źródła sygnału taktowania i od tego, jak dobrze jest śledzony. Na PC jest to obecnie HPET, ale komputer może stracić kontrolę nad liczbą tyknięć, które zostały przeciążone.
Serwery NTP, z którymi rozmawia Twój komputer, prawdopodobnie również tracą czas, jednak przenoszą czas z powrotem do lepszego źródła.
Ostatecznie lepszymi źródłami są bardzo dokładne zegary, takie jak zegary atomowe. Możesz myśleć o NTP jako o sieci maszyn, każda z nich będzie miała wiele źródeł, na których opiera się w czasie, i przekrzywia swój czas do tego, co uważa się za dokładniejsze.
Jest to regulowane przez źródło deklarujące swoją warstwę. Zegar atomowy lub GPS to warstwa 0 i autorytet na temat czasu. Każda warstwa od tego jest następną warstwą - warstwą 1, i sprawdzi wiele źródeł warstwy 0 wraz z rówieśnikami na tym samym poziomie, w celu rozsądnego sprawdzenia źródeł czasu.
Prawdopodobnie rozmawiasz z warstwą czasu 2 lub 3.
źródło
To, co napisali inni, jest prawdą: serwer Stratum 1 korzysta z urządzenia Stratum 0. Nie wiem, w jakich odstępach czasu to się dzieje, ale myślę, że są one dość dokładne.
Serwer Stratum n z n> 1 otrzymuje swój czas poprzez NTP z serwera Stratum n-1. Oznacza to, że synchronizuje się z nim w regularnych odstępach czasu. Po uruchomieniu usługi NTP synchronizacja odbywa się w dość krótkich odstępach czasu, a wraz z upływem czasu odstępy zaczynają się zwiększać. Ostatecznie odstęp wynosi aż 1024 s, około 17 minut.
Nie poruszono jednak pytania, co dzieje się w międzyczasie? Istnieje funkcja zwana plikiem drift . Pomaga NTP monitorować wszelkie przesunięcia między zegarem lokalnym a zegarem odniesienia. Częstotliwość zegara lokalnego jest następnie dostosowywana zgodnie z wykrytym dryftem, dzięki czemu czas jest również dokładny między sondowaniami serwera.
Inne implementacje NTP mogą korzystać z innych udogodnień, ale jedna rzecz jest powszechna: potrzeba i możliwość dostosowania częstotliwości zegara.
źródło