はじめに
このドキュメントでは、マルチキャストアプリケーションがCatalystスイッチ間の同じVLANに展開されている場合の障害を修正する方法について説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
また、クラスタやハイアベイラビリティの動作にマルチキャストパケットを使用する一部のサーバやアプリケーションは、スイッチを適切に設定しないと動作しない場合があります。これについても、この記事で説明します。
注:これらのスイッチを識別するには、『マルチキャスト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 スヌーピングは、レシーバが取り付けられているポートだけにマルチキャスト トラフィックを制限するためのメカニズムです。このメカニズムにより、レイヤ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という形式の定義済み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-mode
を参照。
Switch1#show run interface vlan 1
!
interface Vlan1
ip address 10.1.1.1 255.255.255.0
ip pim sparse-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クエリア機能を有効にする
マルチキャスト ルータとして動作し、スイッチの 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スヌーピング(つまり、出力ポートGig 2/48)を介して検出されたレシーバ1(つまり、出力ポートGig 2/46)と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アドレスに対するスタティックContent-Addressable Memory(CAM;連想メモリ)エントリを、すべてのレシーバポートおよびダウンストリームスイッチポートに対して作成できます。すべてのスイッチは、静的 CAM エントリのルールに従い、CAM テーブルで指定されているすべてのインターフェイスにパケットを送信します。多くのマルチキャスト アプリケーションが存在する環境では、これは最もスケーラビリティの低いソリューションです。
Switch1(config)#mac-address-table static 0100.5e6f.efef vlan 1 interface gigabitethernet 2/46 gigabitethernet 2/48
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
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
関連情報