IGMP について
IGMP は、ホストが特定のグループにマルチキャスト データを要求するために使用する IPv4 プロトコルです。ソフトウェアは、IGMP を介して取得した情報を使用し、マルチキャスト グループまたはチャネル メンバーシップのリストをインターフェイス単位で保持します。これらの IGMP パケットを受信したシステムは、既知の受信者が含まれるネットワーク セグメントに、要求されたグループまたはチャネルに関する受信データをマルチキャスト送信します。
IGMP プロセスはデフォルトで実行されています。インターフェイスでは IGMP を手動でイネーブルにできません。IGMP は、インターフェイスで次のいずれかの設定作業を行うと、自動的にイネーブルになります。
-
Protocol-Independent Multicast(PIM)のイネーブル化
-
ローカル マルチキャスト グループの静的なバインディング
-
リンクローカル グループ レポートのイネーブル化
IGMP のバージョン
デバイスでは、IGMPv2 と IGMPv3、および IGMPv1 のレポート受信がサポートされています。
デフォルトでは、ソフトウェアが IGMP プロセスを起動する際に、IGMPv2 がイネーブルになります。必要に応じて、各インターフェイスでは IGMPv3 をイネーブルにできます。
IGMPv3 には、次に示す IGMPv2 からの重要な変更点があります。
-
次の機能を提供し、各受信者から送信元までの最短パス ツリーを構築可能な Source-Specific Multicast(SSM)をサポートします。
-
グループおよび送信元を両方指定できるホスト メッセージ
-
IGMPv2 ではグループについてのみ保持できたマルチキャスト ステートを、グループおよび送信元について保持可能
-
-
ホストによるレポート抑制が行われなくなり、IGMP クエリー メッセージを受信するたびに IGMP メンバーシップ レポートが送信されるようになりました。
(注) |
Cisco Nexus 9000 シリーズ スイッチは、Cisco NX-OS リリース 7.0(3)I2(1) までは SSM をサポートしていません。 |
IGMPv2 の詳細については、RFC 2236 を参照してください。
IGMPv3 の詳細については、RFC 5790 を参照してください。
IGMP の基礎
次の図に、ルータが IGMP を使用し、マルチキャスト ホストを検出する基本的なプロセスを示します。ホスト 1、2、および 3 は要求外の IGMP メンバーシップ レポート メッセージを送信して、グループまたはチャネルに関するマルチキャスト データの受信を開始します。
下の図では、ルータ A(サブネットの代表 IGMP クエリア)は、すべてのホストが含まれる 224.0.0.1 ホスト マルチキャスト グループに定期的にクエリ メッセージを送信して、マルチキャスト データを受信するホストを検出します。グループ メンバーシップ タイムアウト値を設定できます。指定したタイムアウト値が経過すると、ルータはサブネット上にグループのメンバーまたは送信元が存在しないと見なします。
IP アドレスが最小のルータが、サブネットの IGMP クエリアとして選出されます。ルータは、自身よりも下位の IP アドレスを持つルータからクエリー メッセージを継続的に受信している間、クエリア タイムアウト値をカウントするタイマーをリセットします。ルータのクエリア タイマーが期限切れになると、そのルータは代表クエリアになります。そのあとで、このルータが、自身よりも下位の IP アドレスを持つルータからのホスト クエリー メッセージを受信すると、ルータは代表クエリアとしての役割をドロップしてクエリア タイマーを再度設定します。
この図では、ホスト 1 からのメンバーシップ レポートの送出が止められており、最初にホスト 2 からグループ 224.1.1.1 に関するメンバーシップ レポートが送信されます。ホスト 1 はホスト 2 からレポートを受信します。ルータに送信する必要があるメンバーシップ レポートは、グループにつき 1 つだけであるため、その他のホストではレポートの送出が止められ、ネットワーク トラフィックが軽減されます。レポートの同時送信を防ぐため、各ホストではランダムな時間だけレポート送信が保留されます。クエリの最大応答時間パラメータを設定すると、ホストが応答をランダム化する間隔を制御できます。
(注) |
IGMPv1 および IGMPv2 メンバーシップ レポートが抑制されるのは、同じポートに複数のホストが接続されている場合だけです。 |
この図のルータ A は、IGMPv3 グループ/ソース固有のクエリを LAN に送信します。ホスト 2 および 3 は、アドバタイズされたグループおよび送信元からデータを受信することを示すメンバーシップ レポートを送信して、そのクエリーに応答します。
(注) |
IGMPv3 ホストでは、IGMP メンバーシップ レポートの抑制が行われません。 |
代表クエリアから送信されるメッセージの存続可能時間(TTL)値は 1 です。つまり、サブネット上の直接接続されたルータからメッセージが転送されることはありません。IGMP の起動時に送信されるクエリ メッセージの頻度および回数を個別に設定したり、スタートアップ クエリ インターバルを短く設定したりすることで、グループ ステートの確立時間を最小限に抑えることができます。通常は不要ですが、起動後のクエリー インターバルをチューニングすることで、ホスト グループ メンバーシップ メッセージへの応答性と、ネットワーク上のトラフィック量のバランスを調整できます。
注意 |
クエリー インターバルを変更すると、マルチキャスト転送能力が著しく低下することがあります。 |
マルチキャスト ホストがグループを脱退する場合、IGMPv2 以上を実行するホストでは、IGMP Leave メッセージを送信します。このホストがグループを脱退する最後のホストであるかどうかを確認するために、IGMP クエリ メッセージが送信されます。そして、最終メンバーのクエリ応答インターバルと呼ばれる、ユーザーが設定可能なタイマーが起動されます。タイマーが切れる前にレポートが受信されない場合は、ソフトウェアによってグループ ステートが解除されます。ルータはグループ ステートが解除されないかぎり、このグループにマルチキャスト トラフィックを送信し続けます。
輻輳ネットワークでのパケット損失を補正するには、ロバストネス値を設定します。ロバストネス値は、IGMP ソフトウェアがメッセージ送信回数を確認するために使用されます。
224.0.0.0/24 内に含まれるリンク ローカル アドレスは、インターネット割り当て番号局(IANA)によって予約されています。ローカル ネットワーク セグメント上のネットワーク プロトコルでは、これらのアドレスが使用されます。これらのアドレスは TTL が 1 であるため、ルータからは転送されません。IGMP プロセスを実行すると、デフォルトでは、非リンク ローカル アドレスにだけメンバーシップ レポートが送信されます。ただし、リンク ローカル アドレスにレポートが送信されるよう、ソフトウェアの設定を変更することができます。