Facebookエンジニア、データセンター向け高精度タイムアプライアンスをオープンソース化
Facebookのエンジニアリングチームが、最新データセンターのタイミングインフラの重要要素である高精度タイムアプライアンスを設計・公開しました。タイムカード(PCIeカード)を作成し、あらゆる汎用サーバをStratum-1タイムソースに変えることで、Open Compute Project(OCP)と提携し、Open Time Serverのすべてのコンポーネントをオープンソースライセンスで提供しています。
2020年3月、Facebookはデータセンターとコンシューマープロダクトサーバを、新しい社内Network Time Protocol(NTP)サービスに移行したと発表しました。このアップグレードにより、時刻精度が10msから100μsに向上し、より細かなインフラ制御と高速な分散データベースパフォーマンスを実現しました。
新しいNTPアーキテクチャは、Global Navigation Satellite System(GNSS;全球測位衛星システム)やセシウム時計などの権威あるクロックに直接リンクしたStratum-1ソースに依存します:

公開NTPプール(例:time.facebook.com)は便利ですが、インターネット接続への依存を生み、システムを潜在的な停止やドリフトにさらします。これらのリスクを排除するため、GNSSレシーバと小型原子時計(MAC)を統合した専用ハードウェアアプライアンスを構築しました。タイムカードはこの機能をPCIeボードにカプセル化し、ハードウェアタイムスタンピング対応NICを搭載したあらゆるx86サーバをStratum-1ソースに変えます。
なぜ新しいタイムデバイスが必要なのか?
市販のタイムアプライアンスは実戦で鍛えられ、しばしば安定していますが、重大な欠点があります:
- 時代遅れでセキュリティ脆弱性を抱え、パッチサイクルが数ヶ月から数年かかる可能性がある。
- クローズドソースのファームウェアは設定と監視を制限し、プロプライエタリなCLIやWeb UIが自動化を妨げる。
- プロプライエタリなハードウェアは修理不可で、部品故障時にはベンダー修理や新規購入が必要。
- 少量生産による高いマージンで、長期運用コストが高騰する。
これらの制約により、多くの組織がトレードオフを強いられてきました。私たちは代替案を模索することにしました:x86ハードウェア上に構築された、目的特化型のオープンソースタイムアプライアンスです。
タイムアプライアンスのプロトタイピング
初期コンセプトは、GNSSレシーバ、高安定発振器、FPGAベースの処理を単一のPCIeカードに統合するものでした(ブロック図参照):

GNSSモジュールは、時刻情報(ToD)と1秒1パルス(PPS)信号を提供します。高安定発振器(ルビジウム発振器や恒温槽付き水晶発振器など)と組み合わせると、システムはナノ秒レベルの精度を達成できます。PPSとToDは、ハードウェアタイムスタンピングとPPS入出力をサポートする高性能NIC(例:NVIDIA Mellanox ConnectX-6 Dx)に供給されます。
ts2phcツールを使用し、NICの物理クロックをGNSS PPSに数十ナノ秒以内で同期させ、アプローチを検証しました:

信頼性を高めるため、設計をペイロード(精密タイムエンジン)とデリバリ(NIC)の2つの論理ブロックに分割しました。ペイロードは、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以上用のドライバをビルド)。ドライバはPHC、GNSS、PPS、MACデバイスを/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/
chronyやPTPデーモンを設定し、PHCを参照クロックとして使用します:
# chrony refclock PHC /dev/ptp2 tai poll 0 trust
Calnex Sentinelによる検証では、48時間で±40μsのNTP安定性とサブナノ秒のPTPオフセットが示されました。タイムカードとSentinelのPPS誤差合計は±200ns以内に収まります。



モジュール設計により、MACをコスト効率の良いOCXOやTCXOに置き換え、ホールドオーバー性能と予算をトレードオフできます。
設計のオープンソース化
影響を広げるため、Open Compute Projectと提携し、Time Appliance Project(TAP)を立ち上げました。すべての仕様、回路図、BOM、機械図面、ソースコードがTAP GitHubリポジトリで公開されています。OroliaやNVIDIAなどのベンダーが、それぞれタイムカードと精密タイミングNICを生産しています。
私たちのOpen Time Server仕様は、ハードウェアとソフトウェアスタックを組み立て、堅牢で完全に制御可能なタイムアプライアンスを作成する方法を詳述しています。システム全体を所有することで、エンジニアはより深い可視性、より厳格なセキュリティ、よりシンプルなメンテナンスを得られます。
現在のアプライアンスは大きな前進ですが、精度のさらなる改善、Facebookのグローバルインフラ全体での同期スケーリング、オープンコンピュートコミュニティとの進展共有を継続します。
埋め込み
- メンテナンスソフトウェアで生産性を最大化:コスト削減と時間節約の仕組み
- 砂時計:歴史、職人技、現代的魅力
- クレセントクラウン、DocStar ECM APオートメーションで効率化とコスト削減を実現
- RCおよびRL回路の時定数計算をマスターする
- 在庫管理の再考:JITの限界を超える現代的戦略とデジタル変革
- サプライチェーンリーダーよ、成長とレジリエンスのため「攻めの戦略」を採れ
- デジタルツインが西海岸幹線の定時性を向上──Laing O'Rourkeの取り組み
- 現代産業におけるヒューマンマシンインターフェース(HMI)の理解
- 製造と出荷を効率化:コスト削減と効率向上の実証済み戦略
- Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
- Python 日付と時刻の完全マスター:実践的ガイド