Basically, it's a PCI Express card that uses a Global Navigation Satellite System (GNSS) and oscillator to provide an authoritative source of time. Stick the card into a vacant slot and hey presto – an ordinary server can become a time appliance.
Facebook has been working on the problem for a while. While users might sometimes wonder at the seeming randomness of their timeline, keeping server time synchronised and accurate is important when it comes to infrastructure management and distributed databases.
Back in March 2020 the social media giant confirmed it was in the process of switching over to a new timekeeping service based on the Network Time Protocol (NTP.) The update, according to Facebook, increased the accuracy of timekeeping in its infrastructure from 10 milliseconds to 100 microseconds.
However, the new architecture uses a Stratum 1. This component is linked to a source of time such as a GNSS or a caesium clock. Facebook's idea is that, rather than depend on something like
time.facebook.com for their Stratum 1, which is an one that might suffer a wobble if connectivity were lost, how about companies use a Time Appliance instead?
The approach is hardly new, and such appliances have been available off-the-shelf for years. Problems, however, include a distinct lean toward a proprietary world which, in turn, can make things expensive and more difficult to support.
- Open Compute Project to design open silicon and optics in Strategy 2.0
- Facebook takes bold stance on privacy – of its ads: Independent transparency research blocked
- Er, no, we would like to continue suing Facebook, US state AGs tell courts
- Facebook tries to save face by recalling itch-inducing Oculus Quest 2 VR headset foam
Thus Facebook has designed and open sourced a Time Card. The PCI Express card includes a GNSS receiver to provide Time of Day (ToD) and one pulse per second (PPS.) An oscillator (such as an atomic clock) backs things up in the event the GNSS signal is lost and an off-the-shelf network card (the NVIDIA Mellanox ConnectX-6 Dx was Facebook's initial choice) sends the time out over the network.
It is undoubtedly a neat bit of tech and free from vendor lock-in. The specifications, source code and schematics can all be found on GitHub should one wish to roll one's own. The driver for the Time Card lurks in the Linux kernel from version 5.15, or can be built on 5.12 or later.
Hardware-wise, pretty much any PC will do the job so long as it has enough spare PCIe slots and we reckon somebody handy with a soldering iron, the necessary components and access to PCB printing could make a decent fist of making their own Time Appliance for considerably less than buying one off-the-shelf.
A weekend project, perhaps? It'd certainly be an improvement than sitting around and, er, scrolling through Facebook. ®