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

4.9. PIM Packet Formats (PIM パケット形式)

このセクションは PIM-SM メッセージのパケット形式について説明します。すべての PIM メッセージは IP プロトコル番号 103 を使用します。

PIM メッセージヘッダー形式

すべての PIM メッセージは共通ヘッダーを共有します:

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PIM Ver| Type | Reserved | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • PIM Ver: PIM バージョン番号 (現在は 2)
  • Type: メッセージタイプ
  • Checksum: チェックサム, PIM メッセージ全体をカバー

PIM メッセージタイプ

タイプ値メッセージタイプ用途
0Helloネイバー発見と維持
1Registerソースの RP への登録
2Register-StopRP による登録停止
3Join/Prune配布ツリーの構築
4BootstrapBSR メカニズム
5AssertLAN 転送者選出
6GraftPIM-DM 用
7Graft-AckPIM-DM 用
8Candidate-RP-AdvertisementRP 候補アドバタイズ

4.9.1. Encoded Source and Group Address Formats (エンコードされたソースとグループアドレス形式)

PIM メッセージ内のアドレスは, 異なるアドレスファミリーとマスク長をサポートするためにエンコードされた形式を使用します。

エンコードされたアドレス形式:

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Addr Family | Encoding Type | Rsrvd |S|W|R| Mask Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source/Group Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Addr Family: アドレスファミリー (IPv4=1, IPv6=2)
  • S bit: Sparse ビット
  • W bit: WC (WildCard) ビット
  • R bit: RPT (RP Tree) ビット
  • Mask Len: マスク長

4.9.2. Hello Message Format (Hello メッセージ形式)

Hello メッセージは複数の TLV オプションを含みます:

基本構造:

  • PIM 共通ヘッダー (Type=0)
  • 複数の Hello オプション TLV

一般的な Hello オプション:

  • Holdtime (タイプ 1): ネイバー保持時間
  • LAN Prune Delay (タイプ 2): 伝播遅延設定
  • DR Priority (タイプ 19): DR 優先度
  • Generation ID (タイプ 20): 再起動検出
  • Address List (タイプ 24): セカンダリアドレスリスト

4.9.3. Register Message Format (Register メッセージ形式)

Register メッセージはマルチキャストデータパケットをカプセル化し, RP にユニキャストします:

構造:

PIM Header (Type=1)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2| Type=1 |Reserved |B|N| Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| カプセル化された IP パケット |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • B bit: Border ビット
  • N bit: Null-Register ビット (探査用)

4.9.4. Register-Stop Message Format (Register-Stop メッセージ形式)

Register-Stop は RP によって Register を停止するために送信されます:

構造:

  • PIM ヘッダー (Type=2)
  • グループアドレス (エンコード形式)
  • ソースアドレス (エンコード形式)

4.9.5. Join/Prune Message Format (Join/Prune メッセージ形式)

Join/Prune メッセージは複数のグループと複数のソースを運ぶことができます:

構造:

  • PIM ヘッダー (Type=3)
  • 上流ネイバーアドレス
  • Holdtime
  • グループ数
  • 各グループについて:
    • グループアドレス
    • Join リスト (ソースアドレス)
    • Prune リスト (ソースアドレス)

編成構造: メッセージはグループごとに編成され, 各グループは複数の Join および Prune のソースを持つことができます。

4.9.5.1. Group Set Source List Rules (グループセットソースリストルール)

Join/Prune メッセージ内のソースリストは特定のルールに従います:

  • (*,G) Join/Prune は WC ビットを使用します
  • (S,G) Join/Prune はソースを直接リストします
  • (S,G,rpt) Prune は RPT ビットを使用します

4.9.5.2. Group Set Fragmentation (グループセットフラグメンテーション)

Join/Prune メッセージが大きすぎる場合, フラグメンテーションが必要です:

  • MTU 制限内に保ちます
  • 各フラグメントには完全なグループエントリが含まれます
  • グループの途中でフラグメント化しません

4.9.6. Assert Message Format (Assert メッセージ形式)

Assert メッセージは LAN 転送者選出に使用されます:

構造:

  • PIM ヘッダー (Type=5)
  • グループアドレス
  • ソースアドレス
  • Assert メトリック:
    • メトリック優先度
    • ルートメトリック
    • ルート優先度
注記

すべての PIM メッセージ形式の詳細なフィールド定義, エンコーディングルール, および例については, RFC 7761 のセクション 4.9 の完全な仕様を参照してください。パケット形式図とフィールドの正確なビット定義は元の文書で詳細に説明されています。