| ライター翻訳版 - March 15, 2005 |
| 機械翻訳版 - December 17, 2008 |
| 英語版 - December 17, 2008 |
| Document ID: 10559 |
目次
概要
はじめに
表記法
前提条件
使用するコンポーネント
背景説明
マルチキャスト アドレス
Internet Group Management Protocol(IGMP; インターネット グループ管理プロトコル)
IGMP バージョン 1
IGMP バージョン 2
IGMP バージョン 3
IGMP バージョン 1 と IGMP バージョン 2 の間の相互運用性
IGMP バージョン 1 または IGMP バージョン 2 と IGMP バージョン 3 の間の相互運用性
ルータ上の IGMP
ルータ上の実用例
Cisco Group Management Protocol(CGMP)
CGMP のフレームとメッセージ タイプ
ルータ ポートの学習
CGMP を使用したグループへの参加
CGMP を使用したグループの終了
CGMP とソース専用ネットワーク
CGMP を有効にする Cisco ルータとスイッチの設定
CGMP 使用の実用例とデバッグ コマンドおよび出力
IGMP スヌーピング
IGMP スヌーピングの概要
ルータ ポートの学習
IGMP スヌーピングを使用したグループへの参加
IGMP/CGMP のインタラクション
マルチキャスト ソース専用ネットワーク
制限事項
Cisco スイッチ上の IGMP スヌーピングの設定
IGMP スヌーピングの実用例
関連情報
概要
Cisco Group Management Protocol(CGMP)および Internet Group Management Protocol(IGMP; インターネット グループ管理プロトコル)スヌーピングの目的は、スイッチド ネットワークでマルチキャスト トラフィックを制限することです。 デフォルトでは、ブロードキャスト ドメイン内のマルチキャスト トラフィックが LAN スイッチによってフラッディングされます。これにより、多くのマルチキャスト サーバによってセグメントにストリームが送信されている場合、多くの帯域幅が消費されます。
はじめに
表記法
文書表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
前提条件
この文書に適用される特定の前提条件はありません。
使用するコンポーネント
この文書は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
背景説明
通常、スイッチによる MAC アドレスの学習は、受信されたすべてのフレームの発信元アドレス フィールドの参照によって行われるので、マルチキャスト トラフィックではフラッディングが発生します。 マルチキャスト MAC アドレスは、パケットの発信元アドレスとして使用されことはありません。 MAC アドレス テーブルにはこのようなアドレスはないので、スイッチにはこれらを学習する方法はありません。
この問題に対する最初のソリューションは、各グループおよび各クライアント用にスタティック MAC アドレスを設定することです。 このソリューションによって、適切に問題が解決されます。ただし、このソリューションはスケーラブルではなく、ダイナミックなものでもありません。 次のいずれかのコマンドを発行して、Catalyst 4000、5000、または 6000 スイッチ上でこのソリューションを使用できます。
-
set cam static <multicast_mac> <mod/port>
-
set cam permanent <multicast_mac> <mod/port>
これら 2 つのコマンドでは同じ効果が得られます。ただし、リブート時に static のエントリは表示されなくなりますが、permanent のエントリは表示されたままです。
2 番目のソリューションは、CGMP の使用です。CGMP はシスコ独自のプロトコルであり、マルチキャスト ルータとスイッチの間で使用されます。 CGMP を使用すると、ホストから送信された IGMP メッセージの Cisco マルチキャスト ルータによる認識が可能になり、IGMP パケット内に含まれている情報がスイッチに伝達されます。
最後に挙げる(最も効果的な)ソリューションは、IGMP スヌーピングの使用です。 IGMP スヌーピングを使用すると、ホスト自体からの IGMP メッセージがスイッチによって代行受信され、それに従って MAC テーブルが更新されます。 IGMP スヌーピングをサポートするには、高度なハードウェアが必要です。
この文書内で取り扱う CGMP 設定は、CatOS が稼動する Catalyst 4000 および 5000 スイッチを対象としてます(Catalyst 6000 スイッチでは CGMP はサポートされません)。IGMP スヌーピング設定は、CatOS が稼動する Catalyst 5000 および 6000 スイッチを対象としています。 他のスイッチ プラットフォームでのマルチキャスト機能の設定に関しては、特定スイッチの設定ガイド用の『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。
次のセクションでは、マルチキャスト アドレスおよび IGMP の機能を簡単に説明し、CGMP および IGMP スヌーピングについての詳細情報を提供します。
マルチキャスト アドレス
-
マルチキャスト IP アドレスは、クラス D の IP アドレスです。 したがって、224.0.0.0 〜 239.255.255.255 のすべての IP アドレスがマルチキャスト IP アドレスになります。 これは、Group Destination Address(GDA; グループ宛先アドレス)とも呼ばれます。
-
各 GDA に対して、関連付けられた MAC アドレスがあります。 次に示すように、この MAC アドレスは 01-00-5e の形式で、この後に 16 進数に変換された GDA の最後の 23 ビットが続きます。
-
230.20.20.20 は、MAC 01-00-5e-14-14-14 に該当します。
-
224.10.10.10 は、MAC 01-00-5e-0a-0a-0a に該当します。
この結果、1 対 1 のマッピングではなく、次に示すように 1 対多のマッピングとなります。
-
224.10.10.10 は、MAC 01-00-5e-0a-0a-0a に該当します。
-
226.10.10.10 も、MAC 01-00-5e-0a-0a-0a に該当します。
-
-
次に示すように、一部のマルチキャスト IP アドレスは特殊用途のために予約済になっています。
-
224.0.0.1 - すべてのマルチキャスト対応ホスト。
-
224.0.0.2 - すべてのマルチキャスト対応ルータ。
-
224.0.0.5 および 224.0.0.6 は、Open Shortest Path First(OSPF)によって使用されます。
-
通常、224.0.0.1 〜 224.0.0.255 のアドレスは予約されており、さまざまなプロトコル(標準プロトコルまたは Hot Standby Router Protocol(HSRP; ホットスタンバイ ルータ プロトコル)などの独自プロトコル)によって使用されます。 マルチキャスト ネットワークでは、GDA に対してこれらを使用しないことが推奨されます。 CGMP および IGMP スヌーピングは、この予約済のアドレス範囲では動作しません。
Internet Group Management Protocol(IGMP; インターネット グループ管理プロトコル)
IGMP は、IGMPv1 用には RFC1112 で、IGMPv2 用には RFC2236 で、さらに IGMPv3 用には RFC3376 で定義されるている規格です。 特定のマルチキャスト トラフィックを受信するために、ホストによるルータの登録方法が IGMP によって指定されます。 次のセクションでは、IGMP の簡単な概要を提供します。
IGMP バージョン 1
IGMP バージョン 1(IGMPv1)メッセージは IP データグラムで送信され、次のフィールドが含まれています。
-
バージョン:1
-
タイプ: IGMP メッセージには 2 つのタイプがあります。メンバーシップ クエリーおよびメンバーシップ レポートです。
-
Checksum
-
GDA
メンバーシップ レポートは、特定のマルチキャスト グループ(GDA)を受信するホストによって発行されます。 メンバーシップ クエリーは、そのセグメント内に GDA を受信するホストが存在するかどうかをチェックするために、ルータによって定期的に発行されます。
ホスト メンバーシップ レポートは、任意に(ホストが GDA トラフィックを最初に受信する場合)またはメンバーシップ クエリーへの応答として発行されます。 これらは、次のフィールドとともに送信されます。
L2 情報
-
送信元 MAC:ホスト MAC アドレス
-
宛先 MAC:GDA 用の宛先 MAC
L3 情報
-
発信元 IP:ホストの IP アドレス
-
宛先 IP:GDA
IGMP パケット
-
IGMP データにはさらに、GDA およびその他のフィールドも含まれています。
ホスト メンバーシップ クエリーは、ルータによって全マルチキャスト アドレスである 224.0.0.1 に送信されます。 これらのクエリーでは、IGMP GDA フィールド内で 0.0.0.0 が使用されます。 各グループのホストは、そのクエリーに応答する必要があります。応答しない場合(3 回の試行後)、そのセグメントへのその GDA のトラフィック転送が、ルータによって停止されます。 各ソースのマルチキャスト ルーティング エントリはルータによって保持され、発信インターフェイス(IGMP レポートの送信元のインターフェイス)のリストにリンクされます。 IGMP クエリーが 3 回試行されても応答がない場合、その GDA にリンクされた全エントリの発信インターフェイス リストから、このインターフェイスが消去されます。
注:IGMPv1 には Leave メカニズムは用意されていません。 ホストがトラフィックを受信しなくなった場合、単に停止するだけです。 サブネット上の最後のホストの場合は、そのクエリーに対する応答はルータによって受信されず、そのサブネットの GDA が削除されます。
IGMP バージョン 2
IGMP バージョン 2(IGMPv2)では、バージョン フィールドが削除されており、タイプ フィールドに異なる値を受け付けることが可能になりました。 次にそのタイプを示します。
-
メンバーシップ クエリー
-
IGMPv1 メンバーシップ レポート
-
バージョン 2 メンバーシップ レポート
-
Leave グループ
IGMPv2 に追加された最も重要な新機能を次に説明します。
-
IGMP Leave メッセージ:ホストがグループを終了する場合、Leave グループ IGMP メッセージを宛先 224.0.0.2 に送信する必要があります(自動的に終了する IGMPv1 などの場合とは異なります)。
-
0.0.0.0 ではなく、グループ GDA へのメンバーシップ クエリーの送信により、ルータによるグループ固有のクエリーの送信が可能になりました。
IGMP バージョン 3
IGMP バージョン 3(IGMPv3)では、次の値を含めることが可能なタイプ フィールドが用意されます。
-
メンバーシップ クエリー
-
バージョン 3 メンバーシップ レポート
IGMPv3 の実装では、以前のバージョンの IGMP との相互運用のために、次の 3 種類のメッセージ タイプのサポートも必要です。
-
バージョン 1 メンバーシップ レポート [RFC1112]
-
バージョン 2 メンバーシップ レポート [RFC2236]
-
バージョン 2 Leave グループ [RFC2236]
IGMPv3 によってソース フィルタリングのサポートが追加されます。つまり、特定の発信元アドレスから、または特定のマルチキャスト アドレスに送信された特定の発信元アドレス以外のすべてからのシステムによるパケットの受信をレポートする機能です。 この機能は、Source Specific Multicast(SSM)とも呼ばれます。
コンピュータ上での SSM のサポートには、IGMPv3 がサポートされる必要があります。 ただし、相対的には、IGMPv3 がサポートされる OS はほとんど存在しません。 Windows XP では IGMPv3 がサポートされます。また、FreeBSD および Linux 用に IGMPv3 サポート パッチが利用可能です。
管理者は、ルータ レベルでの IGMPv3 サポートとスイッチ レベルでの IGMPv3 スヌーピングを区別する必要があります。 これらは異なる 2 つの機能です。
Catalyst スイッチ(L2)での IGMPv3 サポート
-
ハイブリッド モードのソフトウェア(スーパーバイザ上の CatOS および MSFC 上の Cisco IOS(R) ソフトウェア)が稼動している Catalyst 6000 では、バージョン 7.5(1) 以降、IGMPv3 スヌーピングが公式にサポートされています。
-
6000 よりも前のバージョンでは、Catalyst スイッチでは IGMPv3 が公式にはサポートされていませんでした。ただし、通常は IGMPv3 パケットの処理が可能です。
-
統合 IOS ソフトウェアが稼動している Catalyst 6000 では、バージョン 12.1(8a)E 以降、ルータ レベル(L3 インターフェイス)で IGMPv3 がサポートされています。
-
Catalyst 4000 では、スーパーバイザ III および IV での IGMPv3 だけがルータ レベルでサポートされます。 IGMPv3 スヌーピングはサポートされません。
Cisco ルータ(L3)での IGMPv3 サポート
IGMPv3 は、Cisco IOS(R) ソフトウェア リリース 12.1(5)T 以降のリリースが稼動している、すべてのプラットフォーム上でサポートされています。 詳細については、『IGMP バージョン 3 の文書』を参照してください。 IGMPv3、IGMP v3lite、および URL Rendezvous Directory(URD)を使用した SSM の詳細は、『IGMPv3、IGMP v3lite、および URD を使用したソース固有のマルチキャスト文書』を参照してください。
注意
スイッチによって IGMP スヌーピングが実行されていると、IGMP パケットが代行受信され、この代行受信されたパケットのコンテンツを基にスタティック レイヤ 2(L2)フォワーディング テーブルにデータが入力されます。 ネットワーク上に IGMPv1 または IGMPv2 ホストが存在する場合、どちらのホストがどのマルチキャストを受信するのかを判断するために、あるいはマルチキャスト ストリームの受信を中止するために、スイッチによって IGMP Join および Leave が読み取られます。
IGMPv3 はより複雑です。グループ アドレス(マルチキャスト アドレス)だけではなく、トラフィックの発信が予想されるソースも使用されるからです。 CatOS 7.5 以降および Native IOS バージョン 12.1(8a)E 以降が稼動している Catalyst 6000 スイッチ以外は、これらのパケットの効果的なスヌーピングと、この情報を基にしたフォワーディング テーブルの構築が可能なスイッチは、現在のところ存在しません。 したがって、スイッチ上に IGMPv3 ホストが存在する場合、IGMP スヌーピングをオフにする必要があります。 IGMP スヌーピングをオフにすると、スイッチではマルチキャスト ストリーム用 L2 フォワーディング テーブルの動的な構築ができなくなります。 つまり、スイッチではマルチキャスト ストリームのフラッディングが発生します。
IGMP スヌーピングが無効な場合、1 つのソリューションとして、マルチキャスト トラフィックによるサブネットのフラッディングを回避するために、マルチキャスト ダイナミック Content-Addressable Memory(CAM; 連想メモリ)エントリを手動で設定することが挙げられます。 これは管理上の負担となりますが、ダイナミック ソリューションではありません。 クライアントがトラフィックを受信しなくなった場合、(手動で介入しない限り)CAM エントリはスイッチから削除されません。つまり、ネットワーク トラフィックは依然としてホストにアドレッシングされます。
また、ネットワーク内で IGMPv3 を使用する場合、CGMP ファースト リーブが稼動しないことを除き、CGMP が使用されたスイッチは正常に動作します。 CGMP ファースト リーブが必要な場合、IGMPv2 に戻ることが推奨されます。
未解決のプラットフォーム固有の注意事項は、各スイッチのためのリリース ノート内に記載されています。
IGMP バージョン 1 と IGMP バージョン 2 の間の相互運用性
IGMPv1 および IGMPv2 では、クエリーを送信するのは IP サブネットにつき 1 台のルータだけです。 このルータを、クエリー ルータと呼びます。 IGMPv1 では、マルチキャスト ルーティング プロトコルの支援により、クエリー ルータが選択されます。 IGMPv2 では、ルータの中で最も低い IP アドレスでクエリー ルータが選択されます。 いくつかの起こりうるシナリオを次に示します。
シナリオ 1:IGMPv1 ホストと IGMPv2 ホストの混在と IGMPv1 ルータ
IGMPv2 レポートはルータによって認識されないので、すべてのホストでは IGMPv1 レポートだけを使用する必要があります。
シナリオ 2:IGMPv2 ホストと IGMPv3 ホストの混在と IGMPv2 ルータ
IGMPv1 のホストは、IGMPv2 のクエリーまたは IGMPv2 のグループ メンバーシップ クエリーを認識しません。 ルータでは、IGMPv1 だけを使用して、Leave 操作を一時停止する必要があります。
シナリオ 3:同じセグメント上に配置された IGMPv1 ルータおよび IGMPv2 ルータ
IGMPv1 のルータには、IGMPv2 のルータを検出する方法がありません。 したがって、管理者が IGMPv2 のルータを IGMPv1 のルータとして設定する必要があります。 いずれの場合も、クエリー ルータ上で一致しない可能性があります。
IGMP バージョン 1 または IGMP バージョン 2 と IGMP バージョン 3 の間の相互運用性
IGMP のすべてのバージョンでは、クエリーを送信するのは IP サブネットにつき 1 台のルータだけです。 このルータを、クエリー ルータと呼びます。 IGMPv1 では、マルチキャスト ルーティング プロトコルの支援により、クエリー ルータが選択されます。 IGMPv2 と IGMPv3 では、ルータの中で最も低い IP アドレスでクエリー ルータが選択されます。 相互運用性オプションのいくつかを次に示します。
シナリオ 1:IGMPv1 ホストまたは IGMPv2 ホスト、および IGMPv3 ホストの混在と IGMPv1 または IGMPv2 ルータ
IGMPv3 レポートはルータによって認識されないので、すべてのホストは IGMPv1 または IGMPv2 レポートを使用します。
シナリオ 2:IGMPv1 ホストまたは IGMPv2 ホスト、および IGMPv3 ホストの混在と IGMPv3 ルータ
IGMPv1 または IGMPv2 のホストは、IGMPv3 のクエリーまたは IGMPv3 のメンバーシップ クエリーを認識しません。 ルータでは、存在する最も低い IGMP クライアント バージョンに対応する IGMP バージョンだけが使用される必要があります。 IGMPv3 および IGMPv2 クライアントが存在する場合、ルータでは IGMPv2 が使用されます。 IGMPv1、IGMPv2、および IGMPv3 クライアントが存在する場合、ルータでは IGMPv1 が使用されます。
シナリオ 3:同じセグメント上の異なるバージョンのルータ
異なるバージョンのルータが同じセグメント上に存在する場合、低いバージョンのルータには高いバージョンのルータを検出する手段が用意されていません。 したがって、管理者は、異なるルータを同じバージョンに設定する必要があります。 このバージョンは、存在するクエリー実行の任意のルータ上での最も低いバージョンに一致する必要があります。
ルータ上の IGMP
デフォルトではサブネットの特定グループに登録されたユーザが存在しない場合、ルータによってそのグループ用のマルチキャスト トラフィックが、そのサブネットに転送されることはありません。 つまり、GDA 用の IGMP レポートをマルチキャスト ルーティング テーブルに追加し、そのグループのためにトラフィックの転送を開始するには、GDA 用の IGMP レポートがルータによって受信される必要があります。
次の操作をルータ上で実行する必要があります。
-
次に示すように、グローバル モードでマルチキャスト ルーティングを有効にする。
ip multicast-routing
-
次に示すように、関与しているインターフェイス上でマルチキャスト ルーティング プロトコルを設定する。
ip pim dense-mode
-
次に示すように、IGMP を監視する。
show ip igmp interface show ip igmp group show ip mroute
-
次に示すように、IGMP レポートを送信するために(インターフェイス上で)ルータを設定する。
ip igmp join-group [GDA_ip_address] ip igmp version [1 | 2 | 3]
ルータ上の実用例
2 つのサブインターフェイスである、ファースト イーサネット 0.2 とファースト イーサネット 0.3 の間をルーティングするようにルータは設定されています。 どちらのインターフェイスも、IGMP を実行するように設定されています。 次の出力では、IGMP のバージョンや参加グループなどを表示できます。
設定
ip multicast-routing interface FastEthernet0 no ip address no ip directed-broadcast ! interface FastEthernet0.2 encapsulation isl 2 ip address 2.2.2.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode ! interface FastEthernet0.3 encapsulation isl 3 ip address 3.3.3.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode !
show ip igmp interface
Fa0.2 is up, line protocol is up Internet address is 2.2.2.1/24 IGMP is enabled on interface Current IGMP version is 2 CGMP is disabled on interface IGMP query interval is 60 seconds IGMP querier timeout is 120 seconds IGMP max query response time is 10 seconds Inbound IGMP access group is not set IGMP activity: 3 joins, 2 leaves Multicast routing is enabled on interface Multicast TTL threshold is 0 Multicast designated router (DR) is 2.2.2.1 (this system) IGMP querying router is 2.2.2.1 (this system) Multicast groups joined: 224.0.1.40 Fa0.3 is up, line protocol is up Internet address is 3.3.3.1/24 IGMP is enabled on interface Current IGMP version is 2 CGMP is disabled on interface IGMP query interval is 60 seconds IGMP querier timeout is 120 seconds IGMP max query response time is 10 seconds Inbound IGMP access group is not set IGMP activity: 1 joins, 1 leaves Multicast routing is enabled on interface Multicast TTL threshold is 0 Multicast designated router (DR) is 3.3.3.1 (this system) IGMP querying router is 3.3.3.1 (this system) No multicast groups joined
show ip mroute および show ip igmp group
Malaga#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, C - Connected, L - Local, P - Pruned
R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.10.10.10), 00:01:15/00:02:59, RP 0.0.0.0, flags: DJC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0.3, Forward/Dense, 00:01:16/00:00:00
(2.2.2.2, 224.10.10.10), 00:00:39/00:02:20, flags: CT
Incoming interface: FastEthernet0.2, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0.3, Forward/Dense, 00:00:39/00:00:00
Malaga#show ip igmp groups
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.10.10.10 Fa0.3 00:02:48 00:02:04 3.3.3.2
Malaga#
Cisco Group Management Protocol(CGMP)
Catalyst スイッチ上での CGMP サポートについては、『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。
CGMP のフレームとメッセージ タイプ
レイヤ 2 ネットワークでマルチキャスト トラフィックを制限するために、CGMP は最初にシスコによって実装されました。 本質的に、スイッチにはレイヤ 3 パケットを認識する機能はなく、IGMP パケットを識別できません。 CGMP を使用すると、ルータによってホスト間にインターフェイスが提供されます。 ルータと IGMP 間で「対話」が行われ、スイッチと CGMP 間で「対話」が行われます。
CGMP フレームは、宛先 MAC アドレスである 01-00-0c-dd-dd-dd と Subnetwork Access Protocol(SNAP; サブネットワーク アクセス プロトコル)ヘッダーの値 0x2001 を持つイーサネット フレームです。 CGMP フレームには、次のフィールドが含まれています。
-
バージョン:1 または 2。
-
メッセージ タイプ:Join または Leave。
-
カウント:メッセージ内のマルチキャストまたはユニキャスト アドレス ペアの数。
-
GDA:マルチキャスト グループの 48 ビット MAC アドレス。
-
Unicast Source Address(USA; ユニキャスト送信元アドレス):GDA に参加するデバイスの 48 ビット MAC ユニキャスト アドレス。
注:カウント フィールドの値によって、最後の 2 つのフィールドの表示回数が判断されます。
デフォルトでは、show cam system コマンドが発行されると、スイッチのプロセッサ(Catalyst では NMP と呼ばれる)によって、マルチキャスト アドレスだけがリッスンされます。 スイッチ上で CGMP を有効にすると、アドレス 01-00-0c-dd-dd-dd が show cam system コマンド出力に追加されます。
次の表に、発生する可能性がある CGMP メッセージをすべて掲載します。
|
GDA |
USA |
Join/Leave |
意味 |
|---|---|---|---|
|
Mcast MAC |
Client MAC |
Join |
ポートをグループに追加する。 |
|
Mcast MAC |
Client MAC |
Leave |
ポートをグループから削除する。 |
|
00-00-00-00-00-00 |
Router MAC |
Join |
ルータ ポートを割り当てる。 |
|
00-00-00-00-00-00 |
Router MAC |
Leave |
ルータ ポートの割り当てを解除する。 |
|
Mcast MAC |
00-00-00-00-00-00 |
Leave |
グループを削除する。 |
|
00-00-00-00-00-00 |
00-00-00-00-00-00 |
Leave |
すべてのグループを削除する。 |
ルータ ポートの学習
スイッチによってすべてのルータ ポートが認識され、これらが新規に作成されたマルチキャスト エントリに自動的に追加される必要があります。 Router MAC USA を持つ GDA 00-00-00-00-00-00 への CGMP Join(表の 3 番目のメッセージ タイプ)が受信されると、スイッチによってルータ ポートが学習されます。 これらのメッセージは、CGMP を実行するように設定されたすべてのインターフェイス上のルータによって生成されます。 ただし、スイッチ上でルータ ポートを設定するためのスタティックな方式もあります。
CGMP を使用したグループへの参加
-
新規のクライアントは GDA 用トラフィックの受信を要求しており、IGMP メンバーシップ レポート メッセージが送信されます。
-
ルータによって IGMP レポートの受信および処理が行われ、CGMP メッセージがスイッチに送信されます。 ルータでは宛先 MAC アドレスが CGMP Join の GDA フィールドにコピーされ、送信元 MAC アドレスが CGMP Join の USA にコピーされます。 次に、スイッチに戻されます。
-
CGMP が有効なスイッチでは、CGMP 01-00-0c-dd-dd-dd アドレスのリッスンが必要です。 スイッチのプロセッサによって、USA の検索に CAM テーブルが参照されます。 CAM テーブル内で USA が発見されると、スイッチによってどのポートに USA が配置されているのかが認識され、次のいずれかが実行されます。
-
GDA 用の新規スタティック エントリを作成し、すべてのルータ ポートとともに USA ポートをそのエントリにリンクする。
-
USA ポートをこの GDA 用ポートのリストに追加する(スタティック エントリがすでに存在している場合)。
-
CGMP を使用したグループの終了
VLAN でスパニング ツリー トポロジが変更されるか、またはルータによって上記の表の最後の CGMP Leave メッセージの 1 つが送信されない限り、CGMP を使用して学習されたスタティック エントリは永続的です。
IGMPv1 がホストの場合、IGMP Leave メッセージは送信しません。 3 回連続で IGMP クエリーへの応答が受信されない場合は、ルータによって Leave メッセージだけが送信されます。 これは、グループを対象としているユーザが存在する場合、そのグループからポートが削除されないことを意味します。
IGMPv2 の導入と IGMP Leave の使用により、シスコは元の CGMP 仕様を拡張しました(CGMPv2)。 この追加は CGMP ファースト リーブと呼ばれます。
CGMP ファースト リーブ処理を使用すると、任意のスーパーバイザ エンジン モジュール ポート上のホストによって、全ルータのマルチキャスト アドレス(224.0.0.2)に送信された IGMPv2 Leave メッセージに対する、スイッチによる検出が可能になります。 スーパーバイザ エンジン モジュールによって Leave メッセージが受信されると、クエリー応答タイマーが起動し、その Leave が受信されたポート上でメッセージが送信されて、そのポートでこのマルチキャスト グループを受信するホストがまだ存在するかどうかが判断されます。 CGMP Join メッセージが受信される前にこのタイマーの期限が切れると、元の Leave メッセージで指定されたマルチキャスト グループのマルチキャスト ツリーから、ポートがプルーニングされます。 これがマルチキャスト グループの最後のポートである場合、IGMP Leave メッセージがすべてのルータ ポートに転送されます。 次に、ルータによってグループ固有のクエリーが送信され、通常の削除処理が開始されます。 応答が受信されないので、ルータによってそのインターフェイスのマルチキャスト ルーティング テーブルからこのグループが削除されます。 また、スタティック テーブルからグループを消去するスイッチにも、CGMP Leave メッセージが送信されます。 ファースト リーブ処理では、複数のマルチキャスト グループが同時に使用されている場合でも、スイッチド ネットワーク上のすべてのホストに対し、最適な帯域幅管理が保証されます。
したがって、CGMP Leave が有効な場合、show cam system コマンド出力には、次の 2 つのエントリが追加されます。
01-00-5e-00-00-01 01-00-5e-00-00-02
IGMP Leave によって 224.0.0.2 が使用され、IGMP Query によって 224.0.0.1 が使用されます。
CGMP をトラブルシューティングするには、次の手順に従います。
-
CGMP Leave 処理は、Hot Standby Router Protocol(HSRP; ホット スタンバイ ルータ プロトコル)と競合するため、デフォルトでは無効になっています。 HSRP によって MAC アドレス 01-00-5e-00-00-02 が使用されます。これは、IGMP バージョン 2 での IGMP Leave と同じです。 CGMP ファースト リーブを使用すると、すべての HSRP パケットはスイッチの CPU に送信されます。 HSRP メッセージは IGMP パケットではないので、スイッチによって HSRP メッセージが再生成され、すべてのルータ ポートに送信されます。 hsrp hello または hsrp peers が受信されるルータでは、接続が失われます。 したがって、HSRP 問題のデバッグでは、CGMP ファースト リーブを無効にしてみてください。
CGMP Leave 処理を有効にするには、set cgmp leave enable コマンドを発行します。
-
CGMP Leave 処理が有効な場合、Catalyst 5000 ファミリ スイッチでは、PIM-v1、HSRP、および CGMP Self-Join メッセージを介してルータ ポートが学習されます。 CGMP Leave 処理が無効な場合、Catalyst 5000 ファミリ スイッチでは、CGMP Self-Join メッセージだけを介してルータ ポートが学習されます。
-
CGMP では、01-00-5E-00-00-00 〜 01-00-5E-00-00-FF の範囲の MAC アドレスにマッピングされる、任意の IP マルチキャスト アドレス用のマルチキャスト トラフィックはプルーニングされません。 単一のレイヤ 3 ホップでローカル IP マルチキャスト トラフィックを転送するために、224.0.0.0 〜 224.0.0.255 の範囲内の予約済み IP マルチキャスト アドレスが使用されます。
CGMP とソース専用ネットワーク
ソース専用ネットワークは、ソース マルチキャストだけのセグメントです。実際のクライアントは存在しません。 したがって、そのセグメント内では IGMP レポートが生成されない可能性があります。 ただし、CGMP では、このソースのフラッディングを(ルータの使用専用に)制限する必要があります。 IGMP レポートが含まれない 1 つのインターフェイス上でマルチキャスト トラフィックがルータによって検出される場合、これはマルチキャスト ソース専用ネットワークと識別されます。 ルータ用の CGMP Join メッセージがルータ自体によって生成され、スイッチによってこのグループが単に追加されます(ルータ ポートだけを使用)。
CGMP を有効にする Cisco ルータとスイッチの設定
次のコマンドは、Catalyst 4000 および 5000 シリーズ(および 2901、2902、2926、2948G、4912)に対してだけ有効です。
-
マルチキャスト ルータ
IP マルチキャストを有効にする(グローバル モード)。
-
ip multicast-routing
次のコマンドを使用して、CGMP が稼動している(インターフェイス モード)各インターフェイスを有効にする。
-
ip pim <sparse-mode/dense-mode>
-
ip igmp
-
ip cgmp
次のコマンドを使用して、レイヤ 2 マルチキャストの問題をデバッグする。
-
debug ip igmp
-
debug ip cgmp
-
-
Catalyst 4000 または 5000 シリーズ
次のコマンドを使用して、CGMP を有効または無効にする。
-
set cgmp <enable/disable>
次のコマンドを使用して、CGMP ファースト リーブを有効または無効にする。
-
set cgmp leave <enable/disable>
次のコマンドを使用して、マルチキャスト ルータを設定する(スタティック)。
-
set multicast router <slot /port>
次のコマンドを使用して、マルチキャスト ルータをクリアする。
-
clear multicast router <slot/port>
CGMP 操作を確認するための、さまざまなコマンドを次に掲載。
-
show cam static
-
show cgmp statistic <VLAN_id>
-
show cgmp leave
-
show multicast router
-
show multicast group
-
show multicast group cgmp
-
show multicast group count
-
CGMP 使用の実用例とデバッグ コマンドおよび出力
Cisco ルータと Catalyst スイッチの実際の設定例を次に示します。
この設定では、ホストがグループに参加する場合に関連する操作を示します。 また、この設定では、ファースト リーブが有効なグループをホストが終了する場合の操作も示します。 スニッファ トレースと、スイッチおよびルータの設定も提供します。
CGMP を使用したグループへの参加
CGMP を使用したグループへ参加する場合に、これらの手順を参照します。
-
次に示すように、スイッチ上で CGMP を有効にします。
fish (enable) set cgmp en MCAST-CGMP: Set CGMP Sys Entrie MCAST-CGMP: Set CGMP Sys Entrie MCAST-CGMP: Set CGMP Sys Entrie CGMP support for IP multicast enabled. fish (enable)
次に示すように、show cam system コマンド出力には、エントリ 01-00-0c-dd-dd-dd がすべての VLAN 用に含まれています。 さらに、ネットワークでは CGMP ファースト リーブが実行されているので、01-00-5e-00-00-01 および 01-00-5e-00-00-02 用のエントリも表示されています。
fish (enable) show cgmp leave CGMP: enabled CGMP leave: enabled fish (enable) show cam system * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 1 00-10-2f-00-14-00 # 7/1 1 00-e0-fe-4b-f3-ff # 1/9 1 01-00-0c-cc-cc-cc # 1/9 1 01-00-0c-cc-cc-cd # 1/9 1 01-00-0c-dd-dd-dd # 1/9 1 01-00-0c-ee-ee-ee # 1/9 1 01-80-c2-00-00-00 # 1/9 1 01-80-c2-00-00-01 # 1/9 2 00-10-2f-00-14-00 # 7/1 2 01-00-0c-cc-cc-cc # 1/9 2 01-00-0c-cc-cc-cd # 1/9 2 01-00-0c-dd-dd-dd # 1/9 2 01-80-c2-00-00-00 # 1/9 2 01-80-c2-00-00-01 # 1/9 3 01-00-0c-cc-cc-cc # 1/9 3 01-00-0c-cc-cc-cd # 1/9 3 01-00-0c-dd-dd-dd # 1/9 3 01-80-c2-00-00-00 # 1/9 3 01-80-c2-00-00-01 # 1/9 Total Matching CAM Entries Displayed = 19
-
ルータの USA MAC を持つ GDA 00-00-00-00-00-00 に、ルータによって CGMP Join メッセージが送信されます。 その結果、そのルータ ポートがルータ ポート リストに追加されます(次の 1 番目の例を参照)。
ルータ上
6d01h: CGMP: Sending self Join on Fa0.3 6d01h: GDA 0000.0000.0000, USA 0060.70cd.83c9
スイッチ上
MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 2 MCAST-CGMP-JOIN: join GDA 00-00-00-00-00-00 MCAST-CGMP-JOIN:USA 00-60-70-cd-83-c9 MCAST-ROUTER: Adding QUERIER port 3/1, vlanNo 2 MCAST-ROUTER: Creating RouterPortTimer for port 3/1, vlanNo 2 fish (enable) show multi router CGMP enabled IGMP disabled Port Vlan --------- ---------------- 3/1 2-3 Total Number of Entries = 1 '*' - Configured
-
3/1 の PC によって、GDA 224.10.10.10 が含まれているレポートが IGMP に送信されます(フレーム 2 を参照)。 ルータ malaga 上での show ip igmp group コマンド出力を次に示します。
ここでは、224.10.10.10 のトラフィックが、ルータによって fa0.3 に転送されることを示します。 これは、クライアント PC である 3.3.3.2 から IGMP レポートが受信された結果です。
Malaga#show ip igmp groups IGMP Connected Group Membership Group Address Interface Uptime Expires Last Reporter 224.10.10.10 Fa0.3 00:02:48 00:02:04 3.3.3.2 Malaga#
-
ルータによってレポートが受信され、次の情報とともに CGMP Join メッセージが送信されます。
-
送信元 MAC:ルータの MAC アドレス
-
宛先 MAC:01-00-cc-dd-dd-dd
-
コンテンツ:クライアント PC(USA)の MAC アドレス:00-00-0c-07-ac-00、マルチキャスト グループの MAC アドレス:01-00-5e-0a-0a-0a(次のフレーム 3 を参照)
ルータ上
6d01h: IGMP: Received v2 Report from 3.3.3.2 (Fa0.3) for 224.10.10.10 6d01h: CGMP: Received IGMP Report on Fa0.3 6d01h: from 3.3.3.2 for 224.10.10.10 6d01h: CGMP: Sending Join on Fa0.3
-
-
show cam system コマンド出力では、01-00-cc-dd-dd-dd を持つスイッチで CGMP が有効になっています。 このスイッチではパケットの処理が可能です。
クライアント PC の MAC アドレスがどのポート上に配置されているかを判断するために、スイッチによってダイナミック CAM テーブル内でルックアップが実行されます。 このアドレスはポート 3/2 に配置され、ポート 3/2 を宛先とする 01-00-5e-0a-0a-0a のために、CAM テーブル内にスタティック エントリがスイッチによって作成されます。 スイッチでは、その GDA のためにルータのポート 3/1 もスタティック エントリに追加されます。
スイッチ上
MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 3 MCAST-CGMP-JOIN: join GDA 01-00-5e-0a-0a-0a MCAST-CGMP-JOIN:USA 00-60-5c-f4-bd-e2 MCAST-CGMP-JOIN: 3/2/3: index 81 MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 2 MCAST-CGMP-JOIN: join GDA 01-00-5e-00-01-28 MCAST-CGMP-JOIN:USA 00-60-70-cd-83-c9 MCAST-CGMP-JOIN: 3/1/2: index 80
-
マルチキャスト グループ 224.10.10.10 用のすべての後続トラフィックは、この VLAN 内のこのポートにだけ転送されます。 Catalyst スイッチ内のスタティック エントリを次に示します。ここでは、3/1 はルータ ポートであり、3/2 はクライアント ポートです。
fish (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1-2 Total Matching CAM Entries Displayed = 3 fish (enable)
CGMP ファースト リーブが有効なグループの終了
次の例では、クライアントが IGMP バージョン 2 クライアントであり、スイッチ上でファースト リーブが有効である必要があります。
-
次の手順では、CGMP ファースト リーブが有効になります。 有効かどうかを判断するには、show cgmp leave コマンド出力を確認します。 また、01-00-5e-00-00-01 および 01-00-5e-00-00-02(Leave に使用されるアドレス)がスイッチによってリッスンされているかどうかを判断するには、show cam system コマンド出力を確認します。
fish (enable) show cgmp leave CGMP: enabled CGMP leave: enabled fish (enable) show cam sys * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 1 00-10-2f-00-14-00 # 7/1 1 00-e0-fe-4b-f3-ff # 1/9 1 01-00-0c-cc-cc-cc # 1/9 1 01-00-0c-cc-cc-cd # 1/9 1 01-00-0c-dd-dd-dd # 1/9 1 01-00-0c-ee-ee-ee # 1/9 1 01-80-c2-00-00-00 # 1/9 1 01-80-c2-00-00-01 # 1/9 2 00-10-2f-00-14-00 # 7/1 2 01-00-0c-cc-cc-cc # 1/9 2 01-00-0c-cc-cc-cd # 1/9 2 01-00-0c-dd-dd-dd # 1/9 2 01-00-5e-00-00-01 # 1/9 2 01-00-5e-00-00-02 # 1/9 2 01-80-c2-00-00-00 # 1/9 2 01-80-c2-00-00-01 # 1/9 3 01-00-0c-cc-cc-cc # 1/9 3 01-00-0c-cc-cc-cd # 1/9 3 01-00-0c-dd-dd-dd # 1/9 3 01-00-5e-00-00-01 # 1/9 3 01-00-5e-00-00-02 # 1/9 3 01-80-c2-00-00-00 # 1/9 Do you wish to continue y/n [n]? y Total Matching CAM Entries Displayed = 22
-
クライアントは、IMPG Leave メッセージを 224.0.0.2 に送信します。 スイッチによって IMPG Leave メッセージが代行受信され、Leave を受信したポートに IGMP クエリーが送信されます。 次に、スイッチでの debug 出力を示します。
MCAST-IGMP-LEAVE:Recvd leave on port 3/2 vlanNo 3 MCAST-IGMP-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 MCAST-IGMP-LEAVE:deletion_timer = 1 MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 MCAST-SEND: Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3
-
応答が受信されないので、次に示すように、Catalyst によって IGMP Leave メッセージがルータに転送されます。
MCAST-TIMER:IGMPLeaveTimer expired on port 3/2 vlanNo 3 GDA 01-00-5e-0a-0a-0a MCAST-TIMER:IGMPLeaveTimer expiry: Transmit IGMP Leave on port 3/1 vlanNo 3 MCAST-SEND:Transmitting IGMP Leave msg on port 3/1 vlanNo 3 MCAST-SEND: Inband Transmit Succeeded for IGMP Leave Message on port 3/1 vlanNo 3
-
ルータによって IGMP Leave メッセージが受信されるので、CGMP Leave メッセージがスイッチに送信され、IGMP グループ リストからグループも削除されます。 次に、ルータでの debug コマンド出力を示します。
ルータ上
IGMP: Received Leave from 10.200.8.108 (Fa0.3) for 224.10.10.10 IGMP: Send v2 Query on Fa0.3 to 224.10.10.10 IGMP: Send v2 Query on Fa0.3 to 224.10.10.10 CGMP: Sending Leave on Fa0.3 GDA 0100.5e0a.0a0a, USA 0000.0000.0000 IGMP: Deleting 224.10.10.10 on Fa0.3
CGMP のトレースと設定
フレーム 1
フレーム 1 は、GDA 00-00-00-00-00-00 への CGMP Join フレームです。 ルータ ポート リストにルータ ポートを追加するために使用されます。
ISL: ----- ISL Protocol Packet -----
ISL:
ISL: Destination Address = 01000C0000
ISL: Type = 0 (Ethernet)
ISL: User = 0 (Normal)
ISL: Source Address = 8C958B7B1000
ISL: Length = 76
ISL: Constant value = 0xAAAA03
ISL: Vendor ID = 0x8C958B
ISL: Virtual LAN ID (VLAN) = 2
ISL: Bridge Protocol Data Unit (BPDU) = 0
ISL: Port Index = 193
ISL: Reserved
ISL:
ETHER: ----- Ethernet Header -----
ETHER:
ETHER: Destination = Multicast 01000CDDDDDD
!--- show cam sys コマンド出力に
!--- 表示された CGMP MAC アドレスに
!--- 送信します。
ETHER: Source = Station Cisco11411E1
ETHER: 802.3 length = 24
ETHER:
LLC: ----- LLC Header -----
LLC:
LLC: DSAP Address = AA, DSAP IG Bit = 00 (Individual Address)
LLC: SSAP Address = AA, SSAP CR Bit = 00 (Command)
LLC: Unnumbered frame: UI
LLC:
SNAP: ----- SNAP Header -----
SNAP:
SNAP: Vendor ID = Cisco1
SNAP: Type = 2001 (CGMP)
SNAP:
CGMP: ----- CGMP -----
CGMP:
CGMP: Version = 16
CGMP: Type = 0 (Join)
CGMP: Reserved
CGMP: Count = 1
CGMP:
CGMP: Group Destination Address and Unicast Source Address
CGMP:
CGMP: GDA =0000.0000.0000
CGMP: USA =0000.0C14.11E1
!--- ルータの MAC アドレス。
CGMP:
フレーム 1 の結果はスイッチ上にあり、3/1 はルータに接続されているポートです。
フレーム 2
フレーム 2 は、グループ 224.10.10.10 用のトラフィックのユーザによる受信を要求(または確認)するために、ホストによって送信される IGMP メンバーシップ レポートです。
ISL: ----- ISL Protocol Packet -----
ISL:
ISL: Destination Address = 01000C0000
ISL: Type = 0 (Ethernet)
ISL: User = 0 (Normal)
ISL: Source Address = 8C958B7B1000
ISL: Length = 76
ISL: Constant value = 0xAAAA03
ISL: Vendor ID = 0x8C958B
ISL: Virtual LAN ID (VLAN) = 2
ISL: Bridge Protocol Data Unit (BPDU) = 0
ISL: Port Index = 195
ISL: Reserved
ISL:
ETHER: ----- Ethernet Header -----
ETHER:
ETHER: Destination = Multicast 01005E0A0A0A
!--- 宛先は GDA MAC です。
ETHER: Source = Station Cisco176DCCA
!--- 3/1 に接続された PC が発信元です。
ETHER: Ethertype = 0800 (IP)
ETHER:
IP: ----- IP Header -----
IP:
IP: Version = 4, header length = 20 bytes
IP: Type of service = C0
IP: 110. .... = internetwork control
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: Total length = 28 bytes
IP: Identification = 0
IP: Flags = 0X
IP: .0.. .... = may fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to live = 1 seconds/hops
IP: Protocol = 2 (IGMP)
IP: Header checksum = CC09 (correct)
IP: Source address = [2.1.1.2]
IP: Destination address = [224.10.10.10]
IP: No options
IP:
IGMP: ----- IGMP header -----
IGMP:
IGMP: Version = 1
IGMP: Type = 6 (Ver2 Membership Report)
IGMP: Unused = 0x00
IGMP: Checksum = FFEA (correct)
IGMP: Group Address = [224.10.10.10]
IGMP:
フレーム 3
フレーム 3 は、01-00-5e-0a-0a-0a のスタティック エントリの追加をスイッチに指示するために、ルータによってスイッチに送信される CGMP フレームです。
ISL: ----- ISL Protocol Packet -----
ISL:
ISL: Destination Address = 01000C0000
ISL: Type = 0 (Ethernet)
ISL: User = 0 (Normal)
ISL: Source Address = 8C958B7B1000
ISL: Length = 76
ISL: Constant value = 0xAAAA03
ISL: Vendor ID = 0x8C958B
ISL: Virtual LAN ID (VLAN) = 2
ISL: Bridge Protocol Data Unit (BPDU) = 0
ISL: Port Index = 193
ISL: Reserved
ISL:
ETHER: ----- Ethernet Header -----
ETHER:
ETHER: Destination = Multicast 01000CDDDDDD
ETHER: Source = Station Cisco11411E1
ETHER: 802.3 length = 24
ETHER:
LLC: ----- LLC Header -----
LLC:
LLC: DSAP Address = AA, DSAP IG Bit = 00 (Individual Address)
LLC: SSAP Address = AA, SSAP CR Bit = 00 (Command)
LLC: Unnumbered frame: UI
LLC:
SNAP: ----- SNAP Header -----
SNAP:
SNAP: Vendor ID = Cisco1
SNAP: Type = 2001 (CGMP)
SNAP:
CGMP: ----- CGMP -----
CGMP:
CGMP: Version = 16
CGMP: Type = 0 (Join)
CGMP: Reserved
CGMP: Count = 1
CGMP:
CGMP: Group Destination Address and Unicast Source Address
CGMP:
CGMP: GDA =0100.5E0A.0A0A
!--- show cam static コマンド出力に追加された
!--- GDA MAC。
CGMP: USA =0000.0C76.DCCA
!--- 3/1 の PC の MAC。
CGMP:
ルータおよびスイッチの設定を次に示します。
Malaga (router) Configuration: Malaga#write terminal Building configuration... Current configuration: ! version 12.0 service timestamps debug uptime service timestamps log uptime no service password-encryption ! hostname Malaga ! ! ip subnet-zero ip multicast-routing ip dvmrp route-limit 20000 interface FastEthernet0 no ip address no ip directed-broadcast ! interface FastEthernet0.1 encapsulation isl 1 ip address 1.1.1.1 255.255.255.0 no ip redirects no ip directed-broadcast ! interface FastEthernet0.2 encapsulation isl 2 ip address 2.2.2.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode ip cgmp ! interface FastEthernet0.3 encapsulation isl 3 ip address 3.3.3.1 255.255.255.0 no ip redirects no ip directed-broadcast ip pim dense-mode ip cgmp ! Fish configuration for CGMP: #cgmp set cgmp enable set cgmp leave enable ! CGMP statistics for VLAN 3: fish (enable) show cgmp sta 3 CGMP enabled CGMP statistics for vlan 3: valid rx pkts received 109 invalid rx pkts received 0 valid cgmp joins received 108 valid cgmp leaves received 1 valid igmp leaves received 1 valid igmp queries received 63 igmp gs queries transmitted 1 igmp leaves transmitted 1 failures to add GDA to EARL 0 topology notifications received 0 fish (enable)
IGMP スヌーピング
IGMP スヌーピングは、IGMP フレームの直接的なキャプチャを可能にする別の機能です。 Catalyst スイッチ上での IGMP スヌーピングのサポートについては、『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。
IGMP スヌーピングの概要
IGMP スヌーピングとは、その名称が示すように、ホストとルータの間の IGMP 会話の、スイッチによる「傍受」を可能にする機能です。 任意のマルチキャスト グループ用のホストからの IGMP レポートが、スイッチによって受信されると、そのグループのためにホストのポート番号がスイッチによって GDA リストに追加されます。 IGMP Leave がスイッチによって受信されると、CAM テーブル エントリからホストのポートが削除されます。
IGMP スヌーピングを実行するには、Netflow 機能カードが必要です。 この新しい ASIC レイヤ 3 対応カードでは、グループの全マルチキャスト トラフィックではなく、IGMP フレームだけがスヌーピングされます。 したがって、シスコの IGMP スヌーピング実装によって、すべてのマルチキャスト トラフィックがスイッチ プロセッサに送信されるわけではありません。 送信されるのは、少数の IGMP フレームだけです。
ルータ ポートの学習
IGMP スヌーピングを使用してルータ ポートを検出するために、スイッチでは次のメッセージがリッスンされます。
-
01-00-5e-00-00-01 に送信される IGMP メンバーシップ クエリー
-
01-00-5e-00-00-02 に送信される PIMv1 hello
-
01-00-5e-00-00-0d に送信される PIMv2 hello
-
01-00-5e-00-04 に送信される DVMRP probe
-
01-00-5e-00-05 または 06 に送信される MOSPF メッセージ
スイッチ上で IGMP スヌーピングを有効にすると、上記の全 MAC エントリがスヌーピング スイッチの show cam system コマンド出力に追加されます。 ルータ ポートが検出されると、その VLAN の全 GDA のポート リストに追加されます。
IGMP スヌーピングを使用したグループへの参加
2 つの参加シナリオを次に示します。
シナリオ A:ホスト A はセグメント内のグループに参加する 1 番目のホストです。
-
ホスト A は任意の IGMP メンバーシップ レポートを送信します。
-
スイッチによって、グループに参加するホストによって送信された IGMP メンバーシップ レポートが代行受信されます。
-
スイッチによってそのグループにマルチキャスト エントリが作成され、レポートが受信されたポートおよび全ルータ ポートにそのマルチキャスト エントリがリンクされます。
-
スイッチによって、すべてのルータ ポートに IGMP レポートが転送されます。 これは、ルータでも IGMP レポートが受信され、それに応じてそのマルチキャスト ルーティング テーブルが更新されるようにするためです。
シナリオ B:ホスト B は同じグループに参加する 2 番目のホストです。
-
ホスト B は任意の IGMP メンバーシップ レポートを送信します。
-
スイッチによって、グループに参加するホストによって送信された IGMP メンバーシップ レポートが代行受信されます。
-
スイッチによって必ずしもすべてのルータ ポートに IGMP レポートが転送されるわけではありません。 実際には、プロキシ レポーティングを使用して、スイッチによって IGMP レポートがルータ ポートに転送され、グループあたり 1 つのレポートだけが 10 秒以内に転送されます。
注:グループ メンバーシップを維持するために、マルチキャスト ルータによって 60 秒ごとに IGMP クエリーが送信されます。 このクエリーはスイッチによって代行受信され、スイッチ上の全ポートに転送されます。 グループの全ホスト メンバは、そのクエリーに応答します。 ただし、スイッチによっても応答レポートが代行受信されることが考慮され、他のホストは他の各レポートを参照しません。したがって、全ホストが(グループあたり 1 つではなく)レポートを送信します。 次に、受信したすべての応答の中から、グループあたり 1 つのレポートだけを転送するために、スイッチによってプロキシ レポーティングも使用されます。
ホスト A がグループを終了すると仮定します。ただし、ホスト B はまだグループを受信すると想定します。
-
スイッチによってホスト A から IGMP Leave メッセージがキャプチャされます。
-
そのポート上(そしてこのポート上だけ)のグループ用のグループ固有 IGMP クエリーが、スイッチによって発行されます。
-
スイッチによってレポートが受信されない場合、エントリからこのポートが廃棄されます。 そのポートからの応答が受信された場合、動作は行われず、Leave は廃棄されます。
-
ホスト B は、そのスイッチ上のグループの対象のままです。 これはエントリ内の最後の非ルータ ポートではありません。 したがって、スイッチによって Leave メッセージは転送されません。
次に、ホスト B がグループを終了すると想定します。また、このホスト B は、このセグメント内のこのグループの対象である最後のユーザであると想定します。
-
スイッチによってホスト A から IGMP Leave メッセージがキャプチャされます。
-
スイッチによって、そのポート上のグループ用のグループ固有 IGMP クエリーが発行されます。
-
スイッチによってレポートが受信されない場合、エントリからこのポートが廃棄されます。
-
これは GDA の最後の非ルータ ポートです。 スイッチによって全ルータ ポートに IGMP Leave メッセージが転送され、そのテーブルからエントリが削除されます。
IGMP/CGMP のインタラクション
一部のネットワークでは、ハードウェアの制約により、すべてのスイッチ上では IGMP スヌーピングを実行できない場合があります。 この場合、同じネットワーク内の一部のスイッチ上で、CGMP を実行する必要がある場合があります。
これは特殊な状況であることに注意してください。 IGMP スヌーピングを実行しているスイッチによって CGMP メッセージが検出され、ネットワーク上の一部のスイッチによって CGMP が実行されていることが検出されます。 したがって、スイッチは特殊な IGMP-CGMP モードに移行し、プロキシ レポーティングは無効にされます。 CGMP Join を作成するために、ルータによって IGMP レポートの送信元 MAC アドレスが使用されるので、CGMP の正常な動作にはこの操作が必須です。 CGMP が稼動しているルータでは、すべての IGMP レポートを参照する必要があります。したがって、プロキシ レポーティングを無効にする必要があります。 ルータに送信するレポートは、IGMP スヌーピングに対して厳密に必要なレポートだけにする必要があります。
マルチキャスト ソース専用ネットワーク
セグメントに 1 つのマルチキャスト サーバ(マルチキャスト ソース)だけが含まれ、クライアントは含まれていない場合、そのセグメント内に IGMP パケットが存在せず、多くのマルチキャスト トラフィックが存在する状況が発生する場合があります。 この場合、そのグループからセグメント内の全員に、スイッチによって単純にトラフィックが転送されます。 幸い、IGMP スヌーピングが稼動しているスイッチには、これらのマルチキャスト ストリームを検出する機能が用意されており、ルータ ポートだけでそのグループのマルチキャスト エントリが追加されます。 これらのエントリには、内部で mcast_source_only としてフラグが付けられ、5 分ごとに、またはルータ ポートが削除されるとエージング アウトされます。 このエージングの後でも、トラフィックが継続していれば、数秒後にアドレスが再学習されることに注意してください。
制限事項
CGMP の場合と同様、01-00-5e-00-00-xx の範囲にある MAC にマッピングされる GDA は、IGMP スヌーピングによってプルーニングされることはありません。
Cisco スイッチ上の IGMP スヌーピングの設定
IGMP スヌーピングを有効/無効にするには、次のコマンドを発行します。
-
set igmp <enable/disable>
マルチキャスト ルータ(スタティック)を設定するには、次のコマンドを発行します。
-
set multicast router <mod/port>
-
clear multicast router <mod |port | all>
IGMP 統計情報を監視し、チェックするには、次のコマンドを実行します。
-
show igmp statistics <VLAN_id>
-
show multicast router
IGMP スヌーピングの実用例
この例のためのセットアップは、この文書内ですでに使用した CGMP テストと類似しています。 唯一の相違点は、ポート 3/2 および 3/3 が両方とも同じ VLAN に接続されており、グループ 224.10.10.10 に参加するためにどちらもクライアント設定になっている点です。
次の例では、いくつかの操作を説明し、スイッチの動作を検討して、その結果の出力を調べます。 次の例では、fish は、IGMP スヌーピングを実行している Catalyst 5500 であり、malaga はポート 3/1 に接続されているマルチキャスト ルータです。
-
スイッチ上で IGMP スヌーピングを有効にし、debug コマンド発行による結果を参照します。 各エントリ セットが show cam sys コマンド出力に追加されて、PIM、MOSPF などを介したルータ ポートの検出が可能になったことに注意してください。
fish (enable) set igmp en MCAST-IGMP: Set Sys Entries MCAST-SYS-ENTRIES: Add system Entries in vlan 1 MCAST-IGMP: Set Sys Entries MCAST-SYS-ENTRIES: Add system Entries in vlan 2 MCAST-IGMP: Set Sys Entries MCAST-SYS-ENTRIES: Add system Entries in vlan 3 IGMP feature for IP multicast enabled fish (enable) show cam sys * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 1 00-10-2f-00-14-00 # 7/1 1 00-e0-fe-4b-f3-ff # 1/9 1 01-00-0c-cc-cc-cc # 1/9 1 01-00-0c-cc-cc-cd # 1/9 1 01-00-0c-dd-dd-dd # 1/9 1 01-00-0c-ee-ee-ee # 1/9 1 01-00-5e-00-00-01 # 1/9 1 01-00-5e-00-00-04 # 1/9 1 01-00-5e-00-00-05 # 1/9 1 01-00-5e-00-00-06 # 1/9 1 01-00-5e-00-00-0d # 1/9 1 01-80-c2-00-00-00 # 1/9 1 01-80-c2-00-00-01 # 1/9 2 00-10-2f-00-14-00 # 7/1 2 01-00-0c-cc-cc-cc # 1/9 2 01-00-0c-cc-cc-cd # 1/9 2 01-00-0c-dd-dd-dd # 1/9 2 01-00-5e-00-00-01 # 1/9 2 01-00-5e-00-00-04 # 1/9 2 01-00-5e-00-00-05 # 1/9 2 01-00-5e-00-00-06 # 1/9 2 01-00-5e-00-00-0d # 1/9
-
スイッチによってルータ malaga から PIMv2 パケットが受信され、ルータ ポートが追加されます。
MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 2 MCAST-ROUTER: Adding port 3/1, vlanNo 2 MCAST-ROUTER: Creating RouterPortTimer for port 3/1, vlanNo 2 MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 3 MCAST-ROUTER: Adding port 3/1, vlanNo 3 MCAST-ROUTER: Creating RouterPortTimer for port 3/1, vlanNo 3 fish (enable) show multi router CGMP disabled IGMP enabled Port Vlan --------- ---------------- 3/1 2-3 Total Number of Entries = 1 '*' - Configured fish (enable)
-
グループ 224.10.10.10(ポート 3/2 上)で新しいホストを接続します。 ホストは IGMP メンバーシップ レポートを送信します。 スイッチによってレポートの受信とスヌーピングがされます。また、エントリが追加され、IGMP レポートがルータに転送されます。
fish 上
MCAST-IGMPQ:recvd an IGMP V2 Report on the port 3/2 vlanNo 3 GDA 224.10.10.10 MCAST-RELAY:Relaying packet on port 3/1 vlanNo 3 MCAST-SEND: Inband Transmit Succeeded for IGMP RELAY msg on port 3/1 vlanNo 3 fish (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1-2
-
次に示すように、ポート 3/3 の VLAN 3 にユーザをもう 1 つ追加します。
fish (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1-3
-
ポート 3/2 を削除します。 ポート 3/2 によって IGMP Leave メッセージが送信されます。スイッチによって IGMP グループ固有クエリーがポート 3/2 に戻され、タイマーが起動されます。 応答が受信されないままタイマーの期限が切れると、ポートがグループから削除されます。
MCAST-IGMPQ:recvd an IGMP Leave on the port 3/2 vlanNo 3 GDA 224.10.10.10 MCAST-IGMPQ-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 MCAST-DEL-TIMER: Deletion Timer Value set to Random Value 1 MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 MCAST-SEND: Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3 MCAST-TIMER:IGMPLeaveTimer expired on port 3/2 vlanNo 3 GDA 01-00-5e-0a-0a-0a MCAST-TIMER:IGMPLeaveTimer:delete leave timer fish (enable) show cam static * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. X = Port Security Entry VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] ---- ------------------ ----- ------------------------------------------- 3 01-00-5e-0a-0a-0a 3/1,3/3
-
ポート 3/3 のホストがグループを終了し、IGMP Leave メッセージを送信します。 前回と異なる唯一の点は、IGMP Leave メッセージが最終的にルータ ポートに転送される点です。
MCAST-IGMPQ:recvd an IGMP Leave on the port 3/3 vlanNo 3 GDA 224.10.10.10 MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/3 vlanNo 3 MCAST-SEND: Transmit Succeeded for IGMP Group Specific Query msg on port 3/3 vlanNo 3 MCAST-TIMER:IGMPLeaveTimer expired on port 3/3 vlanNo 3 GDA 01-00-5e-0a-0a-0a MCAST-TIMER:IGMPLeaveTimer expiry: Transmit IGMP Leave on port 3/1 vlanNo 3 MCAST-SEND:Transmitting IGMP Leave msg on port 3/1 vlanNo 3 MCAST-SEND: Inband Transmit Succeeded for IGMP Leave Message on port 3/1 vlanNo 3 MCAST-TIMER:IGMPLeaveTimer:delete leave timer
これでサブネット設定が最初の状態に戻りました。ステップ 1 の状態です。 マルチキャスト エントリは、show cam static コマンド出力から消えています。
最後に、次に示すように show igmp static コマンド出力の例を表示します。
fish (enable) show igmp stat 2 IGMP enabled IGMP statistics for vlan 2: Total valid pkts rcvd: 329 Total invalid pkts recvd 0 General Queries recvd 82 Group Specific Queries recvd 0 MAC-Based General Queries recvd 0 Leaves recvd 0 Reports recvd 82 Queries Xmitted 0 GS Queries Xmitted 0 Reports Xmitted 0 Leaves Xmitted 0 Failures to add GDA to EARL 0 Topology Notifications rcvd 0 fish (enable) show igmp stat 3 IGMP enabled IGMP statistics for vlan 3: Total valid pkts rcvd: 360 Total invalid pkts recvd 0 General Queries recvd 93 Group Specific Queries recvd 6 MAC-Based General Queries recvd 0 Leaves recvd 11 Reports recvd 64 Queries Xmitted 0 GS Queries Xmitted 14 Reports Xmitted 0 Leaves Xmitted 10 Failures to add GDA to EARL 0 Topology Notifications rcvd 1 fish (enable)
