Hjemmeside » hvordan » Hvordan administrerer NTP-servere at forblive så nøjagtige?

    Hvordan administrerer NTP-servere at forblive så nøjagtige?

    Mange af os har haft lejlighedsvis problemer med vores computere og andre enheder, der bevarer nøjagtige tidsindstillinger, men en hurtig synkronisering med en NTP-server gør det godt igen. Men hvis vores egne enheder kan tabe nøjagtighed, hvordan klarer NTP-servere at forblive så nøjagtige?

    Dagens Spørgsmål & Svar session kommer til os med venlig hilsen af ​​SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.

    Foto med tilladelse til LEOL30 (Flickr).

    Spørgsmålet

    SuperUser-læser Frank Thornton ønsker at vide, hvordan NTP-servere kan forblive så nøjagtige:

    Jeg har bemærket, at klokkerne på mine servere og andre maskiner altid glider, så de skal synkroniseres for at forblive nøjagtige. Hvordan holder NTP-serverens ure fra drift og altid forbliver så præcis?

    Hvordan klarer NTP-serverne at forblive så nøjagtige?

    Svaret

    SuperUser bidragyder Michael Kjorling har svaret for os:

    NTP-servere er afhængige af meget præcise ure til præcis tidshåndtering. En almindelig tidskilde til centrale NTP-servere er atomur eller GPS-modtagere (husk at GPS-satellitter har atomur ombord). Disse ure er defineret som nøjagtige, da de giver en meget præcis tidsreference.

    Der er ikke noget magisk om GPS eller atomur, der får dem til at fortælle dig præcis, hvad tid det er. På grund af hvordan atomklokker fungerer, er de simpelthen meget gode til at have engang blevet fortalt, hvad tid det er, beholde præcis tid (siden den anden er defineret i form af atomvirkninger). Faktisk er det værd at bemærke, at GPS-tid er forskellig fra UTC, som vi er vant til at se. Disse atomure er igen synkroniseret med International Atomic Time eller TAI for ikke blot at fortælle præcis tidens gang, men også det tid.

    Når du har en nøjagtig tid på et system, der er forbundet til et netværk som internettet, handler det om protokolteknik, der gør det muligt at overføre præcise tider mellem værter over et upåliteligt netværk. I denne henseende er en Stratum 2 (eller længere fra den faktiske tidskilde) NTP-server, der ikke adskiller sig fra dit skrivebordssynkronisering mod et sæt NTP-servere.

    Når du har et par nøjagtige tider (som opnået fra NTP-servere eller andetsteds) og kender hastigheden for fremskridt på dit lokale ur (hvilket er let at bestemme), kan du beregne dit lokale urs drivhastighed i forhold til den "troede nøjagtige " Tidsforløbet. Når den er låst ind, kan denne værdi derefter bruges til løbende at justere det lokale ur for at få det til at rapportere værdier meget tæt på den nøjagtige passage af tid, selvom den lokale realtidsklokke i sig selv er yderst unøjagtig. Så længe dit lokale ur ikke er højt uregelmæssig, Dette bør give mulighed for at holde præcis tid til en tid, selvom din tid til opstrøms tid bliver utilgængelig af en eller anden grund.

    Nogle NTP-klientimplementeringer (sandsynligvis de fleste ntpd-dæmoner eller systemtjenesteimplementeringer) gør dette, og andre (som ntpd's companion ntpdate, der blot sætter uret en gang), gør det ikke. Dette kaldes almindeligvis a drift fil fordi det vedvarende opbevarer et mål for clock drift, men strengt taget behøver det ikke at blive gemt som en specifik fil på disken.

    I NTP er Stratum 0 pr. Definition en nøjagtig tidskilde. Stratum 1 er et system, der anvender en Stratum 0-tidskilde som sin tidskilde (og er således lidt mindre nøjagtig end Stratum 0-tidskilden). Stratum 2 igen er lidt mindre præcis end Stratum 1, fordi den synkroniserer sin tid mod Stratum 1-kilden og så videre. I praksis er dette tab af nøjagtighed så lille, at det er fuldstændig ubetydeligt i alle tilfælde end de mest ekstreme tilfælde.


    Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.