一、题目
关于IGMPSnooping-工作机制的描述正确的是
A.二层交换机通过不断监听IGMP报文在二层建立和维护PIM路由表
B.没有运行IGMP Snooping时,组播报文将在二层广播。运行IGMP Snooping后报文将不再在二层广播而是进行二层组播
C.如果主机发出IGMP离开报文时交换机将该主机加入到相应的组播表中
D.如果主机发出IGMP主机报告报文时交换机将删除与该主机对应的组播表项
二、答案
B
三、解析
IGMP Snooping是一种二层交换机的功能,它可以监听和处理IGMP报文,以提高组播数据的传输效率。当开启IGMP Snooping后,交换机会根据主机的IGMP报文信息,维护一个组播表,以确定哪些端口需要接收组播数据包,从而避免了在所有端口广播组播数据。当二层设备没有运行IGMP Snooping时,组播数据在二层被广播。所以,选项B描述了IGMP Snooping的核心功能。
四、扩展–IGMP
IGMPv1
1)报文
普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
成员报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。
2)工作机制
查询器选举
IGMPv1 协议主要基于查询和响应机制完成组播组管理。当一个网段内有多个组播路由器时,由组播路由协议 PIM 选举出唯一的组播信息转发者作为 IGMPv1 的查询器,负责该网段的组成员关系查询。
普遍组查询和响应
①IGMP 查询器发送目的地址为 224.0.0.1 的普遍组查询报文,收到该查询报文的组成员启动定时器为0~10 秒之间的随机值(普遍组查询报文缺省情况下每隔 60 秒周期性发送一次)。
②第一个定时器超时的组成员发送针对该组的报告报文,其他组成员报告报文被抑制,减少网段上的IGMP 报文的数量。
③IGMP 查询器接收到报告报文后,了解到本网段内存在组播组 G 的成员,则由组播路由协议生成(,G)组播转发表项,“”代表任意组播源,网络中一旦有组播组 G 的数据到达路由器,将向该网段转发。
新组成员加入
①主机不等待普遍组查询报文,主动发送针对 G 的报告报文以声明加入组播组 G。
②IGMP 查询器接收到报告报文后,了解到本网段内出现了组播组 G 的成员,则生成组播转发项(*,G),网络中一旦有 G 的数据到达路由器,将向该网段转发。
组成员离开
非最后一个组播组成员:主机离开组播组后,收到 IGMP 查询器发送的普遍组查询报文时,不再发送针对 G 的报告报文,但网段内还存在 G 组其他成员会向 IGMP 查询器发送针对 G 的报告报文,因此 IGMP 查询器感知不到非最后一个组播组成员的离开。
最后一个组播组成员:主机收到 IGMP 查询器发送的普遍组查询报文时,不再发送针对 G 的报告报文,IGMP 查询器不会收到 G 组成员的报告报文,则在一定时间(缺省值为 130 秒)后,删除 G 所对应的组播转发表项。
IGMPv2
1)新增报文
成员离开报文(Leave):成员离开组播组时主动向查询器发送的报文,用于宣告自己离开某个组播组。
特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
2)新增工作机制
查询器选举
①最初,所有运行 IGMPv2 的组播路由器都认为自己是查询器,向本网段内的所有主机和组播路由器发送普遍组查询报文。
②路由器收到普遍组查询报文后,将报文的源 IP 地址与自己的接口地址作比较,IP 地址最小的组播路由器将成为查询器,其他组播路由器成为非查询器。
③此后,IGMP 查询器向本网段内的所有主机和其他组播路由器发送普遍组查询报文,非查询器不再发送普遍组查询报文。
④非查询器启动一个定时器,在该定时器超时前,如果收到来自查询器的查询报文,则重置该定时器,否则,认为原查询器失效,并发起新的查询器选举过程
离开组
①主机发送目的地址为 224.0.0.2 的针对组 G 的离开报文。
②查询器收到离开报文,会发送针对组 G 的特定组查询报文,缺省情况下每隔 1 秒发送一次,共发送两次,同时查询器启动组成员关系定时器(发送间隔 x 发送次数)。
③该网段内还存在组 G 的其他成员收到查询器发送的特定组查询报文,会立即发送针对组 G 的报告报文,查询器将继续维护该组成员关系。
④如果该网段内不存在组 G 的其他成员,定时器超时后,查询器将删除(*,G)对应的 IGMP 组表项。当有组 G 的组播数据到达查询器时,查询器将不会向下游转发。
IGMPv3
1)报文变化
新增查询报文
特定源组查询(Group-and-Source-Specific Query):由查询器向共享网段内特定组播组成员发
送,用于查询该组成员是否愿意接收特定源发送的数据,特定源组查询通过在报文中携带一个或多个组播
源地址来达到这一目的
成员报告报文变化
不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。
IGMPv3 增加针对组播源的过滤模式(INCLUDE/EXCLUDE),当组播组与组播源列表的对应关系发生变化,IGMPv3 报告报文会将该关系变化存放于Group Record 字段,发送给 IGMP 查询器。
IGMPv3 中一个成员报告报文可以携带多个组播组信息,之前的版本一个成员报告只能携带一个组播组,IGMPv3 中报文数量大大减少。
减少成员离开报文
IGMPv3 没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。
2)工作机制变化
特定源组加入
IGMPv3 的成员报告报文的目的地址为 224.0.0.2,通过在报告报文中携带组记录,主机在加入组播组的同时,能够明确要求接收或不接收特定组播源发出的组播数据。
方法一:主机发送 IGMPv3 报告(G,INCLUDE,(S)),仅接收源 S 向组播组 G 发送的数据。
方法二:主机发送 IGMPv3 报告(G,EXCLUDE,(S)),仅接收除指定源 S 向组播组 G 发送的数据。
特定源组查询
当接收到组成员发送的改变组播组与源列表的对应关系的报告时,IGMP 查询器会发送特定源组查询报文,如果组成员希望接收或不接收其中任意一个源的组播数据,将反馈报告报文,IGMP 查询器根据反馈的组成员报告更新该组对应的源列表。