IGMP Snooping
产生原因
三层设备和主机之间的组播数据通信是依据IGMP(Internet Group Management Protocol,互联网组管理)协议建立的。根据IGMP协议,主机加入组播组时需要向上游设备发送IGMP报文报告加入组播组消息,这样上游设备才可以将组播报文发送给主机。由于IGMP报文是封装在IP报文内,属于三层协议报文,而在三层设备和主机之间的二层设备不处理报文的三层信息,所以这个过程它并不知道,而且通过对数据链路层数据帧的源MAC地址的学习也学不到组播MAC地址(数据帧的源MAC地址不会是组播MAC地址)。这样当二层设备在接收到一个目的MAC地址为组播MAC地址的数据帧时,在以前学习的MAC地址表中就不会找到对应的表项。那么这时候,它就会采用广播方式发送接收到的组播报文,这样不但会造成带宽的极大浪费,而且影响网络安全。
IGMP Snooping(Internet Group Management Protocol Snooping,互联网组管理协议窥探)是二层组播的基本功能,可以实现组播数据在二层设备上转发和控制。当主机和上游三层设备之间传递的IGMP协议报文通过运行IGMP Snooping的二层设备时,二层设备分析报文携带的信息,根据这些信息建立和维护二层组播转发表,然后通过转发表转发数据。
相关概念
路由器端口:图11-3中圆圈所指的端口,是指朝向上游设备的端口,二层网络中的设备从该端口接收组播报文。
由IGMP协议发现的路由器端口叫做动态路由器端口,由手工配置的路由器端口叫做静态路由端口。
组播组成员端口:图11-3中方块所指的端口,指朝向组成员主机的端口,二层网络中的设备从该端口发出组播报文。
由协议生成的组播组成员端口叫做动态组播组成员端口,由手工配置的组播组成员端口叫做静态组播组成员端口。
- 二层组播转发表项:是组播设备转发组播数据的依据,组播设备可以根据此表项将来自上游的组播数据报文转发给接收者主机。二层组播转发表项包含下列内容:
VLAN编号或者VSI名称;
组播组地址;
路由器端口(相当于上游端口);
组播组成员端口(相当于下游端口)。
组播MAC地址:指组播数据在数据链路层中通信时组播IP地址映射的MAC地址,用来指导组播数据在数据链路层传输。IANA (Internet Assigned Numbers Authority,互联网地址指派机构)规定,组播MAC地址的高24bit为0x01005e,第25bit为0,低23bit为组播IP地址的低23bit,映射关系如图11-4所示。例如某组播组的组播IP地址为224.0.1.1,则该组播组的组播MAC地址为01-00-5e-00-01-01。由于IP组播地址的后28bit中只有23bit被映射到MAC地址,这样IP地址中就有5bit信息丢失,直接的结果是出现了32个IP组播地址映射到同一MAC地址上。例如组播IP地址为224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。
实现过程
简要介绍IGMP Snooping的详细实现过程:
通过IGMP Snooping协议分析主机和网络层设备之间传递的IGMP消息来建立二层组播转发表项,一般包括VLAN编号或者VSI名称,组播源地址,组播组地址,出端口。
- 当收到上游设备的IGMP Query报文时,将网络侧接口设置为动态路由端口。
- 当收到上游设备的PIM Hello报文时,将网络侧接口设置为动态路由端口。
- 当收到下游设备或者用户发来的IGMP Report报文时,则将用户侧接口设置为动态组播组成员端口。
- 当组播流经过二层网络中的设备时,各个设备根据二层组播转发表项进行组播数据转发。
其他功能
IGMP Snooping支持以下其他功能:
支持不同的IGMP版本
IGMP有三个版本:IGMPv1版本、IGMPv2版本和IGMPv3版本,可以根据需要配置设备处理不同版本的组播数据报文。
快速响应二层网络拓扑变化
用户网段中的二层设备之间常常使用MSTP链路相连。部署此功能后,当链路拓扑发生变化时,设备可以立即更新端口信息,可以将组播数据流迅速切换到新的转发路径上,从而保证组播业务不中断。
组播组安全策略
部署组播组安全策略功能后,可以限制用户加入的组播组范围和数量,而且可以选择是否接收带有安全报文的组播数据,从而提高了组播的可控性和安全性。
适用场景
IGMP Snooping适用VPLS网络和VLAN网络。
使用价值
在用户主机网段的路由器上应用IGMP Snooping,有益于以下两个方面:
节约网络带宽;
方便对主机单独计费。