メインコンテンツまでスキップ

4.6. PIM Assert Messages (PIM アサートメッセージ)

PIM Assert メカニズムは, イーサネットなどのマルチアクセスネットワーク上で一意の転送者を選出するために使用されます。複数の上流ルーターが同じ LAN に同じマルチキャストトラフィックを転送している場合, Assert メカニズムは 1 つのルーターのみが実際に転送することを保証し, 重複パケットを回避します。

Assert のトリガー条件

Assert は次の状況でトリガーされます:

  1. ルーターが非 RPF インターフェースでマルチキャストデータパケットを受信する
  2. これは LAN 上の別のルーターも同じトラフィックを転送していることを示します

4.6.1. (S,G) Assert Message State Machine ((S,G) Assert メッセージ状態マシン)

各インターフェースは (S,G) Assert 状態を維持して, そのインターフェース上の転送者を追跡します。

Assert 状態:

  • NoInfo (NI): Assert アクティビティなし
  • I am Assert Winner (W): このルーターが Assert に勝利し, 転送を担当
  • I am Assert Loser (L): このルーターが Assert に敗北し, 転送すべきでない

状態遷移 (簡略版):

NoInfo 状態:
- データパケットを受信 (非 RPF インターフェース) → Assert を送信, Winner または Loser に入る
- Assert を受信 (より良いメトリック) → Loser に入る

Winner 状態:
- 定期的に Assert メッセージを送信して更新
- Assert を受信 (より良いメトリック) → Loser に入る
- Assert Timer 期限切れ → NoInfo に入る

Loser 状態:
- トラフィックを転送しない
- Assert を受信 (より悪いメトリック) → Assert を送信, Winner に入る可能性あり
- Assert Timer 期限切れ → NoInfo に入る

4.6.2. (,G) Assert Message State Machine ((,G) Assert メッセージ状態マシン)

(*,G) Assert は共有ツリー上の転送者選出を処理し, メカニズムは (S,G) Assert と似ています。

主な違い:

  • ソースへのパスメトリックではなく RP へのパスメトリックを使用します
  • 特定の (S,G) Assert によってオーバーライドされる可能性があります

4.6.3. Assert Metrics (Assert メトリック)

Assert の勝者は Assert メトリックに基づいて選出されます。メトリック比較の順序は次のとおりです:

  1. 優先度比較:

    • (S,G) Assert は (*,G) Assert より優先されます
    • (S,G) 状態を持つルーターが優先されます
  2. ルートメトリック比較:

    • ソース (または RP) への管理距離 (小さいほど良い)
    • ソース (または RP) へのメトリック (小さいほど良い)
  3. IP アドレス比較:

    • 上記すべてが同じ場合, より大きい IP アドレスを持つルーターを選択します

メトリック比較の例:

Router A: Admin Distance = 110, Metric = 10, IP = 10.1.1.1
Router B: Admin Distance = 110, Metric = 20, IP = 10.1.1.2

Router A が勝利 (メトリックが小さい)

4.6.4. AssertCancel Messages (AssertCancel メッセージ)

AssertCancel は無限大メトリックを持つ特別な Assert メッセージです。次の目的で使用されます:

  • このルーターがもはや転送者であることを主張しないことを他のルーターに通知します
  • 新しい Assert 選出をトリガーします

AssertCancel を送信するシナリオ:

  • RPF インターフェースが変更される
  • ルートメトリックが大幅に変化する
  • インターフェース状態が変化する

4.6.5. Assert State Macros (Assert 状態マクロ)

PIM は Assert 状態を要約するために複数のマクロを使用します:

  • lost_assert(S,G,I): インターフェース I で (S,G) Assert に敗北したかどうか
  • lost_assert(*,G,I): インターフェース I で (*,G) Assert に敗北したかどうか
  • AssertWinner(S,G,I): インターフェース I での (S,G) Assert 勝者アドレス
  • AssertWinnerMetric(S,G,I): 勝者の Assert メトリック

これらのマクロは転送決定と送信インターフェースリストの計算に使用されます。

注記

詳細な Assert 状態マシン図, メトリック比較アルゴリズム, およびタイマー値については, RFC 7761 のセクション 4.6 の完全な仕様を参照してください。