Los ingenieros de Facebook han creado una tarjeta PCI Express personalizada que sirve como un dispositivo de tiempo muy preciso y la han lanzado con código abierto, por lo que los sistemas distribuidos pueden beneficiarse de la sincronización a escala de microsegundos.

Desde marzo de 2020, Facebook ha estado cambiando sus servidores de centro de datos y productos de consumo a un servicio de cronometraje basado en el Network Time Protocol (NTP) de Internet, que aumentó la precisión del cronometraje en la infraestructura de Facebook 100 veces, de 10 milisegundos a 100 microsegundos. El dispositivo de tiempo se ha integrado en una tarjeta PCI Express, que se vincula con la hora exacta proporcionada por el Sistema de navegación por satélite global (GNSS), y que se puede instalar en cualquier servidor para proporcionar un servicio de hora preciso. El diseño se compartirá a través de Open Compute Project (OCP).

Todos los sistemas distribuidos necesitan un servicio horario preciso y la mayoría se basa en una jerarquía que se remonta al "Estrato 1", generalmente el GNSS o un reloj de cesio. Facebook ya ofrece un servicio de horario público en time.facebook.com. Sin embargo, estos servicios solo son tan buenos como la conexión a Internet que tenga, y si la conexión con el sistema de tiempo se interrumpe, la hora local utilizada por los servidores puede variar y se desfasarán con otras partes de cualquier Sistema distribuido.

"Para eliminar estas dependencias, hemos construido una nueva pieza de hardware dedicada llamada Time Appliance, que tiene un receptor GNSS y un reloj atómico", han escrito los ingenieros de Facebook Oleg Obleukhov y Ahmad Byagowi en una publicación de blog. "Los usuarios de Time Appliances pueden mantener la hora exacta, incluso en caso de pérdida de conectividad GNSS. Mientras construíamos nuestro Time Appliance, también inventamos una Time Card, una tarjeta PCIe que puede convertir casi cualquier servidor básico en un Time Appliance".

Los dispositivos de tiempo ya existen, pero los disponibles en el mercado generalmente se basan en tecnología obsoleta y pueden ser vulnerables a ataques de seguridad, según Obleukhov y Byagowi. Restablecer la hora en un servidor puede permitir algunos exploits peligrosos. Al dúo de Facebook tampoco le gusta el uso de software propietario de código cerrado, que limita la forma en que se pueden configurar o monitorear, y el hardware es más caro y no puede ser reparado por el usuario.

La pareja creó un prototipo de sistema utilizando un procesador Intel x86, que toma su señal de un receptor GNSS, que da un pulso por segundo (PPS). El prototipo proporciona tiempo en la tarjeta con una precisión de nanosegundos y se puede usar para mejorar la precisión en toda la red utilizando una tarjeta de red estándar, hasta "a un par de decenas de nanosegundos".

A partir de ahí, trabajaron en una versión de tarjeta PCI Express con un reloj atómico miniaturizado (MAC) integrado, un receptor GNSS multibanda y una FPGA para implementar el motor de tiempo. "El trabajo del motor del tiempo es interpolar en nanosegundos la granularidad requerida entre señales PPS consecutivas", explicó la pareja. El sistema genera la hora del día y la señal de pulso por segundo. Si se pierde la señal GNSS, el reloj atómico la mantiene estable y puntual.

"Cabe señalar que la precisión de un receptor GNSS está dentro de las decenas de nanosegundos, mientras que la sincronización (calibración) continua requerida del MAC está dentro de los 10 picosegundos (1.000 veces más precisa)", señalan los ingenieros. "Al principio, esto suena imposible. Sin embargo, el sistema GNSS proporciona una sincronización basada en comunicación continua con la hora estándar."

Cuando se pierde la señal GNSS, la precisión de la hora se deteriora, pero el reloj atómico puede mantener la hora dentro de un microsegundo durante 24 horas. La tarjeta funcionará con cualquier servidor x86: "La belleza de tener tarjetas PCIe es que la configuración se puede ensamblar incluso en un ordenador doméstico, siempre que tenga suficientes ranuras PCIe disponibles".

napkin sketch facebook time appliance.png
Boceto en una servilleta de la tarjeta PCI Express – Facebook

La decisión de utilizar el código abierto de la tarjeta, en lugar de simplemente usarla en Facebook, fue natural, dicen Obleukhov y Byagowi: "Construir un dispositivo que sea muy preciso y económico fue un logro en sí mismo. Pero nosotros Queríamos tener un mayor impacto en la industria. Queríamos liberarlo de verdad y hacerlo abierto y asequible para todos, desde un investigador hasta un gran centro de datos en la nube.

"Por eso nos comprometimos con Open Compute Project (OCP) para crear un nuevo Time Appliance Project (TAP). Bajo el paraguas de OCP, abrimos todo en www.opentimeserver.com , incluidas las especificaciones, los esquemas, la mecánica, la lista de materiales y el código fuente. También trabajamos con varios proveedores (como Orolia) que construirán y venderán la tarjeta de tiempo en el mercado."