IGMP Snooping

1、IGMP Snooping

IGMP Snooping 是Internet Group Management Protocol Snooping(互联网组管理协议窥探)的简称,它是运行在二层设备上的组播约束机制,用于管理和控制组播组

2、原理

二层设备通过对收到的IGMP 报文进行分析,为端口和MAC 组播地址建立起映射关系,并根据这样的映射关系转发组播数据。即未运行IGMP Snooping时,组播数据在二层设备上被广播,当二层设备运行后,已知组播的组播数据不会在二层被广播,而在二层被发送给组播指定的接收者。


因此,组播组只将信息转发给需要的接受者,好处如下:

  • 减少了二层网络中的广播报文,节约了网络宽带
  • 增强了组播信息的安全性
  • 为实现对每台主机的单独计费带来了便利。

3、相关概念

3.1 IGMP Snooping 相关端口

IGMP Snooping_第1张图片

  • 路由器端口:交换机上朝向三层组播设备(DR 或IGMP 查询器)一侧的端口,如Switch A 和Switch B 各自的Ethernet1/1 端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。注:路由器端口都是指交换机上朝向组播路由器的端口,而不是指路由器上的端口。
  • 成员端口:又称组播组成员端口,表示交换机上朝向组播组成员一侧的端口,如Switch A 的Ethernet1/2 和Ethernet1/3 端口,以及Switch B 的Ethernet1/2 端口。交换机将本设备上的所有成员端口都记录在IGMP Snooping 转发表中

路由器/成员端口均包括动态和静态端口。

在运行了IGMP Snooping的交换机上,所有收到源地址不为0.0.0.0的IGMP普通组查询报文或PIM Hello报文的端口都将被视为动态路由器端口。

3.2  动态端口老化定时器

IGMP Snooping_第2张图片

端口老化只针对动态端口,静态端口永不老化。

4、IGMP Snooping 工作机制

增删端口动作只针对动态端口,静态端口只能通过相应的配置进行增删

针对不同IGMP动作的具体处理方式如下:

4.1 普遍组查询

IGMP 查询器定期向本地网段内的所有主机与路由器(224.0.0.1)发送IGMP 普遍组查询报文,以查询该网段有哪些组播组的成员。

在收到 IGMP 普遍组查询报文时,交换机将其通过VLAN 内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:

  • 如果在路由器端口列表中已包含该动态路由器端口,则重置其老化定时器。
  • 如果在路由器端口列表中尚未包含该动态路由器端口,则将其添加到路由器端口列表中,并启动其老化定时器。

4.2 报告成员关系

主机会向IGMP查询器发送IGMP成员关系报告报文的情况:

  • 当组播组的成员主机收到 IGMP 查询报文后,会回复IGMP 成员关系报告报文。
  • 如果主机要加入某个组播组,它会主动向 IGMP 查询器发送IGMP 成员关系报告报文以声明加入该组播组。

在收到 IGMP 成员关系报告报文时,交换机将其通过VLAN 内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:

  • 如果不存在该组播组所对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
  • 如果已存在该组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
  • 如果已存在该组播组所对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器

4.3 离开组播组

运行 IGMPv1 的主机离开组播组时不会发送IGMP 离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP 成员关系报告报文,因此当其对应的动态成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。

运行 IGMPv2 或IGMPv3 的主机离开组播组时,会通过发送IGMP 离开组报文,以通知组播路由器自己离开了某个组播组。当交换机从某动态成员端口上收到IGMP 离开组报文时,首先判断要离开的组播组所对应的转发表项是否存在,以及该组播组所对应转发表项的出端口列表中是否包含该接收端口:

  • 如果不存在该组播组对应的转发表项,或者该组播组对应转发表项的出端口列表中不包含该端口,交换机不会向任何端口转发该报文,而将其直接丢弃;
  • 如果存在该组播组对应的转发表项,且该组播组对应转发表项的出端口列表中包含该端口,交换机将该报文通过VLAN 内的所有路由器端口转发出去。同时,由于并不知道该接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是重置其老化定时器。

当 IGMP 查询器收到IGMP 离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP 特定组查询报文。交换机在收到IGMP 特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。对于IGMP 离开组报文的接收端口(假定为动态成员端口),交换机在其老化时间内:

  • 如果从该端口收到了主机响应该特定组查询的 IGMP 成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置其老化定时器;
  • 如果没有从该端口收到主机响应特定组查询的 IGMP 成员关系报告报文,则表示该端口下已没有该组播组的成员,则在其老化时间超时后,将其从该组播组所对应转发表项的出端口列表中删除。

5、IGMP Snooping Proxying

5.1

通过在边缘设备上配置IGMP Snooping Proxying(IGMP Snooping 代理)功能,可以减少其上游设备收到的IGMP 报告报文和离开报文的数量,有效提高其上游设备的整体性能。配置了IGMP Snooping Proxying 功能的设备(称为IGMP Snooping 代理设备),在其上游设备看来,相当于一台主机;而在其下游主机看来,则相当于一台查询器。

IGMP Snooping_第3张图片


注:尽管在其上游设备看来,IGMP Snooping 代理设备相当于一台主机,但主机上的IGMP 成员关系报告抑制机制在IGMP Snooping 代理设备上并不会生效。

IGMP Snooping_第4张图片

5.2 交换机对组播协议报文的特殊处理规则

支持 IGMP Snooping 功能的交换机使能了三层组播路由后,在不同的情况下对各种组播协议报文
的处理有所差异。具体规则如下:

(1) 如果交换机上只使能了IGMP,或同时使能了IGMP 和PIM,进行常规处理。

(2) 如果交换机上只使能了PIM:

你可能感兴趣的:(IGMP Snooping)