目錄

簡介

必要條件

需求

採用元件

慣例

背景資訊

問題

重新參閱主要多點傳送概念

IGMP

IGMP窺探

Mrouter埠

第2層多點傳送

瞭解問題及其解決方案

解決方案

解決方案1：在第3層路由器/VLAN介面上啟用PIM

解決方案2：在第2層Catalyst交換機上啟用IGMP查詢器功能

解決方案3：配置交換機上的靜態路由器埠

解決方案4：在所有交換機上配置靜態組播MAC條目

解決方案5：在所有交換機上禁用IGMP監聽

相關資訊

簡介

本文說明如何修復在Catalyst交換器之間部署於同一VLAN中的多點傳送應用程式失敗。

必要條件

需求

本文件沒有特定需求。

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- 搭載Supervisor Engine 720的Catalyst 6500(執行Cisco IOS®軟體版本12.2(18)SXD5)

- 執行Cisco IOS軟體版本12.2(25)SEB2映像的Catalyst 3750

- 執行Cisco IOS軟體版本並支援網際網路群組管理通訊協定(IGMP)窺探的任何Catalyst交換器

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

背景資訊

此外，如果您沒有正確配置交換機，一些使用組播資料包進行集群/高可用性操作的伺服器/應用程式可能無法工作。本文也對此進行了介紹。

註：請參閱組播Catalyst交換機支援清單文檔的IGMP監聽功能Catalyst交換機支援清單部分，以幫助識別這些交換機。

問題

多點傳播流量不會通過Catalyst交換器，即使在同一個VLAN中也是如此。圖1描述了這種情況。

圖1 — 使用組播源和接收器的網路設定

網路圖表

多點傳送來源已連線到交換器1，該交換器是執行Cisco IOS軟體且搭載Supervisor Engine 720的Catalyst 6500交換器。接收器1連線到交換機1，接收器2連線到交換機2。交換器2是Catalyst 3750。Switch 1和Switch 2之間有一條第2層鏈路，即接入鏈路或中繼鏈路。

在此設定中，您發現與源位於同一交換機上的Receiver 1可以順利獲得組播流。但是，接收器2未獲得任何多點傳播流量。本文旨在解決此問題。

重新參閱主要多點傳送概念

在探索解決方案和您擁有的不同選項之前，您必須清楚瞭解第2層組播的某些關鍵概念。本節定義了以下概念。

注意：本節僅針對此特定問題提供非常簡單和直接的解釋。請參閱本文檔末尾的相關資訊部分，瞭解這些術語的詳細說明。

IGMP

IGMP是一種協定，允許終端主機（接收器）向組播路由器（IGMP查詢器）通知終端主機接收特定組播流量的意圖。因此這是一個在路由器和終端主機之間運行的協定，它允許：

- 詢問終端主機是否需要特定組播流的路由器（IGMP查詢）

- 終端主機在尋找特定組播流時告知路由器或響應路由器（IGMP報告）

IGMP窺探

IGMP偵聽是一種機制，用於僅將組播流量限制到連線了接收器的埠。此機制可增加效率，因為它可讓第2層交換器選擇性地僅傳送需要組播封包的連線埠上的組播封包。如果沒有IGMP監聽，交換機就會在每個埠上泛洪資料包。交換機「偵聽」路由器和終端主機交換IGMP消息。透過這種方式，交換器會建立一個IGMP窺探表，其中包含已要求特定多點傳送群組的所有連線埠的清單。

Mrouter埠

mrouter連線埠只不過是連線到多點傳送路由器的交換器視點的連線埠。至少有一個路由器埠對於IGMP監聽操作在交換機間工作絕對必不可少。有關詳細資訊，請參閱本文檔的瞭解問題及其解決方案部分。

第2層多點傳送

目的IP範圍從224.0.0.0到239.255.255.255的任何IP第4版(IPv4)流量都是多點傳播流。所有IPv4組播資料包都對映到格式為01.00.5e. xx . xx.xx的預定義IEEE MAC地址。

注意：僅當多播MAC地址對映到此符合IEEE的MAC範圍時，IGMP監聽才起作用。某些保留的組播範圍被排除在那些被設計監聽的範圍之外。如果來自交換網路的組播資料包不符合要求，則該資料包將泛洪到該VLAN中，這意味著該資料包將被視為廣播流量。

瞭解問題及其解決方案

預設情況下，Catalyst交換器啟用IGMP窺探。透過IGMP窺探，交換器會窺探（或偵聽）所有連線埠上的IGMP訊息。交換器會建立IGMP窺探表，基本上將多點傳播組對映到請求該組的所有交換器連線埠。

假設在沒有任何事先配置的情況下，Receiver 1和Receiver 2已發出訊號，表示打算接收對映到01.00.5e.6f.ef.ef的L2組播MAC地址的239.239.239.239的組播流。交換器1和交換器2都會響應接收者產生的IGMP報告，在其監聽表中為這些接收者建立一個條目。交換器1在其表中輸入連線埠Gigabit乙太網路2/48，而交換器2在其表中輸入連線埠FastEthernet 1/0/47。

注意：此時，組播源尚未啟動其流量，並且沒有交換機知道交換機的mrouter埠。

當交換機1上的源開始流式傳輸組播流量時，交換機1已「看到」來自接收器1的IGMP報告。因此，交換機1將組播從埠Gigabit Ethernet 2/48傳出。但是，由於交換機2在IGMP監聽過程中「吸收」了來自接收器2的IGMP報告，因此交換機1在埠Gigabit乙太網2/46上看不到IGMP報告（組播請求）。因此，交換器1不會將任何多點傳播流量傳送到交換器2。因此，即使接收器2位於同一個VLAN中，但僅位於與組播源不同的交換機上，接收器2也從未獲得任何組播流量。

此問題的原因是沒有路由器的Catalyst平台實際上不支援IGMP窺探。沒有mrouter連線埠時，機制會「中斷」。如果要修正此解決方案，您必須讓交換機以某種方式瞭解或知道路由器埠。如需該過程的更多說明，請參閱本文檔的解決方案部分。您仍需要瞭解交換機上存在mrouter埠如何解決此問題。

基本上，當交換機獲知或靜態獲知mrouter埠時，會發生兩個關鍵事件：

- 交換機將IGMP報告從接收器「中繼」到mrouter埠，這意味著IGMP報告流向組播路由器。交換機不會中繼所有IGMP報告。相反，交換器只會將幾個報告傳送給路由器。為便於討論，報告數量並不重要。組播路由器只需要知道是否至少有一個接收器仍然對組播下游感興趣。為了做出判斷，多播路由器接收週期性的IGMP報告以響應其IGMP查詢。

- 在只使用源的多播場景中，沒有接收器「加入」，交換機只將組播流從其mrouter埠發出。

當交換機知道其mrouter埠時，交換機2將交換機從接收器2收到的IGMP報告中繼到其mrouter埠。此埠為Fast Ethernet 1/0/33。交換機1在交換機埠Gigabit Ethernet 2/46上獲取此IGMP報告。從交換機1的角度來看，交換機只收到另一個IGMP報告。交換器將該連線埠新增至其IGMP窺探表中，並開始在該連線埠上傳送多點傳播流量。此時，兩個接收器都接收所請求的組播流量，並且應用按預期工作。

要瞭解交換機如何標識其路由器埠，以使IGMP監聽按預期能在簡單環境中工作的方式工作，請參閱解決方案一節以獲得答案。

解決方案

使用這些解決方案來解決問題。

解決方案1：在第3層路由器/VLAN介面上啟用PIM

所有Catalyst平台都能夠動態獲知mrouter埠。交換機被動地偵聽協定無關組播(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層交換機上相對較新的功能。當網路/VLAN沒有路由器可以承擔組播路由器角色並在交換機上提供路由器發現時，可以啟用IGMP查詢器功能。此功能允許第2層交換機代理組播路由器，並定期在該網路中傳送IGMP查詢。此操作會導致交換機將自己視為路由器埠。網路中的其餘交換機只是將各自的路由器埠定義為接收此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將到交換機2的埠Gig 2/46鏈路視為路由器埠。

Switch1#show ip igmp snooping mrouter

vlan            ports

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

1  Gi2/46

當交換器1上的來源開始將多點傳播流量串流時，交換器1會將多點傳播流量轉送到透過IGMP窺探找到的接收器1（也就是輸出連線埠Gig 2/48）和路由器連線埠（也就是輸出連線埠Gig 2/46）。

解決方案3：配置交換機上的靜態路由器埠

由於交換機上缺少路由器埠，同一第2層VLAN中的組播流量會失敗，瞭解問題及其解決方案一節將介紹此主題。如果在所有交換機上靜態配置mrouter埠，則可以在該VLAN中將IGMP報告中繼到所有交換機。因此，組播是可能的。因此，在範例中，必須靜態設定Catalyst 3750交換器以將FastEthernet 1/0/33作為路由器連線埠。

在本範例中，您只需要交換器2上的靜態mrouter連線埠：

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)條目。任何交換機都遵守靜態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組播故障排除指南

- 思科技術支援與下載