vol31. Ethernet AVB gPTP のannounce message について

gPTPのGMを決定するプロトコルとして、BMCA(Best Clock Master Algorithm)がある。

BMCA は、GMになる能力のあるデバイス(gmCapableがtrueのデバイス)が、自身のクロック
精度情報を載せたAnnounce message をネットワーク内にマルチキャスト配信することに
より、どのデバイスGM(Grand Master)になるかを決定するプロトコル

john-rama01.hatenablog.com

各デバイスはAnnounce message を受け取ると、
1. 受信したAnnounce messageに記載されているクロック情報と、自身のクロック情報を比較
2. 自身のクロックが劣っていれば、
  - slave port role へと移行
  - Announce message の送信をやめる
3. 自身のクロックが勝っていれば、Announce message を送信し続ける

かくして最後まで勝ち残ったデバイス(annouce message を最後まで送信しつづけれたデ
バイス)がGrandMaster となる。


バイスが単体の場合のgPTP の挙動

では、デバイスが単体の場合の挙動はどうなるか?
つまり、デバイスEthernet switch に接続しない場合だ。

システム内に他のgmCapable デバイスが存在しないので、そのデバイス
GrandMaster として動き続け、Announce message を送信し続ける ?


実際に、openAVBのgPTPを動かして挙動を確認してみた。 GMとして動作している状態で、Ethernet Switch とのケーブルを物理的に外したら
Announce mssageの発行が停止し、pdelay_req を送信する挙動になった。


何故か?

答えは、対向機(リンクパートナー)がasCapable = false と判定されたためだ。
802.1AS 対応デバイスと認定されなかったのだ。

gPTP デバイスはpdelay_reqを周期的に発行し、リンクパートナーが常に存在しているかを
診断している。pdelay_req の応答があるか、測定されたpropagation delay値がthresh
hold を越えていないかといった項目を確認し、判別している。

今回の実験では、pdelay_reqに対する応答がなかったため、802.1AS対応デバイスが存在
しなくなったと判定され、その結果、ethernet port のport role がDisabledPort 状態
へと移行したため、Announce message が発行されなくなった。

なるほどね。