Facebook工程师开源数据中心高精度时间设备
Facebook工程团队设计并发布了一款高精度时间设备,这是现代数据中心计时基础设施的关键要素。通过创建时间卡——一张将任何商品服务器转变为Stratum-1时间源的PCIe卡——并与开放计算项目(OCP)合作,我们已将开放时间服务器的每个组件在开源许可下公开。
2020年3月,Facebook宣布将其数据中心和消费级产品服务器迁移至新的自研网络时间协议(NTP)服务。此升级将计时精度从10ms提升至100μs,实现更精细的基础设施控制和更快的分布式数据库性能。
新NTP架构依赖Stratum-1源——直接链接权威时钟,如全球导航卫星系统(GNSS)或铯原子钟:

公共NTP池(如time.facebook.com)虽方便,但引入互联网连接依赖,并暴露于潜在中断或漂移风险。为消除这些风险,我们构建了专用硬件设备,集成GNSS接收器与微型原子钟(MAC)。时间卡将此功能封装在PCIe板上,使任何配备硬件时间戳NIC的x86服务器成为Stratum-1源。
为何需要新时间设备?
商用时间设备历经实战检验且通常稳定,却有显著缺点:
- 可能过时且存安全漏洞,补丁周期长达数月或数年。
- 闭源固件限制配置和监控;专有CLI或Web UI阻碍自动化。
- 专有硬件不可维修——组件故障需厂商维修或更换整机。
- 小批量生产导致高溢价,长期运营成本高。
这些限制迫使许多组织接受妥协。我们决定探索替代方案:基于x86硬件的专用开源时间设备。
时间设备原型
初始概念将GNSS接收器、高稳定振荡器和基于FPGA的处理集成在单张PCIe卡上——见下图框图:

GNSS模块提供时间-of-day(ToD)和每秒一脉冲(PPS)信号。搭配高稳定振荡器(如铷钟或恒温晶振),系统可达纳秒级精度。PPS和ToD馈送至高性能NIC(如NVIDIA Mellanox ConnectX-6 Dx),支持硬件时间戳和PPS输入/输出。
使用ts2phc工具,我们将NIC物理时钟同步至GNSS PPS,误差在几十纳秒内,验证了方案:

为增强可靠性,我们将设计分为两个逻辑块:载荷(精密时间引擎)和投递(NIC)。载荷用FPGA引擎和本地振荡器在连续PPS脉冲间插值时间。GNSS丢失时,引擎依赖原子钟固有稳定性。

时间引擎实现滤波、同步、错误检查和PCIe子系统。持续校准MAC,将其计数器与GNSS PPS比对,长期达亚纳秒精度。

利用10MHz参考(来自铷钟或外部SMA输入),上变频至125MHz(8ns周期),将亚秒增量关联至250ps步进。比例积分环路通过12.5倍PLL微调频率,必要时直接调整振荡器。
保持——GNSS不可用时的时间精度损失——是关键指标。原型在24小时内漂移<300ns,远优于SA.53s MAC规格。
时间设备实战
安装后,时间卡将任何兼容x86服务器变为Stratum-1时间源,独立于NTP、PTP、SyncE或其他协议。系统精度足以满足大多数企业时间同步需求。

设置简单:安装Linux内核5.15+(或从OCP GitHub在内核5.12+构建驱动)。驱动在/sys/class/timecard/ocp0/暴露PHC、GNSS、PPS和MAC设备:
$ 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/
配置chrony或PTP守护进程使用PHC作为参考时钟:
# chrony refclock PHC /dev/ptp2 tai poll 0 trust
Calnex Sentinel验证显示48小时内NTP稳定性±40μs,PTP偏移亚纳秒级。时间卡与Sentinel的PPS综合误差在±200ns内。



模块化设计也允许用成本效益高的OCXO或TCXO替换MAC,以保持性能换取预算。
开源设计
为扩大影响,我们与开放计算项目合作启动时间设备项目(TAP)。所有规格、原理图、BOM、机械图和源代码公开于TAP GitHub仓库。Orolia和NVIDIA等厂商已分别生产时间卡和精密计时NIC。
我们的开放时间服务器规范详述如何组装硬件和软件栈以创建稳健、完全可控的时间设备。拥有整个系统,工程师获得更深可见性、更紧安全性和更简维护。
当前设备代表重大飞跃,我们将继续优化精度、扩展Facebook全球基础设施同步,并与开放计算社区分享进展。
嵌入式