【HCIP】组播-IGMPv1协议缺点和IGMPv2
IGMPv1问题:
图片.png1、组成员离开:静默离开,不会通知RTA
路由器会周期性的发送普遍组查询,但是如果组播成员离开后,并不会立即向RTA发送报告,RTA经过先60s周期性发送一次组查询G1组没有回复报告,隔60继续发送没有回复,此时RTA将会等待最大的响应时间10s发现G1组依旧没有回复报告,则认为G1组不再有成员,不再下发G1组的组播流量。这样就白白占用了两分钟的带宽。
2、查询器选举
查询器选举依赖于组播路由协议
IGMPv1没有解决谁做查询器的问题,它们之间的选举依赖于组播路由协议,在运行了IGMPv1的接口上,还需要运行PIM协议,运行了PIM协议的接口就会互相发送hello报文,通过hello包选举DR路由器,DR路由器去充当IGMPv1的查询器。
3、路由器无法控制成员的最大响应时间
成员的最大响应时间是根据成员自己10s内随机设定的
IGMPv2
1、基本原理和IGMPv1相同
2、增加离组报文,当组成员离组时,会主动发送离组报文,离组报文发送的目的ip:224.0.0.2 ,代表该网段所有的路由器接口
我们乘此机会复习一下之前学过的特殊的组播地址ip
图片.png
3、增加特定组查询报文,路由器收到离组报告,得知某个组有成员离开,需要向该组发送特定组查询报文,目的地址为成员离开的那个组地址。
224.0.0.1 :普遍组查询报文
224.0.0.2:特定组查询报文
一般来说,特定组查询报文是每隔1s连续发送2次特定组查询报文,也就意味着在2s的时间内,如果没有改组的成员报告,则认为改组没有成员了,就结束改组的流量,不再继续向该组发送,反之,继续下发该组流量。
但是我们需要注意一个:
特定组查询报文依然有成员关系抑制机制(去其糟粕,取其精华),抑制时间1s,也就是在1s内随机等待一个时间,超时后回复报告报文,同组成员收到后,不再发送报告报文。
管理员可以配置发送特定组查询的间隔以及次数,间隔决定了成员响应时间,间隔时间x次数用来判断路由器在多久之后没收到报告报文进而判断是否下发。
igmp timer query 10 修改IGMPv1、v2、v3的普通组查询发送间隔
igmp max-response-time 修改IGMPv2/v3普通组查询的最大响应时间
igmp lastmember-queryinterval 修改IGMPv2/v3指定组查询的最大响应时间
igmp robust-count 指定特定组查询连续发送的次数,IGMPv2/v3
igmp timer other-querier-present IGMPv2/v3其他查询器失效时间
4、IGMPv2使用独立的查询器机制,接口IP地址小的路由器成为查询器。如果非查询器在(健壮次数(特定组查询的发送次数)x普通组查询发送间隔+最大响应的50%)超时前收到了来自查询器的查询报文,则重置该定时器,否则就认为原查询器失效并发起新的查询器选举,此外也可以直接配置非查询器存活时间。
5、IGMPv1和IGMPv2报文比较
图片.png