21Aug
Mange av oss har hatt sporadisk problem med våre datamaskiner og andre enheter som beholder nøyaktige tidsinnstillinger, men en rask synkronisering med en NTP-server gjør det bra igjen. Men hvis våre egne enheter kan miste nøyaktighet, hvordan klarer NTP-servere å holde seg så nøyaktig?
Dagens Spørsmål &Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.
Foto courtesy of LEOL30( Flickr).
Spørsmålet
SuperUser-leseren Frank Thornton vil vite hvordan NTP-servere kan forbli så nøyaktige:
Jeg har lagt merke til at på serverne og andre maskinene mine går klokkene alltid slik at de må synkroniseres for å forbli nøyaktige. Hvordan holder NTP-serverens klokker i drift og alltid forblir så nøyaktige?
Hvordan klarer NTP-serverne å forbli så nøyaktige?
Svaret
SuperUser-bidragsyter Michael Kjorling har svaret for oss:
NTP-servere stole på svært nøyaktige klokker for presisjonstiming. En vanlig tidskilde for sentrale NTP-servere er atomklokker eller GPS-mottakere( husk at GPS-satellitter har atomklokker ombord).Disse klokkene er definert som nøyaktige siden de gir en svært nøyaktig tidsreferanse.
Det er ikke noe magisk om GPS eller atomur som gjør at de forteller deg nøyaktig hvilken tid det er. På grunn av hvordan atomklokker fungerer, er de ganske enkelt veldig gode til å ha en gang blitt fortalt hva tiden er, holder nøyaktig tid( siden den andre er definert i form av atomvirkninger).Faktisk er det verdt å merke seg at GPS-tiden er forskjellig fra UTC som vi er vant til å se. Disse atomklockene er i sin tur synkronisert med International Atomic Time eller TAI for ikke bare å fortelle tidsforløpet, men også -tiden.
Når du har en nøyaktig tid på ett system som er koblet til et nettverk som Internett, handler det om protokollteknikk som gjør det mulig å overføre presise tider mellom verter over et upålitelig nettverk. I dette henseende er en Stratum 2( eller lenger fra den faktiske tidskilden) NTP-serveren ikke annerledes enn ditt skrivebordssynkronisering mot et sett med NTP-servere.
Da du har noen nøyaktige tider( som oppnådd fra NTP-servere eller andre steder), og kjenner hastigheten på fremdriften av din lokale klokke( som er lett å bestemme), kan du beregne din lokale klokke drifthastighet i forhold til "troddnøyaktig "tidsavstand. Når den er låst inn, kan denne verdien da brukes til kontinuerlig å justere lokaluret for å få det til å rapportere verdier svært nær den nøyaktige gangen, selv om den lokale sanntidsur selv er svært unøyaktig. Så lenge din lokale klokke ikke er svært uregelmessig , bør dette tillate å holde nøyaktig tid for en stund, selv om oppstrømskilden din blir utilgjengelig av en eller annen grunn.
Enkelte NTP-klientimplementeringer( trolig de fleste ntpd-demoner eller systemtjenesteprosjekter) gjør dette, og andre( som ntpds følgesvenn ntpdate som bare setter klokken en gang), gjør det ikke. Dette kalles ofte -drivfil fordi det vedvarende lagrer et mål for klokkefeil, men strengt tatt må det ikke lagres som en bestemt fil på disken.
I NTP er Stratum 0 per definisjon en nøyaktig tidskilde. Stratum 1 er et system som bruker en Stratum 0-tidskilde som sin tidskilde( og er dermed litt mindre nøyaktig enn Stratum 0-tidskilden).Stratum 2 igjen er litt mindre nøyaktig enn Stratum 1 fordi den synkroniserer tiden mot Stratum 1-kilden og så videre. I praksis er dette tap av nøyaktighet så liten at det er helt ubetydelig i alle sammen med de mest ekstreme tilfellene.
Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.