IGMP Proxy
如图左图所示,在一些简单的树形网络拓扑中,与用户网段相连的设备RouterB上并不需要运行复杂的组播路由协议(如PIM),而透传主机IGMP报文又会导致RouterA管理太多用户。当网络中存在大量成员主机或大量成员主机频繁加入/离开组播组时,会产生大量的IGMP报告/离开报文,从而给接入设备RouterA带来较大的处理压力。
如右图所示,通过在RouterB上配置IGMP Proxy功能,可以解决以上问题,实现组播报文正常转发同时减轻RouterA的处理压力。
IGMP Proxy,也称为IGMP代理,通常被部署在接入设备(RouterA)和成员主机之间的三层设备上。一方面,IGMP Proxy设备可以收集下游成员主机的IGMP报告/离开报文,将报告/离开报文汇聚后代理下游成员主机统一上送给接入设备;另一方面,IGMP Proxy设备也可以代理IGMP查询器向下游成员主机发送查询报文,维护组成员关系,基于组成员关系进行组播转发。在接入设备RouterA看来,RouterB就是一台主机;在下游成员主机看来,RouterB就是IGMP查询器。
IGMP Proxy中定义了以下两种类型的接口:
-
上游接口:指IGMP代理设备上配置IGMP Proxy功能的接口,该接口执行IGMP代理设备的主机行为,因此也称为主机接口(Host Interface)。
-
下游接口:指IGMP代理设备上配置IGMP功能的接口,该接口执行IGMP代理设备的路由器行为,因此也称为路由器接口(Router Interface)。
IGMP Proxy工作机制
IGMP代理设备实现的功能主要分为两种:主机行为和路由器行为。
主机行为
主机行为是指IGMP代理设备的上游接口收到查询报文时根据当前组播转发表的状态对查询报文做出响应,或者当组播转发表发生变化时上游接口主动向接入设备发送报告/离开报文。主机行为的工作机制如下:
- IGMP代理设备上游接口收到查询报文时,会根据当前组播转发表的状态对查询报文做出响应。
- IGMP代理设备收到某组播组的报告报文后,会在组播转发表中查找该组播组:
- 如果没有找到相应的组播组,IGMP代理设备会向接入设备发送针对该组播组的报告报文,并在组播转发表中添加该组播组;
- 如果找到相应的组播组,IGMP代理设备就不需要向接入设备发送报告报文。
- IGMP代理设备收到某组播组G的离开报文后,会向接收到该离开报文的接口发送一个特定组查询报文,检查该接口下是否还存在组播组G的其他成员:
- 如果没有其他成员,在组播转发表中将该接口删除,然后判断组播组G是否还有其他接口。如果没有,IGMP代理设备再会向接入设备发送针对该组播组的离开报文;如果有,IGMP代理设备不向接入设备发送针对该组播组的离开报文;
- 如果有其他成员,IGMP代理设备会继续向该接口转发组播数据。
路由器行为
路由器行为是指IGMP代理设备的下游接口通过成员主机加入/离开组播组的信息生成组播转发表项、接收接入设备下发的组播数据并根据组播转发表项的出接口信息向特定的接口转发组播数据。路由器行为的工作机制与IGMP的工作机制一致,
IGMP Proxy备份机制
为了提高链路的可靠性,IGMP代理设备的上游接口配置完IGMP Proxy功能后,可以再在IGMP代理设备上配置一个IGMP Proxy备份接口,作为上游接口的备份,如所示。这样,当上游接口所在链路发生故障时,备份链路会自动接管IGMP代理业务,使业务能够自动恢复。
IGMP Proxy本身并没有检测机制,如果组播链路发生了故障,无法保证及时进行主、备链路的切换,可能造成较长时间的组播业务中断。通过IGMP Proxy与NQA联动可以解决此问题。IGMP Proxy与NQA测试例联动是利用NQA测试例检测端到端的链路状态,并根据NQA测试例的检测结果,进行主、备链路的切换,从而避免通信长时间中断。