Guest

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

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

ライター翻訳版 - March 15, 2005
機械翻訳版 - December 17, 2008
英語版 - December 17, 2008
Document ID: 10559

目次

概要
はじめに
      表記法
      前提条件
      使用するコンポーネント
      背景説明
マルチキャスト アドレス
Internet Group Management Protocol(IGMP; インターネット グループ管理プロトコル)
      IGMP バージョン 1
      IGMP バージョン 2
      IGMP バージョン 3
      IGMP バージョン 1 と IGMP バージョン 2 の間の相互運用性
      IGMP バージョン 1 または IGMP バージョン 2 と IGMP バージョン 3 の間の相互運用性
      ルータ上の IGMP
      ルータ上の実用例
Cisco Group Management Protocol(CGMP)
      CGMP のフレームとメッセージ タイプ
      ルータ ポートの学習
      CGMP を使用したグループへの参加
      CGMP を使用したグループの終了
      CGMP とソース専用ネットワーク
      CGMP を有効にする Cisco ルータとスイッチの設定
      CGMP 使用の実用例とデバッグ コマンドおよび出力
IGMP スヌーピング
      IGMP スヌーピングの概要
      ルータ ポートの学習
      IGMP スヌーピングを使用したグループへの参加
      IGMP/CGMP のインタラクション
      マルチキャスト ソース専用ネットワーク
      制限事項
      Cisco スイッチ上の IGMP スヌーピングの設定
      IGMP スヌーピングの実用例
関連情報

概要

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

はじめに

表記法

文書表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

前提条件

この文書に適用される特定の前提条件はありません。

使用するコンポーネント

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

背景説明

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

この問題に対する最初のソリューションは、各グループおよび各クライアント用にスタティック MAC アドレスを設定することです。 このソリューションによって、適切に問題が解決されます。ただし、このソリューションはスケーラブルではなく、ダイナミックなものでもありません。 次のいずれかのコマンドを発行して、Catalyst 4000、5000、または 6000 スイッチ上でこのソリューションを使用できます。

  • set cam static <multicast_mac> <mod/port>

  • set cam permanent <multicast_mac> <mod/port>

これら 2 つのコマンドでは同じ効果が得られます。ただし、リブート時に static のエントリは表示されなくなりますが、permanent のエントリは表示されたままです。

2 番目のソリューションは、CGMP の使用です。CGMP はシスコ独自のプロトコルであり、マルチキャスト ルータとスイッチの間で使用されます。 CGMP を使用すると、ホストから送信された IGMP メッセージの Cisco マルチキャスト ルータによる認識が可能になり、IGMP パケット内に含まれている情報がスイッチに伝達されます。

最後に挙げる(最も効果的な)ソリューションは、IGMP スヌーピングの使用です。 IGMP スヌーピングを使用すると、ホスト自体からの IGMP メッセージがスイッチによって代行受信され、それに従って MAC テーブルが更新されます。 IGMP スヌーピングをサポートするには、高度なハードウェアが必要です。

この文書内で取り扱う CGMP 設定は、CatOS が稼動する Catalyst 4000 および 5000 スイッチを対象としてます(Catalyst 6000 スイッチでは CGMP はサポートされません)。IGMP スヌーピング設定は、CatOS が稼動する Catalyst 5000 および 6000 スイッチを対象としています。 他のスイッチ プラットフォームでのマルチキャスト機能の設定に関しては、特定スイッチの設定ガイド用の『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。

次のセクションでは、マルチキャスト アドレスおよび IGMP の機能を簡単に説明し、CGMP および IGMP スヌーピングについての詳細情報を提供します。

マルチキャスト アドレス

  1. マルチキャスト IP アドレスは、クラス D の IP アドレスです。 したがって、224.0.0.0 〜 239.255.255.255 のすべての IP アドレスがマルチキャスト IP アドレスになります。 これは、Group Destination Address(GDA; グループ宛先アドレス)とも呼ばれます。

  2. 各 GDA に対して、関連付けられた MAC アドレスがあります。 次に示すように、この MAC アドレスは 01-00-5e の形式で、この後に 16 進数に変換された GDA の最後の 23 ビットが続きます。

    • 230.20.20.20 は、MAC 01-00-5e-14-14-14 に該当します。

    • 224.10.10.10 は、MAC 01-00-5e-0a-0a-0a に該当します。

    この結果、1 対 1 のマッピングではなく、次に示すように 1 対多のマッピングとなります。

    • 224.10.10.10 は、MAC 01-00-5e-0a-0a-0a に該当します。

    • 226.10.10.10 も、MAC 01-00-5e-0a-0a-0a に該当します。

  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 スヌーピングは、この予約済のアドレス範囲では動作しません。

Internet Group Management Protocol(IGMP; インターネット グループ管理プロトコル)

IGMP は、IGMPv1 用には RFC1112 で、IGMPv2 用には RFC2236 で、さらに IGMPv3 用には RFC3376 で定義されるている規格です。 特定のマルチキャスト トラフィックを受信するために、ホストによるルータの登録方法が IGMP によって指定されます。 次のセクションでは、IGMP の簡単な概要を提供します。

IGMP バージョン 1

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

  • バージョン:1

  • タイプ: IGMP メッセージには 2 つのタイプがあります。メンバーシップ クエリーおよびメンバーシップ レポートです。

  • Checksum

  • GDA

メンバーシップ レポートは、特定のマルチキャスト グループ(GDA)を受信するホストによって発行されます。 メンバーシップ クエリーは、そのセグメント内に GDA を受信するホストが存在するかどうかをチェックするために、ルータによって定期的に発行されます。

ホスト メンバーシップ レポートは、任意に(ホストが GDA トラフィックを最初に受信する場合)またはメンバーシップ クエリーへの応答として発行されます。 これらは、次のフィールドとともに送信されます。

L2 情報

  • 送信元 MAC:ホスト MAC アドレス

  • 宛先 MAC:GDA 用の宛先 MAC

L3 情報

  • 発信元 IP:ホストの IP アドレス

  • 宛先 IP:GDA

IGMP パケット

  • IGMP データにはさらに、GDA およびその他のフィールドも含まれています。

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

注:IGMPv1 には Leave メカニズムは用意されていません。 ホストがトラフィックを受信しなくなった場合、単に停止するだけです。 サブネット上の最後のホストの場合は、そのクエリーに対する応答はルータによって受信されず、そのサブネットの GDA が削除されます。

IGMP バージョン 2

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

  • メンバーシップ クエリー

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

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

  • Leave グループ

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

  • IGMP Leave メッセージ:ホストがグループを終了する場合、Leave グループ IGMP メッセージを宛先 224.0.0.2 に送信する必要があります(自動的に終了する IGMPv1 などの場合とは異なります)。

  • 0.0.0.0 ではなく、グループ GDA へのメンバーシップ クエリーの送信により、ルータによるグループ固有のクエリーの送信が可能になりました。

IGMP バージョン 3

IGMP バージョン 3(IGMPv3)では、次の値を含めることが可能なタイプ フィールドが用意されます。

  • メンバーシップ クエリー

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

IGMPv3 の実装では、以前のバージョンの IGMP との相互運用のために、次の 3 種類のメッセージ タイプのサポートも必要です

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

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

  • バージョン 2 Leave グループ [RFC2236]

IGMPv3 によってソース フィルタリングのサポートが追加されます。つまり、特定の発信元アドレスから、または特定のマルチキャスト アドレスに送信された特定の発信元アドレス以外のすべてからのシステムによるパケットの受信をレポートする機能です。 この機能は、Source Specific Multicast(SSM)とも呼ばれます。

コンピュータ上での SSM のサポートには、IGMPv3 がサポートされる必要があります。 ただし、相対的には、IGMPv3 がサポートされる OS はほとんど存在しません。 Windows XP では IGMPv3 がサポートされます。また、FreeBSD および Linux 用に IGMPv3 サポート パッチが利用可能です。

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

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

  • ハイブリッド モードのソフトウェア(スーパーバイザ上の CatOS および MSFC 上の Cisco IOS(R) ソフトウェア)が稼動している Catalyst 6000 では、バージョン 7.5(1) 以降、IGMPv3 スヌーピングが公式にサポートされています。

  • 6000 よりも前のバージョンでは、Catalyst スイッチでは IGMPv3 が公式にはサポートされていませんでした。ただし、通常は IGMPv3 パケットの処理が可能です。

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

  • Catalyst 4000 では、スーパーバイザ III および IV での IGMPv3 だけがルータ レベルでサポートされます。 IGMPv3 スヌーピングはサポートされません。

Cisco ルータ(L3)での IGMPv3 サポート

IGMPv3 は、Cisco IOS(R) ソフトウェア リリース 12.1(5)T 以降のリリースが稼動している、すべてのプラットフォーム上でサポートされています。 詳細については、『IGMP バージョン 3 の文書』を参照してください。 IGMPv3、IGMP v3lite、および URL Rendezvous Directory(URD)を使用した SSM の詳細は、『IGMPv3、IGMP v3lite、および URD を使用したソース固有のマルチキャスト文書』を参照してください。

注意

スイッチによって IGMP スヌーピングが実行されていると、IGMP パケットが代行受信され、この代行受信されたパケットのコンテンツを基にスタティック レイヤ 2(L2)フォワーディング テーブルにデータが入力されます。 ネットワーク上に IGMPv1 または IGMPv2 ホストが存在する場合、どちらのホストがどのマルチキャストを受信するのかを判断するために、あるいはマルチキャスト ストリームの受信を中止するために、スイッチによって IGMP Join および Leave が読み取られます。

IGMPv3 はより複雑です。グループ アドレス(マルチキャスト アドレス)だけではなく、トラフィックの発信が予想されるソースも使用されるからです。 CatOS 7.5 以降および Native IOS バージョン 12.1(8a)E 以降が稼動している Catalyst 6000 スイッチ以外は、これらのパケットの効果的なスヌーピングと、この情報を基にしたフォワーディング テーブルの構築が可能なスイッチは、現在のところ存在しません。 したがって、スイッチ上に IGMPv3 ホストが存在する場合、IGMP スヌーピングをオフにする必要があります。 IGMP スヌーピングをオフにすると、スイッチではマルチキャスト ストリーム用 L2 フォワーディング テーブルの動的な構築ができなくなります。 つまり、スイッチではマルチキャスト ストリームのフラッディングが発生します。

IGMP スヌーピングが無効な場合、1 つのソリューションとして、マルチキャスト トラフィックによるサブネットのフラッディングを回避するために、マルチキャスト ダイナミック Content-Addressable Memory(CAM; 連想メモリ)エントリを手動で設定することが挙げられます。 これは管理上の負担となりますが、ダイナミック ソリューションではありません。 クライアントがトラフィックを受信しなくなった場合、(手動で介入しない限り)CAM エントリはスイッチから削除されません。つまり、ネットワーク トラフィックは依然としてホストにアドレッシングされます。

また、ネットワーク内で IGMPv3 を使用する場合、CGMP ファースト リーブが稼動しないことを除き、CGMP が使用されたスイッチは正常に動作します。 CGMP ファースト リーブが必要な場合、IGMPv2 に戻ることが推奨されます。

未解決のプラットフォーム固有の注意事項は、各スイッチのためのリリース ノート内に記載されています。

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

IGMPv1 および IGMPv2 では、クエリーを送信するのは IP サブネットにつき 1 台のルータだけです。 このルータを、クエリー ルータと呼びます。 IGMPv1 では、マルチキャスト ルーティング プロトコルの支援により、クエリー ルータが選択されます。 IGMPv2 では、ルータの中で最も低い IP アドレスでクエリー ルータが選択されます。 いくつかの起こりうるシナリオを次に示します。

シナリオ 1:IGMPv1 ホストと IGMPv2 ホストの混在と IGMPv1 ルータ

IGMPv2 レポートはルータによって認識されないので、すべてのホストでは IGMPv1 レポートだけを使用する必要があります。

シナリオ 2:IGMPv2 ホストと IGMPv3 ホストの混在と IGMPv2 ルータ

IGMPv1 のホストは、IGMPv2 のクエリーまたは IGMPv2 のグループ メンバーシップ クエリーを認識しません。 ルータでは、IGMPv1 だけを使用して、Leave 操作を一時停止する必要があります。

シナリオ 3:同じセグメント上に配置された IGMPv1 ルータおよび IGMPv2 ルータ

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

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

IGMP のすべてのバージョンでは、クエリーを送信するのは IP サブネットにつき 1 台のルータだけです。 このルータを、クエリー ルータと呼びます。 IGMPv1 では、マルチキャスト ルーティング プロトコルの支援により、クエリー ルータが選択されます。 IGMPv2 と IGMPv3 では、ルータの中で最も低い IP アドレスでクエリー ルータが選択されます。 相互運用性オプションのいくつかを次に示します。

シナリオ 1:IGMPv1 ホストまたは IGMPv2 ホスト、および IGMPv3 ホストの混在と IGMPv1 または IGMPv2 ルータ

IGMPv3 レポートはルータによって認識されないので、すべてのホストは IGMPv1 または IGMPv2 レポートを使用します。

シナリオ 2:IGMPv1 ホストまたは IGMPv2 ホスト、および IGMPv3 ホストの混在と IGMPv3 ルータ

IGMPv1 または IGMPv2 のホストは、IGMPv3 のクエリーまたは IGMPv3 のメンバーシップ クエリーを認識しません。 ルータでは、存在する最も低い IGMP クライアント バージョンに対応する IGMP バージョンだけが使用される必要があります。 IGMPv3 および IGMPv2 クライアントが存在する場合、ルータでは IGMPv2 が使用されます。 IGMPv1、IGMPv2、および IGMPv3 クライアントが存在する場合、ルータでは IGMPv1 が使用されます。

シナリオ 3:同じセグメント上の異なるバージョンのルータ

異なるバージョンのルータが同じセグメント上に存在する場合、低いバージョンのルータには高いバージョンのルータを検出する手段が用意されていません。 したがって、管理者は、異なるルータを同じバージョンに設定する必要があります。 このバージョンは、存在するクエリー実行の任意のルータ上での最も低いバージョンに一致する必要があります。

ルータ上の IGMP

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

次の操作をルータ上で実行する必要があります。

  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 つのサブインターフェイスである、ファースト イーサネット 0.2 とファースト イーサネット 0.3 の間をルーティングするようにルータは設定されています。 どちらのインターフェイスも、IGMP を実行するように設定されています。 次の出力では、IGMP のバージョンや参加グループなどを表示できます。

設定

ip multicast-routing 
interface FastEthernet0 
 no ip address 
 no ip directed-broadcast 
! 
interface FastEthernet0.2 
 encapsulation isl 2 
 ip address 2.2.2.1 255.255.255.0 
 no ip redirects 
 no ip directed-broadcast 
 ip pim dense-mode 
! 
interface FastEthernet0.3 
 encapsulation isl 3 
 ip address 3.3.3.1 255.255.255.0 
 no ip redirects 
 no ip directed-broadcast 
 ip pim dense-mode 
!

show ip igmp interface

 Fa0.2 is up, line protocol is up 
 Internet address is 2.2.2.1/24 
 IGMP is enabled on interface 
 Current IGMP version is 2 
 CGMP is disabled on interface 
 IGMP query interval is 60 seconds 
 IGMP querier timeout is 120 seconds 
 IGMP max query response time is 10 seconds 
 Inbound IGMP access group is not set 
 IGMP activity: 3 joins, 2 leaves 
 Multicast routing is enabled on interface 
 Multicast TTL threshold is 0 
 Multicast designated router (DR) is 2.2.2.1 (this system) 
 IGMP querying router is 2.2.2.1 (this system) 
 Multicast groups joined: 224.0.1.40 
 Fa0.3 is up, line protocol is up 
 Internet address is 3.3.3.1/24 
 IGMP is enabled on interface 
 Current IGMP version is 2 
 CGMP is disabled on interface 
 IGMP query interval is 60 seconds 
 IGMP querier timeout is 120 seconds 
 IGMP max query response time is 10 seconds 
 Inbound IGMP access group is not set 
 IGMP activity: 1 joins, 1 leaves 
 Multicast routing is enabled on interface 
 Multicast TTL threshold is 0 
 Multicast designated router (DR) is 3.3.3.1 (this system) 
 IGMP querying router is 3.3.3.1 (this system) 
 No multicast groups joined

show ip mroute および show ip igmp group

 Malaga#show ip mroute 
 IP Multicast Routing Table 
 Flags: D - Dense, S - Sparse, C - Connected, L - Local, P - Pruned 
        R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT 
 Timers: Uptime/Expires 
 Interface state: Interface, Next-Hop or VCD, State/Mode 
 (*, 224.10.10.10), 00:01:15/00:02:59, RP 0.0.0.0, flags: DJC 
   Incoming interface: Null, RPF nbr 0.0.0.0 
   Outgoing interface list: 
     FastEthernet0.3, Forward/Dense, 00:01:16/00:00:00 
 (2.2.2.2, 224.10.10.10), 00:00:39/00:02:20, flags: CT 
   Incoming interface: FastEthernet0.2, RPF nbr 0.0.0.0 
   Outgoing interface list: 
     FastEthernet0.3, Forward/Dense, 00:00:39/00:00:00 
 Malaga#show ip igmp groups 
 IGMP Connected Group Membership 
 Group Address    Interface            Uptime    Expires   Last Reporter 
 224.10.10.10     Fa0.3                00:02:48  00:02:04  3.3.3.2 
 Malaga#

Cisco Group Management Protocol(CGMP)

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

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

レイヤ 2 ネットワークでマルチキャスト トラフィックを制限するために、CGMP は最初にシスコによって実装されました。 本質的に、スイッチにはレイヤ 3 パケットを認識する機能はなく、IGMP パケットを識別できません。 CGMP を使用すると、ルータによってホスト間にインターフェイスが提供されます。 ルータと IGMP 間で「対話」が行われ、スイッチと CGMP 間で「対話」が行われます。

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

  • バージョン:1 または 2。

  • メッセージ タイプ:Join または Leave。

  • カウント:メッセージ内のマルチキャストまたはユニキャスト アドレス ペアの数。

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

  • Unicast Source Address(USA; ユニキャスト送信元アドレス):GDA に参加するデバイスの 48 ビット MAC ユニキャスト アドレス。

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

デフォルトでは、show cam system コマンドが発行されると、スイッチのプロセッサ(Catalyst では NMP と呼ばれる)によって、マルチキャスト アドレスだけがリッスンされます。 スイッチ上で CGMP を有効にすると、アドレス 01-00-0c-dd-dd-dd が show cam system コマンド出力に追加されます。

次の表に、発生する可能性がある CGMP メッセージをすべて掲載します。

GDA

USA

Join/Leave

意味

Mcast MAC

Client MAC

Join

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

Mcast MAC

Client MAC

Leave

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

00-00-00-00-00-00

Router MAC

Join

ルータ ポートを割り当てる。

00-00-00-00-00-00

Router MAC

Leave

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

Mcast MAC

00-00-00-00-00-00

Leave

グループを削除する。

00-00-00-00-00-00

00-00-00-00-00-00

Leave

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

ルータ ポートの学習

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

CGMP を使用したグループへの参加

  • 新規のクライアントは GDA 用トラフィックの受信を要求しており、IGMP メンバーシップ レポート メッセージが送信されます。

  • ルータによって IGMP レポートの受信および処理が行われ、CGMP メッセージがスイッチに送信されます。 ルータでは宛先 MAC アドレスが CGMP Join の GDA フィールドにコピーされ、送信元 MAC アドレスが CGMP Join の USA にコピーされます。 次に、スイッチに戻されます。

  • CGMP が有効なスイッチでは、CGMP 01-00-0c-dd-dd-dd アドレスのリッスンが必要です。 スイッチのプロセッサによって、USA の検索に CAM テーブルが参照されます。 CAM テーブル内で USA が発見されると、スイッチによってどのポートに USA が配置されているのかが認識され、次のいずれかが実行されます。

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

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

CGMP を使用したグループの終了

VLAN でスパニング ツリー トポロジが変更されるか、またはルータによって上記の表の最後の CGMP Leave メッセージの 1 つが送信されない限り、CGMP を使用して学習されたスタティック エントリは永続的です。

IGMPv1 がホストの場合、IGMP Leave メッセージは送信しません。 3 回連続で IGMP クエリーへの応答が受信されない場合は、ルータによって Leave メッセージだけが送信されます。 これは、グループを対象としているユーザが存在する場合、そのグループからポートが削除されないことを意味します。

IGMPv2 の導入と IGMP Leave の使用により、シスコは元の CGMP 仕様を拡張しました(CGMPv2)。 この追加は CGMP ファースト リーブと呼ばれます。

CGMP ファースト リーブ処理を使用すると、任意のスーパーバイザ エンジン モジュール ポート上のホストによって、全ルータのマルチキャスト アドレス(224.0.0.2)に送信された IGMPv2 Leave メッセージに対する、スイッチによる検出が可能になります。 スーパーバイザ エンジン モジュールによって Leave メッセージが受信されると、クエリー応答タイマーが起動し、その Leave が受信されたポート上でメッセージが送信されて、そのポートでこのマルチキャスト グループを受信するホストがまだ存在するかどうかが判断されます。 CGMP Join メッセージが受信される前にこのタイマーの期限が切れると、元の Leave メッセージで指定されたマルチキャスト グループのマルチキャスト ツリーから、ポートがプルーニングされます。 これがマルチキャスト グループの最後のポートである場合、IGMP Leave メッセージがすべてのルータ ポートに転送されます。 次に、ルータによってグループ固有のクエリーが送信され、通常の削除処理が開始されます。 応答が受信されないので、ルータによってそのインターフェイスのマルチキャスト ルーティング テーブルからこのグループが削除されます。 また、スタティック テーブルからグループを消去するスイッチにも、CGMP Leave メッセージが送信されます。 ファースト リーブ処理では、複数のマルチキャスト グループが同時に使用されている場合でも、スイッチド ネットワーク上のすべてのホストに対し、最適な帯域幅管理が保証されます。

したがって、CGMP Leave が有効な場合、show cam system コマンド出力には、次の 2 つのエントリが追加されます。

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

IGMP Leave によって 224.0.0.2 が使用され、IGMP Query によって 224.0.0.1 が使用されます。

CGMP をトラブルシューティングするには、次の手順に従います。

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

    CGMP Leave 処理を有効にするには、set cgmp leave enable コマンドを発行します。

  2. CGMP Leave 処理が有効な場合、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 マルチキャスト アドレス用のマルチキャスト トラフィックはプルーニングされません。 単一のレイヤ 3 ホップでローカル IP マルチキャスト トラフィックを転送するために、224.0.0.0 〜 224.0.0.255 の範囲内の予約済み IP マルチキャスト アドレスが使用されます。

CGMP とソース専用ネットワーク

ソース専用ネットワークは、ソース マルチキャストだけのセグメントです。実際のクライアントは存在しません。 したがって、そのセグメント内では IGMP レポートが生成されない可能性があります。 ただし、CGMP では、このソースのフラッディングを(ルータの使用専用に)制限する必要があります。 IGMP レポートが含まれない 1 つのインターフェイス上でマルチキャスト トラフィックがルータによって検出される場合、これはマルチキャスト ソース専用ネットワークと識別されます。 ルータ用の CGMP Join メッセージがルータ自体によって生成され、スイッチによってこのグループが単に追加されます(ルータ ポートだけを使用)。

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

次のコマンドは、Catalyst 4000 および 5000 シリーズ(および 2901、2902、2926、2948G、4912)に対してだけ有効です。

  • マルチキャスト ルータ

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

    • ip multicast-routing

    次のコマンドを使用して、CGMP が稼動している(インターフェイス モード)各インターフェイスを有効にする。

    • ip pim <sparse-mode/dense-mode>

    • ip igmp

    • ip cgmp

    次のコマンドを使用して、レイヤ 2 マルチキャストの問題をデバッグする。

    • debug ip igmp

    • debug ip cgmp

  • Catalyst 4000 または 5000 シリーズ

    次のコマンドを使用して、CGMP を有効または無効にする。

    • set cgmp <enable/disable>

    次のコマンドを使用して、CGMP ファースト リーブを有効または無効にする。

    • set cgmp leave <enable/disable>

    次のコマンドを使用して、マルチキャスト ルータを設定する(スタティック)。

    • set multicast router <slot /port>

    次のコマンドを使用して、マルチキャスト ルータをクリアする。

    • clear multicast router <slot/port>

    CGMP 操作を確認するための、さまざまなコマンドを次に掲載。

    • show cam static

    • show cgmp statistic <VLAN_id>

    • show cgmp leave

    • show multicast router

    • show multicast group

    • show multicast group cgmp

    • show multicast group count

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

Cisco ルータと Catalyst スイッチの実際の設定例を次に示します。

22a.gif

この設定では、ホストがグループに参加する場合に関連する操作を示します。 また、この設定では、ファースト リーブが有効なグループをホストが終了する場合の操作も示します。 スニッファ トレースと、スイッチおよびルータの設定も提供します。

CGMP を使用したグループへの参加

CGMP を使用したグループへ参加する場合に、これらの手順を参照します。

  1. 次に示すように、スイッチ上で CGMP を有効にします。

    fish (enable) set cgmp en 
    MCAST-CGMP: Set CGMP Sys Entrie 
    MCAST-CGMP: Set CGMP Sys Entrie 
    MCAST-CGMP: Set CGMP Sys Entrie 
    CGMP support for IP multicast enabled. 
    fish (enable)
    

    次に示すように、show cam system コマンド出力には、エントリ 01-00-0c-dd-dd-dd がすべての VLAN 用に含まれています。 さらに、ネットワークでは CGMP ファースト リーブが実行されているので、01-00-5e-00-00-01 および 01-00-5e-00-00-02 用のエントリも表示されています。

    fish (enable) show cgmp leave 
    CGMP:       enabled 
    CGMP leave: enabled 
    fish (enable) show cam system 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------    -----  ------------------------------------------- 
    1     00-10-2f-00-14-00  #          7/1 
    1     00-e0-fe-4b-f3-ff  #          1/9 
    1     01-00-0c-cc-cc-cc  #          1/9 
    1     01-00-0c-cc-cc-cd  #          1/9 
    1     01-00-0c-dd-dd-dd  #          1/9 
    1     01-00-0c-ee-ee-ee  #          1/9 
    1     01-80-c2-00-00-00  #          1/9 
    1     01-80-c2-00-00-01  #          1/9 
    2     00-10-2f-00-14-00  #          7/1 
    2     01-00-0c-cc-cc-cc  #          1/9 
    2     01-00-0c-cc-cc-cd  #          1/9 
    2     01-00-0c-dd-dd-dd  #          1/9 
    2     01-80-c2-00-00-00  #          1/9 
    2     01-80-c2-00-00-01  #          1/9 
    3     01-00-0c-cc-cc-cc  #          1/9 
    3     01-00-0c-cc-cc-cd  #          1/9 
    3     01-00-0c-dd-dd-dd  #          1/9 
    3     01-80-c2-00-00-00  #          1/9 
    3     01-80-c2-00-00-01  #          1/9 
    Total Matching CAM Entries Displayed = 19 
    
  2. ルータの USA MAC を持つ GDA 00-00-00-00-00-00 に、ルータによって CGMP Join メッセージが送信されます。 その結果、そのルータ ポートがルータ ポート リストに追加されます(次の 1 番目の例を参照)。

    ルータ上

    6d01h: CGMP: Sending self Join on Fa0.3 
    6d01h:       GDA 0000.0000.0000, USA 0060.70cd.83c9

    スイッチ上

    MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 2 
    MCAST-CGMP-JOIN: join GDA 00-00-00-00-00-00 MCAST-CGMP-JOIN:USA 00-60-70-cd-83-c9 
    MCAST-ROUTER: Adding QUERIER port 3/1, vlanNo 2 
    MCAST-ROUTER: Creating RouterPortTimer for  port 3/1, vlanNo 2 
    fish (enable) show multi router 
    CGMP enabled 
    IGMP disabled 
    Port       Vlan 
    ---------  ---------------- 
     3/1       2-3 
    Total Number of Entries = 1 
    '*' - Configured
    
  3. 3/1 の PC によって、GDA 224.10.10.10 が含まれているレポートが IGMP に送信されます(フレーム 2 を参照)。 ルータ malaga 上での show ip igmp group コマンド出力を次に示します。

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

    Malaga#show ip igmp groups 
    IGMP Connected Group Membership 
    Group Address    Interface            Uptime    Expires   Last Reporter 
    224.10.10.10     Fa0.3                00:02:48  00:02:04  3.3.3.2 
    Malaga#
  4. ルータによってレポートが受信され、次の情報とともに CGMP Join メッセージが送信されます。

    • 送信元 MAC:ルータの MAC アドレス

    • 宛先 MAC:01-00-cc-dd-dd-dd

    • コンテンツ:クライアント PC(USA)の MAC アドレス:00-00-0c-07-ac-00、マルチキャスト グループの MAC アドレス:01-00-5e-0a-0a-0a(次のフレーム 3 を参照)

    ルータ上

    6d01h: IGMP: Received v2 Report from 3.3.3.2 (Fa0.3) for 224.10.10.10 
    6d01h: CGMP: Received IGMP Report on Fa0.3 
    6d01h:       from 3.3.3.2 for 224.10.10.10 
    6d01h: CGMP: Sending Join on Fa0.3  
    
  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. マルチキャスト グループ 224.10.10.10 用のすべての後続トラフィックは、この VLAN 内のこのポートにだけ転送されます。 Catalyst スイッチ内のスタティック エントリを次に示します。ここでは、3/1 はルータ ポートであり、3/2 はクライアント ポートです。

    fish (enable) show cam static
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------    -----  ------------------------------------------- 
    3     01-00-5e-0a-0a-0a             3/1-2 
    Total Matching CAM Entries Displayed = 3 
    fish (enable)
    

CGMP ファースト リーブが有効なグループの終了

次の例では、クライアントが IGMP バージョン 2 クライアントであり、スイッチ上でファースト リーブが有効である必要があります。

  1. 次の手順では、CGMP ファースト リーブが有効になります。 有効かどうかを判断するには、show cgmp leave コマンド出力を確認します。 また、01-00-5e-00-00-01 および 01-00-5e-00-00-02(Leave に使用されるアドレス)がスイッチによってリッスンされているかどうかを判断するには、show cam system コマンド出力を確認します。

    fish (enable) show cgmp leave 
    CGMP:       enabled 
    CGMP leave: enabled 
    fish (enable) show cam sys 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------    -----  ------------------------------------------- 
    1     00-10-2f-00-14-00  #          7/1 
    1     00-e0-fe-4b-f3-ff  #          1/9 
    1     01-00-0c-cc-cc-cc  #          1/9 
    1     01-00-0c-cc-cc-cd  #          1/9 
    1     01-00-0c-dd-dd-dd  #          1/9 
    1     01-00-0c-ee-ee-ee  #          1/9 
    1     01-80-c2-00-00-00  #          1/9 
    1     01-80-c2-00-00-01  #          1/9 
    2     00-10-2f-00-14-00  #          7/1 
    2     01-00-0c-cc-cc-cc  #          1/9 
    2     01-00-0c-cc-cc-cd  #          1/9 
    2     01-00-0c-dd-dd-dd  #          1/9 
    2     01-00-5e-00-00-01  #          1/9 
    2     01-00-5e-00-00-02  #          1/9 
    2     01-80-c2-00-00-00  #          1/9 
    2     01-80-c2-00-00-01  #          1/9 
    3     01-00-0c-cc-cc-cc  #          1/9 
    3     01-00-0c-cc-cc-cd  #          1/9 
    3     01-00-0c-dd-dd-dd  #          1/9 
    3     01-00-5e-00-00-01  #          1/9 
    3     01-00-5e-00-00-02  #          1/9 
    3     01-80-c2-00-00-00  #          1/9 
    Do you wish to continue y/n [n]?  y 
    Total Matching CAM Entries Displayed = 22 
    
  2. クライアントは、IMPG Leave メッセージを 224.0.0.2 に送信します。 スイッチによって IMPG Leave メッセージが代行受信され、Leave を受信したポートに IGMP クエリーが送信されます。 次に、スイッチでの debug 出力を示します。

    MCAST-IGMP-LEAVE:Recvd leave on port 3/2 vlanNo 3 
    MCAST-IGMP-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 
    MCAST-IGMP-LEAVE:deletion_timer = 1 
    MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 
    MCAST-SEND:  Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3
    
  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 Leave メッセージが受信されるので、CGMP Leave メッセージがスイッチに送信され、IGMP グループ リストからグループも削除されます。 次に、ルータでの debug コマンド出力を示します。

    ルータ上

    IGMP: Received Leave from 10.200.8.108 (Fa0.3) for 224.10.10.10 
    IGMP: Send v2 Query on Fa0.3 to 224.10.10.10 
    IGMP: Send v2 Query on Fa0.3 to 224.10.10.10 
    CGMP: Sending Leave on Fa0.3 
          GDA 0100.5e0a.0a0a, USA 0000.0000.0000 
    IGMP: Deleting 224.10.10.10 on Fa0.3
    

CGMP のトレースと設定

フレーム 1

フレーム 1 は、GDA 00-00-00-00-00-00 への CGMP Join フレームです。 ルータ ポート リストにルータ ポートを追加するために使用されます。

ISL: ----- ISL Protocol Packet ----- 
     ISL: 
     ISL: Destination Address               = 01000C0000 
     ISL: Type                              = 0 (Ethernet) 
     ISL: User                              = 0 (Normal) 
     ISL: Source Address                    = 8C958B7B1000 
     ISL: Length                            = 76 
     ISL: Constant value                    = 0xAAAA03 
     ISL: Vendor ID                         = 0x8C958B 
     ISL: Virtual LAN ID (VLAN)             = 2 
     ISL: Bridge Protocol Data Unit (BPDU)  = 0 
     ISL: Port Index                        = 193 
     ISL: Reserved 
     ISL: 
ETHER: ----- Ethernet Header ----- 
     ETHER: 
     ETHER: Destination = Multicast 01000CDDDDDD     


!--- show cam sys コマンド出力に
!--- 表示された CGMP MAC アドレスに 
!--- 送信します。
 
     ETHER: Source      = Station Cisco11411E1 
     ETHER: 802.3 length = 24 
     ETHER: 
LLC:  ----- LLC Header ----- 
     LLC: 
     LLC:  DSAP Address = AA, DSAP IG Bit = 00 (Individual Address) 
     LLC:  SSAP Address = AA, SSAP CR Bit = 00 (Command) 
     LLC:  Unnumbered frame: UI 
     LLC: 
SNAP: ----- SNAP Header ----- 
     SNAP: 
     SNAP: Vendor ID = Cisco1 
     SNAP: Type = 2001 (CGMP) 
     SNAP: 
CGMP: ----- CGMP ----- 
     CGMP: 
     CGMP: Version   = 16 
     CGMP: Type      = 0 (Join) 
     CGMP: Reserved 
     CGMP: Count     = 1 
     CGMP: 
     CGMP: Group Destination Address and Unicast Source Address 
     CGMP: 
     CGMP:    GDA    =0000.0000.0000 
     CGMP:    USA    =0000.0C14.11E1          


!--- ルータの MAC アドレス。

     CGMP:

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

フレーム 2

フレーム 2 は、グループ 224.10.10.10 用のトラフィックのユーザによる受信を要求(または確認)するために、ホストによって送信される IGMP メンバーシップ レポートです。

ISL: ----- ISL Protocol Packet ----- 
     ISL: 
     ISL: Destination Address               = 01000C0000 
     ISL: Type                              = 0 (Ethernet) 
     ISL: User                              = 0 (Normal) 
     ISL: Source Address                    = 8C958B7B1000 
     ISL: Length                            = 76 
     ISL: Constant value                    = 0xAAAA03 
     ISL: Vendor ID                         = 0x8C958B 
     ISL: Virtual LAN ID (VLAN)             = 2 
     ISL: Bridge Protocol Data Unit (BPDU)  = 0 
     ISL: Port Index                        = 195 
     ISL: Reserved 
     ISL: 
ETHER: ----- Ethernet Header ----- 
     ETHER: 
     ETHER: Destination = Multicast 01005E0A0A0A      


!---  宛先は GDA MAC です。
 
     ETHER: Source      = Station Cisco176DCCA        


!---  3/1 に接続された PC が発信元です。
 
     ETHER: Ethertype  = 0800 (IP) 
     ETHER: 
IP: ----- IP Header ----- 
     IP: 
     IP: Version = 4, header length = 20 bytes 
     IP: Type of service = C0 
     IP:       110. ....   = internetwork control 
     IP:       ...0 .... = normal delay 
     IP:       .... 0... = normal throughput 
     IP:       .... .0.. = normal reliability 
     IP: Total length    = 28 bytes 
     IP: Identification  = 0 
     IP: Flags           = 0X 
     IP:       .0.. .... = may fragment 
     IP:       ..0. .... = last fragment 
     IP: Fragment offset = 0 bytes 
     IP: Time to live    = 1 seconds/hops 
     IP: Protocol        = 2 (IGMP) 
     IP: Header checksum = CC09 (correct) 
     IP: Source address      = [2.1.1.2] 
     IP: Destination address = [224.10.10.10] 
     IP: No options 
     IP: 
IGMP: ----- IGMP header ----- 
     IGMP: 
     IGMP: Version       = 1 
     IGMP: Type          = 6 (Ver2 Membership Report) 
     IGMP: Unused        = 0x00 
     IGMP: Checksum      = FFEA (correct) 
     IGMP: Group Address = [224.10.10.10] 
     IGMP: 

フレーム 3

フレーム 3 は、01-00-5e-0a-0a-0a のスタティック エントリの追加をスイッチに指示するために、ルータによってスイッチに送信される CGMP フレームです。

ISL: ----- ISL Protocol Packet ----- 
     ISL: 
     ISL: Destination Address               = 01000C0000 
     ISL: Type                              = 0 (Ethernet) 
     ISL: User                              = 0 (Normal) 
     ISL: Source Address                    = 8C958B7B1000 
     ISL: Length                            = 76 
     ISL: Constant value                    = 0xAAAA03 
     ISL: Vendor ID                         = 0x8C958B 
     ISL: Virtual LAN ID (VLAN)             = 2 
     ISL: Bridge Protocol Data Unit (BPDU)  = 0 
     ISL: Port Index                        = 193 
     ISL: Reserved 
     ISL: 
ETHER: ----- Ethernet Header ----- 
     ETHER: 
     ETHER: Destination = Multicast 01000CDDDDDD 
     ETHER: Source      = Station Cisco11411E1 
     ETHER: 802.3 length = 24 
     ETHER: 
LLC:  ----- LLC Header ----- 
     LLC: 
     LLC:  DSAP Address = AA, DSAP IG Bit = 00 (Individual Address) 
     LLC:  SSAP Address = AA, SSAP CR Bit = 00 (Command) 
     LLC:  Unnumbered frame: UI 
     LLC: 
SNAP: ----- SNAP Header ----- 
     SNAP: 
     SNAP: Vendor ID = Cisco1 
     SNAP: Type = 2001 (CGMP) 
     SNAP: 
CGMP: ----- CGMP ----- 
     CGMP: 
     CGMP: Version   = 16 
     CGMP: Type      = 0 (Join) 
     CGMP: Reserved 
     CGMP: Count     = 1 
     CGMP: 
     CGMP: Group Destination Address and Unicast Source Address 
     CGMP: 
     CGMP:    GDA    =0100.5E0A.0A0A      


!--- show cam static コマンド出力に追加された
!--- GDA MAC。
 
     CGMP:    USA    =0000.0C76.DCCA      


!---  3/1 の PC の MAC。
 
     CGMP:

ルータおよびスイッチの設定を次に示します。

 Malaga (router) Configuration: 
 Malaga#write terminal
 Building configuration... 
 Current configuration: 
 ! 
 version 12.0 
 service timestamps debug uptime 
 service timestamps log uptime 
 no service password-encryption 
 ! 
 hostname Malaga 
 ! 
 ! 
 ip subnet-zero 
 ip multicast-routing 
 ip dvmrp route-limit 20000 
 interface FastEthernet0 
  no ip address 
  no ip directed-broadcast 
 ! 
 interface FastEthernet0.1 
  encapsulation isl 1 
  ip address 1.1.1.1 255.255.255.0 
  no ip redirects 
  no ip directed-broadcast 
 ! 
 interface FastEthernet0.2 
  encapsulation isl 2 
  ip address 2.2.2.1 255.255.255.0 
  no ip redirects 
  no ip directed-broadcast 
  ip pim dense-mode 
  ip cgmp 
 ! 
 interface FastEthernet0.3 
  encapsulation isl 3 
  ip address 3.3.3.1 255.255.255.0 
  no ip redirects 
  no ip directed-broadcast 
  ip pim dense-mode 
  ip cgmp 
 !
 Fish configuration for CGMP: 
 #cgmp 
 set cgmp enable 
 set cgmp leave enable 
 !
 CGMP statistics for VLAN 3: 
 fish (enable) show cgmp sta 3 
 CGMP enabled 
 CGMP statistics for vlan 3: 
 valid rx pkts received           109 
 invalid rx pkts received         0 
 valid cgmp joins received        108 
 valid cgmp leaves received       1 
 valid igmp leaves received       1 
 valid igmp queries received      63 
 igmp gs queries transmitted      1 
 igmp leaves transmitted          1 
 failures to add GDA to EARL      0 
 topology notifications received  0 
 fish (enable)

IGMP スヌーピング

IGMP スヌーピングは、IGMP フレームの直接的なキャプチャを可能にする別の機能です。 Catalyst スイッチ上での IGMP スヌーピングのサポートについては、『マルチキャスト Catalyst スイッチのサポート一覧』を参照してください。

IGMP スヌーピングの概要

IGMP スヌーピングとは、その名称が示すように、ホストとルータの間の IGMP 会話の、スイッチによる「傍受」を可能にする機能です。 任意のマルチキャスト グループ用のホストからの IGMP レポートが、スイッチによって受信されると、そのグループのためにホストのポート番号がスイッチによって GDA リストに追加されます。 IGMP Leave がスイッチによって受信されると、CAM テーブル エントリからホストのポートが削除されます。

IGMP スヌーピングを実行するには、Netflow 機能カードが必要です。 この新しい ASIC レイヤ 3 対応カードでは、グループの全マルチキャスト トラフィックではなく、IGMP フレームだけがスヌーピングされます。 したがって、シスコの IGMP スヌーピング実装によって、すべてのマルチキャスト トラフィックがスイッチ プロセッサに送信されるわけではありません。 送信されるのは、少数の IGMP フレームだけです。

ルータ ポートの学習

IGMP スヌーピングを使用してルータ ポートを検出するために、スイッチでは次のメッセージがリッスンされます。

  • 01-00-5e-00-00-01 に送信される IGMP メンバーシップ クエリー

  • 01-00-5e-00-00-02 に送信される PIMv1 hello

  • 01-00-5e-00-00-0d に送信される PIMv2 hello

  • 01-00-5e-00-04 に送信される DVMRP probe

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

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

IGMP スヌーピングを使用したグループへの参加

2 つの参加シナリオを次に示します。

シナリオ A:ホスト A はセグメント内のグループに参加する 1 番目のホストです。

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

  2. スイッチによって、グループに参加するホストによって送信された IGMP メンバーシップ レポートが代行受信されます。

  3. スイッチによってそのグループにマルチキャスト エントリが作成され、レポートが受信されたポートおよび全ルータ ポートにそのマルチキャスト エントリがリンクされます。

  4. スイッチによって、すべてのルータ ポートに IGMP レポートが転送されます。 これは、ルータでも IGMP レポートが受信され、それに応じてそのマルチキャスト ルーティング テーブルが更新されるようにするためです。

シナリオ B:ホスト B は同じグループに参加する 2 番目のホストです。

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

  2. スイッチによって、グループに参加するホストによって送信された IGMP メンバーシップ レポートが代行受信されます。

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

注:グループ メンバーシップを維持するために、マルチキャスト ルータによって 60 秒ごとに IGMP クエリーが送信されます。 このクエリーはスイッチによって代行受信され、スイッチ上の全ポートに転送されます。 グループの全ホスト メンバは、そのクエリーに応答します。 ただし、スイッチによっても応答レポートが代行受信されることが考慮され、他のホストは他の各レポートを参照しません。したがって、全ホストが(グループあたり 1 つではなく)レポートを送信します。 次に、受信したすべての応答の中から、グループあたり 1 つのレポートだけを転送するために、スイッチによってプロキシ レポーティングも使用されます。

ホスト A がグループを終了すると仮定します。ただし、ホスト B はまだグループを受信すると想定します。

  • スイッチによってホスト A から IGMP Leave メッセージがキャプチャされます。

  • そのポート上(そしてこのポート上だけ)のグループ用のグループ固有 IGMP クエリーが、スイッチによって発行されます。

  • スイッチによってレポートが受信されない場合、エントリからこのポートが廃棄されます。 そのポートからの応答が受信された場合、動作は行われず、Leave は廃棄されます。

  • ホスト B は、そのスイッチ上のグループの対象のままです。 これはエントリ内の最後の非ルータ ポートではありません。 したがって、スイッチによって Leave メッセージは転送されません。

次に、ホスト B がグループを終了すると想定します。また、このホスト B は、このセグメント内のこのグループの対象である最後のユーザであると想定します。

  • スイッチによってホスト A から IGMP Leave メッセージがキャプチャされます。

  • スイッチによって、そのポート上のグループ用のグループ固有 IGMP クエリーが発行されます。

  • スイッチによってレポートが受信されない場合、エントリからこのポートが廃棄されます。

  • これは GDA の最後の非ルータ ポートです。 スイッチによって全ルータ ポートに IGMP Leave メッセージが転送され、そのテーブルからエントリが削除されます。

IGMP/CGMP のインタラクション

一部のネットワークでは、ハードウェアの制約により、すべてのスイッチ上では IGMP スヌーピングを実行できない場合があります。 この場合、同じネットワーク内の一部のスイッチ上で、CGMP を実行する必要がある場合があります。

これは特殊な状況であることに注意してください。 IGMP スヌーピングを実行しているスイッチによって CGMP メッセージが検出され、ネットワーク上の一部のスイッチによって CGMP が実行されていることが検出されます。 したがって、スイッチは特殊な IGMP-CGMP モードに移行し、プロキシ レポーティングは無効にされます。 CGMP Join を作成するために、ルータによって IGMP レポートの送信元 MAC アドレスが使用されるので、CGMP の正常な動作にはこの操作が必須です。 CGMP が稼動しているルータでは、すべての IGMP レポートを参照する必要があります。したがって、プロキシ レポーティングを無効にする必要があります。 ルータに送信するレポートは、IGMP スヌーピングに対して厳密に必要なレポートだけにする必要があります。

マルチキャスト ソース専用ネットワーク

セグメントに 1 つのマルチキャスト サーバ(マルチキャスト ソース)だけが含まれ、クライアントは含まれていない場合、そのセグメント内に IGMP パケットが存在せず、多くのマルチキャスト トラフィックが存在する状況が発生する場合があります。 この場合、そのグループからセグメント内の全員に、スイッチによって単純にトラフィックが転送されます。 幸い、IGMP スヌーピングが稼動しているスイッチには、これらのマルチキャスト ストリームを検出する機能が用意されており、ルータ ポートだけでそのグループのマルチキャスト エントリが追加されます。 これらのエントリには、内部で mcast_source_only としてフラグが付けられ、5 分ごとに、またはルータ ポートが削除されるとエージング アウトされます。 このエージングの後でも、トラフィックが継続していれば、数秒後にアドレスが再学習されることに注意してください。

制限事項

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

Cisco スイッチ上の IGMP スヌーピングの設定

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

  • set igmp <enable/disable>

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

  • set multicast router <mod/port>

  • clear multicast router <mod |port | all>

IGMP 統計情報を監視し、チェックするには、次のコマンドを実行します。

  • show igmp statistics <VLAN_id>

  • show multicast router

IGMP スヌーピングの実用例

この例のためのセットアップは、この文書内ですでに使用した CGMP テストと類似しています。 唯一の相違点は、ポート 3/2 および 3/3 が両方とも同じ VLAN に接続されており、グループ 224.10.10.10 に参加するためにどちらもクライアント設定になっている点です。

次の例では、いくつかの操作を説明し、スイッチの動作を検討して、その結果の出力を調べます。 次の例では、fish は、IGMP スヌーピングを実行している Catalyst 5500 であり、malaga はポート 3/1 に接続されているマルチキャスト ルータです。

  1. スイッチ上で IGMP スヌーピングを有効にし、debug コマンド発行による結果を参照します。 各エントリ セットが show cam sys コマンド出力に追加されて、PIM、MOSPF などを介したルータ ポートの検出が可能になったことに注意してください。

      fish (enable)  set igmp en 
      MCAST-IGMP: Set Sys Entries 
      MCAST-SYS-ENTRIES: Add system Entries in vlan 1 
      MCAST-IGMP: Set Sys Entries 
      MCAST-SYS-ENTRIES: Add system Entries in vlan 2 
      MCAST-IGMP: Set Sys Entries 
      MCAST-SYS-ENTRIES: Add system Entries in vlan 3 
      IGMP feature for IP multicast enabled 
      fish (enable) show cam sys 
      * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
      X = Port Security Entry 
      VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
      ----  ------------------    -----  ------------------------------------------- 
      1     00-10-2f-00-14-00  #          7/1 
      1     00-e0-fe-4b-f3-ff  #          1/9 
      1     01-00-0c-cc-cc-cc  #          1/9 
      1     01-00-0c-cc-cc-cd  #          1/9 
      1     01-00-0c-dd-dd-dd  #          1/9 
      1     01-00-0c-ee-ee-ee  #          1/9 
      1     01-00-5e-00-00-01  #          1/9 
      1     01-00-5e-00-00-04  #          1/9 
      1     01-00-5e-00-00-05  #          1/9 
      1     01-00-5e-00-00-06  #          1/9 
      1     01-00-5e-00-00-0d  #          1/9 
      1     01-80-c2-00-00-00  #          1/9 
      1     01-80-c2-00-00-01  #          1/9 
      2     00-10-2f-00-14-00  #          7/1 
      2     01-00-0c-cc-cc-cc  #          1/9 
      2     01-00-0c-cc-cc-cd  #          1/9 
      2     01-00-0c-dd-dd-dd  #          1/9 
      2     01-00-5e-00-00-01  #          1/9 
      2     01-00-5e-00-00-04  #          1/9 
      2     01-00-5e-00-00-05  #          1/9 
      2     01-00-5e-00-00-06  #          1/9 
      2     01-00-5e-00-00-0d  #          1/9
    
  2. スイッチによってルータ malaga から PIMv2 パケットが受信され、ルータ ポートが追加されます。

    MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 2 
    MCAST-ROUTER: Adding port 3/1, vlanNo 2 
    MCAST-ROUTER: Creating RouterPortTimer for  port 3/1, vlanNo 2 
    MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 3 
    MCAST-ROUTER: Adding port 3/1, vlanNo 3 
    MCAST-ROUTER: Creating RouterPortTimer for  port 3/1, vlanNo 3 
    fish (enable) show multi router 
    CGMP disabled 
    IGMP enabled 
    Port       Vlan 
    ---------  ---------------- 
     3/1       2-3 
    Total Number of Entries = 1 
    '*' - Configured 
    fish (enable)
    
  3. グループ 224.10.10.10(ポート 3/2 上)で新しいホストを接続します。 ホストは IGMP メンバーシップ レポートを送信します。 スイッチによってレポートの受信とスヌーピングがされます。また、エントリが追加され、IGMP レポートがルータに転送されます。

    fish 上

    MCAST-IGMPQ:recvd an IGMP V2 Report on the port 3/2 vlanNo 3 GDA 224.10.10.10 
    MCAST-RELAY:Relaying packet on port 3/1 vlanNo 3 
    MCAST-SEND: Inband Transmit Succeeded for IGMP RELAY msg on port 3/1 vlanNo 3 
    fish (enable) show cam static 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------    -----  ------------------------------------------- 
    3     01-00-5e-0a-0a-0a             3/1-2
    
  4. 次に示すように、ポート 3/3 の VLAN 3 にユーザをもう 1 つ追加します。

    fish (enable) show cam static
      * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry.
      X = Port Security Entry 
      VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
      ----  ------------------    -----  ------------------------------------------- 
      3     01-00-5e-0a-0a-0a             3/1-3
    
  5. ポート 3/2 を削除します。 ポート 3/2 によって IGMP Leave メッセージが送信されます。スイッチによって IGMP グループ固有クエリーがポート 3/2 に戻され、タイマーが起動されます。 応答が受信されないままタイマーの期限が切れると、ポートがグループから削除されます。

    MCAST-IGMPQ:recvd an IGMP Leave on the port 3/2 vlanNo 3 GDA 224.10.10.10 
    MCAST-IGMPQ-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 
    MCAST-DEL-TIMER: Deletion Timer Value set to Random Value  1 
    MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 
    MCAST-SEND:  Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3 
    MCAST-TIMER:IGMPLeaveTimer expired on port 3/2 vlanNo 3 GDA 01-00-5e-0a-0a-0a 
    MCAST-TIMER:IGMPLeaveTimer:delete leave timer 
    fish (enable) show cam static 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------    -----  ------------------------------------------- 
    3     01-00-5e-0a-0a-0a             3/1,3/3
    
  6. ポート 3/3 のホストがグループを終了し、IGMP Leave メッセージを送信します。 前回と異なる唯一の点は、IGMP Leave メッセージが最終的にルータ ポートに転送される点です。

    MCAST-IGMPQ:recvd an IGMP Leave on the port 3/3 vlanNo 3 GDA 224.10.10.10 
    MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/3 vlanNo 3 
    MCAST-SEND:  Transmit Succeeded for IGMP Group Specific Query msg on port 3/3 vlanNo 3 
    MCAST-TIMER:IGMPLeaveTimer expired on port 3/3 vlanNo 3 GDA 01-00-5e-0a-0a-0a 
    MCAST-TIMER:IGMPLeaveTimer expiry: Transmit IGMP Leave on port 3/1 vlanNo 3 
    MCAST-SEND:Transmitting IGMP Leave msg on port 3/1 vlanNo 3 
    MCAST-SEND: Inband Transmit Succeeded for IGMP Leave Message on port 3/1 vlanNo 3 
    MCAST-TIMER:IGMPLeaveTimer:delete leave timer
    

これでサブネット設定が最初の状態に戻りました。ステップ 1 の状態です。 マルチキャスト エントリは、show cam static コマンド出力から消えています。

最後に、次に示すように show igmp static コマンド出力の例を表示します。

fish (enable) show igmp stat 2 
IGMP enabled 
IGMP statistics for vlan 2: 
Total valid pkts rcvd:           329 
Total invalid pkts recvd         0 
General Queries recvd            82 
Group Specific Queries recvd     0 
MAC-Based General Queries recvd  0 
Leaves recvd                     0 
Reports recvd                    82 
Queries  Xmitted                 0 
GS Queries Xmitted               0 
Reports Xmitted                  0 
Leaves Xmitted                   0 
Failures to add GDA to EARL      0 
Topology Notifications rcvd      0 
fish (enable) show igmp stat 3 
IGMP enabled 
IGMP statistics for vlan 3: 
Total valid pkts rcvd:           360 
Total invalid pkts recvd         0 
General Queries recvd            93 
Group Specific Queries recvd     6 
MAC-Based General Queries recvd  0 
Leaves recvd                     11 
Reports recvd                    64 
Queries  Xmitted                 0 
GS Queries Xmitted               14 
Reports Xmitted                  0 
Leaves Xmitted                   10 
Failures to add GDA to EARL      0 
Topology Notifications rcvd      1 
fish (enable) 

関連情報