Jak mohou servery NTP spravovat tak, aby zůstaly přesné?
Mnozí z nás měli příležitostný problém s našimi počítači a dalšími zařízeními, které si zachovaly přesné nastavení času, ale rychlá synchronizace s NTP serverem je opět v pořádku. Pokud však naše vlastní zařízení ztratí přesnost, jak NTP servery dokáží zůstat tak přesné?
Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.
Foto s laskavým svolením LEOL30 (Flickr).
Otázka
Snímač SuperUser Frank Thornton chce vědět, jak mohou NTP servery zůstat tak přesné:
Všiml jsem si, že na mých serverech a dalších strojích jsou hodiny vždy unášeny tak, aby se musely synchronizovat, aby zůstaly přesné. Jak se hodiny NTP serveru udržují od unášení a stále zůstávají tak přesné?
Jak mohou servery NTP zůstat tak přesné?
Odpověď
Sponzor SuperUser Michael Kjorling má pro nás odpověď:
Servery NTP se spoléhají na vysoce přesné hodiny pro přesné měření času. Společným zdrojem času pro centrální servery NTP jsou atomové hodiny nebo GPS přijímače (nezapomeňte, že satelity GPS mají atomové hodiny na palubě). Tyto hodiny jsou definovány jako přesné, protože poskytují velmi přesný časový údaj.
Neexistuje nic magického o GPS ani atomových hodinách, které by jim umožnily přesně říct, jaký je čas. Kvůli tomu, jak atomové hodiny pracují, jsou prostě velmi dobří, když se jednou dozvěděli, kolik času to je, udržování přesný čas (protože druhý je definován z hlediska atomových efektů). Ve skutečnosti je třeba poznamenat, že čas GPS je odlišný od času UTC, který jsme častěji viděli. Tyto atomové hodiny jsou synchronně synchronizovány s Mezinárodním atomovým časem nebo TAI, aby nejen přesně říkaly průchod času, ale také čas.
Jakmile máte přesný čas na jednom systému připojeném k síti, jako je internet, je to záležitost inženýrství protokolů umožňující přenos přesných časů mezi hosty přes nespolehlivou síť. V tomto ohledu se server NTP Stratum 2 (nebo vzdálenější od zdroje času) neliší od systému stolního počítače, který se synchronizuje se sadou NTP serverů.
V době, kdy máte několik přesných časů (získaných ze serverů NTP nebo jinde) a znáte míru pokroku místních hodin (což je snadné určit), můžete vypočítat driftový poměr místních hodin vzhledem k "přesvědčeným přesným " plynutí času. Po uzamčení může být tato hodnota použita k nepřetržitému nastavení místních hodin tak, aby byly hodnoty hlášení velmi blízké přesnému času, i když místní hodiny v reálném čase jsou velmi nepřesné. Pokud vaše místní hodiny nejsou vysoké nepravdivé, to by mělo umožnit zachování přesného času po určitou dobu, a to i v případě, že váš zdrojový časový zdroj z nějakého důvodu nebude dostupný.
Některé implementace klientů NTP (pravděpodobně většina implementací ntpd démonů nebo systémových služeb) to dělají a jiné (jako ntpdd ntpdův společník ntpdate, který jednoduše nastaví hodiny jednou) ne. Toto je obvykle označováno jako a soubor driftů protože neustále ukládá míru driftu hodin, ale přísně to nemusí být uloženo jako konkrétní soubor na disku.
V NTP je Stratum 0 definice přesným zdrojem času. Stratum 1 je systém, který využívá časový zdroj Stratum 0 jako svůj časový zdroj (a proto je o něco méně přesný než časový zdroj Stratum 0). Stratum 2 je opět o něco méně přesný než Stratum 1, protože synchronizuje svůj čas se zdrojem Stratum 1 a tak dále. V praxi je tato ztráta přesnosti tak malá, že je zcela zanedbatelná ve všech, ale nejvíce extrémních případech.
Musíte něco přidat k vysvětlení? Vyjměte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.