计算机网络-IGMPv2工作原理介绍

前面我们学习了IGMPv1的工作原理,IGMPv1通过选举查询器进行查询和响应报文生成IGMP组表项和IGMP路由表项。IGMPv1没有专门定义离开组消息,当组播组成员离开组播组时,将不会再对普遍组查询报文做出回应。因此IGMPv2在一定程度进行了改进。

一、IGMPv2基本概念

IGMPv1在离组机制与查询器选举机制上有一定缺陷

  • IGMPv1离组使用超时机制,组成员只能静默离组。在未超时的时间内,组播流量依然会被组播路由器转发。
  • IGMPv1查询器选举必须要依赖PIM协议,导致查询器选举不够灵活。
IGMPv1缺陷
IGMPv1缺陷

IGMPv2改善了IGMPv1的缺陷:

  • IGMPv2组成员加组机制与IGMPv1基本相同
  • IGMPv2增加了离组机制
  • IGMPv2增加了查询器选举机制
  • IGMPv2能与IGMPv1兼容。

1.1 IGMPv2报文格式

IGMPv2报文格式
IGMPv2报文格式

为了改善组成员离开机制,IGMPv2新增了两种报文:

  • 成员离开报文(Leave):成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。成员离开报文目的地址为224.0.0.2。
  • 特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。特定组查询报文目的地址为所查询组播组的组地址。

IGMPv2对普遍组查询报文格式也做了改进,添加了最大响应时间(Max Response Time)字段。此字段取值可以通过命令配置,用于控制成员对于查询报文的响应速度。

IGMPv2报文各字段说明:

Type:报文类型。该字段有以下四种取值:

  • 0x11:表示查询报文。IGMPv2的查询报文包括普遍组查询报文和特定组查询报文两类。
  • 0x12:表示IGMPv1成员关系报告报文。
  • 0x16:表示IGMPv2成员关系报告报文。
  • 0x17:表示成员离开报文。

Max Response Time:表示主机响应查询返回报告的最大时间

  • 对于普遍组查询,最大响应时间默认为10秒。
  • 对于特定组查询,最大响应时间默认为1秒。

Group Address

  • 普遍组查询报文中,组地址设置为0。
  • 特定组查询报文中,组地址为需要查询的组地址。
  • 在成员关系报告或离开组的消息中,组地址为需要报告或离开的组地址。

IGMPv2有四种报文:普遍组查询报文、成员关系报告报文、成员离开报文(Leave)、特定组查询报文(Group-Specific Query)。

1.2 IGMPV2查询器选举机制

IGMPv2查询器选举机制与IGMPv1有较大差异。IGMPv2使用独立的查询器选举机制,当共享网段上存在多个组播路由器时,IP地址最小的路由器成为查询器。 地址越小越优先,非查询器启动定时器,超时没有收到重新选举。

非查询器上都会启动一个定时器(即其他查询器存在时间定时器Other Querier Present Timer)。在该定时器超时前,如果收到了来自查询器的查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。默认125秒非查询器重新选举。可以通过Other Querier Present Timer设置。

IGMPV2查询器选举
IGMPV2查询器选举

就是当共享网络有多个IGMP路由器时,初始都认为自己是查询器,发送普遍组查询报文,通过交互报文中的IP地址,地址越小越优先,选举出查询器后,非查询器启动定时器,如果定期没有接收到普遍组查询报文则重新选举。

1.3 IGMPv2组成员离开机制

IGMPv2使用成员离开报文与特定组查询报文加速感知IGMPv2组成员离开。

IGMPv2组成员离
IGMPv2组成员离

组播组成员向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G1的离开报文。

  • 查询器收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。
  • 如果该网段内还存在组G1的其他成员,这些成员在收到查询器发送的特定组查询报文后,会立即发送针对组G1的报告报文。查询器收到针对组G1的报告报文后将继续维护该组成员关系。
  • 如果该网段内不存在组G1的其他成员,查询器将不会收到针对组G1的报告报文。在Timer-Membership超时后,查询器将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达查询器时,查询器将不会向下游转发。

就是组播组成员离组会发送成员离开报文(Leave),报文中携带你要离开的组播组地址,然后查询器会通过发送特定组查询报文检测要离开的这个组是否还有成员,如果有就继续维护成员关系,如果没有收到回复在超时后会删除(*,G)表项。成员离开报文目的地址为224.0.0.2。

总结:IGMPv2增加了成员离开报文和特定组查询报文可以用于确定是否还需要继续维护IGMP组表项。IGMPv2有独立的查询器选举机制,以IP地址越小越优先。

如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子 不喜欢热闹的孩子

本文由 mdnice 多平台发布

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不喜欢热闹的孩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值