内容

概要

はじめに

表記法

前提条件

使用するコンポーネント

背景説明

マルチキャスト アドレス

インターネット グループ管理プロトコル（IGMP）

IGMP バージョン 1

IGMPv2

IGMPv3

IGMP バージョン 1 とバージョン 2 間の相互運用性

IGMPv1/IGMPv2 と IGMPv3 の相互運用

ルータ上の 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 アドレス テーブルにはこのようなアドレスはないので、スイッチにはこれらを学習する方法はありません。

この問題の第 1 の解決策は、各グループと各クライアント用にスタティック MAC アドレスを設定することです。この解決策は正常に機能しますが、拡張性がなく、ダイナミックになりません。次のいずれかのコマンドを発行して、Catalyst 4000、5000、または 6000 スイッチにこの解決策を使用します。

- set cam static

- set cam permanent

これらの 2 つのコマンドは、static エントリがリブート時になくなり、permanent エントリはなくならないことを除いて、同じ効果があります。

第 2 の解決策は CGMP を使用することです。CGMP は、マルチキャスト ルータとスイッチの間で動作するシスコ独自のプロトコルです。CGMP によって、Cisco マルチキャスト ルータはホストによって送信された IGMP メッセージを理解できるようになり、CGMP が IGMP パケットに含まれる情報をスイッチに通知します。

最後の（かつ最も効率的な）解決策は、IGMP スヌーピングを使用することです。IGMP スヌーピングでは、スイッチがホスト自体からの IGMP メッセージを傍受して、それに従って自身の MAC テーブルを更新します。IGMP スヌーピングをサポートするには高度なハードウェアが必要です。

このドキュメントで提供する CGMP 設定は CatOS を実行している Catalyst 4000 および 5000 スイッチ用であり（CGMP は Catalyst 6000 スイッチではサポートされていない）、IGMP スヌーピング設定は CatOS を実行している Catalyst 5000 および 6000 スイッチ用です。

次のセクションでは、マルチキャスト アドレスについて簡単に紹介し、IGMP の機能を説明して、CGMP と IGMP スヌーピングのその他の詳細について説明します。

マルチキャスト アドレス

1. マルチキャスト IP アドレスはクラス D IP アドレスです。したがって、224.0.0.0 ～ 239.255.255.255 のすべての IP アドレスがマルチキャスト IP アドレスです。これは、Group Destination Addresses（GDA）とも呼ばれます。

2. 各 GDA に関連した MAC アドレスがあります。この MAC アドレスは、GDA アドレスの最後の 23 ビットを01-00-5e の後に 16 進に変換して加えたものです。したがって、次のようになります。

- 239.20.20.20 は MAC 01-00-5e-14-14-14 に対応します。

- 239.10.10.10 は MAC 01-00-5e-0a-0a-0a に対応します。

したがって、これは 1 対 1 のマッピングではなく、1 対多のマッピングです。これら 2 つのアドレスから、最初のオクテット（239）が MAC アドレスでは使用されないことがわかります。そのため、後の 3 つのオクテットが同一で最初のオクテットが異なるマルチキャスト アドレスには、オーバーラップする MAC アドレスがあります。

3. マルチキャスト 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 スヌーピングはこの予約アドレス範囲では動作しません。

インターネット グループ管理プロトコル（IGMP）

IGMPは、IGMPv1のRFC1112、IGMPv2のRFC2236、およびIGMPv3のRFC3376で定義されている標準です。IGMPは、ホストをルータに登録して、特定ののマルチキャストトラフィックを受信します。次のセクションでは、IGMP の概要を短く説明します。

IGMP バージョン 1

IGMP バージョン 1（IGMPv1）メッセージは、IP データグラム内で転送され、次のフィールドを含みます。

- バージョン1

- Type:IGMP メッセージには、メンバシップ クエリとメンバシップ レポートという 2 つのタイプがあります。

- チェックサム

- GDA

メンバシップ レポートは、特定のマルチキャスト グループ（GDA）の受信を希望するホストによって発行されます。 メンバシップ クエリは、そのセグメントで依然として GDA を対象とするホストが存在するかどうかをチェックするために一定の間隔でルータによって発行されます。

ホスト メンバシップ レポートは、任意で（ホストが GDA トラフィックを先に受信することを希望する場合）またはメンバーシップ クエリーへの応答で発行されます。これは、次のフィールドと一緒に送信されます。

L2 情報

- 送信元 MAC：ホスト MAC アドレス

- 宛先 MAC：GDA 用の宛先 MAC

レイヤ 3 情報：

- 送信元 IP：ホストの IP アドレス

- 宛先 IP：GDA

IGMP パケット

- IGMP データには、さらに、GDA といくつかの他のフィールドが含まれています。

ホスト メンバシップ クエリーは、ルータから全マルチキャスト アドレスに送信されます。アドレス：224.0.0.1.これらのクエリーでは、IGMP GDAフィールドに0.0.0.0が使用されます。各グループのホストはそのクエリーに応答する必要があります。応答しない場合は、ルータがその GDA のトラフィックをそのセグメントに転送するのを停止します（3 回の試行後）。 ルータは、各送信元用のマルチキャスト ルーティング エントリを維持して、発信インターフェイス（IGMP レポートの発信元のインターフェイス）のリストにそれをリンクします。 3 回 IGMP クエリーを送信して応答がないと、このインターフェイスは、その GDA にリンクされているすべてのエントリの出力インターフェイス リストから消去されます。

注：IGMPv1 には脱退メカニズムはありません。ホストがトラフィックを受信したくなければ、単に停止するだけです。それがサブネット上の最後のホストである場合、ルータはそのクエリーに対する答えを受け取らず、そのサブネットの GDA を削除します。

IGMPv2

IGMP のバージョン 2 では、バージョン フィールドが削除されており、タイプ フィールドに異なる値を受け付けます。そのタイプを次に示します。

- メンバシップ クエリ

- IGMPv1 メンバシップ レポート

- バージョン 2 メンバシップ レポート

- グループ脱退

IGMPv2 で追加された最も重要な新機能の説明を次に示します。

- IGMP Leave メッセージ：ホストがグループを離脱したい場合、Leave グループ IGMP メッセージを送信先 224.0.0.2 に送信します（IGMPv1 の場合はただ何も送信せずに離脱するだけでした）。

- ルータは、メンバーシップ クエリーを 0.0.0.0 ではなく、グループ GDA に送信することによって、グループ固有クエリーを送信できます。

IGMPv3

IGMP バージョン 3（ICMPv3）では、次の値を持つことができるようになったタイプ フィールドがあります。

- メンバシップ クエリ

- バージョン 3 メンバーシップ レポート

IGMPv3 の実装も、IGMP の以前のバージョンとの相互運用のために、次の 3 つのメッセージ タイプをサポートする必要があります。

- バージョン 1 メンバシップ レポート [RFC1112]

- バージョン 2 メンバシップ レポート [RFC2236]

- バージョン 2 グループ脱退 [RFC2236]

IGMPv3 は、送信元フィルタリングのサポートを追加しました。これは、特定の送信元アドレスからのパケット、または、特定のマルチキャスト アドレスに送信された特定の送信元アドレスを除くパケットを受信することを対象とするレポートをシステムが作成する機能です。この機能は、Source Specific Multicast（SSM）とも呼ばれます。

コンピュータがSSMをサポートするには、IGMPv3をサポートする必要があります。ただし、IGMPv3をサポートするOSは比較的少数です。Windows XPはIGMPv3をサポートし、FreeBSDとLinuxで利用可能なIGMPv3サポートパッチがあります。

管理者は、ルータ レベルの IGMPv3 サポートとスイッチ レベルでの IGMPv3 スヌーピングを区別する必要があります。これらは異なる 2 つの機能です。

Catalyst スイッチでの IGMPv3 のサポート（L2）

- ハイブリッド モード ソフトウェア（スーパーバイザでの CatOS、MSFC での Cisco IOS® ソフトウェア）を稼動している Catalyst 6000 は、バージョン 7.5(1) から公式に IGMPv3 スヌーピングをサポートしています。

- 7.5(1) よりも前のバージョンでは、Catalyst 6000 スイッチは IGMPv3 を公式にはサポートしていませんでしたが、IGMPv3 パケットを正常に処理しているはずです。

- 統合 IOS ソフトウェアが稼動している Catalyst 6000 では、バージョン 12.1(8a)E 以降、ルータ レベル（L3 インターフェイス）で IGMPv3 がサポートされています。

- Catalyst 4000 は、Supervisor III および IV 上のルータ レベルで IGMPv3 をサポートするだけです。IGMPv3 スヌーピングはサポートしません。

Cisco ルータ（L3）での IGMPv3 サポート

IGMPv3 は、Cisco IOS® ソフトウェア リリース 12.1(5)T 以降を稼動しているすべてのプラットフォームでサポートされています。

警告

スイッチは、IGMP スヌーピングを動作させている場合、IGMP パケットを傍受して、傍受したパケットの内容に基づいてスタティック レイヤ 2（L2）転送テーブルにデータを入力します。ネットワーク上に IGMPv1 または IGMPv2 ホストが存在する場合、どちらのホストがどのマルチキャストを受信するのかを判断するために、あるいはマルチキャスト ストリームの受信を中止するために、スイッチによって IGMP Join および Leave が読み取られます。

IGMPv3 はより複雑です。その理由は、IGMPv3 がグループ アドレス（マルチキャスト アドレス）を使用しているだけでなく、トラフィックが来ると予想されている送信元も使用しているためです。CatOS 7.5 以降およびネイティブ 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 とバージョン 2 間の相互運用性

IGMP のいずれのバージョンでも、1 つの IP サブネットに付き 1 台のルータのみがクエリーを送信します。このルータをクエリー ルータと呼びます。IGMPv1 では、クエリ ルータはマルチキャスト ルーティング プロトコルの支援によって選択されます。IGMPv2 では、クエリ ルータはルータの中で最も小さい IP アドレスによって選択されます。次にいくつかの可能性を示します。

シナリオ 1：IGMPv1 と IGMPv2 のホストが混在した場合の IGMPv1 ルータ

ルータが IGMPv2 レポートを理解しないので、すべてのホストは IGMPv1 レポートだけを使用する必要があります。

シナリオ 2：IGMPv2 と IGMPv3 のホストが混在した場合の IGMPv2 ルータ

IGMPv1 ホストは IGMPv2 クエリまたは IGMPv2 グループ メンバーシップ クエリを理解しません。ルータは IGMPv1 だけを使用する必要があり、脱退操作は一時中断します。

シナリオ 3：同一のセグメント上に存在する IGMPv1 ルータと IGMPv2 ルータ

IGMPv1 ルータには IGMPv2 ルータを検出する方法がありません。そのため、IGMPv2 ルータは、管理者が IGMPv1 ルータとして設定する必要があります。いずれの場合も、クエリー ルータで一致しない可能性があります。

IGMPv1/IGMPv2 と IGMPv3 の相互運用

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

デフォルトで、サブネット内の特定のグループに登録されているユーザが存在しない場合、ルータはそのサブネット内のそのグループにマルチキャスト トラフィックを転送しません。つまり、ルータは、マルチキャスト ルーティング テーブルに IGMP レポートを追加し、そのグループへのトラフィックの転送を開始するために GDA 用の IGMP レポートを受信する必要があることを意味しています。

ルータでは、次のアクションを実行する必要があります。

1. 次に示すように、グローバル モードでマルチキャスト ルーティングを有効にします。

ip multicast-routing

2. 次に示すように、含まれているインターフェイスにマルチキャスト ルーティング プロトコルを設定します。

ip pim dense-mode

3. 次に示すように、IGMP を監視します。

show ip igmp interface

show ip igmp group

show ip mroute

4. 次に示すように、（インターフェイスについての）IGMP レポートを送信するようにルータを設定します。

ip igmp join-group [GDA_ip_address]

ip igmp version [1 | 2 | 3]

ルータの実例

ルータは、2つのサブインターフェイスFast-Ethernet 0.2とFast-Ethernet 0.3の間をルーティングするように設定されています。両方のインターフェイスもIGMPを実行するように設定されています。次の出力では、IGMP のバージョン、参加グループなどを知ることができます。

コンフィギュレーション

ip multicast-routing

interface FastEthernet0

no ip address

no ip directed-broadcast

!

interface FastEthernet0.2

encapsulation isl 2

ip address 10.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 10.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 10.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 10.2.2.1 (this system)

IGMP querying router is 10.2.2.1 (this system)

Multicast groups joined: 224.0.1.40

Fa0.3 is up, line protocol is up

Internet address is 10.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 10.3.3.1 (this system)

IGMP querying router is 10.3.3.1 (this system)

No multicast groups joined

show ip mroute and show ip igmp group

Router_A#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

(*, 239.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

(10.2.2.2, 239.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

Router_A#show ip igmp groups

IGMP Connected Group Membership

Group Address    Interface            Uptime    Expires   Last Reporter

239.10.10.10     Fa0.3                00:02:48  00:02:04  10.3.3.2

Router_A#

Cisco Group Management Protocol

Catalyst スイッチにおける CGMP のサポートについては、『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。

CGMP フレームと CGMP メッセージ タイプ

CGMP は、L2 ネットワークでマルチキャスト トラフィックを限定するためにシスコが最初に実装しました。基本的に、スイッチは L3 パケットの内容を確認できないため、IGMP パケットを識別できません。CGMP によって、ルータはホスト間にインターフェイスを提供します。ルータは IGMP と「対話」し、スイッチは CGMP と「対話」します。

CGMPフレームは、宛先MACアドレスが01-00-0c-dd-dd-ddのイーサネットフレームで、値が0x2001のサブネットワークアクセスプロトコル(SNAP)ヘッダーを持ちます。CGMPフレームには、次のフィールドが含まれます。

- バージョン1 または 2。

- メッセージの種類：加入または脱退。

- カウント：メッセージ内のマルチキャスト/ユニキャスト アドレス ペアの数。

- GDA：マルチキャスト グループの 48 ビット MAC アドレス。

- Unicast Source Address（USA; ユニキャスト発信元アドレス）：GDA への加入を希望しているデバイスの 48 ビット MAC ユニキャスト アドレスです。

注：カウント フィールドの値によって、最後の 2 つのフィールドが何回表示されたのかが判断されます。

デフォルトでは、スイッチのプロセッサ（CatalystではNMPと呼ばれる）は、 show cam system コマンドが発行されます。スイッチでCGMPを有効にすると、アドレス01-00-0c-dd-dd-ddが show cam system コマンド出力.

次の表は、すべての可能な CGMP メッセージを示しています。

GDA

USA

加入/脱退

意味

マルチキャスト MAC

クライアント MAC

加入

グループにポートを追加します。

マルチキャスト MAC

クライアント MAC

脱退

グループからポートを削除します。

00-00-00-00-00-00

ルータ MAC

加入

ルータ ポートを割り当てます。

00-00-00-00-00-00

ルータ MAC

脱退

ルータ ポートの割り当てを解除します。

マルチキャスト MAC

00-00-00-00-00-00

脱退

グループを削除します。

00-00-00-00-00-00

00-00-00-00-00-00

脱退

すべてのグループを削除します。

ルータ ポートの学習

スイッチは、ルータ ポートが新しく作成されたマルチキャスト エントリに自動的に追加されるように、すべてのルータ ポートを認識する必要があります。スイッチは、ルータ MAC USA（表の中の 3 番目のタイプのメッセージ）の GDA 00-00-00-00-00-00 に CGMP 加入を受信したときにルータ ポートを学習します。 これらのメッセージは、CGMP を実行するために設定されたすべてのインターフェイスのルータによって生成されます。ただし、スイッチのルータ ポートを設定するためのスタティックな方法も存在します。

CGMP によるグループへの参加

- 新しいクライアントは GDA 向けのトラフィックを受信するように要求するので、クライアントは IGMP メンバシップ レポート メッセージを送信します。

- ルータは IGMP レポートを受信し、それを処理してスイッチに CGMP メッセージを送信します。ルータは、宛先 MAC アドレスを CGMP 加入の GDA フィールドにコピーし、送信元 MAC アドレスを CGMP 加入の USA にコピーします。次に、それをスイッチに送信し戻します。

- CGMP が有効なスイッチは CGMP 01-00-0c-dd-dd-dd アドレスを傍受する必要があります。スイッチのプロセッサは、USA の CAM テーブルを調べます。CAM テーブルに USA が存在すると、スイッチはどのポートに USA があるのかを知り、次のいずれかを実行します。

- GDA の新しいスタティック エントリを作成して、すべてのルータ ポートとともにそれを USA ポートにリンクします。

- USA ポートをこの GDA 用のポートのリストに追加します（スタティック エントリがすでに存在する場合）。

CGMP によるグループからの離脱

CGMP で学習されたスタティック エントリは、スパニング ツリー トポロジの変更が VLAN で発生したり、ルータが前述の表の最後の CGMP 脱退メッセージの 1 つを送信しない限り、永続的です。

IGMPv1 がホストである場合、IGMP 脱退メッセージは送信しないでください。ルータは 3 回連続して IGMP クエリー への応答を受信しない場合、Leave メッセージを送信します。つまり、そのグループにまだ興味を示しているユーザがいれば、ポートはグループから削除されないということです。

IGMPv2 の導入と IGMP 脱退の存在によって、シスコはオリジナルの CGMP 仕様（CGMPv2）に追加しました。 この追加を CGMP 高速脱退と呼びます。

CGMP Fast-Leave 処理により、スーパーバイザ エンジン モジュールのポート上のホストによって、すべてのルータのマルチキャスト アドレス（224.0.0.2）に送信された IGMP バージョン 2 の Leaveメッセージをスイッチが検出できます。スーパーバイザ エンジン モジュールは、脱退メッセージを受信すると、クエリ応答タイマーを開始し、脱退が受信されたポートでこのマルチキャスト グループを引き続き積極的に受信しようとしているホストが存在するかどうかを判断するために、そのポートにメッセージを送信します。CGMP 加入メッセージが受信される前にこのタイマーが終了した場合、ポートは、オリジナルの脱退メッセージに指定されたマルチキャスト グループ向けのマルチキャスト ツリーからプルーニングされます。これがマルチキャスト グループの最後のポートである場合、IGMP 脱退メッセージをすべてのルータ ポートに転送します。ルータは、次にグループ固有のクエリーを送信して、通常の削除プロセスを開始します。応答は何も受信されないので、ルータは、そのインターフェイス向けのマルチキャスト ルーティング テーブルからこのグループを削除します。また、スタティック テーブルからグループを消去するスイッチに CGMP 脱退メッセージも送信します。高速脱退処理によって、複数のマルチキャスト グループが同時に使用中の場合であっても、スイッチド ネットワークのすべてのホスト向けの最適の帯域幅管理を確実にします。

CGMP Leaveが有効な場合、2つのエントリが show cam system コマンドの出力を示します。

01-00-5e-00-00-01

01-00-5e-00-00-02

IGMP 脱退は 224.0.0.2 を使用し、IGMP クエリは 224.0.0.1 を使用します。

次の手順を使用して CGMP のトラブルシューティングを行います。

1. CGMP Leave 処理は Hot Standby Router Protocol（HSRP）と競合するため、デフォルトでは無効になっています。HSRP は MAC アドレス 01-00-5e-00-00-02 を使用します。これは、IGMP バージョン 2 の IGMP Leave と同じです。CGMP Fast-Leave を使用すると、すべての HSRP パケットはスイッチ CPU に送信されます。HSRP メッセージは IGMP パケットではないので、スイッチはそのようなメッセージをすべて再生成して、すべてのルータ ポートに送信します。hsrp hello または hsrp peers を受信しているルータは接続を失います。したがって、HSRP の問題をデバッグする場合は、CGMP Fast-Leave を無効にしてください。

CGMP脱退処理を有効にするには、 set cgmp leave enable コマンドが表示されない場合もあります。

2. CGMP 脱退処理が有効の場合、Catalyst 5000 ファミリ スイッチは、PIM-v1、HSRP および CGMP Self-Join メッセージからルータ ポートを学習します。CGMP Leave 処理が無効の場合は、Catalyst 5000 ファミリ スイッチは、CGMP Self-Join メッセージからのみルータ ポートを知ることになります。

3. CGMP は、01-00-5E-00-00-00 から 01-00-5E-00-00-FF までの範囲の MAC アドレスにマップする IP マルチキャスト アドレスに対してマルチキャスト トラフィックをプルーニングしません。224.0.0.0 から 224.0.0.255 までの範囲の予約済みの IP マルチキャスト アドレスは、単一の L3 ホップでローカルな IP マルチキャスト トラフィックを転送するために使用されます。

CGMP および送信元だけのネットワーク

送信元だけのネットワークは、送信元マルチキャストだけで実際のクライアントを持たないセグメントです。そのため、そのセグメントでは IGMP レポートが生成されない場合があります。ただし、CGMP は引き続きこの送信元のフラッディングを制限する必要があります（ルータでの使用の場合だけ）。ルータが IGMP レポートのない 1 つのインターフェイス上でマルチキャスト トラフィックを検出する場合、マルチキャストの送信元だけのネットワークとして識別されます。ルータはそれ自体のために CGMP 加入メッセージを生成し、スイッチはこのグループを単純に追加します（ルータ ポートのみ）。

CGMP を有効にする Cisco ルータとスイッチの設定

次のコマンドは、Catalyst 4000 と 5000 シリーズ（および 2901、2902、2926、2948G、4912）の場合だけに有効です。

- マルチキャスト ルータ

IP マルチキャストを有効にする（グローバル モード）。

- ip multicast-routing

次のコマンドで CGMP を実行している各インターフェイスを有効にします（インターフェイス モード）。

- ip pim

- ip igmp

- ip cgmp

次のコマンドで L2 マルチキャスト問題をデバッグします。

- debug ip igmp

- debug ip cgmp

- Catalyst 4000 または 5000 シリーズ

次のコマンドで CGMP を有効/無効にする。

- set cgmp

次のコマンドで CGMP 高速脱退をイネーブル/ディセーブルにします。

- set cgmp leave

次のコマンドでマルチキャスト ルータ（スタティック）を設定します。

- set multicast router

次のコマンドでマルチキャスト ルータをクリアします。

- clear multicast router

次に示すのは、CGMP 処理を確認するためのさまざまなコマンドです。

- show cam static

- show cgmp statistic

- show cgmp leave

- show multicast router

- show multicast group

- show multicast group cgmp

- show multicast group count

CGMP の実用例とデバッグ コマンドおよび出力

これは、Cisco ルータと Catalyst スイッチの設定の実例です。

この設定は、ホストがグループに加入するときに含まれる処理を示しています。この設定は、Fast-Leave を有効にして、ホストがグループから離脱（Leave）する場合の操作を示します。また、スニッファ トレースとスイッチおよびルータの設定も提供されます。

CGMP によるグループへの参加

CGMP でグループに加入するときに次の手順を参照してください。

1. 次に示すようにスイッチで CGMP をイネーブルにします。

Switch_B (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.

Switch_B (enable)

次に示すように、エントリ01-00-0c-dd-dd-ddは show cam system コマンド出力.さらに、ネットワークが CGMP 高速脱退を実行しているので、01-00-5e-00-00-01 および 01-00-5e-00-00-02 用のエントリを確認できます。

Switch_B (enable) show cgmp leave

CGMP:       enabled

CGMP leave: enabled

Switch_B (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

2. ルータは CGMP 加入メッセージを、ルータの USA MAC とともに GDA 00-00-00-00-00-00 に送信します。そのため、ルータ ポートはルータ ポート リストに追加されます（次の最初の例を参照）。

ルータ上：

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

Switch_B (enable) show multi router

CGMP enabled

IGMP disabled

Port       Vlan

---------  ----------------

3/1       2-3

Total Number of Entries = 1

'*' - Configured

3. 3/1のPCは、GDA:239.10.10.10 を含むレポートを IGMP に送信します（次のフレーム 2 を参照）。 次に示すのは、 show ip igmp group  コマンドの出力が表示されます。

これは、ルータが 224.10.10.10 用のトラフィックを fa0.3 に現在転送していることを示しています。これは、クライアント PC である 10.3.3.2 から IGMP レポートを受信した結果です。

Router_A#show ip igmp groups

IGMP Connected Group Membership

Group Address    Interface            Uptime    Expires   Last Reporter

239.10.10.10     Fa0.3                00:02:48  00:02:04  10.3.3.2

Router_A#

4. ルータはレポートを受信し、次の情報とともにCGMP加入メッセージを送信します。

- 送信元 MAC：ルータの MAC アドレス

- 宛先 MAC：01-00-cc-dd-dd-dd

- 内容：クライアント PC の MAC アドレス（USA）：00-00-0c-07-ac-00マルチキャスト グループの MAC アドレス：01-00-5e-0a-0a-0a（次のフレーム 3 を参照）

ルータ上：

6d01h: IGMP: Received v2 Report from 10.3.3.2 (Fa0.3) for 239.10.10.10

6d01h: CGMP: Received IGMP Report on Fa0.3

6d01h:       from 10.3.3.2 for 239.10.10.10

6d01h: CGMP: Sending Join on Fa0.3

5. 01-00-cc-dd-dd-ddを含むスイッチが show cam system コマンド出力でCGMPが有効になっている。スイッチは、パケットを処理できます。

スイッチは、クライアント PC の MAC アドレスが存在するポートを判断するためにダイナミック CAM テーブルのルックアップを作成します。アドレスはポート3/2に配置され、スイッチは01-00-5e-0a-0a-0aのCAMテーブルにポート3/2にバインドされたスタティックエントリを作成します。また、スイッチはその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

6. マルチキャスト グループ 239.10.10.10 向けの後に続くすべてのトラフィックは、この VLAN のこのポートだけに転送されます。次に示すのは、3/1 がルータ ポートで、3/2 がクライアント ポートである Catalyst スイッチにあるスタティック エントリです。

Switch_B (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

Switch_B (enable)

CGMP Fast-Leave 有効時におけるグループからの離脱

次の例では、クライアントが IGMP バージョン 2 クライアントで、スイッチで Fast-Leave が有効になっている必要があります。

1. 次の手順によって、CGMP Fast-Leave が有効になります。次の図を参照してください。 show cgmp leave コマンド出力を使用して、有効になっているかどうかを確認します。また、 show cam system コマンド出力を使用して、スイッチが01-00-5e-00-00-01および01-00-5e-00-00-02（leaveに使用されるアドレス）をリッスンしているかどうかを確認します。

Switch_B (enable) show cgmp leave

CGMP:       enabled

CGMP leave: enabled

Switch_B (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

2. クライアントは224.0.0.2にIMPG Leaveメッセージを送信します。スイッチはこれを代行受信し、Leaveを受信したポートでIGMP Queryを送信します。次に示します 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

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

4. ルータは IGMP 脱退メッセージを受信するので、CGMP 脱退メッセージをスイッチに送信し、また、自身の IGMP グループ リストからグループを削除します。以下は、 debug  コマンドの出力が表示されます。

ルータ上：

IGMP: Received Leave from 10.200.8.108 (Fa0.3) for 239.10.10.10

IGMP: Send v2 Query on Fa0.3 to 239.10.10.10

IGMP: Send v2 Query on Fa0.3 to 239.10.10.10

CGMP: Sending Leave on Fa0.3

GDA 0100.5e0a.0a0a, USA 0000.0000.0000

IGMP: Deleting 239.10.10.10 on Fa0.3

CGMP のトレースと設定

フレーム 1

フレーム1はGDA 00-00-00-00-00-00への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

!--- Send to the CGMP !--- macaddress present in show cam sys !--- command output.

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 address of the router.

CGMP:

フレーム 1 の結果は、3/1 がルータに接続されるポートになるスイッチ上にあります。

Frame 2

フレーム 2 は、ユーザがグループ 239.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

!--- Destination is the GDA MAC.

ETHER: Source      = Station Cisco176DCCA

!--- Sourced by the PC connected in 3/1.

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      = [10.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:

Frame 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

!--- GDA MAC added in show cam static !--- command output.

CGMP:    USA    =0000.0C76.DCCA

!--- MAC of the PC in 3/1.

CGMP:

次に示すのは、ルータとスイッチの設定です。

Router_A (router) Configuration:

Router_A#write terminal

Building configuration...

Current configuration:

!

version 12.0

service timestamps debug uptime

service timestamps log uptime

no service password-encryption

!

hostname Router_A

!

!

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 10.1.1.1 255.255.255.0

no ip redirects

no ip directed-broadcast

!

interface FastEthernet0.2

encapsulation isl 2

ip address 10.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 10.3.3.1 255.255.255.0

no ip redirects

no ip directed-broadcast

ip pim dense-mode

ip cgmp

!

Switch_B configuration for CGMP:

#cgmp

set cgmp enable

set cgmp leave enable

!

CGMP statistics for VLAN 3:

Switch_B (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

Switch_B (enable)

IGMP スヌーピング

IGMP スヌーピングは IGMP フレームを直接取り込むことのできるもう 1 つの機能です。Catalyst スイッチにおける IGMP スヌーピングのサポートについては、『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。

IGMP スヌーピングの概要

IGMP スヌーピングは、その名前が示すように、ホストとルータの間の IGMP のやり取りをスイッチが「リッスン」できる機能です。スイッチがホストからの指定のマルチキャスト グループ用の IGMP レポートをリッスンすると、スイッチはホストのポート番号をそのグループ用の GDA リストに追加します。そして、スイッチが IGMP Leave を傍受すると、CAM テーブル エントリからホストのポートを削除します。

ルータ ポートの学習

スイッチは 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 プローブ

- 01-00-5e-00-05 または 06 に送信される MOSPF メッセージ

スイッチでIGMPスヌーピングを有効にすると、上記のすべてのMACエントリが show cam system コマンドの出力を調べます。ルータ ポートが検出されると、その VLAN のすべての GDA のポートのリストに追加されます。

IGMP スヌーピングによるグループへの参加

次に示すのは 2 つの加入シナリオです。

シナリオ A：ホスト A はセグメント内のグループに参加する最初のホストです。

1. ホスト A は任意の IGMP メンバーシップ レポートを送信します。

2. スイッチは、グループに加入したかったホストによって送信された IGMP メンバシップ レポートを傍受します。

3. スイッチはそのグループにマルチキャスト エントリを作成し、レポートを受信したポートとすべてのルータ ポートにそのエントリをリンクします。

4. スイッチはすべてのルータ ポートに IGMP レポートを転送します。これによって、ルータも IGMP レポートを受信し、それに従ってそのマルチキャスト ルーティング テーブルを更新します。

シナリオ B：現在、ホスト B は、同じグループに加入する 2 番目のホストです。

1. ホスト B は任意の IGMP メンバシップ レポートを送信します。

2. スイッチは、グループに加入したいホストによって送信された IGMP メンバシップ レポートを傍受します。

3. スイッチは、必ずしも IGMP レポートをすべてのルータ ポートに転送するわけではありません。実際、スイッチは IGMP レポートをプロキシ レポーティングを使用してルータ ポートに転送し、10 秒内に 1 グループにつき 1 つのレポートのみ転送します。

注：グループ メンバシップを維持するために、マルチキャスト ルータが 60 秒ごとに IGMP クエリを送信します。このクエリは、スイッチによって傍受され、スイッチ上のすべてのポートに転送されます。グループのメンバであるすべてのホストはそのクエリに応答します。しかし、スイッチが応答レポートも傍受するため、他方のホストは他の各レポートを受信せず、そのため、すべてのホストがレポートを送信します（グループごとに 1 つではなく）。 次に、スイッチはプロキシ レポートも使用して、受信したすべての応答の中で 1 つのグループに 1 つのレポートだけを転送します。

ホスト A がグループを脱退したいもののホスト B が引き続きグループを受信したい状態であると仮定します。

- スイッチはホスト A から IGMP 脱退メッセージを取り込みます。

- スイッチは、そのポートのグループのため（なおかつそのポートだけに）にグループ固有の IGMP クエリを発行します。

- スイッチは、レポートを受信しない場合、このポートをエントリから廃棄します。そのポートから応答を受信した場合は、何も行わず、脱退メッセージを廃棄します。

- ホスト B は、引き続きそのスイッチ上にあるそのグループからの対象になります。これが、エントリ内の最後の非ルータ ポートになることはありません。そのため、スイッチは脱退メッセージを転送しません。

ここで、ホスト B がグループを脱退したいと思っており、ホスト B がこのセグメント内のこのグループから対象になっている最後のユーザであると仮定します。

- スイッチはホスト A から IGMP 脱退メッセージを取り込みます。

- スイッチは、そのポートでグループ固有 IGMP クエリーを発行します。

- スイッチは、レポートを受信しない場合、このポートをエントリから廃棄します。

- これは、その GDA 向けの最後の非ルータ ポートです。スイッチは IGMP 脱退メッセージをすべてのルータ ポートに転送して、そのテーブルからエントリを削除します。

IGMP / CGMP のやり取り

ネットワークによっては、ハードウェアの制約により、すべてのスイッチで IGMP スヌーピングを実行できないことがあります。その場合、同一のネットワーク内のいくつかのスイッチで CGMP を実行する必要がある可能性もあります。

これは特殊な場合であることに注意してください。IGMP スヌーピングを実行しているスイッチは CGMP メッセージを検出して、ネットワーク内のいくつかのスイッチが CGMP を実行していることを検出します。そのため、特殊な IGMP-CGMP モードに移って、プロキシ レポートをディセーブルにします。ルータは CGMP Join を作成するために、IGMP レポートの送信元 MAC アドレスを使用するので、CGMP が正常に動作するには、この操作が必要です。CGMP を実行しているルータは、すべての IGMP レポートを確認する必要があるので、プロキシ レポートは無効にする必要があります。ルータに送信されたレポートは、IGMP スヌーピングに厳密に必要とされるレポートだけです。

マルチキャストの送信元だけのネットワーク

セグメントが 1 つのマルチキャスト サーバ（マルチキャスト送信元）だけでクライアントを含んでいない場合、そのセグメントに IGMP パケットを何も持っていないのにたくさんのマルチキャスト トラフィックを持つことになる可能性があります。この場合、スイッチは単にそのグループからセグメントの全員にトラフィックを転送するだけです。幸いなことに、IGMP スヌーピングを実行しているスイッチは、これらのマルチキャスト ストリームを検出でき、ルータ ポートだけでそのグループ用のマルチキャスト エントリを追加します。これらのエントリは内部で mcast_source_only としてフラグが立てられ、5 分ごとまたはルータのポートが削除されるとエージング アウトされます。このエージングの後であっても、トラフィックが継続した場合には数秒以内でアドレスが再学習されます。再学習期間中に、瞬間的なフラッディングは VLAN で発生することがあります。これを回避し、エントリを保持するには、 set igmp flooding enable | disable コマンドが表示されない場合もあります。フラッディングがディセーブルになった後、スイッチは送信元だけのエントリをエージング アウトしません。

制限

CGMP と同様、01-00-5e-00-00-xx の範囲に収まる MAC にマップする GDA は、IGMP スヌーピングによってプルーニングされることはありません。

Cisco スイッチにおける IGMP スヌーピングの設定

IGMP スヌーピングを有効/無効するには、次のコマンドを発行します。

- set igmp

マルチキャスト ルータ（スタティック）を設定するには、次のコマンドを発行します。

- set multicast router

- clear multicast router

|

port | all>

IGMP統計情報を監視および確認するには、次のコマンドを発行します。

- show igmp statistics

- show multicast router

IGMP スヌーピングの実例

この例のセットアップは、このドキュメントで前に使用されたその CGMP テストに似ています。唯一の相違点は、ポート 3/2 と 3/3 が両方とも同一の VLAN に接続されており、両方ともグループ 224.10.10.10 に加入するようにクライアントで設定されていることです。

次の例は、いくつかの操作を説明しており、スイッチがどのようなものかを確認し、結果の出力を調べています。次の例で、Switch_B は IGMP スヌーピングを実行している Catalyst 5500 であり、Router_A はポート 3/1 に接続されているマルチキャスト ルータです。

1. スイッチでIGMPスヌーピングを有効にし、 debug コマンドが表示されない場合もあります。エントリの各セットが show cam sys PIM、MOSPFなどを介してルータポートを検出できるコマンド出力。

Switch_B (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

Switch_B (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

2. スイッチは、ルータ Router_A から 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

Switch_B (enable) show multi router

CGMP disabled

IGMP enabled

Port       Vlan

---------  ----------------

3/1       2-3

Total Number of Entries = 1

'*' - Configured

Switch_B (enable)

3. グループ 224.10.10.10（ポート 3/2）で新しいホストを接続します。 このホストは、IGMP メンバシップ レポートを送信します。レポートが受信され、スイッチによってスヌーピングされて、エントリが追加され、IGMP レポートはルータに転送されます。

Switch_B の場合

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

Switch_B (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

4. 次に示すように、ポート 3/3 で VLAN 3 にさらにユーザを追加します。

Switch_B (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

5. ポート3/2を削除します。ポート3/2はIGMP Leaveメッセージを送信します。スイッチは、ポート 3/2 に IGMP グループ固有のクエリを送り戻して、タイマーを開始します。タイマーは、応答を受信せずに終了したとき、グループからポートを削除します。

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

Switch_B (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

6. ポート 3/3 のホストは、グループを脱退し、IGMP 脱退メッセージを送信します。前回の操作と違う点は、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 コマンドの出力を示します。

Switch_B (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

Switch_B (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

Switch_B (enable)

関連情報

- マルチキャスト Catalyst スイッチのサポート一覧表

- IP マルチキャストに関するサポートページ

- シスコのテクニカルサポート ページ

- シスコの製品サポート ページ

- テクニカル サポートとドキュメント – Cisco Systems