# IPマルチキャスト / PIM

マルチキャスト経路制御プロトコルPIM（Protocol Independent Multicast）のDenseモード（PIM-DM）とSparseモード（PIM-SMおよび拡張版のPIM-SSM）について解説します。
Note

PIM-DM、PIM-SM、PIM-SSMを使用するにはフィーチャーライセンスが必要です。
ライセンスのインストール方法については「運用・管理」/「システム」の「ライセンスキーのインストール」をご参照ください。

Note

VCS構成時はPIMとRSTPを併用できません。

## PIM-DM

PIM-DM（PIM Dense Mode）は、Reverse Path Multicasting（RPM）を利用したマルチキャスト経路制御プロトコルです。PIM-DMはシンプルさに重きを置いたプロトコルであり、広い帯域が利用可能でグループのメンバーが密集しているような環境に適しています。PIM-DMでは、明示的に配送停止の要求を受けるまでは、隣接するすべてのルーターにマルチキャストトラフィックを転送します。配送経路は送信者（始点）をルートとするツリー（始点木）状となります。
PIM-DMは、マルチキャスト配送経路の決定にユニキャストの経路表を流用します。また、受信インターフェース以外のすべてのインターフェースにパケットを転送します。
なお、後述するPIM-SMとは、名前と一部の制御メッセージが似ているだけで、まったく別のプロトコルです。PIM-DMは、PIM-SMとは異なり、ランデブーポイント（RP）やブートストラップルーター（BSR）といった特殊な役割を持ったルーターを使用しません。
次に、PIM-DMの基本的な設定手順について説明します。
なお、以下の例では、VLANとIPユニキャストルーティングの設定までは完了しているものとします。
Note

PIM-DMでは、マルチキャスト経路の制御に必要なユニキャスト経路情報は交換しないため、あらかじめ何らかの手段で各ルーター上にユニキャスト経路表を構築しておく必要があります。通常、そのためには、RIP、OSPFなどの設定を行っておく必要があります。

Note

ECMP環境でマルチキャストルーティングを行う場合は、マルチキャストトラフィックが通過するすべてのECMP経路上でマルチキャストルーティングの設定を行ってください。

Note

PIM-DMを利用したIPマルチキャストルーティング環境において、マルチキャスト送信者への最短経路（上流インターフェース）でPIM-DMを無効化すると、該当送信者への代替経路が存在していても、そちらを新しい上流インターフェースとして設定しないため、該当送信者からのマルチキャストトラフィックが一定期間停止します。これを回避するため、PIM-DM使用中は「no ip pim dense-mode」を実行しないでください。

Note

PIM-DMを使用するときは、IGMP Snoopingを無効にしないでください。

VLANの設定については「L2スイッチング」の「バーチャルLAN」をご覧ください。また、IPインターフェースの基本設定については「IP」の「IPインターフェース」を、静的な経路設定については「IP」の「経路制御」を、RIPについては「IP」の「経路制御（RIP）」を、OSPFについては「IP」の「経路制御（OSPF）」をご覧ください。

### 基本設定

PIM-DMでは、PIM-SMとは異なりBSRやRPといった特殊なルーターは使いません。基本的にすべてのルーターで同じ設定となります。

1. PIM-DMの動作に必要なPDMサービスを有効にします。これにはservice pdmコマンドを使います。

       awplus(config)# service pdm

2. IPマルチキャストルーティングを有効化します。これにはip multicast-routingコマンドを使います。

       awplus(config)# ip multicast-routing

3. マルチキャストルーティングを行うすべてのインターフェースで、PIM-DMとIGMP Querier機能を有効にします。これにはip pim dense-modeコマンドとip igmpコマンドを使います。

       awplus(config)# interface vlan10,vlan20,vlan30
       awplus(config-if)# ip pim dense-mode
       awplus(config-if)# ip igmp

設定は以上です。

### その他

マルチキャスト受信者（ホスト）だけが接続されており、PIMルーターが存在しない末端ネットワークのインターフェースでは、ip pim dense-modeコマンドでPIM-DMを有効化するときにpassiveオプションを指定することにより、PIMパケットの送信を抑制できます。
たとえば、前記の例において、vlan20にPIMルーターが存在しないのであれば、vlan20のみ次のような設定に変更することが可能です。

    awplus(config)# interface vlan20
    awplus(config-if)# ip pim dense-mode passive
    awplus(config-if)# ip igmp

## PIM-SM

PIM-SM（PIM Sparse Mode）は、PIM-DMと異なり、明示的に要求を出したネットワークにだけトラフィックを届けるSparseモードのマルチキャスト経路制御プロトコルです。このプロトコルは、グループのメンバーがネットワーク上に広くまばらに分散しているような環境で最適な動作をするよう設計されています。グループへの参加を表明していないルーターにトラフィックが配送されることは原則としてありません。これを実現するため、グループのトラフィックをとりまとめるランデブーポイント（RP）というルーターを用意し、RPを起点とする共有ツリーを作成してトラフィックを配送します。
PIM-SMでは、次の役割を持つルーターが必要です。
DR（Designated Router：代表ルーター：各サブネットに1台）
各サブネットにおいて、実際にマルチキャストパケットの転送を担当するルーター。PIM-SMでは、マルチキャストクライアントが存在するIPサブネットごとにDRが必要です。サブネット内に複数のPIMルーターが存在する場合、インターフェースに設定されたDR優先度の値がもっとも大きなルーターがDRとなります。DR優先度が同じときは、IPアドレスの大きなルーターがDRになります。同一サブネット上のPIMルーターは定期的にHelloパケットを送信して互いの状態を監視しており、DRがダウンした場合は次点のルーターがDRになります。
RP（Rendezvous Point：ランデブーポイント：各マルチキャストグループに1台）
PIM-SMネットワークの中核をなす重要なルーター。マルチキャストグループごとに用意します。マルチキャストパケットの送信者が接続されているネットワークのDR（FHR：ファーストホップルーター）と、受信者が接続されているネットワークのDR（LHR：ラストホップルーター）は、送受信を始めるにあたってRPにメッセージを送り、このような送信者・受信者が存在するということを伝えます。最初、ファーストホップルーターはマルチキャストパケットをRPにユニキャストします。すると、RPは通知のあったラストホップルーターに向けてのみ、パケットをマルチキャストで転送します。RPの候補（C-RP）が複数存在する場合、RP優先度値のもっとも小さいルーターがRPに選出されます。
BSR（Bootstrap Router：ブートストラップルーター：PIM-SMネットワークに1台）
PIM-SMネットワークにおいて、RP候補とマルチキャストグループの一覧、および、各グループのRP一覧を管理・広告するルーター。複数のBSR候補（C-BSR）が存在するときは、BSR優先度値のもっとも大きいルーターがBSRに選出されます。
次に、PIM-SMの基本的な設定手順について説明します。
なお、以下の各例では、VLANとIPユニキャストルーティングの設定までは完了しているものとします。
Note

PIM-SMでは、マルチキャスト経路の制御に必要なユニキャスト経路情報は交換しないため、あらかじめ何らかの手段で各ルーター上にユニキャスト経路表を構築しておく必要があります。通常、そのためには、RIP、OSPFなどの設定を行っておく必要があります。

Note

ECMP環境でマルチキャストルーティングを行う場合は、マルチキャストトラフィックが通過するすべてのECMP経路上でマルチキャストルーティングの設定を行ってください。

Note

PIM-SMとVRRPを併用する場合は、ブートストラップルーター（BSR）を使用せず、静的にランデブーポイント（RP）を設定してください。

VLANの設定については「L2スイッチング」の「バーチャルLAN」をご覧ください。また、IPインターフェースの基本設定については「IP」の「IPインターフェース」を、静的な経路設定については「IP」の「経路制御」を、RIPについては「IP」の「経路制御（RIP）」を、OSPFについては「IP」の「経路制御（OSPF）」をご覧ください。

### 基本設定（動的RP）

PIM-SMでは、ランデブーポイント（RP）が重要な役割を果たします。RPの指定方法には、ブートストラップメカニズム（BSRがRPの情報を広告する）を利用して動的に決める方法と、各ルーターにRPのアドレスを静的に設定する方法があります。
ここでは、ブートストラップメカニズムを利用して、RPを動的に決定する設定を示します。この場合は、少なくともRP、BSR、その他の3種類のルーターが必要です（RPとBSRは同じルーターにしてもかまいません）。

#### ランデブーポイント（RP）

1. PIM-SMの動作に必要なPIMサービスを有効にします。これにはservice pimコマンドを使います。

       awplus(config)# service pim

2. IPマルチキャストルーティングを有効化します。これにはip multicast-routingコマンドを使います。

       awplus(config)# ip multicast-routing

3. マルチキャストルーティングを行うすべてのインターフェースで、PIM-SMとIGMP Querier機能を有効にします。これにはip pim sparse-modeコマンドとip igmpコマンドを使います。

       awplus(config)# interface vlan10,vlan20,vlan30
       awplus(config-if)# ip pim sparse-mode
       awplus(config-if)# ip igmp
       awplus(config-if)# exit

4. ランデブーポイントとして動作するよう設定します。これにはip pim rp-candidateコマンドを使います。
   ここでは、すべてのマルチキャストグループに対するランデブーポイント候補（C-RP）として自らを広告するよう設定しています。広告時のアドレスとしては、vlan10のIPアドレスを使います。

       awplus(config)# ip pim rp-candidate vlan10

Note

PIM-SM使用時、ランデブーポイントがダウンしていてもマルチキャストルーティングが行われることがありますが、この状態が続くとCPU 使用率が上昇します。ランデブーポイントを設定するときはループバックインターフェースのアドレスを使用してダウンしないようにするか、ランデブーポイントを複数用意して冗長化してください。

Note

自身のloopbackインターフェースをRPとして告知する場合や、静的RPとして設定する場合は、loopbackインターフェースでもip pim sparse-modeコマンドでPIM-SMを有効にしてください。

設定は以上です。
特定のマルチキャストグループ範囲に対してのみ、C-RPとして動作させるには、標準IPアクセスリストを使って対象マルチキャストグループを指定します。たとえば、239.1.1.0～239.1.1.255のランデブーポイント候補として動作させる場合は次のようにします（番号付き標準IPアクセスリストを使った例）。

    awplus(config)# access-list 1 permit 239.1.1.0 0.0.0.255
    awplus(config)# ip pim rp-candidate vlan10 group-list 1

あるいは、名前付き標準IPアクセスリストを使って次のようにすることもできます。

    awplus(config)# access-list standard mc1 permit 239.1.1.0/24
    awplus(config)# ip pim rp-candidate vlan10 group-list mc1

#### ブートストラップルーター（BSR）

1. PIM-SMの動作に必要なPIMサービスを有効にします。これにはservice pimコマンドを使います。

       awplus(config)# service pim

2. IPマルチキャストルーティングを有効化します。これにはip multicast-routingコマンドを使います。

       awplus(config)# ip multicast-routing

3. マルチキャストルーティングを行うすべてのインターフェースで、PIM-SMとIGMP Querier機能を有効にします。これにはip pim sparse-modeコマンドとip igmpコマンドを使います。

       awplus(config)# interface vlan10,vlan20,vlan30
       awplus(config-if)# ip pim sparse-mode
       awplus(config-if)# ip igmp
       awplus(config-if)# exit

4. ブートストラップルーターとして動作するよう設定します。これにはip pim bsr-candidateコマンドを使います。
   ここでは、ブートストラップルーター候補（C-BSR）として自らを広告するよう設定しています。広告時のアドレスとしては、vlan10のIPアドレスを使います。

       awplus(config)# ip pim bsr-candidate vlan10

設定は以上です。

#### その他のルーター（非RP）

1. PIM-SMの動作に必要なPIMサービスを有効にします。これにはservice pimコマンドを使います。

       awplus(config)# service pim

2. IPマルチキャストルーティングを有効化します。これにはip multicast-routingコマンドを使います。

       awplus(config)# ip multicast-routing

3. マルチキャストルーティングを行うすべてのインターフェースで、PIM-SMとIGMP Querier機能を有効にします。これにはip pim sparse-modeコマンドとip igmpコマンドを使います。

       awplus(config)# interface vlan10,vlan20,vlan30
       awplus(config-if)# ip pim sparse-mode
       awplus(config-if)# ip igmp

設定は以上です。

### 基本設定（静的RP）

本製品では、BSRを使わずに、RPを静的設定する方法もサポートしています。
この例では、すべてのルーターに対し、特定のルーターがランデブーポイント（RP）であるということを静的に設定します。静的RPの構成では、ブートストラップルーター（BSR）は使用しません。

1. PIM-SMの動作に必要なPIMサービスを有効にします。これにはservice pimコマンドを使います。

       awplus(config)# service pim

2. IPマルチキャストルーティングを有効化します。これにはip multicast-routingコマンドを使います。

       awplus(config)# ip multicast-routing

3. マルチキャストルーティングを行うすべてのインターフェースで、PIM-SMとIGMP Querier機能を有効にします。これにはip pim sparse-modeコマンドとip igmpコマンドを使います。

       awplus(config)# interface vlan10,vlan20,vlan30
       awplus(config-if)# ip pim sparse-mode
       awplus(config-if)# ip igmp
       awplus(config-if)# exit

4. ランデブーポイント（RP）を静的に設定します。これにはip pim rp-addressコマンドを使います。
   ここでは、すべてのマルチキャストグループに対して、ランデブーポイント192.168.10.1を使うよう設定しています。

       awplus(config)# ip pim rp-address 192.168.10.1

   Note

   ランデブーポイントの指定は、ランデブーポイントとして動作させるルーター（ここでは192.168.10.1）にも、そうでないルーターにも同じように行います。

設定は以上です。
特定のマルチキャストグループ範囲ごとにランデブーポイントを設定するには、標準IPアクセスリストを使って対象マルチキャストグループを指定します。たとえば、239.1.1.0～239.1.1.255のランデブーポイントとして192.168.10.1を、239.1.2.0～239.1.2.255のランデブーポイントとして192.168.20.1を使う場合は次のようにします（番号付き標準IPアクセスリストを使った例）。

    awplus(config)# access-list 1 permit 239.1.1.0 0.0.0.255
    awplus(config)# access-list 2 permit 239.1.2.0 0.0.0.255
    awplus(config)# ip pim rp-address 192.168.10.1 1
    awplus(config)# ip pim rp-address 192.168.20.1 2

あるいは、名前付き標準IPアクセスリストを使って次のようにすることもできます。

    awplus(config)# access-list standard mc1 permit 239.1.1.0/24
    awplus(config)# access-list standard mc2 permit 239.1.2.0/24
    awplus(config)# ip pim rp-address 192.168.10.1 mc1
    awplus(config)# ip pim rp-address 192.168.20.1 mc2

### その他

マルチキャスト受信者（ホスト）だけが接続されており、PIMルーターが存在しない末端ネットワークのインターフェースでは、ip pim sparse-modeコマンドでPIM-SMを有効化するときにpassiveオプションを指定することにより、PIMパケットの送信を抑制できます。
たとえば、前記の各例において、vlan20にPIMルーターが存在しないのであれば、vlan20のみ次のような設定に変更することが可能です。

    awplus(config)# interface vlan20
    awplus(config-if)# ip pim sparse-mode passive
    awplus(config-if)# ip igmp

## PIM-SSM

PIM-SSM（PIM Source Specific Multicast）はPIM-SMを拡張して送信元指定マルチキャスト（SSM = Source-Specific Multicast）に対応したマルチキャスト経路制御プロトコルです。
PIM-SSMでは、マルチキャスト受信者（ホスト）が送信元サーバーのアドレスを明示的に指定することで、ランデブーポイント（RP）を経由する共有ツリーを使わずに、送信元から受信者への最短ツリーによる直接配送を実現します。
PIM-SSMを使用する場合の注意点をまとめます。

- PIM-SSMでは、次に示す範囲のマルチキャストグループアドレスを使います。

  `232.0.0.0/8（232.0.0.0 ～ 232.255.255.255）
  `
  この範囲は送信元指定マルチキャスト用と定められており、標準SSMレンジと呼びます（設定により任意のSSMレンジを指定することも可能です）。
  PIM-SSMの動作は、SSMレンジ内のマルチキャストグループに対してのみ行われます。SSMレンジ外のマルチキャストグループに対しては通常のPIM-SMの動作が行われます。
- SSMレンジ内のマルチキャストグループを受信するホストは、IGMPバージョン3に対応している必要があります。
  初期設定では、IGMPバージョン1/2を使用するホストがSSMレンジ内のマルチキャストグループに参加することはできません。
  ただし、IGMP機能のSSMマッピング設定を行えば、IGMPバージョン1/2ホストをSSMレンジ内のグループに参加させることが可能です。
- PIM-SSMはPIM-SMを拡張したプロトコルであるため、PIM-SSMを使用する場合はPIM-SMの設定も必要です。
  ただし、PIM-SSMの動作ではランデブーポイント（RP）を使わないため、SSMレンジ内のグループだけを使用する場合はRPやBSRの設定は不要です。
  一方、SSMレンジ外のマルチキャストグループに対しては通常のPIM-SM動作を行うため、SSMレンジ外のマルチキャストグループも使用する場合はRPやBSRの設定も必要となります。

次に、PIM-SSMの基本的な設定手順について説明します。
なお、以下の各例では、VLANとIPユニキャストルーティングの設定までは完了しているものとします。
Note

PIM-SSMでは、マルチキャスト経路の制御に必要なユニキャスト経路情報は交換しないため、あらかじめ何らかの手段で各ルーター上にユニキャスト経路表を構築しておく必要があります。通常、そのためには、RIP、OSPFなどの設定を行っておく必要があります。

Note

ECMP環境でマルチキャストルーティングを行う場合は、マルチキャストトラフィックが通過するすべてのECMP経路上でマルチキャストルーティングの設定を行ってください。

Note

PIM-SSM使用時でも、本製品のIGMP Snooping機能はSSM動作を行いません。すなわち、マルチキャスト受信者（ホスト）による送信元の指定を考慮せずにマルチキャストパケットを転送します。

VLANの設定については「L2スイッチング」の「バーチャルLAN」をご覧ください。また、IPインターフェースの基本設定については「IP」の「IPインターフェース」を、静的な経路設定については「IP」の「経路制御」を、RIPについては「IP」の「経路制御（RIP）」を、OSPFについては「IP」の「経路制御（OSPF）」をご覧ください。

### 基本設定

標準SSMレンジ「232.0.0.0/8」内のマルチキャストグループにおいてPIM-SSMを使用するための基本設定を示します。
ここでは、SSMレンジ外のアドレスは使わない、すなわち、通常のPIM-SMの動作は行わないものと仮定します。
PIM-SSMはPIM-SMを拡張したプロトコルであるため、各インターフェースで通常のPIM-SMを有効にする必要がありますが、PIM-SSMの動作に限定した場合はRPやBSRといった特殊なルーターを使わないため、基本的にすべてのルーターで同じ設定となります。

1. PIM-SMの動作に必要なPIMサービスを有効にします。これにはservice pimコマンドを使います。

       awplus(config)# service pim

2. IPマルチキャストルーティングを有効化します。これにはip multicast-routingコマンドを使います。

       awplus(config)# ip multicast-routing

3. マルチキャストルーティングを行うすべてのインターフェースで、PIM-SMとIGMP Querier機能を有効にします。これにはip pim sparse-modeコマンドとip igmpコマンドを使います。

       awplus(config)# interface vlan10,vlan20,vlan30
       awplus(config-if)# ip pim sparse-mode
       awplus(config-if)# ip igmp

4. SSMレンジを指定してPIM-SSMを有効化します。これには、ip pim ssmコマンドを使います。
   defaultキーワードを指定した場合は、標準のSSMレンジ（232.0.0.0/8）に対してPIM-SSMの動作が有効になります。

       awplus(config)# ip pim ssm default

設定は以上です。
SSMレンジ外のマルチキャストグループも併用する場合、SSMレンジ外のグループに対してはPIM-SMの動作を行うため、RPやBSRの設定が必要となります。「PIM-SM」を参照して、RPやBSRの設定（あるいは静的RPの設定）を追加してください。
IGMPバージョン3をサポートしていないマルチキャスト受信者（ホスト）が存在する場合は、IGMPのSSMマッピング機能を併用してください。
SSMマッピング機能は、IGMP Querier側でマルチキャストグループアドレスとマルチキャスト送信者の対応表を用意しておくことにより、マルチキャスト受信者（ホスト）がIGMPバージョン1/2にしか対応していない場合でも、SSMレンジ内のアドレスへの参加を可能とする機能です。
IGMPバージョン1/2ではSSMレンジへの参加に必要な送信者アドレスを指定できません（これを(*,G) Joinと呼びます）が、SSMマッピング機能によりグループと送信者の対応表（S -> G）を作っておくことにより、IGMPバージョン1/2の (*,G) Join をIGMPバージョン3の (S,G) Join として登録することができます。
次のSSMマッピング機能の設定例を示します。
ここでは、PIM-SSMの基本設定は完了しているものとします。

1. IGMPのSSMマッピング機能を有効にします。これにはip igmp ssm-map enableコマンドを使います。

       awplus(config)# ip igmp ssm-map enable

2. IGMPのSSMマッピングテーブルにエントリーを追加します。これには、ip igmp ssm-map staticコマンドを使います。
   ここでは、マルチキャストグループ232.10.10.0～232.10.10.255をマルチキャスト送信者192.168.10.5に関連付け、マルチキャストグループ232.10.20.0～232.10.20.255をマルチキャスト送信者192.168.20.5に関連付けるSSMマッピングエントリーを作成しています。

       awplus(config)# access-list 10 permit 232.10.10.0 0.0.0.255
       awplus(config)# access-list 20 permit 232.10.20.0 0.0.0.255
       awplus(config)# ip igmp ssm-map static 10 192.168.10.5
       awplus(config)# ip igmp ssm-map static 20 192.168.20.5

   これにより、IGMPバージョン1/2による 232.10.10.X へのグループ参加要求 (*,232.10.10.X) Join は、IGMPバージョン3の送信元指定付きグループ参加要求 (192.168.10.5, 232.10.10.X) Join として扱われるようになります。
   同様に、IGMPバージョン1/2による 232.10.20.X へのグループ参加要求 (*,232.10.20.X) Join は、IGMPバージョン3の送信元指定付きグループ参加要求 (192.168.20.5, 232.10.20.X) Join として扱われるようになります。

設定は以上です。
ここまでの例ではすべて標準SSMレンジ（232.0.0.0/8）を使っていましたが、標準外のSSMレンジを使用する場合はip pim ssmコマンドとip igmp ssmコマンドで任意のマルチキャストグループアドレス範囲を指定します。

    awplus(config)# access-list 10 permit 224.1.1.0 0.0.0.255
    awplus(config)# ip pim ssm range 10
    awplus(config)# ip igmp ssm range 10