期待のネット新技術
多くの時刻同期技術の前提となる「IEEE 802.1AS-2011」
2022年11月8日 06:00
前回まで、IEEE 1588について3回に分けて紹介してきた。以下におさらいしておこう。
標準化名 | 名称 |
IEEE 1588-2002 | 初代PTP(PTPv1などとも) |
IEEE 1588-2008 | 2代目PTP。PTPv2 |
IEEE 1588-2019 | 3代目PTP。PTPv2.1(PTPv3とも) |
[記事訂正 11月10日]
初出時、記事タイトルなどで「IEEE 802.1AS」を「IEEE 802.3AS」と、誤った記述をしておりました。
大変申し訳ありません。お詫びして訂正いたします。
IEEE 1588と切っても切れない関係にあるのが、今回取り上げるIEEE 802.1ASである。IEEE 1588はPTP(Precision Time Protocol)として表現されるが、IEEE 802.1ASは「TSN(Time-Sensitive Networking)」として分類される。
実際には、IEEE 802.1ASはTSNの一部、というか、TSNを構築する技術の1つだ。しかし、IEEE 802.1ASのみがTSNというわけではない。TSNに関連する規格はIEEEだけでも、次の8つが存在する。
- IEEE 802.1AS:時刻同期
- IEEE 802.1CB:信頼性確保のための冗長性
- IEEE 802.1Qav:TSNにおけるトラフィックシェーピング
- IEEE 802.1Qbu:フレームプリエンプション
- IEEE 802.1Qbv:時分割スケジューリング
- IEEE 802.1Qcc:SPR(Stream Reservation Protocol)拡張
- IEEE 802.1Qci:ストリーム毎のフィルタリングやポリシング
- IEEE 802.3br:エクスプレストラフィックの混在
加えて、産業向けのリアルタイム制御用としてTSN EtherCATやCC-Link IE TSN、PROFINET over TSNなど、TSNとして分類されるネットワークは多数存在する。
IEEE 802.1ASを前提に、IEEE 1588も策定された
そのような中で、TSNというとIEEE 802.1ASの名前が必ず出てくる理由の1つは、IEEE 802.1ASが時刻同期のメカニズムを定めたもので、これを前提に、さまざまなそのほかの規格が定められているからだ。
そして、実はこれにはIEEE 1588も含まれる。というのも、IEEE 1588内で利用するプロファイルとして、IEEE 802.1ASが参照されているためだ。前回まででIEEE 1588は3種類(PTPv1/v2/v2.1)あると紹介したが、実はIEEE 802.1ASも2種類ある。両者の対応としては、次のようになっている。
- PTPv1(IEEE 1588-2002)→対応関係なし
- PTPv2(IEEE 1588-2008)→IEEE 802.1AS-2011
- PTPv2.1(IEEE 1588-2019)→IEEE 802.1AS-2020
とはいえ、策定された年を見ていくと、IEEE 802.1ASの仕様策定が完了したのは2011年であり、IEEE 1588-2008の策定には間に合ってないことに気づく(IEEE 1588-2019も同じだ)。しかし、TSN Task Groupのページを見ると「This was done in cooperation with the IEEE 1588 working group, and so the point-to-point 802.3 sublayer of 802.1AS is a specific profile of IEEE Std 1588-2008.」との表記があり、そもそも仕様の策定段階で両Task Groupが共同で作業を行っていたことが伺える。
実はもう最初の、P802.1AS-2011に関するTask GroupのDocumentにアクセスできなくなっているので、PARとかObjectiveなどは不明なのだが(IEEE 802.1AS-2020の作業を行っていたP802.1AS-Revの方は、まだアクセスできる)、とりあえず結果として策定された仕様を説明しよう。
これは、OSI参照モデルでいうところのLayer 2(Datalink層)で、時刻同期を取るための仕組みである。IEEE 802.1ASではこれを「gPTP(generalized precision time protocol)」と呼んでいる。
筆者が想像するには、おそらくPTPv1ことIEEE 1588-2002は通常のTCP/IPを前提とした構成だったので、それ以外のネットワーク(上に書いたEtherCATとかCC-Linkなど)でもTSNを使いたい、というニーズが出たのではないかと思う。こうした声に応えるために、PTPのメカニズムをLayer 2に押し込む作業を、IEEE 802.1ASとして行ったのではないかと考えている。
gPTPとPTPの違い
IEEE 802.1ASで定義されたgPTPと、IEEE 1588で定義されたPTPの違いについて、Specificationでは、次のように規定している。
【同期に利用する情報】 gPTPでは、EEE 802のMAC PDUおよびアドレスだけで時刻同期を実現するが、PTPはさまざまなLayer 2およびLayer 3~4を利用した時刻同期を提供する。
【メディア】 gPTPはメディア非依存であり、複数種類ネットワークにまたがる単一のTiming Domainで動作する。一方、PTPはIPv4/IPv6、Ethernetまたは産業用ネットワークに特化するかたちで実装される。
【システム】 gPTPでは、時刻同期するシステムはEnd StationおよびBridgeの2種類のみである。対してPTPではOrdinary clock、Boundary clock、End-to-End transparent clocks、およびP2P transparent clockの4種類が定義されている。gPTPのEnd StationはPTPのOrdinary clockに相当し、一方、gPTPのBridgeはPTPのBoundary clockの一種と定義される。
【中継】 gPTPの場合、時刻同期を行うシステムは、ほかの時刻認識システムとgPTP情報を直接通信するのみである。すなわち、gPTPのTime Domainは時間認識システムのみで構成される。時間認識を行わないBridgeは、gPTP情報の中継に使用できない。一方でPTPの場合、PTPのTime Domainはその内部に非PTP対応Bridgeを利用することが可能である。ただしこれを行う場合、Timingの収束が遅くなり、また余分なJitter及びWanderが発生するので、PTP Clock(というかIEEE 1588 Clock)を用いて、これのFilteringが必要となる。
【全二重Ethenetでの動作】 全二重Ethernetの場合、gPTPはPeer delayメカニズムを使用する必要があるが、PTPではEnd-to-End delayメカニズムを利用することも可能である。
【全二重Ethenetでの動作に必要な処理】 全二重Ethernetの場合、gPTPは2段階処理(Follow_UpとPdelay_Resp_Upを利用してTimestampを送信する)が必要であるが、PTPでは1段階処理(メッセージにOn-the-flyでTimestampを埋め込む)が可能である。
【Time domainの混在】 定常状態では、gPTPのTime domainにはActiveなGrandmaster clockが1つだけ存在する。対してPTPの場合、複数のTime domainが混在することが許される。
【同期】 gPTPのTime domain内に存在する全ての時刻同期システムは論理的に同期しており、これは同じ頻度で同期を取ることを意味している。これはgPTPの必須要件である。対してPTPではこの同期化はオプションであり、このためTime domain全体での同期には(gPTPより)時間を要する。
【BMCA】 gPTPで使用されるBMCA(Best Master Clock Algorithm)は、以下の4つの例外を除き、PTP(というかIEEE 1588)で利用されるBMCAと同じである。
- Slave portが受信したAnnounce messageについて、受信側の時刻同期システムから送信されたものではない場合は直ちに利用される。
- BMCAがPort masterであると判断したportが直ちにMaster portとなる。
- 未校正状態は利用されない。
- 全ての時刻同期システムは、仮にGrandmasterになりうる能力がない場合でも、Best masterの選択に参加することが要求される。
以上が、gPTPとPTPの違いである。ちなみに、gPTPでは、アプリケーションがどのように時間情報を取得するかについて一切定義がない。これもPTPとの違いである。
gPTPというかIEEE 802.1AS-2011における時刻の同期方法(あるいはMasterとSlaveのClockの時間差の取得方法)そのものはPTPと同じである。ただそれでもLayer 2だけでこれが完結することは便利で、Layer 3以上に独自プロトコルを組み込んだ場合でも、Layer 2にIEEE 802.1ASを組み込むことで、そのプロトコルをTSN対応にできるわけだ。