フェイスブックのエンジニアがオープンソースの新しい時刻管理アプライアンスを開発

次の記事

微小重力の宇宙での製造業スタートアップVardaがRocket Labと宇宙船3機の購入契約締結

おそらく多くの人たちは、携帯電話、ノートブック、ネットワークサーバーを問わず、自分たちのデバイスがどれだけ時刻に依存しているかをおそらく理解していないだろう。ほとんどの場合、時刻管理は難しいが退屈な仕事であり、限られた数のハードウェアメーカーによって扱われてきた。こうしたデバイスはその目的を果たしてきたものの、数名のFacebook(フェイスブック)のエンジニアがもっと良い方法が必要だと考えた。そこで彼らは、PCI Express(PCIe)カードの形でより正確な新しい時間管理デバイスを開発し、それをオープンソースプロジェクトとしてOpen Compute Project(オープン・コンピュート・プロジェクト)に寄贈した。

FacebookのプロダクションエンジニアであるOleg Obleukhov(オレグ・オブリコフ)氏によれば、このデバイスは基本的に問い合わせをしてもらうことで、問い合わせをしてきた各デバイスの時刻を合わせられるようにするものだという。「現在使われている、電話、時計、ノートブックその他の、ほぼすべての電子デバイスは、NTP(Network Time Protocol、ネットワーク時刻同期プロトコル)を利用しています。各デバイスはみなNTPを用いてNTPサーバーへの問い合わせを行っているのです。やっていることは単純で『いま何時?』と問い合わせるとサーバーが現在の時刻を答えるのです」と彼は説明する。

Facebookが今回の方法を開発する前は、時刻を確認するためには基本的に2つの方法があった。もし一般の開発者なら、時間チェックのメカニズムとしてインターネットを介してtime.facebook.comのようなNTPサーバーを使用するだろう、だがFacebookのような大規模な運用を行っている企業自身は、インターネットに接続していなくても機能する時計を必要としていたのだ。データセンターを運営している企業の中には、stratum 1(ストラタム・ワン)と呼ばれる種類のハードウェアデバイスが置かれている。これは、データセンター内に設置された大きな箱であり、時刻管理者としての役割を果たす以外の仕事を持たない。

こうした時刻管理ボックスは、何年にもわたって少数の企業によってのみ製造されてきたため、頑丈で確実に機能はしているものの、新しい機能を取り込むのは困難だった。さらに、それらの装置は独自仕様を持っているために、Facebookのような企業はその装置の振る舞いを制御することができなかった。オブリコフ氏と彼の同僚の研究者であるAhmad Byagowi(アフマド・ビアゴウィ)氏が探り始めたこの問題への解決手段は、一般に入手可能な部品を使ったPCIeカードを作成し、PCの空きスロットに挿入して使えるようにすることだった。

画像クレジット:Facebook

彼らは文字通りiPadで最初のデザインを描き、そのビジョンをプロトタイプとして作り始めた。時刻管理アプライアンスは、GNSS(global navigation satellite system)受信機と、高安定発振器と呼ばれる2つの重要な部品に依存している(GNSS受信機は時刻の基準となる上位の信号をインターネット経由ではなくGNSS衛星から直接受信する)。プロジェクトを説明したブログ投稿で、オブリコフ氏とビアゴウィ氏はこれら2つの部品の役割も説明している。

「すべては、現在時刻(ToD)と1秒に1パルス(PPS)を提供するGNSS受信機から始まります。その受信機が高安定発振器(例えば、原子時計または恒温槽制御の水晶発振器)と組み合わされた場合には、ナノ秒精度の時刻を提供することが可能です。この時刻は市販のネットワークカードを介してネットワーク全体に配信されます」と2人のエンジニアは書いている。

このように説明すると、すべてがかなり単純なもののように聞こえるが、実際には非常に複雑だ。おそらくそのことが、これまで誰もが現在の時刻決定手法を単に受け入れて、この問題に今回のようなやりかたでアプローチしてこなかった理由なのだ。しかし、2人のFacebookエンジニアは、これまでのアプローチの制約に悩まされ、自分たちでより良いものを構築することにした。

「その動機の大部分は欲求不満からやって来ました。私たちは市場に存在しているものすべてに不満を感じていました。そして、さまざまなことを保守できるセキュリティ機能や、何が起きているかを監視できる機能などが必要だったのです。なので私たちは常にベンダーに対してそれらの新機能について要求を出さなければならず、しかもその要求が毎回半年から1年かからなければ実現されなかったのです。その上、でき上がったものは私たちが本当に欲しいものではなかったりしました。そのためいつでも変更を繰り返さなければなりませんでした。これが私たちに今回の装置をゼロから作ることを決心させたのです」とオブリコフ氏はいう。

PCIeカードにタイムキーピング装置を搭載することを可能にしたものの1つは、原子時計 / 発振器の小型化の進歩だ。ということで、彼らが欲求不満を感じたタイミングとテクノロジーの現在の能力が組み合わさったときに、彼らはそのタスクに専念すれば、自分たちで装置を実現できることに気が付いたのだ。

設計がまとまり始めたとき、2人は他のエンジニアがその基本設計を使い、各自のニーズに合ったコンポーネントを投入できるような柔軟なものにすることを決定した。非常に洗練された高価な部品が必要な場合もあるが、要件によっては、はるかに安価な部品を使って済ませられる場合もある。

また、設計過程をオープンソース化し、他の企業やエンジニアが設計に貢献できるように、Open Compute Projectと協力することも早い段階で決定した。「実際に、最初からオープンソースにする予定でした。理由は、コミュニティのサポートが必要だったからです。単なる社内プロジェクトの1つにしたくありませんでしたし、私個人が興味を失ったり、会社が興味を失ってなくなってしまったりすることもあるでしょう。何か起きるにせよ、これが続くようにしたかったのです」とオブリコフ氏は言った。

現在、このプロジェクトには12のベンダーが関与しており、2人が設計したものやOrilia(オリラ)からの商用製品など、多数のカードが存在している。だが目標は設計を継続的に改善することだ。オープンソースにすることで、関与する企業やエンジニアのコミュニティが、それを改善し続けるだろう。

関連記事:Facebookがデータセンター内ネットワークを新型スイッチとともに40GBから100GBにアップグレード中

画像クレジット:sorbetto / Getty Images

原文へ

(文: Ron Miller、翻訳:sako)