Hvordan administrerer NTP-servere å holde seg så nøyaktig?
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, klarer NTP-servere å holde seg så nøyaktige?
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 leser 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øyaktig?
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 virker, er de ganske enkelt veldig gode til å ha en gang blitt fortalt hvilken tid det er, holde 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 mot International Atomic Time eller TAI for ikke bare å fortelle fortiden, men også de tid.
Når du har en nøyaktig tid på ett system som er koblet til et nettverk som Internett, handler det om protokollteknikk som muliggjør overføring av 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 forskjellig fra ditt skrivebordssynkronisering mot et sett med NTP-servere.
Når du har noen nøyaktige tider (som oppnådd fra NTP-servere eller andre steder) og vet hvor raskt du er i lokal klokke (som er lett å bestemme), kan du beregne din lokale klokke drifthastighet i forhold til "troverdige nøyaktige "Tidens gang. 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 høy uberegnelig, Dette bør tillate å holde nøyaktig tid på en stund, selv om oppstrømskilden din blir utilgjengelig av en eller annen grunn.
Noen 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 som a 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 tilfeller, men det mest ekstreme av tilfeller.
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.