IGMPSnooping是一种IPv4二层组播协议,通过侦听三层组播设备和用户主机之间发送的组播协议报文来维护组播报文的出接口信息,从而管理和控制组播数据报文在数据链路层的转发。
协议创建的目的:
在很多情况下,组播报文要不可避免地经过一些二层交换设备,尤其是在局域网环境里。由于组播报文的目的地址为组播地址,在二层设备上是学习不到这一类MAC表项的,因此组播报文就会在所有接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽,而且影响了网络信息安全。
IGMP Snooping有效地解决了这个问题。配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户的上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项,控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。
IGMP Snooping原理描述
基本原理:IGMP Snooping 是二层组播的基本功能,可以实现组播数据在链路层的转发和控制。当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时,IGMP Snooping分析报文携带信息,根据这些信息建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发。
当Switch没有运行IGMP Snooping时,组播数据在二层被广播;当Switch运行了IGMP Snooping后,组播数据不会在二层广播,而是会被Switch发送给指定的接收者。使能IGMP Snooping功能后,Switch会侦听主机和上游三层设备之间交互的IGMP报文,通过分析报文中携带的信息(报文类型、组播组地址、接收报文的接口等),建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发。
端口角色
路由器端口:二层组播设备上朝向三层组播设备一侧的接口,二层设备从此接口接收组播数据报文。
成员端口:又称组播成员端口,表示二层组播设备朝向组播成员一侧的端口,二层组播设备往此接口发送组播报文。
路由器端口和成员端口,是二层组播转发表项中的一个重要信息:出接口。其中路由器端口相当于上游接口,成员端口相当于下游接口。通过协议报文学习到的端口,对应的为动态表项;而手工配置的端口,对应的为静态表项。
工作机制:
二层组播设备运行了IGMP Snooping后,收到不同的IGMP协议报文会进行不同的处理,并在此过程中建立起二层组播转发表项。