交换机 : Cisco Catalyst 6500 系列交换机

园区网络中的多播:CGMP 和 IGMP 监听

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 10 月 7 日) | 反馈


目录


简介

Cisco 组管理协议 (CGMP) 和 Internet 组管理协议 (IGMP) 侦听的目的是限制交换网络中的组播流量。默认情况下,LAN 交换机会使组播流量在广播域中泛洪,并且如果有许多组播服务器正将流发送到网段,则可能会消耗大量带宽。

开始使用前

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

先决条件

本文档没有任何特定的前提条件。

使用的组件

本文档不限于特定的软件和硬件版本。

背景信息

组播流量泛洪是因为,交换机一般通过查看其所接收全部帧的源地址域来学习 MAC 地址。从未将组播 MAC 地址用作数据包的源地址。此类地址未显示在 MAC 地址表中,因而交换机无法学习。

解决此问题的第一种方案是,为每个组和每个客户端配置静态 MAC 地址。此解决方案效果良好,但是,其不可扩展并且不是动态的。通过发出以下命令在 Catalyst 4000、5000 或 6000 交换机上使用此解决方案:

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

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

这两个命令的作用相同,唯一的区别在于重新启动时静态条目会消失,而永久性条目则不会。

第二种解决方案是使用 CGMP,CGMP 是 Cisco 的一种专有协议,该协议在组播路由器和交换机之间运行。CGMP 使 Cisco 组播路由器能够理解主机发送的 IGMP 消息,并将 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 地址。它们也被称为组目标地址 (GDA)。

  2. 每个 GDA 都有相关的 MAC 地址。此 MAC 地址由 01-00-5e 组成,后接转换成十六进制的 GDA 的最后 23 位,如下所示。

    • 239.20.20.20 对应于 MAC 01-00-5e-14-14-14。

    • 239.10.10.10 对应于 MAC 01-00-5e-0a-0a-0a。

    因此,这不是一对一映射,而是一对多映射。从这两个地址,您可以看到 MAC 地址并未使用第一个八位组 (239)。因此,后三个八位组相同但第一个八位组不同的组播地址有重叠的 MAC 地址。

  3. 保留一些组播 IP 地址供特殊使用,如下所示。

    • 224.0.0.1 - 所有支持组播的主机。

    • 224.0.0.2 - 所有支持组播的路由器。

    • 224.0.0.5 和 224.0.0.6 由开放最短路径优先 (OSPF) 使用。

一般而言,224.0.0.1 到 224.0.0.255 的地址是保留地址,可由各种协议(标准或私有协议,如热备用路由器协议 (HSRP))使用。Cisco 建议您不要在组播网络中将这些地址用于 GDA。CGMP 和 IGMP 侦听不使用此保留地址范围。

Internet 组管理协议

IGMP 是针对 IGMPv1 在 RFC1112 中定义、针对 IGMPv2 在 RFC2236 中定义以及针对 IGMPv3 在 RFC3376 中定义的标准。IGMP 指定主机可如何向路由器登记,以便接收特定组播流量。下一节将简要概述 IGMP。

IGMPv1

IGMP 版本 1 (IGMPv1) 消息以 IP 数据报形式传输,并包含以下字段:

  • 版本:1

  • 类型:有两种类型的 IGMP 消息,即成员查询和成员报告。

  • 校验和

  • 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 的流量转发到该网段(尝试三次后)。路由器为每个源保留一个组播路由条目,并将其链接到流出接口(发出 IGMP 报告的接口)列表。进行三次 IGMP 查询尝试但未得到回复后,此接口将从链接到该 GDA 的所有条目的流出接口列表中删除。

注意: IGMPv1 没有离开机制。如果主机不想再接收流量,则只需离开。如果它是子网上的最后一个主机,路由器则不接收对其查询的任何回复,并为该子网删除 GDA。

IGMPv2

在 IGMP 版本 2 (IGMPv2) 中,版本字段已被删除,并且类型字段现在能接受不同的值。类型如下所示。

  • 成员查询

  • IGMPv1 成员报告

  • 版本 2 成员报告

  • 离开组

下面是 IGMPv2 中所添加最重要新功能的说明。

  • IGMP 离开消息:当主机想要离开组时,其应将离开组 IGMP 消息发送到目标 224.0.0.2(而不应像在 IGMPv1 中那样安静地离开)。

  • 路由器现在可以发送组特定查询,方法是将成员查询发送到组 GDA,而不是发送到 0.0.0.0。

IGMPv3

在 IGMP 版本 3 (ICMPv3) 中,存在可以拥有以下值的类型字段:

  • 成员查询

  • 版本 3 成员报告

IGMPv3 的实施还必须支持以下三种消息类型,以实现与 IGMP 以前版本的互操作。

  • 版本 1 成员报告 [RFC1112]

  • 版本 2 成员报告 [RFC2236]

  • 版本 2 离开组 [RFC2236]

IGMPv3增加了源过滤支持,即系统能够要求接收特定源地址发出的数据包,从除了特定源地址发送到特定组播地址的意外的所有地址。此功能也被称为源特定组播 (SSM)。

要使计算机支持 SSM,它必须支持 IGMPv3。但是,只有相对较少的 OS 支持 IGMPv3。Windows XP 支持 IGMPv3,并且有可用于 FreeBSD 和 Linux 的 IGMPv3 支持补丁。

管理员必须区分路由器级别的 IGMPv3 支持与交换机级别的 IGMPv3 侦听。这是两种不同的功能。

Catalyst 交换机 (L2) 上的 IGMPv3 支持

  • 运行混合模式软件(在Supervisor和Cisco IOSï ¿ Â的CatOS的Catalyst 6000在MSFC的½软件)官方支持IGMPv3监听的开始在版本7.5(1)。

  • 在 7.5(1) 之前的版本中,Catalyst 6000 交换机没有对 IGMPv3 的正式支持,但它通常应能处理 IGMPv3 数据包。

  • 运行集成 IOS 软件的 Catalyst 6000 支持路由器级别(L3 接口)12.1(8a)E 及以上版本的 IGMPv3。

  • 在 Supervisor III 和 IV 上,Catalyst 4000 仅支持路由器级别的 IGMPv3。它不支持 IGMPv3 侦听。

Cisco 路由器 (L3) 上的 IGMPv3 支持

运行Cisco IOSï ¿  ½软件版本12.1(5)T和以上版本的所有平台支持IGMPv3。有关详细信息,请参阅 IGMP 版本 3 文档。有关带 IGMPv3、IGMP v3lite 和 URL 对接目录 (URD) 的 SSM 的详细信息,请参阅带 IGMPv3、IGMP v3lite 和 URD 的源特定组播文档

警告

交换机运行 IGMP 侦听时,会拦截 IGMP 数据包,并将根据所拦截数据包的内容填充静态第二层 (L2) 转发表。网络中存在 IGMPv1 或 v2 主机时,交换机将读取 IGMP 加入和离开消息,以确定哪些主机想要接收哪些组播流,或者哪些主机想要停止接收组播流。

IGMPv3 更加复杂,因为它不仅使用组地址(组播地址),而且使用预期发出流量的源地址。除了运行 CatOS 7.5 或以上版本及 Native IOS 版本 12.1(8a)E 或以上版本的 Catalyst 6000 交换机,目前没有任何其他交换机能够有效侦听这些数据包以及根据此信息构建转发表。因此,当交换机上存在 IGMPv3 主机时应关闭 IGMP 侦听。关闭 IGMP 侦听后,交换机将不能为组播流动态构建 L2 转发表。换句话说,交换机将使组播流泛洪。

禁用 IGMP 侦听后的一种解决方案是,人工配置组播动态内容可寻址存储器 (CAM) 条目,以避免组播流量泛洪子网。但是,这是管理负担而不是动态解决方案。当客户端不再需要收到数据流时,CAM条目没有从交换机中去除(除非使用手动操作),因此网络流量仍然发送到主机。

并且,在网络内使用 IGMPv3 时,即使CGMP Fastleave不能工作,使用CGMP的交换机仍然可以正常运行。如果需要 CGMP 快速离开,则最好将其还原到 IGMPv2。

有关未处理平台特定的警告,请参阅各个交换机的版本注释。

IGMPv1 和 IGMPv2 之间的互操作性

使用 IGMPv1 和 IGMPv2,每个 IP 子网仅一个路由器发送查询。此路由器被称为查询路由器。在 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 子网仅一个路由器发送查询。此路由器被称为查询路由器。在 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报告,以便把它添加到组播路由表,开始为该组转发数据流。

在路由器上,您需要执行以下操作:

  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]
    

路由器上的实例

路由器配置为在两个子接口 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 组管理协议

有关 Catalyst 交换机上的 CGMP 支持,请参阅组播 Catalyst 交换机支持表

CGMP 帧和消息类型

Cisco 首先实施 CGMP 以限制 L2 网络中的组播流量。由于交换机实际上不能查看 L3 数据包,因此它无法区分 IGMP 数据包。使用 CGMP,路由器提供主机之间的接口。路由器“谈论”IGMP,而交换机“谈论”CGMP。

CGMP 帧是目标 MAC 地址为 01-00-0c-dd-dd-dd 且子网接入协议 (SNAP) 报头值为 0x2001 的以太网帧。CGMP 帧包含以下字段:

  • 版本:1 或 2。

  • 消息类型:加入或离开。

  • 计数:消息中的组播/单播地址对数量。

  • GDA :组播组的 48 位 MAC 地址。

  • 单播源地址 (USA):要加入 GDA 的设备的 48 位 MAC 单播地址。

注意: 计数字段的值决定最后两个字段显示的次数。

默认情况下,发出 show cam system 命令后,交换机处理器(Catalyst 中称为 NMP)仅监听组播地址。当您在交换机上启用 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 事假 删除所有组。

获知路由器端口

交换机需要知道所有路由器端口,以便将其自动添加到新创建的任何组播条目中。当交换机收到对 GDA 为 00-00-00-00-00-00、USA 为路由器 MAC 的 CGMP 加入消息时(表中的第三种消息类型),交换机将学习路由器端口。这些消息由配置为运行 CGMP 的所有接口上的路由器生成。但是,还存在一种用于配置交换机上路由器端口的静态方法。

加入使用 CGMP 的组

  • 新客户端要求为 GDA 接收流量,因此,客户端将发送 IGMP 会员报告消息。

  • 路由器接收 IGMP 报告、进行处理,并将 CGMP 消息发送到交换机。路由器将目标 MAC 地址复制到 CGMP 加入的 GDA 字段,将源 MAC 地址复制到 CGMP 加入的 USA 字段。然后,将其发送回交换机。

  • 启用了 CGMP 的交换机需要监听 CGMP 01-00-0c-dd-dd-dd 地址。交换机的处理器将查看 USA 的 CAM 表。一旦在 CAM 表中看到 USA,交换机就知道 USA 位于哪个端口,并将执行以下操作之一:

    • 为 GDA 创建新的静态条目,并将 USA 端口与其所有路由器端口链接到一起。

    • 为此 GDA 将 USA 端口添加到端口列表(如果静态条目已经存在)。

离开使用 CGMP 的组

使用 CGMP 学习的静态条目是永久性的,除非 VLAN 中的生成树拓扑发生变化,或者路由器发送上一个表中的其中一条最新 CGMP 离开消息。

当 IGMPv1 是主机时,请勿发送 IGMP 离开消息。如果路由器无法接收对 3 个连续 IGMP 查询的回复,则将仅发送离开消息。也就是说,如果任何用户仍对该组感兴趣,则不会从该组中删除任何端口。

通过引入 IGMPv2 和提交 IGMP 离开,Cisco 将添加到原始 CGMP 规范 (CGMPv2)。此新增内容被称为 CGMP 快速离开。

CGMP 快速离开处理允许交换机检测由任何 Supervisor 引擎模块端口上的主机发送到所有路由器组播地址 (224.0.0.2) 的 IGMPv2 离开消息。当 Supervisor 引擎模块接收离开消息时,会启动查询回应计时器,并在接收离开消息的端口上发送消息,以确定是否仍有主机愿意接收该端口上的此组播组。如果此计时器在接收 CGMP 加入消息之前超时,则可以从原始离开消息中指定的组播组的组播树中删除该端口。如果该端口是组播组中的最后一个端口,则会向所有路由器端口转发 IGMP 离开消息。然后,路由器通过发送组特定查询启动正常删除进程。由于没有接收到回应,路由器会将该组从该接口的组播路由表中删除。同时它也为交换机发送一个CGMP Leave消息,从静态表中清除该组。即使同时使用多个组播组时,快速离开处理也能确保为交换网络上的所有主机提供最佳带宽管理。

启用 CGMP 离开后,将有两个条目添加到 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 对等体的路由器将丢失连通性。因此,在调试 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 和源专用网络

source-only网络是与来源组播和只有没有实时客户端的一分段。因此,该网段可能不会生成 IGMP 报告。但是,CGMP 仍需要限制此源(仅供路由器使用)的泛洪。如果路由器在一个没有 IGMP 报告的接口上检测到组播流量,则将被确定为组播源专用网络。路由器本身将生成 CGMP 加入消息,交换机则仅添加此组(仅带路由器端口)。

配置 Cisco 路由器和交换机以启用 CGMP

以下命令仅对 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 交换机的实际配置示例。

/image/gif/paws/10559/22a.gif

此配置显示主机加入组时涉及的操作。该配置也显示了在Fast-Leave启动时,一个主机离开组的操作。也提供嗅探器踪迹以及交换机和路由器的配置。

加入使用 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)
    
    

    如下所示,所有show CAM system命令输出中的所有VLAN都包含了01-00-0c-dd-dd-dd条目。此外,由于网络正运行 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 加入消息发送到 GDA 为 00-00-00-00-00-00、USA 为 MAC 的路由器。因此,路由器端口将添加到路由器端口列表(参阅下面的第一个示例)。

    在路由器上

    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 向 IGMP 发送包含 GDA 的报告:239.10.10.10(参阅下面的帧 2)。下面显示的是路由器 Router_A 上的 show ip igmp group 命令输出。

    这显示路由器当前向 fa0.3 转发 224.10.10.10 的流量。这是 10.3.3.2 客户端 PC 接收 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 (USA) 的 MAC 地址: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。交换机能够处理数据包。

    交换机在动态 CAM 表中进行查找,以确定客户端 PC 的 MAC 地址位于哪个端口。地址位于端口 3/2,交换机在 CAM 表中为捆绑到端口 3/2 的 01-00-5e-0a-0a-0a 制作静态条目。交换机还将路由器端口 3/1 添加到该 GDA 的静态条目。

    在交换机上

    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 中的此端口。下面是 Catalyst 交换机的静态条目,其中 3/1 是路由器端口,3/2 是客户端端口。

    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. 客户端向 224.0.0.2 发送 IMPG 离开消息。交换机将在其接收离开消息的端口上拦截离开消息并发送 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     


!--- Send to the  CGMP 
!--- macaddress present in show cam sys 
!--- command output.
 
     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 address of the router.

     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      


!---  Destination is the GDA MAC.
 
     ETHER: Source      = Station Cisco176DCCA        


!---  Sourced by the PC connected in 3/1.
 
     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是路由器发送到交换机的CGMP帧,通知交换机为01-00-5e-0a-0a-0a添加静态条目。

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      


!--- GDA MAC added in show cam static
!--- command output.
 
     CGMP:    USA    =0000.0C76.DCCA      


!--- MAC of the PC in 3/1.
 
     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 probes

  • 发送到 01-00-5e-00-05 或 06 的 MOSPF 消息

通过在交换机上启用 IGMP 侦听,上述所有 MAC 条目都被添加到侦听交换机的 show cam system 命令输出中。一检测到路由器端口,就将其添加到该 VLAN 中所有 GDA 的端口列表。

使用 IGMP 监听时加入组

以下是两种加入情形:

场景 A:主机 A 是该网段中加入组的第一台主机。

  1. 主机 A 发送未经请求的 IGMP 成员报告。

  2. 交换机将拦截想要加入组的主机所发送的 IGMP 会员报告。

  3. 交换机为该组创建组播条目,并把它连接到收到报告的端口和所有路由器端口。

  4. 交换机向所有路由器端口转发 IGMP 报告。因此,路由器也会收到 IGMP 报告,并将相应地更新其组播路由表。

情形B :主机 B 当前是加入同一个组的第二台主机。

  1. 主机 B 发送未经请求的 IGMP 成员报告。

  2. 交换机将拦截想要加入组的主机所发送的 IGMP 会员报告。

  3. 交换机不必向所有路由器端口转发 IGMP 报告。实际上,交换机将使用代理报告向路由器端口转发 IGMP 报告,并仅向每个组转发一个报告(10 秒内)。

注意: 为了维护组成员,组播路由器将每 60 秒发送一次 IGMP 查询。此查询被交换机拦截,并由其转发到交换机上的所有端口。属于组成员的所有主机都应对该查询作出回复。但事实上,交换机将拦截回复报告,而其他主机不能看到任何其他报告,因此所有主机都应发送一个报告(而不是一个组发送一个报告)。然后,在收到的所有回应中,交换机将使用代理报告来仅向每个组发送一个报告。

假设主机 A 希望离开组,但主机 B 希望接收组。

  • 交换机捕获来自主机 A 的 IGMP 离开消息。

  • 交换机为该端口上(且仅限该端口上)的组发出组特定 IGMP 查询。

  • 如果交换机无法接收报告,则将此端口从条目中删除。如果交换机收到来自该端口的回应,则将不执行任何操作,并将删除离开消息。

  • 该交换机上的该组仍对主机 B 感兴趣。这不会是条目中最后的非路由器端口。因此,交换机不转发离开消息。

现在,假设主机 B 想要离开组且主机 B 是这个网段中此组所感兴趣的最后用户。

  • 交换机捕获来自主机 A 的 IGMP 离开消息。

  • 交换机为该端口上的该组发出组特定 IGMP 查询。

  • 如果交换机无法接收报告,则将此端口从条目中删除。

  • 这是该 GDA 的最后非路由器端口。交换机向所有路由器端口转发 IGMP 离开消息,并将该条目从其表中删除。

IGMP/CGMP 交互作用

在有些网络中,由于硬件限制,您可能无法在所有交换机上运行 IGMP 侦听。在此情况下,您可能需要在同一网络的一些交换机上运行 CGMP。

注意这是特殊情况。运行 IGMP 侦听的交换机将检测 CGMP 消息,并将检测该网络中的一些交换机是否正运行 CGMP。因此,其将移到特殊 IGMP-CGMP 模式,并将禁用代理报告。这对 CGMP 的正常操作绝对必要,因为路由器使用 IGMP 报告的源 MAC 地址来创建 CGMP 加入。运行 CGMP 的路由器需要查看所有 IGMP 报告,因此必须禁用代理报告。发送到路由器的任何报告只能是 IGMP 侦听必需的报告。

组播源专用网络

如果网段只包含一台组播服务器(组播源)且不包含客户端,则您最终可能遇到以下情况,即您在该网段中没有任何 IGMP 数据包,但有很多组播流量。在此情况下,交换机仅将来自该组的流量转发给网段中的每个路由器。幸运的是,运行 IGMP 侦听的交换机能检测这些组播流,并将为仅带路由器端口的组添加组播条目。这些条目在内部被标记为 mcast_source_only,并且每 5 分钟或者在路由器端口断开时过期。请注意,即使在过期之后,如果数据流还在继续,则在几秒钟之内会重新学习地址。在重新学习地址期间,VLAN 中可能发生瞬时泛洪。为了避免此现象及保留条目,请使用 set igmp flooding enable|disable 命令。禁用泛洪后,交换机不会使源专用条目过期。

限制

与 CGMP 相同,IGMP 侦听不会删除映射到范围为 01-00-5e-00-00-xx 的 MAC 的 GDA。

Cisco 交换机上的 IGMP 侦听配置

要启用/禁用 IGMP 侦听,请发出以下命令:

  • set igmp <enable/disable>

要配置组播路由器(静态),请发出以下命令:

  • set multicast router <mod/port>

  • clear multicast router <mod|端口|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 离开消息;交换机将组特定 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 
      
    
    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