Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

Open-sourcing een nauwkeuriger tijdapparaat

Facebook-ingenieurs hebben een open computertijdapparaat gebouwd en open source gemaakt, een belangrijk onderdeel van de moderne timinginfrastructuur. Om dit mogelijk te maken, bedachten we de tijdkaart - een PCI Express (PCIe) -kaart die bijna elke standaardserver in een tijdapparaat kan veranderen. Met de hulp van de OCP-gemeenschap hebben we het Open Compute Time Appliance Project opgezet en hebben we elk aspect van de Open Time Server open source gemaakt. Dit artikel schetst de ontwikkeling van de tijdkaart.

In maart 2020 maakten we bekend dat we bezig waren de servers in onze datacenters (samen met onze consumentenproducten) over te schakelen naar een nieuwe tijdwaarnemingsdienst op basis van het Network Time Protocol (NTP). De nieuwe dienst, intern gebouwd en later open source, was beter schaalbaar en verbeterde de nauwkeurigheid van de tijdregistratie in de Facebook-infrastructuur van 10 milliseconden tot 100 microseconden. Nauwkeuriger bijhouden van de tijd maakt geavanceerder infrastructuurbeheer in onze datacenters mogelijk, evenals snellere prestaties van gedistribueerde databases.

De nieuwe op NTP gebaseerde tijdarchitectuur maakt gebruik van een Stratum 1 - een belangrijk onderdeel dat direct is gekoppeld aan een gezaghebbende tijdsbron, zoals een Global Navigation Satellite System (GNSS) of een cesiumklok, zoals hieronder weergegeven:

Veel bedrijven vertrouwen op openbare NTP-pools zoals time.facebook.com om als hun Stratum 1 te fungeren. Deze aanpak heeft echter zijn nadelen. Deze pools vergroten de afhankelijkheid van internetconnectiviteit en kunnen van invloed zijn op de algehele beveiliging en betrouwbaarheid van het systeem. Als de verbinding bijvoorbeeld wegvalt of een externe service uitvalt, kan dit leiden tot uitval of een afwijkende timing voor het afhankelijke systeem.

Om deze afhankelijkheden te verwijderen, hebben we een nieuw speciaal stuk hardware gebouwd, een tijdapparaat genaamd, dat bestaat uit een GNSS-ontvanger en een geminiaturiseerde atoomklok (MAC). Gebruikers van tijdapparatuur kunnen de tijd nauwkeurig bijhouden, zelfs in het geval van verlies van de GNSS-verbinding. Tijdens het bouwen van ons tijdapparaat hebben we ook een tijdkaart uitgevonden, een PCIe-kaart die van elke standaardserver een tijdapparaat kan maken.

Waarom een ​​nieuw tijdapparaat nodig?

Kant-en-klare apparaten hebben hun eigen voordelen. Ze werken direct uit de doos en omdat veel van deze apparaten al tientallen jaren op de markt zijn, zijn ze beproefd en over het algemeen stabiel genoeg om lange tijd zonder toezicht te werken.

Deze oplossingen brengen echter ook nadelen met zich mee:

  • In de meeste gevallen zijn ze verouderd en vaak kwetsbaar voor problemen met de softwarebeveiliging. Functieverzoeken en beveiligingsoplossingen kunnen maanden of zelfs jaren duren om te implementeren.
  • Deze apparaten worden geleverd met closed source-software, waardoor het configureren en bewaken ervan beperkt en uitdagend is. Terwijl de configuratie handmatig wordt gedaan via een eigen CLI of web-UI, gebruikt monitoring vaak SNMP, een protocol dat niet voor dit doel is ontworpen.
  • Ze bevatten eigen hardware die niet door de gebruiker kan worden onderhouden. Wanneer een enkel onderdeel kapot gaat, is er geen gemakkelijke manier om het te vervangen. Je moet het ofwel naar de verkoper sturen voor reparatie of een heel nieuw apparaat kopen.
  • Omdat kant-en-klare apparaten in kleine hoeveelheden worden gemaakt, hebben ze een hogere opslag en kunnen ze in de loop van de tijd erg duur worden om te gebruiken. De hoge kosten die gepaard gaan met kant-en-klare apparaten zorgen voor beperkingen voor velen in de branche. Een open-sourceversie zou de deur openen naar bredere toepassingen.

Tot nu toe moesten bedrijven deze afwegingen accepteren en werken binnen de hierboven beschreven beperkingen. We besloten dat het tijd was om iets anders te proberen, dus we hebben serieus gekeken naar wat er nodig zou zijn om een ​​nieuw tijdapparaat te bouwen, met name een die de x86-architectuur gebruikt.

Prototyping van het tijdapparaat

Hier is een blokschema van wat we voor ogen hadden:

Het begint allemaal met een GNSS-ontvanger die zowel de tijd van de dag (ToD) als de ene puls per seconde (PPS) levert. Wanneer de ontvanger wordt ondersteund door een zeer stabiele oscillator (bijvoorbeeld een atoomklok of een ovengestuurde kristaloscillator), kan deze tijd leveren die nanoseconden nauwkeurig is. De tijd wordt via het netwerk geleverd via een kant-en-klare netwerkkaart die PPS in/out en hardware-tijdstempeling van pakketten ondersteunt, zoals de NVIDIA Mellanox ConnectX-6 Dx die in ons oorspronkelijke apparaat werd gebruikt.

De uitvoer van de GPSDO werd ingevoerd in de EXT-tijdstempel van de ConnectX-6 Dx-netwerkkaart. Bovendien levert de GNSS-ontvanger de ToD via een seriële poort en een populair GPS-rapportageprotocol genaamd NMEA. Door de ts2phc-tool te gebruiken, konden we de fysieke hardwareklok van de NIC synchroniseren tot enkele tientallen nanoseconden, zoals hieronder weergegeven:

Ons prototype gaf ons het vertrouwen dat het bouwen van zo'n apparaat mogelijk was. Er was echter veel ruimte voor verbetering.

Om de betrouwbaarheid van het systeem te vergroten, hebben we het opgedeeld in twee grote delen:laadvermogen en levering. De payload is de precisietijd die in wezen een interpolatiesysteem is dat wordt aangedreven door een lokale oscillator om nanoseconden tijdmeting te creëren tussen opeenvolgende PPS-signalen die door de GNSS-ontvanger worden ontvangen. We hebben overwogen om de GNSS-ontvanger, de zeer stabiele lokale oscillator en de benodigde verwerkingslogica in een PCIe-vormfactor te plaatsen, en we noemden het de tijdkaart (zie hieronder).

Hier is de schets van de tijdkaart die we aanvankelijk voor ogen hadden op een servet:

We gebruikten een ingebouwde MAC, een multiband GNSS-ontvanger en een FPGA om de tijdmachine te implementeren. De taak van de tijdmachine is om in nanoseconden de granulariteit te interpoleren die nodig is tussen opeenvolgende PPS-signalen. De GNSS-ontvanger levert naast een 1 PPS-signaal ook een ToD. In het geval van verlies van GNSS-ontvangst, vertrouwt de tijdmachine op de voortdurende synchronisatie van de atoomklok op basis van een gemiddeld geheel van de opeenvolgende PPS-pulsen.

De tijdmachine bestaat uit een set verwerkingsblokken die zijn geïmplementeerd op de FPGA van de tijdkaart. Deze verwerkingsblokken omvatten verschillende filter-, synchronisatie-, foutcontrole-, tijdstempel- en PCIe-gerelateerde subsystemen om de tijdkaart te laten werken als een systeemrandapparaat dat nauwkeurige tijd levert voor de open-tijdserver.

Opgemerkt moet worden dat de nauwkeurigheid van een GNSS-ontvanger binnen tientallen nanoseconden ligt, terwijl de vereiste doorlopende synchronisatie (kalibratie) van de MAC binnen 10 picoseconden (1.000 keer nauwkeuriger) ligt.

In eerste instantie klinkt dit onmogelijk. Het GNSS-systeem biedt echter timing op basis van continue communicatie met standaardtijd. Dankzij deze mogelijkheid kan de GNSS-boordklok constant worden gesynchroniseerd met een tijdbron die aan zijn constellatie wordt geleverd, waardoor er vrijwel geen driftfout op de lange termijn is. Daarom wordt de MAC-kalibratie uitgevoerd via een vergelijking van een MAC-gestuurde teller en de door GNSS geleverde PPS-puls. Door meer tijd te nemen voor de vergelijking, kunnen we een hogere kalibratieprecisie voor de MAC bereiken. Dit is natuurlijk met de overweging dat de MAC een lineair tijdinvariant systeem is.

In dit blokdiagram ziet u een 10 MHz-signaal van de rubidiumklok die de tijdmachine binnenkomt. Dit kloksignaal kan vervangen worden door een 10 MHz SMA ingang. Het kloksignaal wordt ingevoerd in een digitale klokmodule en een digitale PLL (12,5x het resultaat van 25 en gedeeld door 2), wat resulteert in een frequentie van 125 MHz. De 125 MHz (perioden van 8 nanoseconden) worden ingevoerd in de ToD-eenheid.

De ToD-eenheid associeert de stappen van 8 nanoseconden in digitale waarden van 0b000001, aangezien de LSB (minst significante bit) wordt geassocieerd met 250 picoseconden (aangedreven door 32 bits subseconde nauwkeurigheid op de gPTP).

Aan de andere kant wordt het PPS-signaal dat gefilterd wordt door het GNSS gebruikt om een ​​snapshot te maken van het resultaat van de incrementen. Als de 125 MHz nauwkeurig is, moeten de geaccumuleerde stappen resulteren in intervallen van precies 1 seconde. In werkelijkheid is er echter altijd een mismatch tussen de geaccumuleerde waarde en een theoretisch interval van 1 seconde.


De waarden kunnen worden aangepast met behulp van een interne PI (proportionele en integrale) regelkring. De aanpassing kan worden gedaan door ofwel de 0b000001-waarde te wijzigen in stappen van 250 picoseconden of de 12,5x PPL fijn af te stemmen. Bovendien kunnen verdere (fijner afgestelde) aanpassingen worden toegepast door de rubidium-oscillator te sturen.

Hoe langer een GNSS niet beschikbaar is, hoe meer tijdnauwkeurigheid verloren gaat. De snelheid van de verslechtering van de tijdnauwkeurigheid wordt holdover genoemd. Meestal wordt holdover beschreven als een tijdsbestek voor nauwkeurigheid en hoe lang het duurt om deze te overschrijden. De holdover van een MAC is bijvoorbeeld binnen 1 microseconde gedurende 24 uur. Dit betekent dat na 24 uur de tijdnauwkeurigheid niet-deterministisch is, maar nauwkeurig binnen 1 microseconde.

Als alternatieve benadering rekenen we op de nieuwe generatie chip-schaal en geminiaturiseerde atoomklokken met hun vermogen om PPS-invoer te ontvangen. Hierdoor kan de tijdmachine van de tijdkaart de ultraprecieze syntonisatie van de zeer stabiele oscillator overdragen aan de component in plaats van digitale bronnen te gebruiken om het doel te bereiken.

Als algemeen principe geldt:hoe nauwkeuriger de afstemming, hoe beter de holdover-prestaties die kunnen worden bereikt. Wat de levering betreft, zorgt het gebruik van een NIC met nauwkeurige timing ervoor dat netwerkpakketten zeer nauwkeurige tijdstempels ontvangen, wat van cruciaal belang is om de tijd nauwkeurig te houden, aangezien deze wordt gedeeld met andere servers in het netwerk. Zo'n NIC kan ook direct een PPS-signaal van de prikkaart ontvangen.

Na het concept van het idee en verschillende implementatie-iteraties, waren we in staat om een ​​prototype samen te stellen.

Het tijdapparaat in actie

Met de tijdkaart kan elke x86-machine met een NIC die hardwarematige tijdstempels kan gebruiken, worden omgezet in een tijdapparaat. Dit systeem is onafhankelijk van het feit of het werkt voor NTP, PTP, SyncE of een ander tijdsynchronisatieprotocol, aangezien de nauwkeurigheid en stabiliteit die door de tijdkaart wordt geboden voor bijna elk systeem voldoende is.

Het mooie van het gebruik van PCIe-kaarten is dat de installatie zelfs op een thuis-pc kan worden gemonteerd, zolang er maar voldoende PCIe-slots beschikbaar zijn.

De volgende stap zou zijn om Linux te installeren. Het stuurprogramma voor de tijdkaart is opgenomen in Linux-kernel 5.15 of nieuwer. Of het kan worden gebouwd vanuit de OCP GitHub-repository op kernel 5.12 of nieuwer.

De bestuurder zal verschillende apparaten blootleggen, waaronder de PHC-klok, GNSS, PPS en atoomklokserie:

$ ls -l /sys/class/timecard/ocp0/

lrwxrwxrwx. 1 root 0 3 aug 19:49 apparaat -> ../../../0000:04:00.0/

-r–r–r–. 1 root 4096 3 aug 19:49 gnss_sync

lrwxrwxrwx. 1 root 0 3 aug 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/

lrwxrwxrwx. 1 root 0 3 aug 19:49 pps -> ../../../../../virtual/pps/pps1/

lrwxrwxrwx. 1 wortel 0 3 aug 19:49 ptp -> ../../ptp/ptp2/

lrwxrwxrwx. 1 root 0 3 aug 19:49 ttyGNSS -> ../../tty/ttyS7/

lrwxrwxrwx. 1 root 0 3 aug 19:49 ttyMAC -> ../../tty/ttyS8/

Het stuurprogramma stelt ons ook in staat om de tijdkaart, de GNSS-ontvanger en de atoomklokstatus te controleren en een nieuwe FPGA-bitstream te flashen met behulp van de devlink-cli.

Het enige dat u nog hoeft te doen, is de NTP- en/of PTP-server configureren om de tijdkaart als referentieklok te gebruiken. Om chrony te configureren, hoeft u alleen het refclock-attribuut op te geven:

$ grep refclock /etc/chrony.conf
refclock PHC /dev/ptp2 tai poll 0 vertrouwen

En geniet van een zeer nauwkeurige en stabiele NTP Stratum 1-server:

$ chronyc-bronnen
210 Aantal bronnen =1
MS Naam/IP-adres Stratum Poll Bereik LastRx Laatste voorbeeld
===============================================================================
#* PHC0 0 0 377 1 +4ns[ +4ns] +/- 36ns

Voor de PTP-server (bijvoorbeeld ptp4u) zal men eerst de tijdkaart PHC moeten synchroniseren met de NIC PHC. Dit kan eenvoudig worden gedaan door de phc2sys-tool te gebruiken die de klokwaarden synchroniseert met de hoge precisie die gewoonlijk binnen enkele cijfers van nanoseconden blijft:

$ phc2sys -s /dev/ptp2 -c eth0 -O 0 -m

Voor meer precisie wordt aanbevolen om de tijdkaart en de NIC op dezelfde CPU PCIe-baan aan te sluiten. Voor meer precisie kan men de PPS-uitgang van de tijdkaart aansluiten op de PPS-ingang van de NIC.

Om de precisie te valideren en te bevestigen, hebben we een extern validatieapparaat, Calnex Sentinel genaamd, gebruikt dat via verschillende schakelaars en een onafhankelijke GNSS-antenne op hetzelfde netwerk is aangesloten. Het kan zowel PPS-tests als NTP- en/of PTP-protocollen uitvoeren:

De blauwe lijn geeft NTP-meetresultaten weer. De precisie blijft binnen ±40 microseconden gedurende het meetinterval van 48 uur.

De oranje lijn geeft de PTP-meetresultaten weer. De offset is praktisch 0, variërend binnen het bereik van nanoseconden.

Inderdaad, als we 1 PPS vergelijken tussen de output van de tijdkaart en de interne referentie van de Calnex Sentinel, zien we dat de gecombineerde fout binnen ±200 nanoseconden ligt:

Maar wat nog belangrijker is, is dat deze metingen de stabiliteit van de outputs van het tijdapparaat aantonen.

In het geval van verlies van het GNSS-signaal, moeten we ervoor zorgen dat de tijdsverloop (ook bekend als holdover) van de door atoomkracht ondersteunde tijdkaart binnen 1 microseconde per 24 uur blijft. Hier is een grafiek die de overblijfselen van de atoomklok (SA.53s) over een interval van 24 uur laat zien. Zoals je kunt zien, blijft de PPS-drift binnen 300 nanoseconden, wat binnen de atoomklokspecificaties valt.

Het modulaire ontwerp van de tijdkaart maakt het mogelijk om de atoomklok te verwisselen met een ovengestuurde kristaloscillator (OCXO) of een temperatuurgecompenseerde kristaloscillator (TCXO) voor een budgetoplossing met het compromis over de holdover-mogelijkheden.

Open-sourcing van het ontwerp van de tijdtoepassing

Het bouwen van een apparaat dat zeer nauwkeurig, goedkoop en vrij van vendor lock is, was een prestatie op zich. Maar we wilden een grotere impact hebben op de industrie. We wilden het echt de vrije loop laten en het open en betaalbaar maken voor iedereen, van een onderzoeker tot een groot clouddatacenter.

Daarom zijn we in zee gegaan met het Open Compute Project (OCP) om een ​​gloednieuw Time Appliance Project (TAP) te creëren. Onder de OCP-paraplu hebben we open source gemaakt in de GitHub-repository van Time Appliance Project, inclusief de specificaties, schema's, mechanica, stuklijst en de broncode. Nu, zolang het printen van de printplaat en het solderen van kleine componenten niet eng klinkt, kan iedereen zijn eigen tijdkaart bouwen voor een fractie van de kosten van een normaal tijdapparaat. We werkten ook samen met verschillende leveranciers, zoals Orolia, die tijdkaarten gaat bouwen en verkopen, en Nvidia, die de voor nauwkeurige timing geschikte ConnectX-6 Dx (en de voor nauwkeurige timing geschikte BlueField-2 DPU) verkoopt.

We hebben een Open Time Server-specificatie gepubliceerd op www.opentimeserver.com, waarin tot in detail wordt uitgelegd hoe de hardware (tijdkaart, netwerkkaart en een commodity-server) en de software (OS-stuurprogramma, NTP en/of PTP-server) kunnen worden gecombineerd ) om het tijdapparaat te bouwen. Het bouwen van een apparaat op basis van deze specificatie geeft de technici volledige controle over het onderhoud van het apparaat, waardoor de bewaking, configuratie, beheer en beveiliging worden verbeterd.

Het tijdapparaat is een belangrijke stap in de reis om de timinginfrastructuur voor iedereen te verbeteren, maar er moet nog meer worden gedaan. We zullen blijven werken aan andere elementen, waaronder het verbeteren van de precisie en nauwkeurigheid van de synchronisatie van onze eigen servers, en we zijn van plan dit werk te blijven delen met de open compute-community.


Ingebed

  1. Tijdconstante vergelijkingen
  2. Zandloper
  3. Python-slaap()
  4. Tijd is geld:tips voor het gebruik van onderhoudssoftware om tijd te besparen en efficiënter te besteden
  5. Tijd voor fabrikanten om oude ideeën over voorraadbeheer weg te gooien
  6. Leiders van de toeleveringsketen, het is tijd om aanvallend te spelen
  7. Digital twins:helpen West Coast-treinen om op tijd te rijden?
  8. Python - Datum en tijd
  9. Wat is een HMI?
  10. Crescent Crown wordt kosten- en tijdbesparend door het implementeren van automatisering
  11. Hoe u uw productie en verzending meer gestroomlijnd kunt maken?