Ako sa servery NTP podarí zostať tak presné?
Mnohí z nás mali príležitostný problém s našimi počítačmi a inými zariadeniami, ktoré si zachovali presné nastavenie času, ale rýchla synchronizácia s NTP serverom je opäť úspešná. Ale ak naše vlastné zariadenia môžu stratiť presnosť, ako NTP servery dokážu zostať tak presné?
Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.
Foto s láskavým dovolením LEOL30 (Flickr).
Otázka
Čítačka SuperUser Frank Thornton chce vedieť, ako môžu NTP servery zostať tak presné:
Všimol som si, že na mojich serveroch a iných strojoch hodiny vždy unášajú tak, aby sa museli synchronizovať, aby zostali presné. Ako hodiny NTP servera udržiavajú od unášania a vždy zostávajú tak presné?
Ako môžu servery NTP zostať tak presné?
Odpoveď
Sponzor SuperUser Michael Kjorling má odpoveď pre nás:
Servery NTP sa spoliehajú na veľmi presné hodiny na presné časovanie. Spoločným zdrojom času pre centrálne NTP servery sú atómové hodiny alebo GPS prijímače (pamätajte, že satelity GPS majú atómové hodiny na palube). Tieto hodiny sú definované ako presné, pretože poskytujú veľmi presný časový údaj.
Neexistuje nič magické o GPS ani atómových hodinách, ktoré by im umožnili presvedčiť sa, aký je čas. Kvôli tomu, ako atómové hodiny fungujú, sú jednoducho veľmi dobré, pretože raz boli povedané, čo to je, vedenie presný čas (od druhého je definovaný z hľadiska atómových účinkov). V skutočnosti stojí za zmienku, že čas GPS je odlišný od času UTC, ktorý sme viac zvyknutí vidieť. Tieto atómové hodiny sú synchronizované proti Medzinárodnému Atómovému času alebo TAI, aby nielen presne povedali o prechode času, ale aj čas.
Keď máte presný čas na jednom systéme pripojenom na sieť, ako je internet, je to záležitosť inžinierstva protokolov umožňujúceho preniesť presné časy medzi hostiteľmi cez nespoľahlivú sieť. V tomto ohľade sa NTP server Stratum 2 (alebo vzdialenejšie od aktuálneho zdroja času) nijako nelíši od vášho desktopového systému, ktorý sa synchronizuje so sériou serverov NTP.
V čase, keď máte niekoľko presných časov (získaných z NTP serverov alebo inde) a poznáte rýchlosť postupu miestnych hodín (čo je ľahké určiť), môžete vypočítať odchýlku miestnych hodín od "presvedčených správnych " plynutie času. Po uzamknutí môže byť táto hodnota potom použitá na trvalé nastavenie miestnych hodín tak, aby sa hodnoty hlásenia veľmi blížili presnému času, a to aj vtedy, keď miestne hodiny v reálnom čase sú veľmi nepresné. Pokiaľ vaše miestne hodiny nie sú vysoko nevyrovnaný, toto by malo umožniť zachovanie presného času na určitý čas aj vtedy, ak váš zdrojový časový zdroj z akéhokoľvek dôvodu nebude dostupný.
Niektoré implementácie klientov NTP (pravdepodobne väčšina implementácií ntpd démonov alebo systémových služieb) to robia a iné (ako ntpd spoločník ntpdate, ktorý jednoducho nastaví hodiny raz) nie. Toto sa bežne označuje ako a súbor drift pretože neustále ukladá mieru posunu hodín, ale prísne povedané, nemusia byť uložené ako špecifický súbor na disku.
V NTP Stratum 0 je podľa definície presným časovým zdrojom. Stratum 1 je systém, ktorý používa časový zdroj Stratum 0 ako svoj časový zdroj (a preto je o niečo menej presný ako časový zdroj Stratum 0). Stratum 2 je opäť o niečo menej presný ako Stratum 1, pretože synchronizuje svoj čas so zdrojom Stratum 1 a tak ďalej. V praxi je táto strata presnosti taká malá, že je úplne zanedbateľná vo všetkých, ale najúspornejších prípadoch.
Máte niečo doplniť vysvetlenie? Znie to v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.