# IPマルチキャスト / IGMP

## 1. 機能概要

マルチキャストとは、1つのIPパケットを複製して特定の複数の相手に送信することで、音声・映像のストリーム配信で多数の端末に対してデータを配信する場合などに用いられます。
マルチキャストによるデータ配信の場合、マルチキャスト送信者は1つのパケットを送信するだけでよいため、マルチキャスト送信者であるサーバーの負荷を低減でき、帯域の負荷も低減できます。

IGMP ( Internet Group Management Protocol ) は、マルチキャスト受信者がマルチキャストルーターに対してマルチキャストグループへの参加、維持、離脱を通知することで、 LAN 上のどのマルチキャスト受信者がどのマルチキャストグループに参加しているのかを判断するためのプロトコルです。IGMP は 一般的に PIM (Protocol Independent Multicast) などのマルチキャストルーティングプロトコルと組み合わせて使用され、マルチキャストルーターは IGMP でマルチキャスト受信者から通知された情報をもとに、マルチキャストパケットの転送先の制御を行います。
マルチキャストパケットは L2 スイッチで同一 VLAN 内のすべてのポートにフラッディングされますが、IGMP Snooping機能を使用することでマルチキャストパケットを受信したい端末が接続されたポートのみに該当グループのパケットを配信することができます。

下図は IGMP の動作イメージを表しています。マルチキャスト網内では、PIM などのマルチキャストルーティングプロトコルによってマルチキャストトラフィックがルーティングされます。
マルチキャスト受信者が接続されているマルチキャストルーターは、マルチキャスト受信者からマルチキャストグループへの参加要求を受信すると、マルチキャスト受信者が所属する VLAN インターフェースにマルチキャストトラフィックを転送します。

下図は IGMP プロキシ機能の動作イメージを表しています。IGMP プロキシ機能を使用すると、PIM などのマルチキャストルーティングプロトコルを有効化せずに、IGMP メッセージの中継を行います。
このプロキシ機能により、上流のマルチキャストルーターから配信されたマルチキャストパケットを下流のマルチキャスト受信者に転送することができます。

## 2. 用語の定義

IGMP (Internet Group Management Protocol)

マルチキャストグループを制御するためのプロトコル。
マルチキャストルーターはLAN上のどのホストがマルチキャストグループのメンバーであるか判断でき、ホストは自分がどのマルチキャストグループのメンバーかを伝えることができます。
3つのバージョンがあり、 IGMPv1 (RFC1112) 、 IGMPv2 (RFC2236) 、 IGMPv3 (RFC3376) で規定されます。本製品では、IGMPv2 と IGMPv3 に対応しています。

上流インターフェース

マルチキャスト送信者が存在する側のインターフェースのこと。

下流インターフェース

マルチキャスト受信者が存在する側のインターフェースのこと。

SSM (Source Specific Multicast) マッピング

マルチキャストグループとマルチキャスト送信者の送信元アドレスを対応づけることにより、IGMPv1 もしくは IGMPv2 にしか対応していないホストでも、特定の送信者からのマルチキャストトラフィックのみ受信できるようになる機能。

## 3. 機能詳細

IGMP の動作仕様について以下に示します。

### 3.1. IGMP の基本設定

1. IGMP の 有効 / 無効 設定は、VLANインターフェースに対して行います。
   デフォルトVLAN (VLAN #1)に対する初期設定、VLAN 生成後の初期設定どちらも 無効 です。
   ip igmp コマンドにより IGMP を有効にすることができます。また、PIM を有効にした場合は自動的に IGMP も有効になります。
   IGMP を有効にする場合は、 ip multicast-routing コマンドでシステム全体の IP マルチキャストルーティング機能 ( デフォルト無効 ) を有効にしてください。
   また、 multicast コマンドで各ポートのマルチキャストルーティング機能 ( デフォルト有効 ) を有効にしてださい。

2. 本製品は、 IGMP v2/v3 に対応しており、 ip igmp version コマンドで IGMP バージョンの変更ができます。
   初期設定は IGMPv3 です。

### 3.2. マルチキャストグループの参加・維持・離脱

1. IGMP が有効にしたマルチキャストルーターは Querier となり、定期的に General Query を送信してマルチキャスト受信者が存在するか否かを確認します。
   General Query を受信したマルチキャスト受信者は Report メッセージを送信することでマルチキャストグループへの参加要求を伝えます。
   Report はマルチキャスト受信者から自発的に送信されることもあります。Report を受信したマルチキャストルーターは、マルチキャスト受信者が所属する VLAN インターフェースに対してマルチキャストトラフィックを転送します。
   General Query の送信間隔は ip igmp query-interval コマンドで設定します。
   General Query に対する最大応答時間は ip igmp query-max-response-time コマンドで設定します。

2. マルチキャストグループに参加しているマルチキャスト受信者がグループから離脱する場合、IGMPv2 では Leave メッセージを、IGMPv3 では離脱情報を含めた Report を送信することで、グループから離脱します。
   マルチキャストルーターは、マルチキャスト受信者から離脱メッセージを受信したとき、他にそのグループのマルチキャスト受信者がいないことを確認するために、Group-Specific Query を複数回送信します。
   本製品では、Group-Specific Query を同一 VLAN 上の全てのポートにフラッディングします。
   Group-Specific Query に対する応答がない場合は、そのグループにマルチキャスト受信者が存在しないと判断し、IGMP グループメンバーシップエントリーを削除します。
   Group-Specific Query の送信間隔は、 ip igmp last-member-query-interval コマンドで設定します。
   Group-Specific Query の送信回数は、 ip igmp last-member-query-count コマンドで設定します。

3. 同一 VLAN 上に複数の Querier が存在する場合、最も小さい IP アドレスを持つマルチキャストルーターが Querier となり、他の Querier はクエリーの送信を停止します。
   何らかの理由で Querier からクエリーが届かなくなった場合は、他のマルチキャストルーターが Querier の役割を引き継ぎます。
   他のクエリアーがクエリー送信を停止してから、クエリアーとしての動作を引き継ぐまでの待機時間は、 ip igmp querier-timeout コマンドで設定します。
   尚、ネットワークの輻輳などによってパケットが損失しやすい環境では、 ip igmp robustness-variable コマンドの設定値を大きな値に設定するとパケット損失に対するロバスト性が高くなります。

4. IGMPv2 では、即時脱退機能を使用することにより、Leave メッセージを受信後すぐに IGMP グループメンバーシップエントリーを削除することができます。
   同一 VLAN 上に他のマルチキャスト受信者が存在する場合、IGMP グループメンバーシップエントリーが削除されるとマルチキャストトラフィックが転送されなくなるため、即時脱退機能は有効にしないでください。
   即時脱退機能は、デフォルトVLAN (VLAN #1)に対する初期設定、VLAN 生成後の初期設定どちらも無効です。
   即時脱退機能は、 ip igmp immediate-leave コマンドで設定します。

5. Report / Leave メッセージは デフォルトで送信元アドレスをチェック され、送信元アドレスとインターフェースが所属するサブネットのアドレス範囲が異なる場合は 破棄されます 。
   異なるサブネットからの IGMP メッセージの受信を許可するには、 ip igmp check source-address disable コマンドを使用します。
   尚、送信元アドレスが　0.0.0.0 の場合は、ip igmp check source-address の設定に関わらず常に受け付けます。

6. IPv4 アクセスリストを使用することで、マルチキャストグループに参加できるマルチキャスト受信者を制限することができます。
   マルチキャスト受信者の制限には、 ip igmp access-group コマンドを使用します。

7. IGMP グループメンバーシップの最大登録数は、 ip igmp limit コマンドで変更することができます。

8. VLAN インターフェースに静的に IGMP グループメンバーシップのエントリーを追加するには、 ip igmp static-group コマンドを使用します。
   静的エントリーを追加すると、対象 VLAN インターフェースに常にマルチキャスト受信者が存在するものとみなし、その VLAN にマルチキャストトラフィックを転送します。
   ただし、本機自体がマルチキャストトラフィックを受信することはなく Report の送信も行いません。

9. 動的に登録された IGMP グループメンバーシップのエントリーは clear ip igmp コマンドで削除できます。
   尚、 ip igmp static-group コマンドで静的に追加されたエントリーは削除されません。

10. IGMP グループメンバーシップの情報は、 show ip igmp groups コマンドで確認します。

11. IGMP が有効になっている　VLAN インターフェースの情報は、 show ip igmp interface コマンドで確認します。

### 3.3. SSM マッピング機能

IGMPv3 では Report にマルチキャスト送信者の指定を含めることにより、特定のマルチキャスト送信者のみからマルチキャストトラフィックを受信することができますが、IGMPv2 はマルチキャスト送信者を指定することができません。
SSM ( Source Specific Multicast) マッピング機能を使用すると、マルチキャストグループとマルチキャスト送信者を対応付けることで、IGMPv2 のマルチキャスト受信者でも、特定のマルチキャスト送信者からのマルチキャストトラフィックのみ受信できるようになります。
SSM マッピング機能はデフォルトで 有効 です。
SSM マッピング機能の有効 / 無効の設定は、 ip igmp ssm-map コマンドで設定します。
マルチキャストグループとマルチキャスト送信者を対応付けは、 ip igmp ssm-map static コマンドで設定します。本製品では、標準 SSM レンジ ( 232.0.0.0/8 ) のみでなくマルチキャストグループ全体を SSM レンジとして使用可能です。

### 3.4. IGMP プロキシー機能

IGMP プロキシー機能を利用することで、マルチキャストルーティングプロトコルを動作させずに上位のマルチキャストルーターから受信したマルチキャストトラフィックをマルチキャスト受信者に転送することができます。
IGMP プロキシー機能では、上流インターフェース ( マルチキャスト送信者が存在する側 ) と 下流インターフェース ( マルチキャスト受信者が存在する側 ) の設定を行う必要があります。
IGMP プロキシーの上流インターフェースは、 ip igmp proxy-service コマンドで設定します。
IGMP プロキシーの下流インターフェースは、 ip igmp mroute-proxy コマンドで設定します。
1 つの上流インターフェースに対して、複数の下流インターフェースを指定することができます。
ただし、IGMPプロキシー機能を使用するインターフェースでは、PIM などのマルチキャストルーティングを有効にすることはできません。

## 4. 関連コマンド

関連コマンドについて、以下に示します。
コマンドの詳細は、コマンドリファレンスを参照願います。PIM関連のコマンドは IPマルチキャスト / PIM を参照してください。

- IP マルチキャスト関連コマンド一覧

  操作項目 | 操作コマンド
  --- | ---
  IPマルチキャストルーティングの有効／無効設定 | ip multicast-routing
  マルチキャストパケットL3転送の有効／無効設定 | multicast
  RPFチェック用の静的ユニキャスト経路の設定 | ip mroute
  IPマルチキャスト経路表の最大エントリー数の設定 | ip multicast-route-limit
  IPマルチキャスト経路表の情報を表示 | show ip mroute
  IPマルチキャスト用仮想インターフェースの情報を表示 | show ip mvif
  マルチキャスト送信者アドレスのRPF情報を表示 | show ip rpf
  IPマルチキャスト経路表のエントリー削除 | clear ip mroute

- IGMP 関連コマンド一覧

  操作項目 | 操作コマンド
  --- | ---
  IGMPの有効／無効設定 | ip igmp
  IGMPバージョンの設定 | ip igmp version
  IGMP General Queryの送信間隔の設定 | ip igmp query-interval
  IGMP General Queryの最大応答時間の設定 | ip igmp query-max-response-time
  IGMP Group-Specific Queryの送信間隔の設定 | ip igmp last-member-query-interval
  IGMP Group-Specific Queryの送信回数の設定 | ip igmp last-member-query-count
  他にQuerierが存在しなくなったとみなす待機時間の設定 | ip igmp querier-timeout
  IGMPのパケット損失に対するロバスト性の設定 | ip igmp robustness-variable
  IGMP即時脱退の設定 | ip igmp immediate-leave
  IGMPメッセージの送信元アドレス確認の有効／無効設定 | ip igmp check source-address
  参加可能マルチキャストグループの制限の設定 | ip igmp access-group
  マルチキャストグループの最大登録数の設定 | ip igmp limit
  IGMP静的マルチキャストグループメンバーの設定 | ip igmp static-group
  IGMP SSMマッピング機能の有効／無効設定 | ip igmp ssm-map
  IGMP SSMマッピングの静的エントリーの設定 | ip igmp ssm-map static
  IGMPプロキシーの下流インターフェースの設定 | ip igmp mroute-proxy
  IGMPバージョンの上流インターフェース設定 | ip igmp proxy-service
  IGMPマルチキャスト受信者の情報を表示 | show ip igmp groups
  インターフェースのIGMP関連情報を表示 | show ip igmp interface
  IGMP SSMマッピングの情報を表示 | show ip igmp ssm-map
  インターフェースのIGMPプロキシー情報を表示 | show ip igmp proxy
  IGMPグループメンバーシップのエントリー削除 | clear ip igmp

## 5. コマンド実行例

### 5.1. IGMP の設定

マルチキャストによるデータ配信を行う場合、一般的に IGMP と PIM を併用して設定を行います。
以下の例では、IGMP と PIM Dense-mode を使用したときの設定例について説明します。
尚、VLAN の設定と IP の設定は既に設定されているものとします。VLAN の設定と IP の設定の詳細は 「IPマルチキャスト：PIM」の「コマンド実行例」を参照してください。

1. IP マルチキャストルーティングを有効にします。

       Yamaha(config)# ip multicast-routing

2. VLAN #10 と # VLAN #20 に対して、IGMP と PIM の設定を行います。

       Yamaha(config)#interface vlan10,vlan20
       Yamaha(config-if)#ip pim dense-mode (1)
       Yamaha(config-if)#ip igmp enable (2)

   1 | VLAN #10 と VLAN #20 のPIM-DMを有効にする
   2 | VLAN #10 と VLAN #20 のIGMP を有効にする

3. マルチキャスト受信者の情報を確認します。

       Yamaha#show ip igmp groups
       IGMP Connected Group Membership
       Group Address    Interface            Uptime     Expires   State    Last Reporter
       239.0.0.1        vlan10               00:01:46   00:03:07  Active   192.168.10.1
       Yamaha#

- 各 VLAN インターフェースでマルチキャストルーティングを無効化する場合は、IGMP と PIM の設定を削除します。

1. VLAN #10 と # VLAN #20 で、IGMP と PIM の設定を削除します。

       Yamaha(config)#interface vlan10,vlan20
       Yamaha(config-if)#no ip pim dense-mode (1)
       Yamaha(config-if)#no ip igmp enable (2)

   1 | VLAN #10 と VLAN #20 のPIM-DMを無効にする
   2 | VLAN #10 と VLAN #20 のIGMP を無効にする

### 5.2. IGMP プロキシーの設定

IGMP プロキシー機能を使用すると、上流インターフェース(マルチキャストルーター側)が IGMP ホストとして動作し、下流インターフェース(マルチキャスト受信者側)が IGMP Querier として動作することで、上位のマルチキャストルーターから受信したマルチキャストトラフィックを、マルチキャスト受信者側に転送します。
以下の例では、IGMP プロキシーの設定例について説明します。
尚、VLAN の設定と IP の設定は既に設定されているものとします。VLAN の設定と IP の設定の詳細は 「IPマルチキャスト：PIM」の「コマンド実行例」を参照してください。

1. IP マルチキャストルーティングを有効にします。

       Yamaha(config)# ip multicast-routing

2. VLAN #20 に対して IGMP の設定を行い、IGMP プロキシーの上流インターフェースに設定します。

       Yamaha(config)#interface vlan20
       Yamaha(config-if)#ip igmp proxy-service (1)
       Yamaha(config-if)#ip igmp enable (2)

   1 | VLAN #20 を IGMP プロキシーの上流インターフェースに指定する
   2 | VLAN #20 の IGMP を有効にする

3. VLAN #10 に対して IGMP の設定を行い、IGMP プロキシーの下流インターフェースに設定します。このとき、上流インターフェースに VLAN #20 を指定します。

       Yamaha(config)#interface vlan10
       Yamaha(config-if)#ip igmp mroute-proxy vlan20 (1)
       Yamaha(config-if)#ip igmp enable (2)

   1 | VLAN #10 を IGMP プロキシーの下流インターフェースとし、上流インターフェースに VLAN #20 を指定する。
   2 | VLAN #10 の IGMP を有効にする

4. IGMPプロキシーの情報を確認します。

       Yamaha#show ip igmp proxy groups
       IGMP Connected Proxy Group Membership
       Group Address    Interface            State     Member state
       239.0.0.1        vlan20               Active    Delay

IGMPプロキシー機能を利用する際、一つの上流インターフェースに複数の下流インターフェースを紐付けることができます。
また、IGMP Snoopingを有効にしている場合は、マルチキャストパケットを受信したい端末が接続されたポートのみに該当グループのパケットを配信します。

## 6. 注意事項

特になし

## 7. 関連文書

- IPマルチキャスト : PIM

Search result
No more search results.
There are no topics that match your search query.