NTP (tietotekniikka)

Wikipediasta
(Ohjattu sivulta Network Time Protocol)
Siirry navigaatioon Siirry hakuun
TCP/IP-pino
sovelluskerros
sovelluskerros

sovelluskerros
BGP · DHCP · DNS · ESMTP · FTP · HTTP · IMAP · IRC · LDAP · MGCP · NNTP · NTP · POP3 · RPC · RTP · RTSP · SIP · SMTP · SNMP · SOCKS · SSH · Telnet · TLS/SSL · XMPP  · (..lisää..)
kuljetuskerros
kuljetuskerros

kuljetuskerros
TCP · UDP · QUIC · DCCP · SCTP · RSVP · RIP · ECN
verkkokerros
verkkokerros

verkkokerros
IP (IPv4 ja IPv6) · ICMP (ICMPv6) · IGMP · IPsec
siirtoyhteyskerros ARP · IS-IS · NDP · OSPF · L2TP · PPP
fyysinen kerros

NTP (engl. Network Time Protocol) 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ä.

NTP:n edeltäjiin kuului toukokuussa 1983 standardoidu Time-protokolla, joka lähetti pyydettäessä yksinkertaisia aikaleimoja verkon yli 32-bittisen Unix-ajan muodossa.[1] Aika voitiin asettaa rdate-ohjelmalla.[2] 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.[3]

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

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.[6]

Muita toteutuksia

[muokkaa | muokkaa wikitekstiä]

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

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

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

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[12]

macOS 10.13 High Sierra lisäsi NTP-protokollan tuen timed-daemoniin.[13]

NTP-hierarkia

[muokkaa | muokkaa wikitekstiä]
NTP-palvelinten 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

[muokkaa | muokkaa wikitekstiä]

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

NTP määritellään seuraavissa RFC-dokumenteissa:

  • RFC 956 Algorithms for Synchronizing Network Clocks
  • RFC 958 Network Time Protocol (NTP)
  • RFC 1305 Network Time Protocol (Version 3)
  • RFC 5905 Network Time Protocol Version 4 (NTPv4)
  • RFC 7822 Network Time Protocol Version 4 (NTPv4) Extension Fields
  • RFC 8573 Message Authentication Code for the Network Time Protocol

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. [16]

Microsoft Windowsin oletusaikapalvelimena on time.windows.com.[17]

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 [18]

  1. RFC 868
  2. rdate(1)
  3. https://www2.eecs.berkeley.edu/Pubs/TechRpts/1985/5512.html
  4. a b Nate Hopper: The Thorny Problem of Keeping the Internet’s Time newyorker.com. 30.9.2022. Viitattu 6.10.2022. (englanniksi)
  5. David L. Mills: On the Chronometry and Metrology of Computer Network Timescales and their Application to the Network Time Protocol (PDF) eecis.udel.edu. Viitattu 19.1.2024. (englanniksi)
  6. RFC 1361
  7. ntpd(8) - OpenBSD manual pages man.openbsd.org. ”It implements the Simple Network Time Protocol version 4, as described in RFC 5905, and the Network Time Protocol version 3, as described in RFC 1305.”
  8. Knowles, Brad: OpenNTPd Considered Harmful bradknowles.typepad.com. 22 September 2004. Arkistoitu 4 March 2005. Viitattu 16 September 2006.
  9. The OpenBSD Project: FAQ 6.12.1: 'But OpenNTPD isn't as accurate as the ntp.org daemon!' openbsd.org. 21 August 2006. Arkistoitu 5.2.2016. Viitattu 14.5.2020.
  10. Lichvar, Miroslav: Combining PTP with NTP to Get the Best of Both Worlds 20 July 2016. Red Hat. Arkistoitu 30 July 2016. ”Starting with Red Hat Enterprise Linux 7.0 (and now in Red Hat Enterprise Linux 6.8) a more versatile NTP implementation is also provided via the chrony package” Viitattu 19 November 2017.
  11. Switching from OpenNTPd to Chrony - anarcat anarc.at. ”So in effect, systemd-timesyncd became the default NTP daemon in Debian in bookworm, which I find somewhat surprising.”
  12. Windows Time Service Technical Reference 17.8.2011. technet.microsoft.com. Arkistoitu 6.9.2011. Viitattu 19.9.2011.
  13. https://eclecticlight.co/2017/10/27/has-anyone-got-the-time-how-high-sierra-has-changed-time-synchronisation/
  14. The NTP Timescale and Leap Seconds eecis.udel.edu. Viitattu 6.10.2022. (englanniksi)
  15. Leap Smear developers.google.com. Viitattu 6.10.2022. (englanniksi)
  16. Suomen aika: NTP-palvelu vttresearch.com. VTT. Viitattu 22.7.2021.
  17. https://learn.microsoft.com/en-us/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings
  18. https://gist.github.com/mutin-sa/eea1c396b1e610a2da1e5550d94b0453