本帖最后由 blakegao 于 2015-4-21 21:40 编辑 IGMP 侦听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
要配置组播路由器(静态),请发出以下命令:
· set multicast router
· clear multicast router 端口|all>
要监控和检查 IGMP 统计数据,请发出以下命令:
· show igmp statistics
· show multicast router