Het probleem voor NTP
Voordat het internet leerde hoe laat het was, stond elke computer er alleen voor. Een server in New York kon in een week drie minuten voorlopen. Een database-replica in San Francisco liep misschien twee minuten achter. Een handelsterminal in Chicago was het met geen van beide eens. Zolang machines in isolatie werkten, viel het niemand op. Maar zodra ze met elkaar begonnen te communiceren, was de chaos niet meer te negeren.
Tijd is belangrijker dan de meeste mensen beseffen. Financiële beurzen moeten weten welke transactie het eerst plaatsvond. Wanneer twee databaseservers gegevens onderling repliceren, gebruiken ze tijdstempels om te bepalen welke schrijfactie wint. Logbestanden van verschillende machines moeten in chronologische volgorde worden samengevoegd, zodat engineers storingen kunnen analyseren. Luchtverkeersleidingssystemen, medicijnuitgifteautomaten in ziekenhuizen, synchronisatiesystemen voor het elektriciteitsnet, certificaatautoriteiten die de encryptiesleutels achter elke HTTPS-verbinding uitgeven — ze zijn allemaal afhankelijk van klokken die het met elkaar eens zijn.
In het begin van de jaren tachtig was het internet nog een verzameling universitaire en overheidsnetwerken, maar het probleem was al nijpend. Machines synchroniseerden hun klokken door tijdservices te bellen via modemverbindingen — een proces dat langzaam, duur en schrikbarend onnauwkeurig was. Sommige beheerders stelden de klok met de hand in, wierpen een blik op hun horloge en typten de tijd in. De afwijking kon seconden, minuten of erger zijn. Wat het groeiende netwerk nodig had, was een protocol — een automatische, zelfcorrigerende manier voor elke machine op het internet om het eens te worden over hoe laat het was.
David Mills en de geboorte van NTP
Degene die dit probleem oploste was David L. Mills, hoogleraar informatica aan de University of Delaware. Mills hield zich sinds eind jaren zeventig bezig met tijdsynchronisatie via netwerken, en in 1985 publiceerde hij RFC 958 — de eerste formele specificatie van het Network Time Protocol. Het was niet zijn eerste poging om het probleem op te lossen — hij had eerder protocollen ontworpen met de namen DCNET en Internet Clock Service — maar NTP was degene die beklijfde.
RFC 958 beschreef een architectuur die tegelijkertijd elegant en praktisch was. In plaats van te eisen dat elke computer rechtstreeks toegang had tot een atoomklok, organiseerde NTP tijdbronnen in een hiërarchie. Het gebruikte slimme wiskunde om onvoorspelbare netwerkvertragingen te compenseren. En het was ontworpen om robuust te zijn: als een tijdbron uitviel, schakelden clients automatisch over naar een andere. Het protocol kon klokken synchroniseren over het chaotische, onbetrouwbare internet van de jaren tachtig tot op tientallen milliseconden — een prestatie die destijds bijna magisch leek.
Mills onderhield en ontwikkelde NTP gedurende bijna drie decennia, vrijwel eigenhandig. Hij schreef de referentie-implementatie. Hij beantwoordde vragen op mailinglijsten. Hij publiceerde bijgewerkte RFC's naarmate het protocol versies 2, 3 en 4 doorliep. Tegen de tijd dat hij met pensioen ging, was NTP een van de oudste internetprotocollen die nog dagelijks actief worden gebruikt — ouder dan HTTP, ouder dan SSL, ouder dan DNS zoals we het vandaag kennen. Mills overleed in januari 2024 op 85-jarige leeftijd en liet een protocol achter dat dagelijks stilletjes miljarden apparaten synchroniseert. De meeste mensen die afhankelijk zijn van zijn werk, hebben zijn naam nooit gehoord.
Hoe het stratum-systeem werkt
NTP ordent tijdbronnen in lagen die strata worden genoemd. Bovenaan staat Stratum 0: de daadwerkelijke tijdmeet-hardware. Dit zijn cesium-atoomklokken, waterstofmasers, GPS-ontvangers en andere precisie-instrumenten die een tijdsignaal produceren dat nauwkeurig is tot op miljardsten van een seconde. U kunt geen verbinding maken met een Stratum 0-apparaat via het netwerk — het zijn fysieke instrumenten, vaak vastgeschroefd in rekken van nationale laboratoria of gemonteerd op satellieten die op 20.200 kilometer hoogte om de aarde cirkelen.
Stratum 1-servers zijn computers die rechtstreeks verbonden zijn met Stratum 0-hardware, doorgaans via een seriële kabel, een speciale GPS-antenne op het dak of een directe verbinding met een cesiumklok verderop in de gang. Deze machines lezen het atoomtijdsignaal uit en stellen het beschikbaar via het netwerk. Er zijn wereldwijd ongeveer duizend openbare Stratum 1-servers, beheerd door nationale metrologische instituten, universiteiten en technologiebedrijven.
Stratum 2-servers synchroniseren met Stratum 1. Stratum 3 met Stratum 2. Elke laag voegt een kleine foutmarge en een kleine vertraging toe. De hiërarchie loopt door tot Stratum 15. Stratum 16 is een speciale waarde die "niet gesynchroniseerd" betekent — een server op Stratum 16 geeft aan dat hij geen betrouwbare tijdbron heeft en niet vertrouwd mag worden.
Het geniale van dit gelaagde ontwerp is de verdeling van de belasting. Er zijn miljarden apparaten op het internet die een nauwkeurige tijd nodig hebben, maar slechts enkele honderden atoomklokken. Als elke smartphone op aarde zou proberen zich rechtstreeks te synchroniseren met een cesiumfonteinklok bij het National Institute of Standards and Technology in Boulder, Colorado, zou het systeem onmiddellijk instorten. In plaats daarvan synchroniseert uw telefoon met een Stratum 2- of 3-server, die synchroniseert met een Stratum 1-server, die synchroniseert met de atoomklok. De belasting waaiert uit over miljoenen tussenliggende servers, en de atoomklokken blijven ongestoord.
De slimme wiskunde achter NTP
De fundamentele uitdaging van tijdsynchronisatie via netwerken is dat u niet simpelweg aan een server kunt vragen "hoe laat is het?" en het antwoord kunt gebruiken. De vraag heeft tijd nodig om door het netwerk te reizen. Het antwoord heeft tijd nodig voor de terugweg. En die twee reistijden zijn niet noodzakelijkerwijs gelijk — een pakket kan 20 milliseconden nodig hebben om de Atlantische Oceaan westwaarts over te steken en 35 milliseconden voor de terugweg oostwaarts, afhankelijk van routering, congestie en de stand van de maan.
NTP lost dit op met een uitwisseling van vier tijdstempels. De client noteert de tijd waarop hij een verzoek verstuurt (T1). De server noteert de tijd waarop hij dat verzoek ontvangt (T2). De server noteert de tijd waarop hij zijn antwoord verstuurt (T3). En de client noteert de tijd waarop hij dat antwoord ontvangt (T4). Uit deze vier getallen berekent NTP twee waarden die ertoe doen.
De retourvertraging is (T4 - T1) - (T3 - T2). Dit vertelt u hoe lang het pakket onderweg was, exclusief de tijd die de server nodig had om het verzoek te verwerken. De klokafwijking is ((T2 - T1) + (T3 - T4)) / 2. Dit is het geschatte verschil tussen de klok van de client en de klok van de server, ervan uitgaande dat de netwerkvertraging in beide richtingen ruwweg symmetrisch is.
Die symmetrieveronderstelling klopt niet altijd, en NTP weet dat. Het protocol vertrouwt niet op één enkele uitwisseling. Het bevraagt meerdere servers, verzamelt in de loop der tijd veel monsters, past statistische filtering toe om uitbijters te verwijderen, en gebruikt algoritmen met namen als het "clock selection algorithm" en het "clock clustering algorithm" om de beste bronnen te selecteren en te combineren. Het resultaat is, over het openbare internet met al zijn onvoorspelbaarheid, een synchronisatienauwkeurigheid van enkele milliseconden. Op een lokaal netwerk, waar vertragingen kort en stabiel zijn, bereikt NTP routinematig een nauwkeurigheid onder de 100 microseconden.
Waar de tijd werkelijk vandaan komt
Aan de basis van de tijdmeetpiramide staan de nationale metrologische laboratoria van de wereld. Het National Institute of Standards and Technology (NIST) in Boulder, Colorado, exploiteert een reeks cesiumfonteinklokken — apparaten die wolken cesiumatomen omhoog lanceren door een microgolfholte en hun kwantumtoestandsovergangen meten terwijl ze terugvallen. De oscillatiefrequentie van cesium-133, precies 9.192.631.770 cycli per seconde, definieert de SI-seconde sinds 1967.
De Duitse Physikalisch-Technische Bundesanstalt (PTB) in Braunschweig, het Britse National Physical Laboratory (NPL) in Teddington, het Franse LNE-SYRTE in Parijs en ongeveer 80 andere nationale laboratoria wereldwijd onderhouden hun eigen atoomklokken. Elk laboratorium produceert zijn eigen realisatie van de seconde, en deze realisaties komen niet perfect overeen. Een cesiumklok in Boulder kan over een maand enkele nanoseconden afwijken van een klok in Braunschweig.
Hier komt het Bureau International des Poids et Mesures (BIPM) in Parijs in beeld. Het BIPM houdt zelf geen klok bij. In plaats daarvan verzamelt het tijdgegevens van ongeveer 450 atoomklokken in zo'n 80 laboratoria wereldwijd, past een gewogen middelingsalgoritme toe en publiceert een berekende tijdschaal genaamd Gecoördineerde Wereldtijd, ofwel UTC. Dit middelingsproces vindt achteraf plaats — het BIPM publiceert correcties pas weken later — waardoor UTC niet in realtime beschikbaar is. Wat u daadwerkelijk synchroniseert via NTP is de realtimebenadering van elk laboratorium van UTC, aangeduid als UTC(NIST), UTC(PTB) of vergelijkbaar. De rol van het BIPM is ervoor te zorgen dat al deze benaderingen niet uit elkaar drijven.
Dan zijn er de GPS-satellieten. Elk van de 31 operationele GPS-satellieten draagt meerdere atoomklokken mee — rubidium en cesium — en zendt tijdsignalen uit als onderdeel van zijn navigatiebericht. GPS-tijd is niet identiek aan UTC (ze liep uiteen in 1980 en bevat geen schrikkelseconden), maar de afwijking wordt meegezonden in het navigatiebericht, zodat een GPS-ontvanger UTC kan berekenen. Veel Stratum 1-NTP-servers gebruiken GPS als referentieklok, omdat een ontvanger van 50 dollar en een dakantenne een tijdnauwkeurigheid van 10 nanoseconden kunnen leveren — veel goedkoper dan de aanschaf van een cesiumklok.
NTP op grote schaal
Het NTP Pool Project, gehost op pool.ntp.org, is een van de grote verhalen over vrijwillige infrastructuur op het internet. Gestart in 2003 door Adrian von Bidder is de pool een verzameling van duizenden door vrijwilligers beheerde NTP-servers, verspreid over de hele wereld. Wanneer uw computer is geconfigureerd om pool.ntp.org te gebruiken, geeft het DNS-systeem elke keer een andere set serveradressen terug, waardoor de belasting over de vrijwillige pool wordt verdeeld. Sinds 2025 bedient de pool naar schatting 50 miljoen clients per seconde en voorziet in de tijdsynchronisatiebehoeften van de meeste Linux-distributies, veel IoT-apparaten en talloze andere systemen die pool.ntp.org als standaard NTP-bron gebruiken.
Grote technologiebedrijven beheren hun eigen tijdinfrastructuur op enorme schaal. Google exploiteert een vloot servers die zijn gesynchroniseerd met atoomklokken en GPS-ontvangers in zijn datacenters. Googles tijdservice is publiek beschikbaar op time.google.com en implementeert een interessante wending: in plaats van schrikkelseconden abrupt in te voegen, gebruikt Google een techniek genaamd "leap smear", waarbij de extra seconde geleidelijk over een venster van 24 uur wordt verspreid. Dit voorkomt de softwarecrashes die abrupte schrikkelseconde-invoegingen in het verleden hebben veroorzaakt, maar het betekent dat Googles tijd tijdens een leap-smear-gebeurtenis bewust tot een halve seconde afwijkt van UTC.
Meta (voorheen Facebook) beheert een vergelijkbare interne tijdservice en heeft gedetailleerde technische blogposts gepubliceerd over het gebruik van het Precision Time Protocol (PTP) binnen zijn datacenters, bovenop GPS-gedisciplineerde grandmaster-klokken. Amazon biedt de Amazon Time Sync Service aan, beschikbaar voor alle AWS-instanties. Cloudflare draait een openbare NTP-service en is een pleitbezorger van Roughtime — een door Google ontwikkeld protocol dat cryptografisch bewijs toevoegt aan tijdantwoorden, zodat clients kunnen verifiëren dat ze niet worden misleid.
Wanneer NTP misgaat
Op 30 juni 2012 werd om middernacht een schrikkelseconde ingevoegd in UTC. De extra seconde — 23:59:60 — veroorzaakte een bug in de tijdmeetcode van de Linux-kernel waardoor de hoogresolutietimer van het systeem op hol sloeg. Processen die afhankelijk waren van deze timers verbruikten plotseling 100 procent van hun CPU-cores en draaiden in strakke lussen. Reddit ging plat. Mozilla ging plat. Gawker ging plat. Het incheksysteem van Qantas Airlines crashte, waardoor passagiers strandden. StumbleUpon, FourSquare, Yelp en LinkedIn meldden allemaal verstoringen. De oplossing was ofwel de getroffen systemen herstarten, ofwel de klok handmatig instellen — wat ironisch aanvoelde gezien het feit dat het probleem begon met een poging om klokken nauwkeurig te houden.
GPS-spoofing vormt een verraderlijker gevaar. Omdat GPS-signalen aankomen met extreem laag vermogen — ongeveer 10^-16 watt aan het aardoppervlak — kunnen ze worden overstemd door een relatief goedkope zender die valse signalen uitzendt. Een vervalst GPS-signaal kan elke Stratum 1-NTP-server die GPS als referentie gebruikt een verkeerde tijd voeden. In 2013 demonstreerden onderzoekers van de University of Texas in Austin dat ze een GPS-ontvanger vanaf een kilometer afstand konden spoofen met apparatuur van ongeveer 3.000 dollar, waarbij ze de gerapporteerde tijd geleidelijk verschoven zonder enig alarm te activeren.
In 2016 maakte Cloudflare een breed gerapporteerd incident mee waarbij sommige van zijn servers kort datums in 2026 of 1970 aan clients teruggaven vanwege een bug in de manier waarop ze NTP verwerkten. Subtielere storingen komen voortdurend voor. Verkeerd geconfigureerde NTP-servers die zich als Stratum 1 aankondigen terwijl ze feitelijk vrij lopen, veroorzaken een cascade van onnauwkeurigheden bij elke client die ze vertrouwt. Firewalls die NTP-verkeer blokkeren laten machines stilletjes afdrijven. Virtuele machines in cloudomgevingen staan berucht om klokafwijkingen, omdat de CPU-planning van de hypervisor onvoorspelbare vertragingen veroorzaakt in de tijdmeting van het gastbesturingssysteem.
Deze faalscenario's verklaren waarom NTP-authenticatie belangrijk is. Het oorspronkelijke NTP-protocol had geen manier voor een client om te verifiëren dat een tijdantwoord werkelijk afkomstig was van de server die het beweerde te zijn. Een aanvaller op het netwerkpad kon tijdantwoorden onderweg manipuleren. Network Time Security (NTS), gespecificeerd in RFC 8915 en gepubliceerd in 2020, voegt TLS-gebaseerde authenticatie toe aan NTP. De adoptie is traag verlopen — het meeste NTP-verkeer op het internet is nog steeds niet geauthenticeerd — maar grote aanbieders zoals Cloudflare ondersteunen NTS inmiddels, en de trend wijst richting universele adoptie.
GPS-tijd vs. NTP
Uw smartphone gebruikt vrijwel zeker geen NTP als primaire tijdbron. In plaats daarvan gebruikt het de tijd die door het mobiele netwerk wordt uitgezonden, die op zijn beurt is afgeleid van GPS. GPS-satellieten dragen atoomklokken aan boord en zenden hun huidige tijd uit als onderdeel van elk navigatiesignaal. De ontvanger in uw telefoon berekent, naast uw breedte- en lengtegraad, de tijd uit de satellietsignalen en gebruikt deze om de klok van de telefoon in te stellen.
GPS-tijd en UTC zijn niet hetzelfde. Toen GPS in 1980 werd gelanceerd, was het gesynchroniseerd met UTC. Maar UTC voegt af en toe schrikkelseconden in om gelijk te blijven lopen met de vertragende rotatie van de aarde, en GPS doet dat niet. Sinds 2025 loopt GPS-tijd 18 seconden voor op UTC. Het GPS-navigatiebericht bevat de huidige afwijking, zodat ontvangers tussen beide kunnen omrekenen, maar het onderscheid is van belang voor engineers die met ruwe GPS-gegevens werken.
Moderne smartphones gebruiken een hybride aanpak. Het GPS- of mobielenetwerktijdsignaal biedt een grove synchronisatie, doorgaans nauwkeurig tot op enkele tientallen nanoseconden. Maar GPS-ontvangst is onregelmatig — de telefoon kan zich binnenshuis bevinden, in een metro of in vliegtuigmodus. NTP vult de gaten. Apple, Google en de meeste telefoonproducenten configureren hun apparaten om ook NTP-servers te bevragen (Apple gebruikt time.apple.com, Android-apparaten gebruiken time.android.com) om de nauwkeurigheid te behouden wanneer satellietsignalen niet beschikbaar zijn. De twee systemen vullen elkaar aan: GPS biedt absolute nauwkeurigheid wanneer de hemel zichtbaar is, en NTP zorgt voor continue correctie wanneer dat niet het geval is.
Het Y2038-probleem
Unix-tijd, het systeem dat door vrijwel elke server, telefoon en ingebed apparaat op de planeet wordt gebruikt, telt het aantal seconden dat is verstreken sinds middernacht UTC op 1 januari 1970. Decennialang werd deze teller opgeslagen als een 32-bits geheel getal met teken, dat waarden tot 2.147.483.647 kan bevatten. Dat aantal seconden na het Unix-epoch komt overeen met 03:14:07 UTC op 19 januari 2038. Een seconde later loopt de teller over, en systemen die nog 32-bits tijdstempels gebruiken, zullen de datum interpreteren als 13 december 1901.
NTP heeft zijn eigen versie van dit probleem. Het NTP-tijdstempelformaat gebruikt een 64-bits waarde: 32 bits voor de seconden sinds 1 januari 1900 en 32 bits voor de fractie van een seconde. Het secondenveld loopt over op 7 februari 2036 — twee jaar voor de Unix Y2038-deadline. NTPv4, de huidige versie van het protocol, lost dit op door "era-nummers" te definiëren die duidelijk maken tot welke 136-jarige cyclus een tijdstempel behoort, maar beide eindpunten moeten de era-logica correct implementeren.
De meeste moderne servers, desktops en telefoons gebruiken al 64-bits besturingssystemen met 64-bits tijdrepresentaties, die pas over ongeveer 292 miljard jaar zullen overlopen. Het gevaar schuilt in de lange staart van ingebedde systemen: industriële controllers, gebouwautomatiseringssystemen, medische apparaten, automobiel-ECU's en de miljarden IoT-apparaten die op 32-bits firmware draaien en mogelijk nooit een update zullen ontvangen. Veel van deze apparaten gebruiken NTP om hun klokken in te stellen. Het stille, weinig glamoureuze werk van het identificeren en upgraden van kwetsbare systemen is gaande, maar anders dan bij Y2K is er geen enkele deadline die de publieke aandacht focust. De NTP-rollover van 2036 en de Unix-rollover van 2038 zullen plaatsvinden, of elke laatste ingebedde thermostaat en verkeerslichtcontroller nu wel of niet is gepatcht.
Veertig jaar en het telt door
NTP synchroniseert de klokken van het internet al vier decennia. Het overleefde de overgang van ARPANET naar het commerciële internet, van inbelverbindingen naar glasvezel, van mainframes naar smartphones. David Mills ontwierp een protocol dat zo robuust en zo goed geschikt was voor zijn taak, dat het vrijwel alles heeft overleefd waarvoor het oorspronkelijk werd gebouwd. De machines zijn veranderd, de netwerken zijn veranderd, de snelheden zijn met een factor miljoen toegenomen, en NTP werkt nog steeds.
Maar de eisen aan tijdmeting groeien. 5G-mobiele netwerken vereisen synchronisatie met een nauwkeurigheid van tientallen nanoseconden tussen basisstations. Autonome voertuigen hebben nauwkeurige timing nodig om gegevens van lidar, radar en camera's samen te voegen. Hoogfrequente handelsfirma's meten latentie in nanoseconden en betalen miljoenen voor een voordeel van enkele microseconden. Voor deze toepassingen is de millisecondennauwkeurigheid van NTP niet voldoende. Het Precision Time Protocol (PTP), gedefinieerd in IEEE 1588, kan synchronisatie op nanosecondeniveau bereiken met speciale netwerkhardware. PTP is al standaard in telecommunicatie, omroep en financiële handelsnetwerken.
Maar voor de miljarden alledaagse apparaten — de laptop op uw bureau, de server in een datacenter, de thermostaat aan uw muur, de camera in uw deurbel — blijft NTP de onzichtbare ruggengraat van gesynchroniseerde tijd. Het is een van die fundamentele internetprotocollen die zo goed werken dat bijna niemand erover nadenkt. Elke keer dat u naar de klok op uw telefoon kijkt en die overeenkomt met de klok op uw laptop, die overeenkomt met de klok aan de muur op de luchthaven, die overeenkomt met de vertrektijd op het vluchtinformatiebord, ziet u het werk van een protocol dat vier decennia geleden door een professor in Delaware werd ontworpen — het tikt zonder te klagen door en houdt de wereld synchroon.