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 位于哪个端口,并将执行以下操作之一:
o 为 GDA 创建新的静态条目,并将 USA 端口与其所有路由器端口链接到一起。
o 为此 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 leaveenable 命令。
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 组播(全局命令):
o ipmulticast-routing
用以下命令启用运行 CGMP 的每个接口(接口模式):
o ippim
o ipigmp
o ipcgmp
用以下命令调试 L2 组播问题:
o debugip igmp
o debugip cgmp
· Catalyst 4000 或 5000 系列
用以下命令启用/禁用 CGMP:
o setcgmp
用以下命令启用/禁用 CGMP 快速离开:
o setcgmp leave
用以下命令配置组播路由器(静态):
o setmulticast router
用以下命令清除组播路由器:
o clearmulticast router
下面列出的是用以验证 CGMP 操作的各种命令。
o showcam static
o showcgmp statistic
o showcgmp leave
o showmulticast router
o showmulticast group
o showmulticast group cgmp
o showmulticast group count