FPGA ベース・ハードウェアNTPサーバ(Stratum1)特設実験サイト


概要

さくらインターネットで開発した FPGA ベース・ハードウェア NTP サーバ(Stratum1)の情報公開を行っています。

さくらインターネットではこの度、単体で約10ギガビット/秒(約 1300万 リクエスト/秒)の高負荷に耐え、Stratum 1 NTP サーバーとして働く専用デジタル回路を内製設計し、FPGA 上で動作させて提供する実験を開始しました。( プレスリリースページ )


以後「FPGA-NTP サーバ」と表記する当機材について、FPGA-NTP サーバへ実際に問い合わせた現在時刻や、FPGA-NTP サーバを当社保有のデータセンター群(石狩・東京・大阪)から使用した場合の時刻品質をご覧いただけます。また、FPGA-NTP サーバの開発に関する技術情報や、お手持ちのサーバー等の時刻源に設定してお試しいただく方法を公開しています。

FPGA-NTP サーバを使ったWeb 時刻表示


				

この時刻はさくらのクラウド仮想サーバ(東京リージョン)に設置した当特設サイトのサーバーから、弊社石狩データセンターに設置した FPGA-NTP サーバに時刻問い合わせを行って表示しているものです。問い合わせに掛かるネットワーク遅延時間を打ち消す処理をしていないため、正確な時刻源としての使用はできません。

問い合わせの仕組み

NTP query and response
図1 : web 時刻表示のために発行される NTP 問い合わせの模式図

時刻問い合わせには NTP パケットと呼ばれる、典型的には48 バイトの小さな通信データをやり取りすることで行われます。ご覧のWeb サイトはさくらのクラウド東京リージョンに置かれており、web サイトへのアクセスがあると弊社石狩データセンターへの NTP 問い合わせが行われ、その結果を Web サイトに埋め込んで表示する仕組みとなっています。


誤差修正のための再問い合わせはおよそ16 秒に 1 回程度行われます。下記には最後に行われた問い合わせに使用されたパケットと、応答パケットを表示しています。


  • 応答パラメータ
  • 応答生データ
  • 問い合わせパラメータ
  • 問い合わせ生データ
-
-
-
-

各測定ポイントからの時刻品質測定

ntp observatory system
図2 : 弊社データセンター拠点からの品質観測の模式図

NTP はネットワークを経由して時刻合わせを行うプロトコルのため、不安定なネットワークや、長距離ネットワークを経由した場合は得られる時刻の品質が低下する可能性があります。

そこで、弊社が設備を保有する3つのデータセンター拠点(北海道-石狩・東京都市圏・大阪都市圏)に品質測定ポイントを設け、FPGA-NTP サーバとの同期状況、時刻品質を測定しています。


測定ポイントでは Linux 上で稼働する ntpd ソフトウェアが定期的に複数の NTP サーバーとの同期を行っています。ntpd ソフトウェアはこれまでの NTP 問い合わせの履歴を用いたり、問い合わせ先サーバー(ピア)間での相互比較を行う事により、得られる時刻の品質を常に検証しながら動作しています。

下記グラフは測定結果のうちジッター(時刻揺らぎ)の値を取り出して表示しているものです。また、問い合わせサーバー(ピア)毎の時刻同期状況・時刻品質を表示するユーティリティ ntpq の出力結果を元データとして表示しています。

各測定ポイントから見たジッター(時刻揺らぎ)の値

jitter from ishikari/tokyo/osaka
図4 : 石狩・東京・大阪(左から順)リージョンから見たジッターのグラフ

各測定ポイントからの元データ(ntpq 出力結果)

  • 石狩(さくらのクラウド)
  • 東京(さくらのクラウド)
  • 大阪(さくらのVPS )
-
-
-

技術解説

当試験を通して示したいコンセプト

昨今のデータセンターサービス事業においては、既製品のハードウェア(サーバー及びネットワークスイッチなど)やオープンソースソフトウェア(Linux 系OS など)を活用し、安定したサービスを品質に見合ったコストで提供することが一般的です。 これに加えて、お客様が求める機能や使い勝手にお応えするために、サービス提供や運用を自動化するシステムソフトウェア(Infrastracture as a Code とも)を日々改良していくことも一般的となりました。


一方、高度化するサイバー攻撃に対応したり、人工知能研究などに用いられる新しい計算処理に対応するためには、ソフトウェアによる動作では処理速度が間に合わなかったり、消費電力が大きすぎる場合があります。 そのような時、既製品のハードウェアの枠を超えた新しい機材が必要と考えられますが、必要な機能を備えた新しいハードウェアがいつも市中で手に入るわけではありません。 当プロジェクトはこの問いに対する一つの答えとして、システムソフトウェア同様に、「カスタムハードウェア機材をもサービス事業者が日々改良し適用していく」コンセプトの実証試験を目的としています。

情報通信機器の文脈で言うハードウェアは一般的に集積回路チップとプリント基板によってできた電子機器ですが、その両方とも設計を変更しての再生産には数か月~年単位の時間が掛かる事が普通です。しかし、FPGA に代表される「集積回路構造を後から書き込めるデバイス」とサーバー用途で良く使われる周辺回路を集積した FPGA カードを用いれば、サーバーに装備してFPGA 上に設計を投入することで、サーバーハードウェアに新しい機能をすぐに追加することができます。一方、必要な通信インターフェースを必要なだけ選んで装備することや、アンテナ接続等特殊な入出力を行いたい時には、その物理インターフェース(コネクターや信号規格の変換器などを搭載する部分)を開発する必要があります。


当コンセプトでは、共通のコネクタと信号規格を用いたメザニンボード(拡張用の”2階建て部分"ボード)をオンデマンドに自社で設計する方式を取り、設計が必要な部分をインターフェース部分に限定することで、少人数・短期間での改良・適用ができると考えています。最終的には図5 のように、リポジトリ(プロジェクト全体のソースコードを管理する保管場所)に拡張ボードの基板設計、FPGA に導入する回路設計のコード、制御ソフトウェアの 3 つ組を一括で集積し、サービス運用と並行して改良改善していくことを目標としています。


A concept of Hardware Appliance as a Code
図5 : カスタムハードウェア機材を日々改良し適用していくコンセプト

当コンセプトの検証のために、今回は具体的なユースケースの一つとして「重負荷のNTP サーバーを専用開発のカスタムサーバーで置き換える」ケースを想定し、開発を行いました。


高性能な NTP サーバに関する既存取り組み

NTP は PC やスマートフォンなどからの時刻問い合わせに対して NTP サーバーが時刻情報を応答する、シンプルなプロトコルです。しかし、IoT機器等を含む世界中の機器からのアクセスが集中した時、その負荷は多大なものとなり得ます。そのため、NTPサーバー群は階層構造を取り、上位の NTP サーバーからコピーされた時刻源によって動作することで、一台当たりの負荷を減らしシステム全体の能力を向上する仕組みをもっています。


一方、時刻がより正確とされ、信頼して使用されるのは高精度な時刻供給源からの信号を直接受け取って配信する Stratum 1 サーバーとされます。Stratum 1 サーバーを能力向上し、端末から直接 Stratum1 サーバーを参照することは、高精度の時刻配信と時刻配信システムの単純化を両立する一つの手段と考えられます。そこで、専用回路を用いたカスタム Stratum1 NTP サーバーを制作する試みが過去にも行われており、実運用も行われているものとしては NICT 公開 NTP サービス[1]、スウェーデン分散時刻配信サービス[2] などがあげられます。



本開発機も先行する高性能 NTP サーバに類似した専用回路設計によるアプローチを採用しておりますが、カスタムハードウェア機材をサービス運用者が日々改良し適用していくコンセプトにマッチするよう、インターフェースカード基板の内製設計によるノウハウの蓄積を行ったり、C 言語での記述から FPGA 用回路設計を生成できる高位合成ツールを採用する等、継続開発性を重視したものとなっています。

動作の仕組み

Stratum 1 NTP サーバーは一般に、高精度な時刻供給源と高信頼なネットワーク接続を必要とします。そこで、GNSS(Global Navigation Satellite System)衛星が発信する信号を用いて、正確に1秒ごとの時刻同期パルス(PPS)を発振する市販のGNSS 受信機とアンテナコネクターをメザニンボードに装備しました。また、NTP サーバーとしては現行品の中で最も高速なクラスと考えられる10 ギガビット・イーサネットの接続用インターフェースを合わせて装備しました。


当 GNSS 受信機が発振する同期パルスは 1 秒に 1 回です。その中間の時刻に時刻問い合わせが来た場合に応えるため、正しい現在時刻を1秒より十分小さい単位まで正確にカウントアップする機構が求められます。 そこで、時刻同期パルスの繰り返しを検出してFPGA 内にクロック周波数を微調整する制御機構(GNSS同期周波数生成回路)を構築し、約 30 ns (3000万分の1秒程度)の刻みで現在時刻を保持する仕組みとしました。


FPGA NTP server block diagram
図6 : カード上における機能分担

また、10 ギガビット・イーサネットの入力に接続された NTP 応答専用回路は図7のようなパイプライン処理構造となっており、64 bit 単位に分割して到着するデータを流れ作業のように毎クロック次々と受け入れ、次々に応答を行うことができます。これは一旦メモリなどにデータを蓄積してから処理を行うソフトウェア的な処理方式と異なり、高速処理を達成するために必要なクロック周波数が相対的に低くなるほか、新しい処理を追加してパイプラインを長くした場合も処理速度が落ちない特徴があります。


当システムには入力を 64bit に区切って処理するパイプラインが実装されており、それを 160 MHz のクロックで駆動することで、内部的には 10.24 ギガビット毎秒の処理性能を達成しています。


FPGA NTP server pipeline diagram
図7 : NTP サーバー回路処理パイプラインの模式図 (600Mbps 負荷時)

開発した機材と動作の模様

内製設計により開発したメザニンボードはVITA 57.1 FMC (LPC) 規格を参考に製作されており、高速なイーサネット信号をFPGAに受け渡す役割とGNSS 衛星からの信号受信を同時に行うことができます(図8)。

interface expansion board
図8 : 10ギガビットイーサネット& GNSS コンボ増設メザニンボード

当メザニンボードを、PCIe ブラケット側にFMC ポートを装備した市販 FPGA カードと組み合わせることで、データセンター内で用いられる 1U サーバーへの搭載を容易としました(図9, 10)。

expansion board equipped on parent FPGA card
図9 : FPGA カードに装着したところ
server with FPGA card equipped
図10 : サーバーに対し当機材を搭載したところ

FPGA-NTP サーバトライアルサービスについて

当FPGA-NTP サーバはインターネット経由で無償でご利用いただけます。利用条件・免責事項をお読み頂き、ご了解の上ご使用ください。


利用条件及び免責事項

  • 当サービスは動作の試験や学習の目的以外にはご利用いただけません。
  • 当サービスは開発中の物であり、メンテナンス等の事由により予告なく長時間の停止が行われる場合があります。その場合も個別の利用者への通知は行われません。
  • 当サービスは2021 年3 月末日までの時限にて運用され、正式なサービスとしての継続は行われません。
  • 当サービスの利用にあたり、当サービスを利用しようとするコンピュータの設定についてはこれを利用者の責任にて行うものとし、弊社からの個別の使用法の案内等は行わないものとします。
  • 当サービスの利用を終了、もしくは利用できなかったことに伴い、当サービスを利用しようとしたコンピュータの設定を復元することについては、これを利用者の責任にて行うものとし、弊社からの個別の使用法の案内等は行わないものとします。
  • 当サービスのネットワークは使用できるネットワーク帯域を制限しており、大きな負荷を伴う試験を行うことはできません。
  • 当サービスに大きな負荷が発生した時には、他のネットワークサービスへの影響を防ぐため、優先的に停止する可能性があります。

Linux サーバー等の ntpd ソフトウェアで試験する場合

/etc/ntp/ntp.conf に下記行を追加し、ntpd を再起動 (例 : systemctl restart {ntpd のスクリプト名}) してください。


server fpga-ntp-trial.elab.sakura.ad.jp iburst

その際、すでに設定されている他の時刻源を消去することはおやめください。ntpd は自動的に時刻源の信頼性を検証して使用するため、当サーバに異常が発生したり、停止した場合も自動的に他の時刻源を参照して時刻同期を維持し続けることが期待されます。

$ ntpq -p にて以下のように一覧に表示されていれば、登録された時刻源の一つとして参照されるようになります。


remote           refid           st t when poll reach   delay   offset  jitter
==============================================================================
... 省略...
+fpga-ntp-trial  .SKR.            1 u   13   64  377    0.187    0.031   0.048

サーバ仕様

サーバアドレス fpga-ntp-trial.elab.sakura.ad.jp
NTP サービス動作ポート 123/UDP
対応プロトコル NTP v3 / v4
時刻同期源 GNSS 衛星信号
内蔵時計精度(時刻刻みの細かさであり、時刻の正確度とは異なります) 約29.8ナノ秒(33.445532 MHz)
NTP パケット処理能力 約 10Gbps (約 1300 万クエリー / 秒)
処理レイテンシ(処理パイプライン前後) 275ナノ秒(44 クロック@ 160MHz)
処理レイテンシ(装置への光入出力位置相当) 700~800ナノ秒(推定値)

更新履歴

  • 2020/03/18 r01 初稿公開
  • 2020/03/19 r02 技術解説に「高性能な NTP サーバに関する既存取り組み」の項を追加しました
  • 2020/03/19 r03 時刻表示のタイムゾーン表示の誤りを修正しました