IGMP Snooping
IGMP Snooping通过侦听组播路由器和主机之间的IGMP报文,在交换机上创建二层组播转发表,当交换机转发组播报文时,报文按照组播转发表转发,如果没有对应的组播转发表项,则泛洪到所有端口;
IGMP Snooping不会为ospf、pim等路由协议(224.0.0.x)创建组播转发表,224.0.0.x的报文会被泛洪到所有端口;
交换机通过侦听查询报文或pim hello报文,将接收端口识别为动态路由器端口,通过周期性查询报文或pim报文,刷新组播转发表中的路由器端口的计时器,路由器端口超时时间105s或180s(pim hello或查询报文);
交换机通过侦听成员报告报文,将接收端口识别为动态主机端口,通过周期性查询后的成员报告响应刷新转发表中的主机端口计时器,主机端口超时时间130s;
1、主机成员报告报文处理
主机初次加入组播组,产生IGMP成员报告报文;
IGMP Snooping交换机收到后转发给CPU和路由器端口,创建转发表项并启动老化定时器130s;
2、普遍组查询处理
R1是IGMP查询器,周期性向网段上所有主机及路由器(224.0.0.1)发送普遍组查询报文;
IGMP Snooping交换机收到普遍组查询报文后,向除接收端口外的所有端口转发,接收到普遍组查询的端口成为动态路由端口;
IGMP Snooping交换机在主机端口间互相不转发成员报告报文,报文抑制机制失效,当收到查询后任何组成员都会响应报告,主机会每隔60s收到普遍组查询而响应成员报告报文,交换机可以周期刷新L2-multicast转发表的动态主机端口;
3、成员离组报文处理
主机发送离组报文给网段的所有路由器(224.0.0.2);
IGMP Snooping交换机收到后仅转发给CPU和转发表中的路由器端口;
查询器收到后立即发送特定组或特定源组的查询报文;
IGMP Snooping交换机收到后仅转发给CPU和转发表中的主机端口,如果端口下收到成员报告报文,刷新动态主机端口老化定时器,否则2s后在转发表的接口列表中移除该端口;
IGMPv2的特定组查询和IGMPv3的特定组及源查询的目的地址都是特定组播组地址,所以只会向已有的成员端口转发;
交换机收到IGMP离开报文后,动态主机端口的老化定时器由130s立即改为2s;