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.
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.

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.

## 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.

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 

## Lähteet