Network Time Protocol

Network Time Protocol (NTP) er en protokoll for å synkronisere klokken på datamaskiner og tjenere. Dette gjøres ved å sende en forespørsel til en tjener som har som oppgave å synkronisere tiden for andre datamaskiner.
NTP bruker UDP-port 123 som sitt transportlag. NTP er spesielt laget for å kunne motstå effekten av variabel reaksjonstid (jitter buffer).
NTP er en av de eldste Internett-protokollene som fortsatt er i bruk (tidligere enn 1985). NTP ble opprinnelig laget av Dave Mills hos universitetet i Delaware, USA. Universitetet i Delaware vedlikeholder protokollen sammen med et lag frivillige.
NTP er ikke relatert til de mye enklere DAYTIME og TIME protokollene.


== Oversikt ==
NTP bruker Marzullos algoritme for UTC-tidsskalaen som støtter blant annet skuddsekunder. NTPv4 kan vanligvis angi tiden med en nøyaktighetsgrad på inntil 10 millisekunder (1/100 s) over Internett. Under optimale forhold på LAN kan det oppnås nøyaktigheter på 200 mikrosekunder (1/5000 s).
NTP-demonen (bakgrunnsprosess) er en brukernivå-prosess som kjører kontinuerlig på en NTP-klient. Mesteparten av protokollen er implementert i denne prosessen. For best nøyaktighet er det viktig å ha en lokal NTP-klokkegenerator i faselåst reguleringssløyfe med den eksterne NTP-demonen. Dette kan sammenlignes med stemmingen av en gitar. NTP-klokkegeneratoren er i flere operativsystemer implementert i kjernen; de seneste versjonene av Linux, BSD og Solaris har denne støtten.
NTPs driftsmessige detaljer er belyst i RFC 778, RFC 891, RFC 956, RFC 958 og RFC 1305. Dagens referanse implementasjon er versjon 4 (NTPv4);. Imidlertid har bare versjonene opp til versjon 3 (1992) vært dokumentert i RFC-ene.
En mindre komplisert form for NTP som ikke behøver å lagre tidligere kommunikasjon er SNTP (Simple Network Time Protocol). Den brukes i noen innebygde systemer (mobiltelefoner, MP3-spillere o.l) og i applikasjoner der det ikke kreves høy nøyaktighet. Se RFC 1361, RFC 1769, RFC 2030, og RFC 4330.
Alle versjoner av Microsoft Windows siden Windows 2000 inkluderer "Windows Time Service" -tjenesten. Tjenesten gjør det mulig å synkronisere datamaskinens klokke med en NTP-server. Dog støtter versjonen i Windows 2000 bare SNTP og gjør brudd på flere aspekter ved NTPv3. Fra Windows Server 2003 har Microsofts dokumentasjon hevdet at de implementerer den fulle NTPv3 protokollen som spesifisert i RFC 1305.


== Klokkenivåer/klokkestratum ==

NTP bruker et hierarkisk system av klokkenivåer eller klokkestratum (fra nå av bare stratum). Nivået bestemmer avstanden fra referanseklokken og er til for å unngå kretser i hierarkiet. (Bemerk: Dette er en annen notasjon for stratum enn den som brukes i telekom-systemer.)

Stratum 0
Dette er enheter som atomur (caesiums-, rubidiums-baserte), GPS-klokker eller andre radioklokker. Stratum-0 enhetene er ikke tilkoblet nettverket. I stedet er de koblet til via datamaskiner (f.eks via en RS-232 kobling som bruker et "puls per sekund" signal).
Stratum 1
Dette er datamaskiner tilkoblet Stratum 0-enheter. Vanligvis oppfører de seg som tjenere for tidsinnstillingsspørringer fra Stratum 2-servere via NTP. Disse datamaskinene kalles også "tidstjenere". Mange Stratum 1-tjenere (for NTPv3 og tidligere versjoner) opererer ikke nødvendigvis med Stratum 1-presisjon. Etter som NTP-protokollen utvikles vil det bli mindre mulig å la misvisende Stratum 1-tjenere kjøre. I stedet dytter protokollen tjenerne nedover i Stratumnivå automatisk avhengig av unøyaktigheten.
Stratum 2
Dette er datamaskiner som sender NTP-spørringer til Stratum 1-tjenere. Normalt vil en Stratum 2-maskin referere til et antall Stratum 1-tjenere og bruke NTP-algoritmen til å samle inn den beste dataprøven ved å forkaste Stratum 1-tjenere som ser ut til å være åpenbart uriktige. Stratum 2-maskiner vil koble seg til andre Stratum 2-maskiner i en gruppe for å samarbeide om en mer stabil og robust tid for alle enhetene i gruppen. Stratum 2-maskiner oppfører seg normalt som tjenere for Stratum 3 NTP-forespørsler.
Stratum 3
Disse maskinene anvender nøyaktig de samme NTP-funksjonene for forgrening (peering) og dataprøving (sampling) som Stratum 2. De kan også virke som tjenere for lavere strata, potensielt opp til 16 nivåer. NTP (avhengig av versjonen) støtter opp til 256 strata.Det er ønskelig at NTP5 (under utvikling) bare vil tillate 8 strata.


== NTP tidsstempler (timestamps) ==
NTPs 64-bits tidsstempler består av en 32-bits sekund-del og en 32-bits brøkdelssekund-del. Dette gir NTP en tidsskala på 232 (136 år) og en teoretisk oppløsning på 2−32 sekunder (0,233 nanosekunder).
NTP tidsskalaen startet 1. januar 1900. Den første nullstillingen vil oppstå i 2036, lenge før det velkjente år 2038-problemet til Unix. Nullstilings-feilen er spesifik NTP 32-bits tidsstempelet i NTPv3. Dette "problemet" ble overført til NTPv4, men NTPv4 har også en ren 64-bits modus som ikke har dette problemet. NTP5 vil ha en 128-bits modus.
Ifølge Mills er 64-bits delen av brøken nok til å beslutte tiden det tar for et foton til å passere et elektron med lysets hastighet. Brøkdelen kan representere 2−64 sekunder som er cirka 54 zeptosekunder (10−21). Sekund-delen på 64-bits er nok til å representere tid frem til universet slukker da 264 sekunder er cirka 585 milliarder år.


== Referanser ==


== Eksterne lenker ==
(en) Offisielt nettsted 
[1] Bruk av NTP ved Fagskolen i Gjøvik.
(engelsk) NTP Public Services Project Dette er hjemmet for "NTP Public Services" prosjektet som tilbyr offentlig støtte for "NTP Project" og IETF NTP Arbeidsgruppen. Det er også en Wiki med liste over NTP tjenere.
(engelsk) IETF NTP working group
(engelsk) David Mills' NTP project page
(engelsk) NTP version 4 Release Notes
(engelsk) Time og NTP artikkel
(engelsk) NTP Survey 2005 Arkivert 4. mai 2019 hos Wayback Machine.
(engelsk) NTP Server Online Test Tool
(engelsk) Network Time Protocol - Det nasjonale forskningsrådet i Canada.