工作机制 二层组播设备运行了IGMP Snooping后,收到不同的IGMP协议报文会进行不同的处理,并在此过程中建立起二层组播转发表项。 表10-2 IGMP Snooping对不同报文的处理方式
IGMP工作阶段 | | | 普遍组查询 IGMP查询器定期向本地网段内的所有主机与路由器(目的地址为224.0.0.1)发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。 | IGMP普遍组查询报文 | 向VLAN内除接收接口外的其他所有接口转发,并对接收接口做如下处理:- 如果路由器端口列表中尚未包含该接口,则将其添加进去,并启动老化定时器。
- 如果路由器端口列表中已包含该动态路由器端口,则重置老化定时器。
说明:收到IGMP普遍组查询报文时,动态路由器端口的老化定时器缺省为180秒,可以通过命令行配置。
| 成员报告 有两种情况:- 成员收到IGMP普遍组查询报文后,回应IGMP报告报文。
- 成员主动向IGMP查询器发送IGMP报告报文以声明加入该组播组。
| IGMP报告报文 | 向VLAN内所有路由器端口转发。从报文中解析出主机要加入的组播组地址,并对接收接口做如下处理:- 如果不存在该组对应的转发表项,则创建转发表项,将该接口作为动态成员端口添加到出接口列表中,并启动老化定时器。
- 如果已存在该组对应的转发表项,但出接口列表中未包含该接口,则将该接口作为动态成员端口添加到出接口列表,并启动老化定时器。
- 如果已存在该组所对应的转发表项,且出接口列表中已包含该动态成员端口,则重置其老化定时器。
说明:收到IGMP报告报文后,动态成员端口的老化定时器 = 健壮系数 x 普遍组查询间隔 + 最大响应时间。
| 成员离开组播组 有两个阶段:- 运行IGMPv2或IGMPv3的成员发送IGMP离开报文,以通知IGMP查询器自己离开了某个组播组。
- IGMP查询器收到IGMP离开报文后,从中解析出组播组地址,并通过接收接口向该组播组发送IGMP特定组查询报文/IGMP特定源组查询报文。
| IGMP离开报文 | 判断离开的组是否存在对应的转发表项,以及转发表项出接口列表是否包含报文的接收接口:- 如果不存在该组对应的转发表项,或者该组对应转发表项的出接口列表中不包含接收接口,二层组播设备不转发该报文,将其直接丢弃。
- 如果存在该组对应的转发表项,且转发表项的出接口列表中包含该接口,二层组播设备会将报文向VLAN内所有路由器端口转发。
对于IGMP离开报文的接收接口(假定为动态成员端口),二层组播设备在其老化时间内:- 如果从该接口收到了主机响应IGMP特定组/源组查询的报告报文,表示接口下还有该组的成员,于是重置其老化定时器。
- 如果没有从该接口收到主机响应IGMP特定组/源组查询的报告报文,则表示接口下已没有该组成员,则在老化时间超时后,将接口从该组的转发表项出接口列表中删除。
说明:收到IGMP离开报文后,动态成员端口的老化定时器 = 健壮系数 x 特定组查询间隔。
| IGMP特定组查询报文/IGMP特定源组查询报文 | 向有特定组成员的接口转发。 |
此外,当二层组播设备收到PIM Hello报文时,向VLAN内除接收接口外的其他所有接口转发,并对接收接口做如下处理:- 如果路由器端口列表中已包含该动态路由器端口,则重置老化定时器。
- 如果路由器端口列表中尚未包含该接口,则将其添加进去,并启动老化定时器。
|