If-Koubou

Kuinka NTP-palvelimet hallitsevat pysyäkseen niin tarkasti?

Kuinka NTP-palvelimet hallitsevat pysyäkseen niin tarkasti? (Miten)

Monet meistä ovat joutuneet satunnaiseen ongelmaan tietokoneidemme ja muiden laitteiden kanssa, jotka pitävät tarkkoja aikajärjestelyjä, mutta nopea synkronointi NTP-palvelimen kanssa tekee kaiken jälleen hyvin. Mutta jos omat laitteet voivat menettää tarkkuutensa, miten NTP-palvelimet pystyvät pysymään niin tarkkoina?

Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.

Photo courtesy of LEOL30 (Flickr).

Kysymys

SuperUser-lukija Frank Thornton haluaa tietää, kuinka NTP-palvelimet pystyvät pysymään niin tarkkoina:

Olen huomannut, että palvelimissani ja muissa koneissa kellot kulkevat aina niin, että niiden on synkronoitava, jotta ne pysyisivät tarkkoja. Miten NTP-palvelimen kellot pysyvät ajautuvina ja pysyvät aina niin tarkkoina?

Miten NTP-palvelimet pysyvät niin tarkkoina?

Vastaus

SuperUser-avustaja Michael Kjorling on meille vastaus:

NTP-palvelimet perustuvat erittäin täsmällisiin kellotarkkeihin tarkan aikavalvonnan ajaksi. Yleinen NTP-palvelimen yhteinen aikalähde ovat atomikellot tai GPS-vastaanottimet (muista, että GPS-satelliiteilla on atk-kellot). Nämä kellot määritellään tarkasti, koska ne tarjoavat erittäin tarkan aikaviitteen.

Mikään ei ole mikään maaginen GPS- tai atomikelloista, joiden avulla he voivat kertoa tarkalleen mihin aikaan se on. Koska atomikellot toimivat, ne ovat yksinkertaisesti erittäin hyviä, kun heille kerrotaan kerran, kuinka kauan, pito tarkka aika (koska toinen määritellään atomien vaikutuksina). Itse asiassa on syytä huomata, että GPS-aika on erilainen kuin UTC, johon olemme tottuneet näkemään. Nämä atomikellot vuorostaan ​​synkronoituvat kansainvälisen atomien ajan tai TAI: n kanssa, jotta ne eivät kerro vain tarkasti ajan kulumista vaan myös aika.

Kun sinulla on täsmällinen aika yhdellä järjestelmällä, joka on yhdistetty verkkoon, kuten Internetiin, kyseessä on protokollan suunnittelu, joka mahdollistaa tarkan ajan siirtämisen isäntien välillä epäluotettavassa verkossa. Tältä osin Stratum 2 (tai kauemmas todellinen aikalähde) NTP-palvelin ei ole erilainen kuin työpöydän järjestelmä synkronointi vastaan ​​joukko NTP-palvelimia.

Kun sinulla on muutamia tarkkoja aikoja (kuten on saatu NTP-palvelimilta tai muualta) ja tiedät paikallisen kellon kehityksen nopeuden (joka on helppo määrittää), voit laskea paikallisen kelloasi ajovirran suhteessa "uskovaan tarkkaan " ajankulku. Kun tämä lukitus on lukittu, tätä arvoa voidaan käyttää paikallisen kellon jatkuvatoimiseen, jotta se ilmoittaisi arvot hyvin lähelle tarkkaa ajan kulumista, vaikka paikallinen reaaliaikakello olisi itsessään erittäin epätarkka. Niin kauan kuin paikallinen kello ei ole kovin korkea arvaamaton, tämän pitäisi sallia tarkan ajan pitäminen jonkin aikaa, vaikka ylävirran aikalähde ei mistä tahansa syystä olisi saatavana.

Jotkut NTP-asiakkaiden toteutukset (luultavasti useimmat ntpd-démon- tai järjestelmäpalveluiden toteutukset) tekevät tämän, ja muut (kuten ntpd: n kumppani ntpdate, joka asettaa kellon vain kerran), eivät. Tätä kutsutaan yleisesti nimellä a drift-tiedosto koska se tallentaa jatkuvasti kellotaajuuden mittausta, mutta tiukasti sitä ei tarvitse tallentaa tietylle tiedostolle levylle.

NTP: ssä Stratum 0 on määritelmän mukaan tarkka aikalähde. Stratum 1 on järjestelmä, joka käyttää Stratum 0-aikalähdettä aikalähteenä (ja on siis hieman epätarkempi kuin Stratum 0 -ajastolähde). Stratum 2 on taas hieman epätarkempi kuin Stratum 1, koska se synkronoi sen ajankohdan Stratum 1 lähteen ja niin edelleen. Käytännössä tämä tarkkuuden menetys on niin pieni, että se on täysin vähäpätöinen kaikissa äärimmäisissä tapauksissa.

Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.