内容

概要

前提条件

要件

使用するコンポーネント

表記法

背景説明

問題

マルチキャストの主な概念の復習

IGMP

IGMP スヌーピング

mrouter ポート

L2 でのマルチキャスト

問題とそのソリューションについて

解決方法

解決策1：レイヤ3ルータ/VLANインターフェイスでPIMを有効にする

解決策2：レイヤ2 CatalystスイッチでIGMPクエリア機能を有効にする

解決策3：スイッチでのスタティックMrouterポートの設定

解決策4：すべてのスイッチでスタティックマルチキャストMACエントリを設定する

解決策5：すべてのスイッチでIGMPスヌーピングを無効にする

関連情報

概要

このドキュメントでは、マルチキャストアプリケーションがCatalystスイッチ間の同じVLANに展開されている場合に、その障害を修正する方法について説明します。

前提条件

要件

このドキュメントに特有の要件はありません。

使用するコンポーネント

このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。

- Cisco IOS®ソフトウェアリリース12.2(18)SXD5が稼働するスーパーバイザエンジン720を搭載したCatalyst 6500

- Cisco IOSソフトウェアリリース12.2(25)SEB2イメージが稼働するCatalyst 3750

- Cisco IOSソフトウェアリリースが稼働し、Internet Group Management Protocol（IGMP；インターネットグループ管理プロトコル）スヌーピングもサポートしているCatalystスイッチ

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

表記法

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

背景説明

また、クラスタやハイアベイラビリティの動作にマルチキャストパケットを使用する一部のサーバやアプリケーションは、スイッチを適切に設定しないと動作しない場合があります。これについても、この記事で説明します。

注：これらのスイッチを特定するには、『マルチキャストCatalystスイッチのサポート一覧』ドキュメントの「IGMPスヌーピング機能のCatalystスイッチのサポート一覧」セクションを参照してください。

問題

マルチキャストトラフィックは、同じVLAN内であってもCatalystスイッチを通過しません。図1にこのシナリオを示します。

図1：マルチキャストの送信元と受信側を使用したネットワーク設定

ネットワーク図

マルチキャスト ソースは Switch 1 に接続されています。このスイッチは、Cisco IOS ソフトウェアを実行するスーパーバイザ エンジン 720 を搭載した Catalyst 6500 です。Receiver 1 は Switch 1 に接続され、Receiver 2 は Switch 2 に接続されています。Switch 2 は Catalyst 3750 です。スイッチ1とスイッチ2の間には、アクセスまたはトランクのいずれかのレイヤ2リンクがあります。

このセットアップでは、ソースと同じスイッチに接続されている Receiver 1 は、マルチキャスト ストリームを問題なく受け取ります。ただし、Receiver 2はマルチキャストトラフィックを取得しません。このドキュメントでは、この問題を解決します。

マルチキャストの主な概念の復習

ソリューションとさまざまなオプションを検討する前に、レイヤ2マルチキャストの重要な概念を明確にする必要があります。このセクションでは、これらの概念について定義します。

注：このセクションでは、この特定の問題だけに焦点を当てた非常に簡単で直接的な説明を示します。これらの用語の詳細な説明については、このドキュメントの最後にある「関連情報」のセクションを参照してください。

IGMP

IGMP は、エンド ホスト（レシーバ）がそのエンド ホストのマルチキャスト ルータ（IGMP クエリア）に、特定のマルチキャスト トラフィックを受信するということを通知できるようにするプロトコルです。したがって、これはルータとエンド ホストの間で実行されるプロトコルであり、次のことが可能です。

- ルータは、エンド ホストに、特定のマルチキャスト ストリームが必要かどうかを問い合せることができます（IGMP クエリー）。

- エンド ホストは、ルータに、特定のマルチキャスト ストリームを要求するかどうかを通知または応答できます（IGMP レポート）。

IGMP スヌーピング

IGMP スヌーピングは、レシーバが取り付けられているポートだけにマルチキャスト トラフィックを制限するためのメカニズムです。このメカニズムにより、レイヤ2スイッチがマルチキャストパケットを必要とするポートだけに選択的に送信できるようになるため、効率が向上します。IGMP スヌーピングを使用しないと、スイッチはすべてのポートにパケットをフラッディングします。スイッチは、ルータとエンド ホストによる IGMP メッセージの交換を「リッスン」します。このようにして、スイッチは IGMP スヌーピング テーブルを作成します。このテーブルには、特定のマルチキャスト グループを要求したすべてのポートのリストが含まれます。

mrouter ポート

mrouter ポートは、スイッチから見ると単にマルチキャスト ルータに接続しているポートのことです。IGMP スヌーピングの動作がスイッチ間で機能するためには、少なくとも 1 つの mrouter ポートが存在することが必要不可欠です。詳細については、このドキュメントの「問題とその解決策について」セクションを参照してください。

L2 でのマルチキャスト

宛先 IP が 224.0.0.0 から 239.255.255.255 の範囲の IP バージョン 4（IPv4）トラフィックはすべて、マルチキャスト ストリームです。すべてのIPv4マルチキャストパケットは、01.00.5e. xx .xx . xx という形式の定義済みIEEE MACアドレスにマッピングされます。

注:IGMPスヌーピングが機能するのは、マルチキャストMACアドレスがこのIEEE準拠のMAC範囲にマッピングされている場合だけです。予約されたマルチキャスト範囲の中には、設計上スヌーピングされるものから除外されるものがあります。これに準拠しないマルチキャスト パケットがスイッチド ネットワーク上に送信されると、パケットはその VLAN 全体にフラッディングされます。つまりブロードキャスト トラフィックと同じように扱われることになります。

問題とそのソリューションについて

Catalyst スイッチの IGMP スヌーピングは、デフォルトで有効になっています。IGMP スヌーピングでは、スイッチはすべてのポートで IGMP メッセージをスヌープ（リッスン）します。スイッチは、基本的にマルチキャスト グループをそのグループを要求したすべてのスイッチ ポートにマッピングする、IGMP スヌーピング テーブルを作成します。

事前に何も設定されていない状態で、Receiver 1 と Receiver 2 が、239.239.239.239 に対するマルチキャスト ストリームを受信する意向を通知したものとします。239.239.239.239 は、01.00.5e.6f.ef.ef の L2 マルチキャスト MAC アドレスにマッピングされています。Switch 1 と Switch 2 はどちらも、レシーバが生成した IGMP レポートに応答して、これらのレシーバに対するエントリを自分のスヌーピング テーブルに作成します。Switch 1 はポート Gigabit Ethernet 2/48 をテーブルに入力し、Switch 2 はポート Fast Ethernet 1/0/47 をテーブルに入力します。

注：この時点では、マルチキャスト送信元はまだトラフィックを開始しておらず、どのスイッチもスイッチのmrouterポートを認識していません。

Switch 1 上のソースがマルチキャスト トラフィックのストリームを開始するときには、Switch 1 は Receiver 1 からの IGMP レポートを「見て」います。その結果、Switch 1 はポート Gigabit Ethernet 2/48 にマルチキャストを配信します。しかし、IGMP スヌーピング プロセスの一部として、Switch 2 は Receiver 2 からの IGMP レポート「だけを見て」いるので、Switch 1 ではポート Gigabit Ethernet 2/46 の IGMP レポート（マルチキャスト要求）は見えません。その結果、Switch 1 が Switch 2 にマルチキャスト トラフィックを送信することはありません。したがって、Receiver 2 は、同じ VLAN 内に存在しながらもマルチキャスト ソースとは異なるスイッチに接続されているため、マルチキャスト トラフィックを受け取りません。

この問題の原因は、IGMP スヌーピングは、mrouter のない Catalyst プラットフォームでは実際にはサポートされないということです。メカニズムは mrouter ポートがないと正常に機能しません。この問題を解決するには、スイッチに何らかの方法で mrouter ポートを学習または認識させる必要があります。この手順の詳細な説明については、このドキュメントの「ソリューション」セクションを参照してください。スイッチにmrouterポートが存在することによって問題がどのように解決されるかについては、引き続き調査する必要があります。

基本的に、スイッチが mrouter ポートについて学習する、または mrouter ポートを静的に認識していると、2 つの重要な事が起こります。

- スイッチは、IGMP レポートをレシーバから mrouter ポートに「リレー」します。つまり、IGMP レポートはマルチキャスト ルータの方向に進みます。スイッチはすべての IGMP レポートをリレーするわけではありません。代わりに、スイッチは一部のレポートだけを mrouter に送信します。この説明では、レポートの数は重要ではありません。マルチキャスト ルータが知る必要があるのは、まだマルチキャストを要求しているレシーバがダウンストリームに 1 つでも存在するかどうかということです。これを判断するため、マルチキャスト ルータは、IGMP クエリーに応答する IGMP レポートを定期的に受信します。

- レシーバがまた「参加」していないソースだけのマルチキャスト シナリオでは、スイッチは mrouter ポートにだけマルチキャスト ストリームを送信します。

スイッチが mrouter ポートを認識していると、Switch 2 は Receiver 2 から受信した IGMP レポートを mrouter ポートにリレーします。このポートは Fast Ethernet 1/0/33 です。Switch 1 は、この IGMP レポートをスイッチ ポート Gigabit Ethernet 2/46 で受け取ります。Switch 1 から見ると、スイッチは単にもう 1 つの IGMP レポートを受け取ったことになります。スイッチは、そのポートを自分の IGMP スヌーピング テーブルに追加し、そのポートに対してもマルチキャスト トラフィックの送信を開始します。この時点で、両方のレシーバが要求したマルチキャスト トラフィックを受信し、アプリケーションは意図したとおりに動作するようになります。

IGMPスヌーピングが単純な環境で期待どおりに動作するようにスイッチがmrouterポートを識別する方法については、「ソリューション」の項を参照してください。

解決方法

この問題を解決するには、次のソリューションを使用します。

解決策1：レイヤ3ルータ/VLANインターフェイスでPIMを有効にする

すべての Catalyst プラットフォームは、mrouter ポートを動的に学習する機能を備えています。スイッチは、マルチキャスト ルータが定期的に送信する Protocol Independent Multicast（PIM）の hello または IGMP クエリー メッセージを、受動的にリッスンします。

この例では、Catalyst 6500のVLAN 1スイッチ仮想インターフェイス(SVI)を次のように設定します。  ip pim sparse-dense-mode .

Switch1#show run interface vlan 1

!

interface Vlan1

ip address 10.1.1.1 255.255.255.0

ip pim sparse-dense-mode

end

Switch 1 now reflects itself (Actually the internal router port) as an Mrouter port.

Switch1#show ip igmp snooping mrouter

vlan            ports

-----+----------------------------------------

1  Router

Switch 2 receives the same PIM hellos on its Fa 1/0/33 interface. So it assigns that

port as its Mrouter port.

Switch2#show ip igmp snooping mrouter

Vlan    ports

----    -----

1    Fa1/0/33(dynamic)

解決策2：レイヤ2 CatalystスイッチでIGMPクエリア機能を有効にする

IGMPクエリアは、レイヤ2スイッチの比較的新しい機能です。マルチキャスト ルータとして動作し、スイッチの mrouter ディスカバリを提供できるルータがネットワークや VLAN にない場合は、IGMP クエリア機能を有効にできます。この機能を使用すると、レイヤ2スイッチはマルチキャストルータのプロキシとして機能し、そのネットワークで定期的にIGMPクエリーを送信できます。この動作によって、スイッチは自身を mrouter ポートと認識します。ネットワーク内の残りのスイッチは、それぞれのmrouterポートを、このIGMPクエリを受信したインターフェイスとして定義するだけです。

Switch2(config)#ip igmp snooping querier

Switch2#show ip igmp snooping querier

Vlan      IP Address     IGMP Version   Port

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

1         10.1.1.2        v2             Switch

スイッチ1は、ポートGig 2/46がスイッチ2にmrouterポートとしてリンクしていることを認識します。

Switch1#show ip igmp snooping mrouter

vlan            ports

-----+----------------------------------------

1  Gi2/46

スイッチ1の送信元がマルチキャストトラフィックのストリームを開始すると、スイッチ1はIGMPスヌーピングを介して検出されたレシーバ1（つまり、出力ポートGig 2/48）とmrouterポート（つまり、出力ポートGig 2/46）にマルチキャストトラフィックを転送します。

解決策3：スイッチでのスタティックMrouterポートの設定

スイッチにmrouterポートがないため、同じレイヤ2 VLAN内でマルチキャストトラフィックが失敗します。このトピックについては、「問題とその解決策について」の項を参照してください。すべてのスイッチに mrouter ポートを固定的に設定すると、IGMP レポートはその VLAN 内のすべてのスイッチにリレーされます。その結果、マルチキャストが可能になります。したがって、この例では、Catalyst 3750 スイッチの Fast Ethernet 1/0/33 を mrouter ポートとして固定的に設定する必要があります。

この例では、固定的な mrouter ポートが必要なのは Switch 2 だけです。

Switch2(config)#ip igmp snooping vlan 1 mrouter interface fastethernet 1/0/33

Switch2#show ip igmp snooping mrouter

Vlan    ports

----    -----

1    Fa1/0/33(static)

解決策4：すべてのスイッチでスタティックマルチキャストMACエントリを設定する

すべてのレシーバのポートとダウンストリームのスイッチポートのすべてのスイッチで、マルチキャストMACアドレスのスタティックCAM(Content-Addressable Memory)エントリを作成できます。すべてのスイッチは、静的 CAM エントリのルールに従い、CAM テーブルで指定されているすべてのインターフェイスにパケットを送信します。多くのマルチキャスト アプリケーションが存在する環境では、これは最もスケーラビリティの低いソリューションです。

Switch1(config)#mac-address-table static 0100.5e6f.efef vlan 1 interface

gigabitethernet 2/46 gigabitethernet 2/48

!--- Note: This command should be on one line.

Switch1#show mac-address-table multicast vlan 1

vlan   mac address     type   learn qos             ports

-----+---------------+--------+-----+---+--------------------------------

1  0100.5e6f.efef    static  Yes          -   Gi2/46,Gi2/48

Switch2(config)#mac-address-table static 0100.5e6f.efef vlan 1 interface

fastethernet 1/0/47

!--- Note: This command should be on one line.

Switch2#show mac-address-table multicast vlan 1

Vlan    Mac Address       Type       Ports

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

1    0100.5e6f.efef    USER        Fa1/0/47

解決策5：すべてのスイッチでIGMPスヌーピングを無効にする

IGMP スヌーピングを無効にすると、すべてのスイッチはマルチキャスト トラフィックをブロードキャスト トラフィックとして扱います。その結果、そのマルチキャスト ストリームの受信対象のポートかどうかに関係なく、トラフィックはその VLAN 内のすべてのポートにフラッディングされます。

Switch1(config)#no ip igmp snooping

Switch2(config)#no ip igmp snooping

関連情報

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

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

- IPマルチキャストサポート

- IPマルチキャストに関する問題のトラブルシューティングに関するテクニカルノート

- IPマルチキャストトラブルシューティングガイド

- シスコテクニカルサポートおよびダウンロード