问题描述
现网中可能存在一台 IGMP Querier 需要管理大量 Multicast Receiver 的情况,大量 Multicast Receiver 频繁加入/离开组播组时,会产生大量的 Membership Query、Membership Report 报文,从而给 IGMP Querier 带来较大的处理压力。
解决方案
通过 IGMP Proxy 功能,能够减少 IGMP Querier 压力;
原理简述
通过 IGMP Proxy 功能:
1)IGMP Proxy 将成员关系报告/离开报文汇聚后,再统一上送给 IGMP Querier;
2)IGMP Proxy 也能够代理 IGMP Querier 向成员主机发送 Query 报文,维护组成员关系,基于组成员关系进行组播转发;
3)从本质上将,IGMP Proxy 的功能类似于 IGMP Querier,对报文信息进行处理后,再发送给 IGMP Querier 以减缓压力;
IGMP Proxy 通常被部署在 IGMP Querier 和 Multicast Receiver 间的三层设备上。
概念术语
接口类型
为了实现以上功能,IGMP Proxy 定义两类接口:
1)主机接口(Host Interface):IGMP Proxy 设备上配置 IGMP Proxy 功能的接口,该接口连接 IGMP Querier;
2)路由器接口(Router Interface):IGMP Proxy 设备上配置 IGMP 功能的接口,该接口连接 Multicast Receiver;
这两类接口与我们理解中的相反(主要看它代表的什么):
成员加组机制
原理简述
IGMP Proxy 减少 Membership Reportt 的工作机制如下:
1)Router Interface 作为 IGMP 接口,对下呈现为 IGMP Querier,发送 Query 报文,处理 Report 报文,形成 IGMP 表项,并将 Report 从 Host Interface 发送给的 IGMP Querier;
2)当新用户加入同个组播组时,IGMP Proxy 不会再向 IGMP Querier 反馈 Report 报文,因此减少 IGMP Querier 接收的 Report 报文数量。
细节说明
IGMP Proxy 收到某组播组的 Report 报文后,会在 IGMP Group Table 中查找该组播组:
1)如果找到相应的组播组,IGMP Proxy 就不需要向 IGMP Querier 发送 Report 报文;
2)如果没有找到相应的组播组,IGMP Proxy 会向 IGMP Querier 发送针对该组播组的 Report 报文,并在组播转发表中添加该组播组;
成员离组机制
原理简述
IGMP Proxy 减少离组报文的工作机制如下:
1)当组成员离开时,IGMP Proxy 通过 IGMP 离组机制,来确定是否还有有特定组播组的组成员;
2)当确定已经没有组成员后,IGMP Proxy 通过离组机制通知上游 IGMP Querier;
细节说明
IGMP Porxy 收到某组播组的离开报文后,会向接收到该离开报文的接口发送一个特定组查询报文,检查该接口下是否还存在该组的其他成员:
1)如果存在其他成员,IGMP Proxy 会继续向该接口转发组播数据;
2)如果没有其他成员,在组播转发表中将该接口删除,然后判断组播组 G1 是否还有其他接口:
—- 如果没有,IGMP Porxy 会向 IGMP Querier 发送针对该组播组的离开报文;
—- 如果存在,IGMP Porxy 不向 IGMP Querier 发送针对该组播组的离开报文;