スイッチ : Cisco Catalyst 6500 シリーズ スイッチ

キャンパス ネットワークにおけるマルチキャスト: CGMP および IGMP スヌーピング

2016 年 10 月 27 日 - 機械翻訳について
その他のバージョン: PDFpdf | ライター翻訳版 (2010 年 7 月 9 日) | 英語版 (2015 年 10 月 7 日) | フィードバック


目次


概要

Cisco Group Management Protocol(CGMP)と Internet Group Management Protocol(IGMP; インターネット グループ管理プロトコル)スヌーピングの目的は、スイッチド ネットワークでマルチキャスト トラフィックを限定することです。 デフォルトでは、LAN スイッチはブロードキャスト ドメイン内でマルチキャスト トラフィックをフラッディングするので、多くのマルチキャスト サーバがセグメントにストリームを送信している場合は、これによって多くの帯域幅が消費される可能性があります。

はじめに

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

前提条件

このドキュメントに関する固有の要件はありません。

使用するコンポーネント

このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

背景説明

マルチキャスト トラフィックがフラッドされるのは、スイッチが通常、受信したすべてのフレームのソース アドレス フィールドを見て、MAC アドレスを学習するためです。 マルチキャスト MAC アドレスは、パケットの送信元アドレスとして使用されることはありません。 MAC アドレス テーブルにはこのようなアドレスはないので、スイッチにはこれらを学習する方法はありません。

この問題の第 1 の解決策は、各グループと各クライアント用にスタティック 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 によって、Cisco マルチキャスト ルータはホストによって送信された IGMP メッセージを理解できるようになり、CGMP が IGMP パケットに含まれる情報をスイッチに通知します。

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

このドキュメントで提供する CGMP 設定は CatOS を実行している Catalyst 4000 および 5000 スイッチ用であり(CGMP は Catalyst 6000 スイッチではサポートされていない)、IGMP スヌーピング設定は CatOS を実行している Catalyst 5000 および 6000 スイッチ用です。 他のスイッチ プラットフォームでマルチキャスト機能を設定する詳細は、それぞれのスイッチの設定ガイドについて『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。

次のセクションでは、マルチキャスト アドレスについて簡単に紹介し、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 つのタイプがあります。

  • Checksum

  • 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 のために利用可能 な IGMPv3 サポート パッチがおよび Linux あります。

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

Catalyst スイッチでの IGMPv3 のサポート(L2)

  • ハイブリッドモード ソフトウェア(スーパバイザおよび Cisco IOS の CatOS を実行する Catalyst 6000 か。 MSFC のソフトウェアは)バージョン 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 バージョン 3 に関するドキュメント』を参照してください。 IGMPv3、IGMP v3lite、URL Rendezvous Directory(URD)での SSM の詳細については、『IGMPv3、IGMP v3lite、URD での Source-Specific Multicast に関するドキュメント』を参照してください。

警告

スイッチは、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 と 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 であり、Subnetwork Access Protocol(SNAP; サブネットワーク アクセス プロトコル)ヘッダーの値が 0x2001 であるイーサネット フレームです。 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 脱退がイネーブルになると、次に示すように 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 脱退と同じです。 CGMP 高速脱退によって、すべての HSRP パケットはスイッチ CPU に移動します。 HSRP メッセージは IGMP パケットではないので、スイッチはそのようなメッセージをすべて再生成して、すべてのルータ ポートに送信します。 hsrp hello または hsrp peers を受信しているルータは接続を失います。 したがって、HSRP の問題をデバッグする場合は、CGMP Fast-Leave を無効にしてください。

    CGMP Leave 処理を有効にするには、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 <sparse-mode/dense-mode>

    • ip igmp

    • ip cgmp

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

    • 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 スイッチの設定の実例です。

/image/gif/paws/10559/22a.gif

この設定は、ホストがグループに加入するときに含まれる処理を示しています。 この設定は、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 コマンド出力ですべての VLAN 用に含まれています。 さらに、ネットワークが 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 は IGMP を GDA が含まれているレポート送信 します: 239.10.10.10 を含むレポートを IGMP に送信します(次のフレーム 2 を参照)。 次に示すのは、ルータ Router_A の 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. 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
    
    
  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. クライアントは IMPG 脱退メッセージを 224.0.0.2 に送信します。 スイッチはそれを傍受して、脱退を受信するポートに 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
    
    
  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 <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 に加入するようにクライアントで設定されていることです。

次の例は、いくつかの操作を説明しており、スイッチがどのようなものかを確認し、結果の出力を調べています。 次の例で、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 脱退メッセージを送信します。 スイッチは、ポート 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) 


関連情報


Document ID: 10559