4.4. PIM Register Messages (PIM レジスタメッセージ)
マルチキャストソースがデータの送信を開始すると, ソースの指定ルーター (DR) は, これらのデータパケットをランデブーポイント (RP) に登録する責任があります。登録は, データパケットを PIM Register メッセージにカプセル化し, RP にユニキャスト送信することによって完了します。
Register メカニズムの目的
Register メカニズムは次の問題を解決します:
- ソースはいつでも送信を開始できますが, RP はまだそのグループに対する転送状態を確立していない可能性があります
- 初期データパケットを RP に送信することにより, 受信者が即座にトラフィックの受信を開始できることを保証します
- RP がソースの最短経路ツリーに参加する必要があるかどうかを決定できるようにします
4.4.1. Sending Register Messages from the DR (DR からの Register メッセージの送信)
ソースの DR が直接接続されたソースからマルチキャストデータパケットを受信すると, 次の操作を実行します:
- 登録が必要かどうかをチェック: (S,G) Register 状態が "Join" の場合, 登録が必要です
- パケットをカプセル化: 元のマルチキャストデータパケットを PIM Register メッセージにカプセル化します
- RP へのユニキャスト: Register メッセージをそのグループの RP にユニキャスト送信します
Register 状態マシン (簡略版):
状態: Join (Register の送信が必要)
- ソースデータパケットを受信 → カプセル化して Register を送信
- Register-Stop を受信 → Prune 状態に遷移
状態: Prune (Register-Stop を受信済み)
- Register-Stop タイマーが実行中
- タイマー期限前に Null-Register を送信して探査
- RP がトラフィックを必要とする場合 → Join 状態に戻る
状態: Join-Pending (RP の応答を待機中)
- Register を送信済み, RP の確認を待機中
Null-Register: DR が Register-Stop 状態にあるとき, Register-Stop タイマーの期限前に, DR はデータを含まない Null-Register メッセージを送信して, RP がまだそのトラフィックを必要としないかどうかを探査します。
4.4.2. Receiving Register Messages at the RP (RP での Register メッセージの受信)
RP が Register メッセージを受信すると, 次の操作を実行します:
-
パケットのカプセル化解除: Register メッセージから元のマルチキャストデータパケットを抽出します
-
トラフィックが必要かどうかをチェック:
- 下流受信者が存在する場合 (olist が空でない) → カプセル化解除されたパケットを転送し, (S,G) SPT に参加します
- 下流受信者が存在しない場合 → Register-Stop メッセージを DR に送信します
-
Register-Stop の送信: RP がそのトラフィックを必要としない場合, DR に Register-Stop メッセージを送信し, DR に Register の送信を停止するよう指示します
RP での Register 処理の条件:
if (Register メッセージを受信) {
if (Null-Register である) {
if (トラフィックが不要) {
Register-Stop を送信
}
} else {
パケットをカプセル化解除
if (トラフィックが必要 AND まだ SPT に参加していない) {
ソースに (S,G) Join を送信
カプセル化解除されたパケットを転送
} else if (トラフィックが不要) {
Register-Stop を送信
} else {
カプセル化解除されたパケットを転送
}
}
}
Register トンネルの最適化
RP が (S,G) SPT に参加し, ネイティブのマルチキャストトラフィックの受信を開始すると, Register トンネルは不要になります。この時点で:
- RP は DR に Register-Stop を送信します
- DR はパケットのカプセル化を停止します
- トラフィックはネイティブのマルチキャストルーティングを介して RP に到達します
Register メッセージの詳細な形式, Border ビットの処理, および Register-Stop タイマー値については, RFC 7761 のセクション 4.4 およびセクション 4.9.3-4.9.4 の完全な仕様を参照してください。