vol31. Ethernet AVB gPTP のannounce message について
gPTPのGMを決定するプロトコルとして、BMCA(Best Clock Master Algorithm)がある。
BMCA は、GMになる能力のあるデバイス(gmCapableがtrueのデバイス)が、自身のクロック
精度情報を載せたAnnounce message をネットワーク内にマルチキャスト配信することに
より、どのデバイスがGM(Grand Master)になるかを決定するプロトコル。
各デバイスは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 が発行されなくなった。
なるほどね。