4.5. PIM Join/Prune Messages (PIM 参加/剪定メッセージ)
PIM Join/Prune メッセージは, マルチキャスト配信ツリーを構築および維持するために使用されます。これらのメッセージは, ルーターが次のために送信します:
- マルチキャストツリーへの参加を要求する (Join)
- マルチキャストツリーのブランチからの離脱を要求する (Prune)
- 他のルーターの Prune メッセージをオーバーライドする
Join/Prune メッセージタイプ
PIM-SM は 3 種類の Join/Prune メッセージを使用します:
- (*,G) Join/Prune: 共有ツリー (RP ツリー) に使用されます
- (S,G) Join/Prune: ソース固有最短経路ツリーに使用されます
- (S,G,rpt) Join/Prune: 共有ツリー上の特定ソースを剪定するために使用されます
4.5.1. Receiving (,G) Join/Prune Messages ((,G) Join/Prune メッセージの受信)
ルーターがインターフェース上で (,G) Join または Prune メッセージを受信すると, そのインターフェースの (,G) 下流状態を更新します。
(*,G) Join の処理:
- インターフェースの (*,G) 状態を "Join" に遷移させます
- Join/Prune 有効期限タイマーをリセットします
- これにより送信インターフェースリストが変更される場合, 上流に Join を送信する必要がある場合があります
(*,G) Prune の処理:
- マルチアクセス LAN では, 他のルーターがオーバーライドできるように Prune-Pending タイマーを開始します
- オーバーライドされない場合, 状態を "NoInfo" に遷移させます
4.5.2. Receiving (S,G) Join/Prune Messages ((S,G) Join/Prune メッセージの受信)
(S,G) Join/Prune メッセージの処理は (*,G) と似ていますが, 特定のソース-グループペアに対して行われます。
主な違い:
- (S,G) 状態は (*,G) 状態とは独立して維持されます
- (S,G) Join は SPT を構築するために使用されます
- ソースへの上流 Join をトリガーする可能性があります
4.5.3. Receiving (S,G,rpt) Join/Prune Messages ((S,G,rpt) Join/Prune メッセージの受信)
(S,G,rpt) Prune メッセージは, 共有ツリー上の特定ソースからのトラフィックを除外するために使用されます。
典型的なシナリオ:
- 受信者が (*,G) を介して共有ツリーに参加します
- 特定ソース S については, 受信者がそのトラフィックを望まない場合
- そのソースを剪定するために (S,G,rpt) Prune を送信します
4.5.4. Sending (,G) Join/Prune Messages ((,G) Join/Prune メッセージの送信)
ルーターは, 共有ツリー状態を維持するために, RP の方向に定期的に (*,G) Join メッセージを送信します。
上流 (*,G) 状態マシン (簡略版):
NotJoined(*,G) 状態:
- 条件: JoinDesired(*,G) == TRUE
- 操作: Join(*,G) を送信, Joined(*,G) に遷移
Joined(*,G) 状態:
- 定期的に Join(*,G) を送信 (更新)
- 条件: JoinDesired(*,G) == FALSE
- 操作: Prune(*,G) を送信, NotJoined(*,G) に遷移
Join サイクル: デフォルト 60 秒 Holdtime: 3.5 × Join サイクル = 210 秒
4.5.5. Sending (S,G) Join/Prune Messages ((S,G) Join/Prune メッセージの送信)
(S,G) Join メッセージは, 特定ソースへの最短経路ツリーを構築するために使用されます。
(S,G) Join をトリガーする条件:
- ローカル受信者が IGMPv3 を介して特定ソースを要求します
- 共有ツリーから SPT への切り替え (トラフィックレートがしきい値を超える)
- RP として, Register メッセージの受信を停止する必要があります
4.5.6. (S,G,rpt) Periodic Messages ((S,G,rpt) 定期メッセージ)
(S,G,rpt) Prune メッセージは通常, (*,G) Join メッセージと一緒に送信され, 次を示します: "グループ G のトラフィックが必要ですが, ソース S からのトラフィックは不要です"。
メッセージの組み合わせ例:
Join(*,G) + Prune(S,G,rpt)
→ "共有ツリーに参加しますが, ソース S を除外します"
4.5.7. State Machine for (S,G,rpt) Triggered Messages ((S,G,rpt) トリガーメッセージの状態マシン)
(S,G,rpt) 状態マシンは, LAN 上の他のルーターの Prune メッセージをオーバーライドする状況を処理します。
主なメカニズム:
- Override Timer: オーバーライドメッセージの送信をランダム化するために使用されます
- Prune-Pending: オーバーライドを許可するために Prune の発効を遅延させます
詳細な状態マシン定義, タイマー値, およびメッセージ形式については, RFC 7761 のセクション 4.5 の完全な仕様を参照してください。状態マシン図と疑似コードは元の文書で詳細に説明されています。