NTP (tietotekniikka)

NTP () on UDP-pohjainen protokolla täsmällisen aikatiedon välittämiseen tietokoneiden välillä.

Protokolla on suunniteltu ottamaan huomioon verkon muuttuvat viiveet. Sama protokolla toimii sekä usean palvelimen kellojen keskinäiseen tahdistamiseen, että asiakas-palvelin käytössä.

 Historia 
NTP:n edeltäjiin kuului toukokuussa 1983 standardoidu Time-protokolla, joka lähetti pyydettäessä yksinkertaisia aikaleimoja verkon yli 32-bittisen Unix-ajan muodossa.
Aika voitiin asettaa rdate-ohjelmalla.rdate(1)
Tästä seuraava askel oli 4.3BSD:ssa vuonna 1985 esitelty timed, joka pyöri taustalla ja piti aikaa pysyvästi synkronissa palvelimen kellon kanssa.https://www2.eecs.berkeley.edu/Pubs/TechRpts/1985/5512.html 

NTP:n suunnitteli Delawaren yliopiston professori David Mills, joka sai rahoitusta ARPANETiin liittyvään kehitystyöhön. 1990-luvun puolivälissä Mills luovutti ntpd-ohjelmiston uusien julkaisujen tekemisen Harlan Stennille.

NTP:n monimutkaisuuden vuoksi esiteltiin vuonna 1992 Simple Network Time Protocol (SNTP).  SNTP käyttää NTP:n verkkoprotokollaa, mutta ei vaadi paikallisella laitteella massamuistia ja sille riittää yksi aikapalvelin.

Network Time Security (NTS) on menetelmä aikapalvelun suojaamiseen (), joka käyttää TLS-tukea. Monet palvelut vaativat luotettavia aikatietoja tietoturvan vuoksi.

Muita toteutuksia

ntpd-ohjelmistolle on kehitetty vaihtoehtoja.
OpenBSD-projektilla on oma toteutuksensa OpenNTPD, joka toteuttaa NTPv3/SNTPv4 -protokollat. Se esiteltiin OpenBSD 3.6 -versiossa.
OpenNTPD:ta pidetään jossain suhteissa vajavaisena verrattuna referenssitoteutukseen. Sen päämäärä on koodin yksinkertaisuus ja turvallisuus ja ylläpidon helppous.

chrony on vaihtoehtoinen toteutus, jota sponsoroi Red Hat, joka käyttää sitä omassa Linux-jakelussaan.

systemd-timesyncd on SNTP-asiakas, joka kuuluu systemd-pakettiin. Se on oletuksena Debianissa ja siihen perustustuvissa jakeluissa julkaisusta "bookworm" lähtien.

Muita versioita ovat olleet NTPsec, joka on turvallisuudeltaan vahvennettu versio perustuen vuoden 2015 referenssitoteutukseen, ja Poul-Henning Kampin FreeBSD:lle vuonna 2014 kehittämä ntimed.

Microsoft Windows tukee NTP:tä Windows 2000:sta lähtien osana Windows Time service (W32Time) -palvelua

macOS 10.13 High Sierra lisäsi NTP-protokollan tuen timed-daemoniin.https://eclecticlight.co/2017/10/27/has-anyone-got-the-time-how-high-sierra-has-changed-time-synchronisation/ 

 NTP-hierarkia  


Usein NTP-palvelimet toimivat hierarkkisesti siten että yksi tai useampi 1. tason (stratum) palvelin saa aikansa suoraan ulkoisesta aikalähteestä tai esimerkiksi GPS:n välityksellä, atomikellolta tai tietokoneen emolevyn reaaliaikakellosta. Stratum-taso ei siis kerro palvelimen kellon tarkkuudesta, vaan palvelimen sijainnista verkkohierarkiassa.

Stratum-tasot ovat hierarkkisia. 2-tason palvelimet hakevat aikansa vähintään yhdeltä 1. tason palvelimelta. Stratum 3 -tason kellot hakevat aikansa kakkosilta jne. Tasoja voi olla 16.

Perinteisesti loppukäyttäjät hakevat ajan stratum 2 -tason palvelimilta. Asiakas voi käyttää joko yhtä tai useampaa palvelinta. Kolme NTP-palvelinta on vähimmäismäärä, jotta asiakas voi päätellä mikä kelloista on väärässä.

Ajan välitys voidaan hoitaa lähiverkossa broadcast- tai multicast-lähetyksenä, jolloin useat asiakkaat saavat ajan yhdestä multicast- tai broadcast-paketista.

 Ajan käsittely 
Karkaussekuntien käsittelyssä NTP pysäyttää kellon eikä etene karkaussekunnin aikana, joka eroaa POSIXin käytännöistä. Google on ehdottanut karkaustahran käyttöä, joka jakaa karkaussekunnin pienemmissä erissä vuorokauden ajalle, jolloin jokainen sekunti on 11,6 mikrosekuntia pidempi.

 Standardit 

NTP määritellään seuraavissa RFC-dokumenteissa:
  Algorithms for Synchronizing Network Clocks
  Network Time Protocol (NTP)
  Network Time Protocol (Version 3)
  Network Time Protocol Version 4 (NTPv4)
  Network Time Protocol Version 4 (NTPv4) Extension Fields
  Message Authentication Code for the Network Time Protocol

 Palvelimet 

Suomen viralliseen aikaan synkronoidut viralliset ja julkiset NTP-palvelut ovat VTT MIKES:in ylläpitämiä. Kuka tahansa voi käyttää MIKESin julkista stratum 2 -tason NTP-palvelua. 

Microsoft Windowsin oletusaikapalvelimena on time.windows.com.https://learn.microsoft.com/en-us/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings

Lisäksi monilla yrityksillä, yliopistoilla, tutkimuslaitoksilla, organisaatioilla ja asevoimilla on omat aikapalvelimet omien laitteittensa käyttöön, kuten time.google.com, time.apple.com, time.cloudflare.com, time.facebook.com, time.nist.gov, ntp.ripe.net, clock.isc.org https://gist.github.com/mutin-sa/eea1c396b1e610a2da1e5550d94b0453 

 Lähteet 

Luokka:Verkkoprotokollat
Luokka:OSI-sovelluskerros