フェイスブック、マイクロ秒単位の時刻を伝えるPCI Expressカードをオープンソース化

Facebookのエンジニアは、非常に正確なタイム・アプライアンスとして機能するカスタムPCI Express(PCIe)カードを開発し、オープンソースとして公開しました。これにより、分散システムはマイクロ秒レベルの同期の恩恵を受けることができるようになります。

Facebookは、2020年3月以降、データセンターのサーバーやコンシューマー製品を、インターネット上のネットワークタイムプロトコル(NTP)を利用した計時サービスに切り替えており、これによりFacebookのインフラにおける計時の精度は、10ミリ秒から100マイクロ秒へと100倍向上しました。タイム・アプライアンスは、PCI Expressカードに組み込まれており、全地球測位衛星システム(GNSS)が提供する正確な時刻とリンクしており、どのようなサーバーにもインストールして正確な時刻サービスを提供することができます。設計については、Open Compute Project(OCP)を通じて共有されます。

光陰矢の如し

イメージ図

すべての分散システムは正確なタイムサービスを必要とし、多くのシステムは、GNSSやセシウム時計などの「Stratum 1(第1階層)」までさかのぼった階層に依存しています。Facebookはすでに、time.facebook,comでパブリックタイムサービスを提供しています。しかし、これらのサービスは、インターネットへの接続に依存しており、もし時刻システムへの接続が切れてしまうと、サーバーが使用するローカルタイムがずれてしまい、分散システムの他の部分との整合性が取れなくなってしまいます。

「このような依存関係をなくすために、私たちはTime Appliance(タイム・アプライアンス)という専用のハードウェアを新たに構築した」FacebookのエンジニアであるOleg Obleukhov氏とAhmad Byagowi氏は、ブログ記事の中でこのように述べています。「Time Applianceのユーザーは、GNSSへの接続が失われても、正確な時間を保つことができる。私たちはTime Applianceの開発と並行して、PCIeカードであるTime Cardを開発した。これにより、ほとんどのコモディティサーバーをTime Applianceに変えることができるようになる」

Obleukhov氏とByagowi氏によると、タイム・アプライアンスはすでに世の中に存在しているが、市場に出回っているものはたいてい古い技術をベースにしており、セキュリティ攻撃に対して脆弱である可能性があると言います。サーバーの時刻をリセットすると、危険な悪用が可能になることもあります。また、設定や監視の方法が制限される独自のクローズドソースソフトウェアや、高価でユーザーによる保守ができない独自のハードウェアの使用も、Facebookの二人は嫌っています。

二人は、インテルのx86プロセッサーを使ってシステムを試作しました。このプロセッサーは、1秒に1回のパルス(PPS)を受信するGNSSレシーバーから信号を受け取ります。GPSDO(GPS disciplined oven-controlled oscillator)を搭載したこのプロトタイプは、ナノ秒単位の精度で時刻を表示し、市販のネットワークカードを使ってネットワーク全体の精度を「数十ナノ秒」まで向上させることができました。

その後、PCI Expressカードに、オンボード小型原子時計(miniaturized atomic clock:MAC)、マルチバンドGNSS受信機、FPGAを搭載し、タイムエンジンを実装しました。「タイムエンジンの仕事は、連続するPPS信号間に必要な粒度をナノ秒単位で補うこと」と二人は説明します。このシステムは、1秒ごとのパルス信号だけでなく、時刻も生成します。仮にGNSS信号が失われても、原子時計が安定的に時刻を維持します。

「特筆すべきは、GNSS受信機の精度が数十ナノ秒以内であるのに対し、MACの継続的な同期(校正)に必要な精度は10ピコ秒以内(1000倍の精度)であること」と二人は指摘します。「一見、不可能なことのように思えます。しかし、GNSSシステムは標準時との継続的な通信に基づいてタイミングを取っている。そのため、GNSSに搭載されている時計は、そのコンステレーションに提供されているソース時間と常に同期しており、長期的なドリフト誤差がほとんどない。そのため、MACの校正は、MACが駆動するカウンターとGNSSが供給するPPSパルスを比較することで行われる。比較に時間をかけることで、より精度の高いMACの校正を実現している」

GNSS信号が失われると、時間の精度は低下しますが、原子時計は24時間、1マイクロ秒以内の時間を保つことができます。ちなみにこのカードは、あらゆるx86サーバー上で動作します。「PCIeカードの良さは、PCIeスロットさえあれば、家庭用PCでもセットアップが可能なことです」

Obleukhov氏とByagowi氏は、このカードをFacebook内だけで使用するのではなく、オープンソース化にしたのは当然のことだと言います。「非常に精密かつ安価で、ベンダーロックのないデバイスを作ることは、それだけでも達成感がある。しかし、私たちは業界にもっと大きなインパクトを与えたいと思った。本当の意味でそれを自由にし、研究者から大規模なクラウドデータセンターまで、誰もがオープンで手頃な価格で利用できるようにしたかったのです」

「そのため、私たちはOpen Compute Project(OCP)と協力して、まったく新しいTime Appliance Project(TAP)を立ち上げた。OCPの傘下で、仕様書、回路図、メカニック、BOM(Bill of Materials)、ソースコードなどのすべてを www.opentimeserver.com でオープンソース化した。また、Orolia社をはじめとするいくつかのベンダーの協力を得て、タイムカードを製造し、オープンマーケットで販売することにした。プリント基板を印刷して小さな部品をハンダ付けすることが怖くないのであれば、誰でもわずかなコストで信頼性の高いStratum 1のNTPまたはPTPタイムサーバーを自作することができます」

この記事は海外Data Centre Dynamics発の記事をData Center Cafeが日本向けに抄訳したものです。

関連記事一覧

  • コメント ( 0 )

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。