Meta implementeert een netwerktimingprotocol, Precision Time Protocol (PTP), om de nauwkeurigheid en precisie in onze netwerken en in veel gebruikssituaties te verbeteren. PTP biedt een niveau van timingnauwkeurigheid en -precisie die fundamenteel zullen zijn naarmate we verder bouwen aan de metaverse en de steeds complexere netwerken en systemen ontwikkelen die nodig zijn.
Om de miljarden mensen over de hele wereld te ondersteunen die onze technologieën gebruiken, moeten we erop kunnen vertrouwen dat elke server — in elk datacenter — weet en stemt ermee in hoe laat het is, zo nauwkeurig en precies mogelijk. Functies zoals berichten, videoconferenties, online gaming en zelfs het bijwerken of verwijderen van inhoud zijn afhankelijk van nauwkeurige, nauwkeurige timing tussen meerdere servers en soms zelfs tussen meerdere datacenters. Hoe meer servers er tussen eindpunten staan, hoe belangrijker synchronisatie is. Als slechts één server niet synchroon loopt met de rest, kan dit merkbare vertragingen en fouten veroorzaken.
Netwerktijdprotocol (NTP) heeft ons goed gediend, maar bereikt zijn grenzen terwijl we werken aan het verbeteren van onze producten en diensten en het introduceren van nieuwe. PTP biedt een niveau van nauwkeurigheid en precisie dat NTP simpelweg niet kan bereiken, en het zal de kans op netwerkvertragingen en fouten aanzienlijk verminderen.
Na een succesvolle pilot zijn we begonnen met het uitbreiden van PTP naar al onze datacenters.
Waarom we PTP nodig hebben
Dus, wat is PTP? En wat maakt het zo belangrijk?
Het komt allemaal neer op nauwkeurigheid, of hoe dicht de tijdmeting van een computer de werkelijke tijd benadert, en precisie, of hoe dicht tijdmetingen van computers zijn voor elkaar.
In 2002, PTP werd geïntroduceerd als een methode om klokken nauwkeurig te synchroniseren in een gedistribueerd systeem. Een netwerkcomputer, een Stratum genaamd, houdt de huidige tijd bij en stuurt een tijdreferentie naar elke andere computer in een netwerk die vraagt hoe laat het is. De huidige tijd wordt naar de computer gestuurd via een netwerkdatapakket (een proces dat synchronisatieberichten wordt genoemd) dat wordt gebruikt om de klok van de computer bij te werken. In wezen houdt de ene machine tijd vast voor de andere machines op het netwerk.
Vanwege netwerklatentie is die tijd echter niet langer nauwkeurig wanneer deze aankomt op de ontvangende computer. Latentie (ook wel vertraging genoemd) kan om verschillende redenen optreden, waaronder:
- De snelheid van een signaal (elektrisch of optisch) dat over een medium (draad of vezel) reist, is eindig (vaak benaderd met de snelheid van het licht).
- De conversietijd in de zendontvangers die voor die signalen worden gebruikt, kan variëren op basis van de temperatuur van de zendontvanger.
- De kwaliteit van de netwerkrouterswitches en netwerkinterfaces.
- De software/driver/firmware-stack die moet worden uitgevoerd om een netwerkpakket te verzenden of te ontvangen (ook wel de open systeeminterconnectie of OSI genoemd).
Er is een bekend gezegde: “Als je het kunt meten, kun je het managen.” Latentie is onvermijdelijk en kan niet worden vermeden, maar we kunnen het compenseren als we het kunnen meten. Als de latentie wordt gemeten, kan deze worden toegevoegd aan de huidige tijd van het synchronisatiebericht aan de clientzijde. Het meten van de latentie tussen de tijdreferentiecomputer en de clientcomputer is echter geen triviale taak, omdat er geen globale klok is en elk van deze computers zijn eigen klok heeft.
Om de latentie en de klok verschil tussen de referentie en de klant (ook wel offset genoemd) moeten twee aannames worden gedaan: consistentie en symmetrie. Consistentie betekent dat de latentie waarmee een pakket wordt geconfronteerd tijdens het reizen over het netwerk consistent is, en symmetrie betekent dat de latentie die van de referentiecomputer naar de clientcomputer gaat, gelijk moet zijn aan de latentie die teruggaat in de andere richting (clientcomputer naar referentiecomputer). Elke onvolkomenheid in de consistentie en symmetrie zal de precisie in de kloksynchronisatie van de clientcomputer verminderen.
Om de precisie van kloksynchronisatie te verbeteren, is het noodzakelijk om de consistentie en symmetrie in ons netwerk te maximaliseren. Dit is waar PTP om de hoek komt kijken. PTP gebruikt hardware-tijdstempels en transparante klokken om respectievelijk de consistentie en symmetrie te verbeteren.
PTP wordt als netwerk al zwaar ondersteund door de telecomindustrie overgang naar 5G-connectiviteit. De extra precisie en nauwkeurigheid van PTP zullen van vitaal belang zijn, aangezien 5G meer dan ooit netwerkbandbreedte naar apparaten over de hele wereld brengt. Hoewel de telecomindustrie PTP al meer dan tien jaar gebruikt, zijn de hyperscale datacenters tot nu toe traag geweest met het invoeren van PTP.
In vergelijking met NTP kunnen hosts met PTP veel nauwkeuriger worden gesynchroniseerd met één gemeenschappelijke tijdbron. Waar NTP precisie binnen milliseconden mogelijk maakt, zorgt PTP voor precisie binnen nanoseconden.
Hoe PTP beter presteert dan NTP
Het migreren van onze systemen naar PTP heeft jaren van engineering gekost vanwege een fundamenteel verschil in hoe NTP- en PTP-systemen werken.
Systemen die NTP gebruiken, zijn asynchroon. Het zijn gedistribueerde systemen zonder globale klok. Ze doen hun werk onafhankelijk, maar ze checken met elkaar in om er zeker van te zijn dat ze synchroon lopen. Het probleem hiermee is dat naarmate een systeem groeit, er steeds meer van deze check-ins nodig zijn. En hoe meer check-ins er worden gedaan, hoe langzamer het netwerk werkt.
NTP is ook vatbaar voor variantie en latentie vanwege de manier waarop het de tijd bijhoudt. Afhankelijk van de implementatie gebruikt NTP een logische klok of een fysieke klokmethode. Een logische klok is een oudere methode die dingen timet als een opeenvolging van stappen – de een na de ander.
Een fysieke klok is een nieuwere methode die wordt gebruikt in gedistribueerde databases waar taken op een klok worden gepland en dienovereenkomstig worden geordend. In plaats van een centrale, gemeenschappelijke klok gebruikt elk knooppunt zijn eigen klok. Om ervoor te zorgen dat al deze klokken synchroon lopen, zullen technici opzettelijk een vertraging toevoegen om netwerklatentie te compenseren.
Een gemakkelijke manier om over NTP na te denken, is door te denken aan de klok in een magnetron. Een magnetron houdt de tijd op het apparaat bij. Als er een tijdsverschuiving is, zoals de overgang naar zomertijd, moet de klok handmatig worden aangepast en worden getoetst aan een of andere bron van waarheid (bijvoorbeeld een andere vertrouwde klok).
PTP daarentegen werkt meer als de klok op een smartphone. Wanneer zomertijd plaatsvindt of de telefoon naar een nieuwe tijdzone gaat, werkt de klok van een smartphone de tijd zelf bij door de tijd via een netwerk te vergelijken. Op dezelfde manier waarop klokken van smartphones zichzelf kunnen updaten, maakt PTP het mogelijk systemen te synchroniseren en te vertrouwen op een enkele bron van waarheid voor timing.
Migreren van NTP naar PTP
Hoewel PTP nauwkeuriger is dan NTP (meting in nanoseconden versus milliseconden), stelt het ook meer eisen aan netwerkhardware. Terwijl de technici van Meta bezig waren met de implementatie van PTP, ontdekten we al snel dat kant-en-klare componenten niet waren ontworpen om PTP op grote schaal aan te kunnen. Een belangrijk onderdeel van PTP, de serverklok, levert standaardtijdinformatie aan andere klokken in een netwerk. Zie het als een ijsmachine, die pakketjes tijd verspreidt naar alle andere machines op het netwerk als ijsblokjes.
Er zijn ook grensklokken en transparante klokken die tussen de ServerClock en de verschillende netwerkknooppunten zitten. Grensklokken zijn als middenmanagers die communiceren en synchroniseren met de serverklok en tijd geven aan de onderliggende apparaten. Stel je voor dat er ijsblokjes door een pijp worden gestuurd, maar de pijp wordt steeds heter. Boundary klokken zijn als een koelkast die de ijsblokjes vasthoudt. Het probleem is dat als het ijs al een beetje gesmolten is, de koelkast er alleen maar voor zorgt dat het niet verder smelt. Transparante klokken proberen dit te verminderen door tijdvertragingen te meten en aan te passen om de synchronisatie te verbeteren. Ze zijn als isolatie op leidingen.
We hebben besloten om grensklokken helemaal uit het systeem te verwijderen, zodat elke machine rechtstreeks met de serverklok zou praten. Maar hoe synchroniseert u uw machines met een enkele klok op wereldschaal?
Meestal vertrouwt u op GPS-synchronisatie. Je kunt zeggen dat een datacenter in de Verenigde Staten net zo nauwkeurig is als bijvoorbeeld een datacenter in Ierland, omdat je weet dat de GPS nauwkeurig is. Maar dit is alleen in theorie waar, omdat er geen manier is om op twee plaatsen tegelijk te zijn om het te verifiëren. Maar we wilden het echt verifiëren.
Om onze eigen bron van waarheid te creëren, hebben we die van onszelf gebouwd Tijd apparaat, een open source-apparaat dat PTP op de schaal van Meta kan ondersteunen. De Time Appliance bestaat uit een GNSS-ontvanger en een geminiaturiseerde atoomklok (MAC) en kan de tijd nauwkeurig bijhouden, zelfs als de GNSS-verbinding is verbroken. Tijdens het bouwen van onze Time Appliance hebben we ook een Time Card uitgevonden, een PCIe-kaart die elke basisserver in een tijdapparaat kan veranderen. Vervolgens werkten we samen met het Open Compute Project om het Open Compute Time Appliance-project en open-source elk aspect van de Tijdserver openen.
Voordelen van PTP
Het is niet mogelijk om door te gaan naar de rekenplatforms van de volgende generatie en de metaverse zonder de strakke synchronisatievereisten op te lossen die PTP kan aanpakken. PTP biedt voordelen voor de producten en diensten van de toekomst die de metaverse zullen stimuleren, maar heeft ook belangrijke implicaties voor de producten en diensten van vandaag.
Denk aan zoiets gewoons als het verzenden van een bericht via Messenger. Dankzij netwerktiming kan iemand een bericht naar een vriend aan de andere kant van de wereld sturen en dit in realtime laten verschijnen. Dit gebeurt niet als de timing tussen servers niet correct is. PTP zal zelfs alledaagse netwerktransacties als deze nog sneller maken. En het zal systemen helpen netwerkcongestie beter te detecteren en te voorkomen.
Een ander voorbeeld waarbij PTP kan helpen, is het verminderen van vertragingen bij het gamen, een berucht pijnpunt voor iedereen die online games heeft gespeeld. Vertraging treedt op omdat systemen niet synchroon lopen. En als gamen in de cloud steeds gewoner wordt en de games zelf grafisch intensiever worden, zal het vermogen van PTP om lag te verminderen het een belangrijk onderdeel van de toekomst van gaming maken.
En voor meer zakelijke mensen geldt hetzelfde voor videoconferenties en werken op afstand. Alles van de videoconferentiegesprekken van vandaag tot de nieuwe mogelijkheden met werken en samenwerken op afstand zullen staan om de vruchten van PTP te plukken.
We zijn van mening dat PTP, naast zijn andere toepassingen, de potentie heeft om synchronisatie van GPU’s tussen datacenters mogelijk te maken, wat een ongekende schaal in AI-mogelijkheden zou kunnen openen die vandaag moeilijk te bereiken is. Dit nauwkeurigheidsniveau zal helpen zorgen voor synchronisatie van niet alleen de computers op onze netwerken van vandaag, maar ook de geavanceerde systemen die in de toekomst op onze netwerken zullen staan.
Volgende stappen voor PTP
Om de acceptatie van PTP te vergroten, zijn we open-sourcing van al ons PTP-gerelateerd werk (onze Time Appliance en broncode, clientsoftware en transparante klok). Leveranciers die netwerkapparatuur produceren, moeten nieuwe apparatuur introduceren die PTP ondersteunt, en wij willen hen daarbij helpen.
Wij geloven dat PTP de komende jaren de standaard zal worden voor het bijhouden van de tijd in computernetwerken, en dat het een fundamenteel onderdeel zal zijn van de technologieën die de metaverse zullen aansturen.