Ingenieros de Facebook publican como código abierto un dispositivo de tiempo de precisión para centros de datos
El equipo de ingeniería de Facebook ha diseñado y publicado un dispositivo de tiempo de alta precisión, un elemento clave de la infraestructura de temporización moderna de los centros de datos. Al crear la tarjeta de tiempo (time card), una tarjeta PCIe que transforma cualquier servidor commodity en una fuente de tiempo Estrato 1, y asociarse con el Open Compute Project (OCP), han puesto a disposición cada componente del Open Time Server bajo una licencia de código abierto.
En marzo de 2020, Facebook anunció la migración de sus servidores de centros de datos y productos de consumo a un nuevo servicio interno de Protocolo de Tiempo de Red (NTP). La actualización elevó la precisión del mantenimiento del tiempo de 10 ms a 100 µs, permitiendo un control de infraestructura más fino y un rendimiento más rápido de bases de datos distribuidas.
La nueva arquitectura NTP se basa en una fuente Estrato 1, vinculada directamente a un reloj autoritativo como un Sistema de Navegación por Satélite Global (GNSS) o un reloj de cesio:

Los pools NTP públicos (p. ej., time.facebook.com) son convenientes pero introducen dependencias de conectividad a Internet y exponen los sistemas a posibles interrupciones o deriva. Para eliminar estos riesgos, construimos un dispositivo de hardware dedicado que integra un receptor GNSS con un reloj atómico miniaturizado (MAC). La tarjeta de tiempo encapsula esta funcionalidad en una placa PCIe, permitiendo que cualquier servidor x86 equipado con una NIC con timestamping de hardware se convierta en una fuente Estrato 1.
¿Por qué un nuevo dispositivo de tiempo?
Los dispositivos de tiempo comerciales están probados en batalla y suelen ser estables, pero vienen con inconvenientes significativos:
- Pueden estar desactualizados y ser vulnerables a fallos de seguridad, con ciclos de parches que abarcan meses o años.
- El firmware de código cerrado limita la configuración y el monitoreo; las CLIs o interfaces web propietarias dificultan la automatización.
- El hardware propietario no es reparable; el fallo de un componente requiere reparación del proveedor o una unidad nueva.
- La producción de bajo volumen conduce a márgenes altos, haciendo que la operación a largo plazo sea costosa.
Estas limitaciones obligaron a muchas organizaciones a aceptar compromisos. Decidimos explorar una alternativa: un dispositivo de tiempo de propósito específico, de código abierto, construido sobre hardware x86.
Prototipado del dispositivo de tiempo
Nuestro concepto inicial combinaba un receptor GNSS, un oscilador de alta estabilidad y procesamiento basado en FPGA en una sola tarjeta PCIe; vea el diagrama de bloques a continuación:

El módulo GNSS entrega tanto la hora del día (ToD) como una señal de un pulso por segundo (PPS). Cuando se combina con un oscilador de alta estabilidad, como un oscilador de rubidio o un oscilador de cristal controlado por horno, el sistema puede alcanzar precisión a nivel de nanosegundos. El PPS y el ToD se alimentan a una NIC de alto rendimiento (p. ej., NVIDIA Mellanox ConnectX-6 Dx) que soporta timestamping de hardware y PPS entrada/salida.
Usando la herramienta ts2phc, sincronizamos el reloj físico de la NIC con el PPS del GNSS dentro de unas pocas decenas de nanosegundos, validando nuestro enfoque:

Para mejorar la fiabilidad, separamos el diseño en dos bloques lógicos: la carga útil (motor de tiempo de precisión) y la entrega (la NIC). La carga útil interpola el tiempo entre pulsos PPS consecutivos usando un motor basado en FPGA y un oscilador local. En caso de pérdida de GNSS, el motor confía en la estabilidad inherente del reloj atómico.

El motor de tiempo implementa filtrado, sincronización, comprobación de errores y subsistemas PCIe. Calibra continuamente el MAC comparando su contador con el PPS del GNSS, logrando precisión sub-nanosegundo durante períodos prolongados.

Aprovechando una referencia de 10 MHz (de un reloj de rubidio o entrada SMA externa), convertimos a 125 MHz (períodos de 8 ns) y asociamos incrementos de sub-segundo a pasos de 250 ps. Un bucle proporcional-integral afina la frecuencia mediante un PLL de 12,5x y, si es necesario, ajustes directos al oscilador.
El holdover (pérdida de precisión de tiempo cuando GNSS no está disponible) es una métrica crítica. Nuestro prototipo logró menos de 300 ns de deriva en 24 horas, bien dentro de las especificaciones del MAC SA.53s.
El dispositivo de tiempo en acción
Una vez instalado, la tarjeta de tiempo convierte cualquier servidor x86 compatible en una fuente de tiempo Estrato 1, independiente de NTP, PTP, SyncE u otros protocolos. La precisión del sistema es suficiente para la mayoría de las necesidades de sincronización de tiempo empresariales.

La configuración es sencilla: instale el kernel de Linux 5.15+ (o compile el controlador desde el repositorio GitHub de OCP en kernel 5.12+). El controlador expone dispositivos PHC, GNSS, PPS y MAC bajo /sys/class/timecard/ocp0/:
$ ls -l /sys/class/timecard/ocp0/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 device -> ../../../0000:04:00.0/ -r--r--r--. 1 root 4096 Aug 3 19:49 gnss_sync lrwxrwxrwx. 1 root 0 Aug 3 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 pps -> ../../../../../virtual/pps/pps1/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 ptp -> ../../ptp/ptp2/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 ttyGNSS -> ../../tty/ttyS7/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 ttyMAC -> ../../tty/ttyS8/
Configure chrony o un daemon PTP para usar el PHC como reloj de referencia:
# chrony refclock PHC /dev/ptp2 tai poll 0 trust
La validación con un Calnex Sentinel muestra estabilidad NTP de ±40 µs en 48 horas y offsets PTP sub-nanosegundo. El error combinado de PPS entre la tarjeta de tiempo y el Sentinel permanece dentro de ±200 ns.



El diseño modular también permite cambiar el MAC por un OCXO o TCXO rentable, intercambiando rendimiento de holdover por presupuesto.
Publicación del diseño como código abierto
Para ampliar el impacto, nos asociamos con el Open Compute Project para lanzar el Time Appliance Project (TAP). Todas las especificaciones, esquemáticos, BOMs, dibujos mecánicos y código fuente están disponibles públicamente en el repositorio GitHub de TAP. Proveedores como Orolia y NVIDIA ya están produciendo la tarjeta de tiempo y las NICs de temporización de precisión, respectivamente.
Nuestra especificación del Open Time Server detalla cómo ensamblar la pila de hardware y software para crear un dispositivo de tiempo robusto y totalmente controlado. Al poseer todo el sistema, los ingenieros ganan visibilidad más profunda, seguridad más estricta y mantenimiento más simple.
Aunque el dispositivo actual representa un gran avance, continuaremos refinando la precisión, escalando la sincronización en la infraestructura global de Facebook y compartiendo avances con la comunidad de computación abierta.
Incrustado
- Maximice la productividad: cómo el software de mantenimiento reduce costes y ahorra tiempo
- El reloj de arena: historia, artesanía y atractivo moderno
- Crescent Crown Aumenta Eficiencia y Ahorra Costes con Automatización AP DocStar ECM
- Dominando Cálculos de Constante de Tiempo para Circuitos RC y RL
- Repensando la gestión de inventario: Estrategias modernas para fabricantes
- Líderes de Cadena de Suministro: Adopten una Estrategia Ofensiva para Crecimiento y Resiliencia
- Los gemelos digitales mejoran la fiabilidad puntual de la línea principal de la Costa Oeste
- Entendiendo las Interfaces Hombre-Máquina (HMI) en la industria moderna
- Optimice su Manufactura y Envío: Estrategias Comprobadas para Reducir Costos e Impulsar Eficiencia
- Dominar time.sleep() en Python: Mejores Prácticas, Multihilo y Ejemplos Reales
- Dominando fechas y horas en Python: Guía práctica