IGMPv2
IGMPv2是为了改进IGMPv1两方面不足而产生的改进版,一是IGMPv2增加了独立的查询机制(IGMPv1中的查询器是由PIM协议选举指定路由器(DR)担当查询器的)二是增加了离开组机制,包含了离开信息,允许迅速向组播路由协议(PIM)报告组成员终止情况(IGMPv1中没有离开机制),这对高带宽组播组或易变型组播成员而言,是非常重要的。
本文根据以下拓扑图对IGMPv2进行讲解:
该拓扑图也是我上一篇文章:IP组播协议基础(三)所使用的拓扑图,但为了方便抓包观察,本拓扑RA、RB下联网段都为192.168.1.0/24。
拓扑配置思路:
1、IP配置
2、路由配置,保障拓扑互通。
3、配置PIM-DM(全局开启后,路由器所有接口使能)
4、配置IGMPv2(全局开启后,RA、RB的G0/0/1上使能)
5、配置组播源G1、G2,并运行组播应用
6、PC机加入各自对应的组
详细配置本文不做赘述。
如上图所示的组播网络中,RA、RB连接主机网段,在主机网段上由HostA、B、C 3个接收者,假设A和B想要接收发往组播组G1的数据,C想要接收发往组播组G2的数据。
查询器选举机制
IGMPv2使用独立的查询器选举机制,当共享网段上存在多个组播路由器时,运行IGMP的接口的IP地址最小的路由器成为查询器。
最初,所有运行IGMPv2的组播路由器(RA、RB)都认为自己是查询器,便以224.0.0.1为目的地址向本网段内所有主机和组播路由器发送查询报文。
RA和RB在收到彼此发送的普遍组查询报文后,讲报文的源IP地址与自己的接口地址进行比较,通过比较,IP地址小的组播路由器将成为查询器,其他组播路由器成为非查询器(Non-Querier),本拓扑图中由于RB接口地址小于RA,则RB成为查询器。此后,查询器RB向本网段内的所有主机和其他组播路由器发送普遍组查询报文,而非查询器RA将不再发送查询报文。 如下图所示:经过选举后,RB成为查询器,网段中不再出现RA(192.168.1.254)的查询报文。
查看RA、RB接口的IGMP查询器选举情况:
另外,非查询器上都会启动一个定时器(其他查询器存在时间的一个定时器:Other Querier Present Timer,查询器自身的该定时器时间为0s,如上面两图中的倒数第三行),在该定时器时间超时前,如果收到了来自查询器的报文,则重置定时器时间。否则,就认为原查询器失效,并发起新的查询器选举过程。
缺省情况下,其他IGMP查询器的存活时间(Other Querier Present Timer)计算公式为:
健壮系数×IGMP普遍查询消息发送间隔 +(1/2)最大响应时间
-
健壮系数: 是用来弥补可能发生的网络丢包而设置的消息重传次数,取值范围为2~5的整数,缺省情况下取值为2。
-
IGMP普遍查询消息发送间隔: 即发送查询报文的时间间隔,取值范围为1~1800s,缺省为60s。
-
最大响应时间: 查询报文的最大响应时间,取值范围为1~25s,缺省情况下为10s,响应时间越小,IGMP设备获知组播成员的速度越快,但是网络带宽和设备资源占用也就越大。
上述参数可在全局视图和接口视图下配置,接口试图下优先级高于全局配置,所以本拓扑中RA的其他查询器存活时间可根据下图计算得出:
经过计算,RA的其他查询器生存时间为25s,上图中other querier time为21s其实是该定时器已经开始倒计时并过去了4秒了,根据前面讲的,当RA再次收到查询器(RB)的查询报文时该定时器又会重置,上图中IGMP查询报文发送间隔为10s,这也意味着,RA的other querier timeout 将会在10s后也就是倒数至15s时重置,如下图所示(快速CV大法捕捉计时器时间):
现在,断开RB与交换机连接的接口,查看RA其他查询器生存时间变化:
可以看到,由于RB的断开,RA的其他查询器时间一直倒计时至0s,由于RA所处网段中没有收到其他组播路由器的查询报文,于是自己成为了查询器。
离开组机制
前面说到,IGMPv2与IGMPv1相比,除了增加查询器选举机制外,还增加了组离开机制。
在拓扑中,将主机A,B先加入组播源G1中(恢复前面RB与交换机连接的链路):
组播路由器中(以RA查看为例)会自动生成一个(*,G1)对应的IGMP组表项:
假设此时主机A退出G1(255.1.1.1),则主机A会向本网段所有主机和组播路由器发送针对组G1的离开报文,当组播路由器接收到组成员的离开报文后,会对报文中所涉及的组(本拓扑中为主机A原来加入的组G1)发送特定组查询报文(缺省情况下每隔1s发送一次,共发送两次),由于G1中还有另一个组成员HostB的存在,所以,查询器发出特定组查询报文后主机B会立即发送针对G1的报告报文,查询器收到该报文后将继续维护该组(G1)成员关系,如下图所示:
但如果,网段中不存在G1的其他成员,查询器不再受到针对组G1的报告报文后,查询器在发送两次特定组查询报文后将会删除(*,G1)对应的IGMP组表项,如下图所示,将主机B也退出G1:
以上是小编对IGMPv2学习的分享,感谢阅读。
对了,有同学问CV大法是什么,不就是复制粘贴咩( •̀ ω •́ )。