前々回から、LAN内のネットワークにつながった機器同士の時間の同期を取るのが目的の「PTP(Precision Time Protocol)」を紹介している。3回目となる今回は、2019年に標準化された「IEEE 1588-2019」を取り上げる。
前回までは、このIEEE 1588-2019を「PTPv3」と説明したが、実際のところ、IEEE 1588-2019はIEEE 1588-2008との後方互換性を維持しており(ここがPTPv2と違うところ)、それもあってPTPv3ではなく「PTPv2.1」として扱われている。この記事でも、以降はPTPv2.1として説明したい。
標準化名 | 名称 |
IEEE 1588-2002 | 初代PTP。PTPv1などとも |
IEEE 1588-2008 | 2代目PTP。PTPv2 |
IEEE 1588-2019 | 3代目PTP。PTPv2.1(前回までは「PTPv3」と説明) |
金融、通信などの業界において必要になるオプションを追加
PTPv2.1は、端的に言えば「PTPv2が成功し、より広範に利用されるようになったことで、いろいろと足りないことが見えてきたので、これをオプションのかたちで追加したもの」というのが正確なところである。具体的には、例えば金融業界では特に「HFT(高頻度取引)」と呼ばれる、プログラムに基づき証券所との間で取引を行うシステムでは当然時間の同期が重要である。
また、通信業界においても、特に4.5Gの携帯電話システムあたりから「RAN(Radio Area Network)」という仕組みが導入されはじめた。これにより、従来の基地局の機能が「BBU(BaseBand Unit)」と「RRH(Remote Radio Head)」に分割された。この間は物理的な距離があるため、光ファイバーでつながれることとなる。
こうした仕組みはそもそも標準的なものでなく、ごく一部の基地局メーカーやキャリアが投入するに過ぎなかったのだが、これが標準となった5Gでは、BBUとRRHの間での時間同期が当然必要となったわけだ。
ほかにも、PTPv2を策定していたときには考えもしなかった用途でPTPが求められるようになり、より幅広いアプリケーションに対応できるように拡張オプションを用意したかたちだ。下図は、PTPv2とPTPv2.1の差の一覧だ。正確に言えば「オプションで提供されている機能の差」であるが、基本的に新機能以外は全て過去との互換性を保つかたちで提供されているのが分かる。
オプションは、柔軟性、精度、堅牢性に関するものの3種類に大別できる。まず、柔軟性を高めるオプションとしては、以下の4つが挙げられる。
- Modular Transparent Clocks:TC(Transparent Clock)をブレードサーバーやSFP(Small Form-Factor Pluggable:要するにトランシーバモジュール)に組み込めるようにする
- Special PTP Port:Wi-Fiなど、独自の同期メカニズムを持つトランスポートに組み込むための特別なPTPポート
- Mixed Multicast Unicast Operation:UnicastとMulticastの混在動作。Announce/SyncをMulticastで、Delay Request/Delay ResponseをUnicastで行うといった動作が可能になる
- Better Scalability:エンドツーエンドでの同期を、より大規模なネットワークで行えるようにする
次に、精度向上のオプションとして以下の3つがある。
- Manual Port Configuration:BMCA(Best Master Clock Algorithm)を利用せずに、クライアントが明示的にポートの設定を自身で行えるようにする
- Asymmetry Calibration:非対称型の校正メカニズムの搭載。ここには非対称型PHYも含まれる
- Physical Layer Syntonization:同期型Ethernetなどでの利用をサポート
実は、この3つの拡張は、「The White Rabbit Project」でCERNにより開発された時間同期に関する独自の拡張機能をそのまま盛り込んだものだ。
White RabbitではPTPv2を使いながら、おおむね0.5ns程度のAccuracy(正確さ)と10ps未満の精度を、4段のスイッチを挟んだ15km以上の距離で実現しており、しかも12.5~85.0℃の温度環境下で2.5時間以上稼働させた際のドリフトは100ps未満という、かなり優秀な成績をCERNで残している。この独自拡張がそのまま取り込まれた格好である。
堅牢性向上のためのオプションとしては、以下の5つがある。
- Profile Isolation:異なるプロファイルを同一ネットワーク上で混在させることをサポート。このためPTPv2.1では新しくProfiled IDと呼ばれるものを追加した
- Inter-domain Interactions:通常PTPドメインはそれぞれ独立しているが、特定の条件下で混在することをサポート
- Security TLV:データの一貫性チェックを追加
- Standard Performance Metrics:全てのPTPノードが同一のフォーマットでパフォーマンス統計を取れるようにする
- Slave Port Monitoring:単にSlaveに時刻を転送するだけでなく、それが正しく受け取れたことを確認する方法を提供
以上に加えて、PTPv2では不明確だった項目を明確にする、といった変更も行われている。
個別の項目を詳しく説明はしないが、こうしたオプションの追加により、より広範なアプリケーションに利用しやすくなったかたちだ。
現在も7つのPTP関連プロジェクトが進行中
少々気になるのは、PTPv2が策定された2008年から、PTPv2.1が2019年に標準化されるまで、なぜこんなに時間が空いたか、である。過去のミーティングの記録を見ていると、2013年4月にStudy Groupの作業が終了、2013年9月にWorking Groupが立ち上がり、ここから6年あまりを経てPTPv2.1の標準化が完了した格好である。
PTPv2.1のPARを見ている限りは、そもそもIEEE P1588のWorking Groupは複数のSub Projectから構成され、それぞれがAmendmentsのかたちで細かく新機能(新オプション)を定義し、それとは別に既存のPTPv2のバグフィックス(要するに不明確な点を明確にする作業)も並行して行われている。これらがある程度まとまったところで、PTPv2.1としてまとめたらしい。
ただ、ではこれでAmendmentsは完了か? というと、そうではない。現在進行中のプロジェクト一覧を見ると、以下の7つが現在も進行中だ。
- 1588a:BMCAメカニズムの拡張
- 1588b:OTNにPTPをマッピング(すでに標準化の承認済)
- 1588c:用語の明確化
- 1588d:PTPv2.1で追加されたセキュリティに関係し、鍵管理および選択機能のガイドラインの提供、および誤りの訂正
- 1588e:MIBおよびYANGデータモデルの修正
- 1588f:Latencyおよび非対称キャリブレーション機能の強化
- 1588g:用語修正(「Master/Slave」に代わる用語をオプションとして追加するとともに、誤り箇所の訂正を行う。「Master/Slave」の用語を排除するわけではない)
2024年ごろに、これらを全部包括したものが「PTPv2.2」のような名前で登場するかもしれない。それも、基本はPTPv2.1の延長にある、と考えていいだろう。
現状、PTPv2.1に対応した機器がどの程度あるか? というとまだ少なく、ほとんどはPTPv2までの対応となる。まずはPTPv2.1で追加されたオプション機能を必要とする特定用途、例えば、先述した、5G基地局のBBUとRRHの間で同期を取りたい場合などに向け、それに対応した機材にPTPv2.1のオプションの一部が実装されて納入される、というかたちでの展開となるだろう。
そして、汎用の機材がPTPv2.1完全対応をうたうのは、相当先になりそうに思える(そもそも、PTPv2.1のオプションを全部搭載する必要性がどこまであるのか? という点も疑問ではある)。
とはいえ、PTPv2そのものが廃れたわけではない。今後もネットワークの時間同期の手法として広範に使われることは間違いないだろう。