21Aug

Kuinka NTP-palvelimet hallitsevat pysyäkseen niin tarkasti?

Monet meistä ovat joutuneet satunnaiseen ongelmaan tietokoneidemme ja muiden laitteiden kanssa, jotka pitävät tarkat aikajaksot, 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 &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmittely Q & A verkkosivuilla.

Photo courtesy of LEOL30( Flickr).

Kysymys

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

Huomasin, että palvelimissani ja muissa koneissa kellot kulkevat aina niin, että heidän 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 tarkkuusajankohdasta. 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.

GPS- tai atomikelloilta ei ole mitään maagista, jotta ne kertovat sinulle tarkalleen, mikä aika on. Koska atomikellot toimivat, ne ovat yksinkertaisesti erittäin hyviä, kun kerran kerrotaan, mikä aika on, pitää : n tarkan ajan( koska toinen on määritelty atomien vaikutuksina).Itse asiassa on syytä huomata, että GPS-aika on erilainen kuin UTC, johon olemme tottuneet näkemään. Nämä atomikellot vuorostaan ​​synkronoidaan kansainvälisen atomien ajan tai TAI: n kanssa, jotta ne eivät kerro vain tarkasti ajan kulumista vaan myös : n -aikaa.

Kun sinulla on tarkka aika yhdellä järjestelmällä, joka on yhdistetty verkkoon, kuten Internetiin, kyseessä on protokollasuunnittelu, 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( saatu NTP-palvelimilta tai muualta) ja tiedät paikallisen kellon etenemisen nopeuden( joka on helppo määrittää), voit laskea paikallisen kelloasi ajovirran suhteessa "uskovaantarkka "ajan kuluminen. 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 kellosi ei ole : n epätäsmällistä : tä, sen pitäisi antaa pitää tarkka aika jonkin aikaa, vaikka ylävirran aikalähde ei mistä tahansa syystä olisi saatavilla.

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 -drift-tiedostoksi , koska se tallentaa jatkuvasti kellon ajastusta, mutta tarkasti 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 sinulla jotain lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.