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

キャンパス ネットワーク内のマルチキャスト:CGMP と IGMP のスヌーピング

2010 年 7 月 9 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2013 年 8 月 21 日) | 英語版 (2008 年 12 月 17 日) | フィードバック

目次

概要
はじめに
      表記法
      前提条件
      使用するコンポーネント
      背景説明
マルチキャスト アドレス
インターネット グループ管理プロトコル(IGMP)
      IGMPv1
      IGMPv2
      IGMPv3
      IGMPv1 と IGMPv2 の相互運用
      IGMPv1/IGMPv2 と IGMPv3 の相互運用
      ルータ上の IGMP
      ルータの実例
Cisco Group Management Protocol
      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 アドレスを学習する方法を持っていません。

この問題の第 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 アドレスです。これらの IP アドレスは Group Destination Address(GDA; グループ宛先アドレス)とも呼ばれています。

  2. それぞれの GDA に対して、対応する MAC アドレスが存在します。この MAC アドレスは、次に示すように、01-00-5e と、その後に GDA の下位の 23 ビットを 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 の概要を短く説明します。



IGMPv1

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

  • バージョン: 1

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

  • チェックサム

  • 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 を使用します。各グループのホストは、そのクエリに応答する必要があるか、ルータはそのセグメントへのその GDA 用トラフィックの転送を停止します(3 回試行した後)。ルータは、各送信元用のマルチキャスト ルーティング エントリを維持して、発信インターフェイス(IGMP レポートの発信元のインターフェイス)のリストにそれをリンクします。3 回の IGMP クエリの試行でも応答がなかった場合、その後、このインターフェイスはその GDA にリンクされているすべてのエントリ向けの発信インターフェイス リストから消去されます。

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



IGMPv2

IGMP バージョン 2(IGMPv2)では、バージョン フィールドが削除され、タイプ フィールドは別の値を受け付けられるようになりました。そのタイプを次に示します。

  • メンバシップ クエリ

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

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

  • グループ脱退

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

  • IGMP 脱退メッセージ:ホストは、グループを脱退したいとき、宛先 224.0.0.2 にグループ脱退 IGMP メッセージを送信します(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 ルータでの IGMPv3 のサポート(L3)

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 の加入と脱退を読み取ります。

IGMPv3 はより複雑です。その理由は、IGMPv3 がグループ アドレス(マルチキャスト アドレス)を使用しているだけでなく、トラフィックが来ると予想されている送信元も使用しているためです。CatOS 7.5 以降およびネイティブ IOS バージョン 12.1(8a)E 以降を稼動している Catalyst 6000 スイッチを除き、他のスイッチは現在はそれらのパケットを効果的にスヌーピングできず、この情報に基づいて転送テーブルを構築します。そのため、IGMP スヌーピングは、スイッチに IGMPv3 ホストが存在する場合にはオフにする必要があります。IGMP スヌーピングがオフになると、スイッチはマルチキャスト ストリームに対して L2 転送テーブルをダイナミックに構築できません。つまり、スイッチはマルチキャスト ストリームをフラッディングします。

IGMP スヌーピングがディセーブルになっているときに、マルチキャスト トラフィックでサブネットをフラッディングすることを避けるための 1 つの解決策は、マルチキャスト ダイナミック Content-Addressable Memory(CAM; 連想メモリ)エントリを手動で設定することです。ただし、これは管理上の負担になり、ダイナミックな解決策でもありません。クライアントがこれ以上トラフィックを受信したくないときには、CAM エントリはスイッチから削除されず(手動による介入を除く)、そのため、ネットワーク トラフィックは引き続きホストにアドレスを指定されます。

また、ネットワークで IGMPv3 を使用するときに、CGMP を使用するスイッチは、CGMP 高速脱退が動作しなくても、正常に動作します。CGMP 高速脱退が必要な場合は、IGMPv2 に戻すことが最適です。

プラットフォーム固有の未解決の警告については、該当するスイッチのリリース ノートを参照してください。



IGMPv1 と IGMPv2 の相互運用

IGMPv1 と IGMPv2 がある場合、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 は、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 テーブルを調べます。USA が CAM テーブル内に見つかった場合、スイッチは、USA がどのポートに存在するのかを認識し、次のいずれか 1 つを行います。

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

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



CGMP でのグループの脱退

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

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

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

CGMP 高速脱退処理では、スイッチは、いずれかのスーパーバイザ エンジン モジュール ポートでホストによってすべてのルータ マルチキャスト アドレス(224.0.0.2)に送信された IGMPv2 脱退メッセージを検出できます。スーパーバイザ エンジン モジュールは、脱退メッセージを受信すると、クエリ応答タイマーを開始し、脱退が受信されたポートでこのマルチキャスト グループを引き続き積極的に受信しようとしているホストが存在するかどうかを判断するために、そのポートにメッセージを送信します。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. HSRP との競合があるため、CGMP 脱退処理はデフォルトでディセーブルになっています。HSRP は MAC アドレス 01-00-5e-00-00-02 を使用します。このアドレスは IGMP バージョン 2 の IGMP 脱退と同じです。CGMP 高速脱退によって、すべての HSRP パケットはスイッチ CPU に移動します。HSRP メッセージは IGMP パケットではないので、スイッチはそのようなメッセージをすべて再生成して、すべてのルータ ポートに送信します。hsrp hello または hsrp peers を受信しているルータは接続を失います。そのため、HSRP 問題のデバッグでは、CGMP 高速脱退をディセーブルにしてください。

    CGMP 脱退処理をイネーブルにするには、set cgmp leave enable コマンドを発行します。

  2. CGMP 脱退処理をイネーブルにすると、Catalyst 5000 ファミリ スイッチは、PIM-v1、HSRP、および CGMP 自己加入メッセージ経由でルータ ポートを学習します。CGMP 脱退処理がディセーブルになると、Catalyst 5000 ファミリ スイッチは、CGMP 自己加入メッセージだけからルータ ポートを学習します。

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

22a.gif

この設定は、ホストがグループに加入するときに含まれる処理を示しています。この設定は、高速脱退がイネーブルになっている状態でホストがグループを脱退する処理も示しています。スイッチとルータのスニファ トレースと設定も示します。

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 は、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 高速脱退をイネーブルにした状態でのグループからの脱退

次の例は、クライアントが IGMP バージョン 2 クライアントであることと、高速脱退がスイッチでイネーブルになっていることが必要です。

  1. 次の手順によって、CGMP 高速脱退がイネーブルになります。show cgmp leave コマンドの出力を見て、これがイネーブルになっているかどうかを判断します。また、show cam system コマンド出力を見ると、スイッチが 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 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 脱退メッセージを転送します。

    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   


!--- CGMP MAC アドレスに送信します。 
!--- これは show cam sys コマンド出力 
!--- に示されます。
 
     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 は、ユーザがグループ 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         


!--- 宛先は 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      = [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: 

フレーム 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:

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

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



IGMP スヌーピングの概要

IGMP スヌーピングは、その名前が示すように、ホストとルータの間の IGMP のやり取りをスイッチが「リッスン」できる機能です。スイッチがホストからの指定のマルチキャスト グループ用の IGMP レポートをリッスンすると、スイッチはホストのポート番号をそのグループ用の GDA リストに追加します。また、スイッチは、IGMP 脱退をリッスンすると、ホストのポートを 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 or 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 の適切な処理のためには絶対的に必要です。その理由は、ルータが CGMP 加入を作成するために IGMP レポートの送信元 MAC アドレスを使用するためです。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 脱退メッセージが最終的にルータ ポートに転送されることです。

    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