IGMPv2包结构及工作机制讲解

IGMPv2的工作机制与IGMPv1大致相同,最大的不同点在于IGMPv2增加了离开组机制,当组成员主动离开组播组时,会主动发送成员离开报文告知查询器。查询器收到组成员发送出的组成员离开报文后,会连续发送特定组查询报文,询问该组播组中是否还存在组成员,如果一段时间内没有收到成员主机发送的报告报文,那么IGMP查询器将不再维护该组的组成员关系,IGMPv2可以使IGMP查询器及时了解到网段内哪些组播组已不存在成员,从而及时更新组播组信息,减少网络中不必要的组播流量

IGMPv2报文与IGMPv1相比,IGMP新增了两种类型的报文:

  • 成员离开报文(Leave):成员离开组播组时会主动向查询器发送该报文,告知查询器离开某个组播组

  • 特定组查询报文(Group-Specific Query):查询器向网段内指定组播组发送的查询报文,用户查询某个组播组中是否还有成员,与普遍组查询报文的区别在于,普遍组查询报文的组号是0.0.0.0,而特定组是针对某个组播组,所以他会是一个组播地址

报文格式如下:

              0                   1                   2                   3
              0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |      Type     | Max Resp Time |           Checksum            |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |                         Group Address                         |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段

说明

Type

  • 0x11:表示查询报文,查询报文有两个子类型:

  1. 普遍组查询报文,用于查询成员希望连接到哪个组播组

  2. 特定组查询报文,用于查询一个组播组中是否还有成员

  • 0x12:表示IGMPv1的成员报告报文

  • 0x16:表示IGMPv2成员报告报文

  • 0x17:表示组成员离开报文

Max Response Time

IGMPv2对普遍组查询报文做出了改进,添加了最大响应时间(Max Response Time),组成员收到查询报文后,要在最大响应时间内做出回应,通常是取一个小宇最大响应时间的随机值,该字段仅在查询报文中有效

Checksum

校验和,在发送端计算出校验和之前,该字段为全0,当发送端计算出报文的校验和之后,必须将值插入该字段,接收端接收数据包时,必须在处理数据包内容前,完成对数据包的校验

Group Address

  • 在普遍组查询中,该值为0.0.0.0

  • 在特定组查询中,该值为要查询的组播组地址

  • 在成员报告或离开报文中,该字段为成员希望加入的组播组与希望退出的组播组

IGMPv2工作机制

##IGMPv2主要的工作方式增加了查询器选举机制离开组机制,其他与IGMPv1一致

以下图为例介绍IGMPv2的工作机制,在主机网段上有HostA,HostB,HostC三个接受者,假设HostA,HostB希望接受G1组播组的数据,HostC希望接受G2组播组的数据

IGMPv2包结构及工作机制讲解_第1张图片


查询器选举机制

IGMPv2包结构及工作机制讲解_第2张图片

##因为在同一广播域内,主机发出的报告报文,所有路由器都可以接收到,所以只需要一台路由器负责接收主机发出的报告报文与回应报告报文即可,这样可以节省很多带宽以及省略很多重复的数据包

1.在初始化阶段,路由器都认为自己是查询器,向网段内所有主机,所有路由器发送普遍组查询报文。RouterA,RouterB收到对方发出的普遍组查询报文后,会将报文的源地址与自己的入接口地址做比较,通过比较IP地址最小的路由器将成为查询器,其他路由器将成为非查询器(Non-Querier)。所以RouterA的接口地址小于RouterB,所以RouterA将成为查询器,RouterB则成为非查询器

2.之后,将由查询器(RouterA)向本网段内的所有主机和其他组播路由器发送普遍组查询报文,而非查询器则不再发送普遍组查询报文

3.每个非查询器上会启动一个计时器(Ohter Querier Present Timer其他查询器存在时间定时器),在该定时器超时前,如果收到了来自查询器的查询报文,则重置定时器;否则,则认为原查询器失效,并发起新的查询器选举过程


组离开机制

IGMPv2包结构及工作机制讲解_第3张图片

##HostA与HostB处于同一广播域,为了画出报文流向所以分为左右

1.HostA向本地网段224.0.0.2(网段内所有路由器)发送G1组离开报文

2.查询器离开报文之后,会发送针对G1的特定组查询报文,发送间隔和发送次数可以通过命令配置(默认为发送两个,每隔一一秒发送一个),同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)

3.该网段内存在组G1的其他成员,这些成员在收到查询器发出的查询报文后,会立即发送针对G1组的成员报告报文以继续维护该组成员的关系,如果该网段内不存在G1的成员,查询器将不会收到针对G1组发出的成员报告报文,在Timter-Membership超时后,查询器将删除(*.G1)的对应IGMP组表项,当有组G1的组播数据到达查询器后,查询器将不会向下游转发


                                                                                                                                                               本文部分来自华为技术手册

 

博主现为上海思邱实业公司总经理,诚意招商

营业范围:联想戴尔等主流厂商服务器,办公电脑,显示器

华为华三思科等主流厂商数通产品,路由器,交换机,防火墙,无线等等

提供企业网络应急维修,网络周期性维护,服务器应急维修,服务器周期性维护,云计算部署,云存储部署等等各种各样的服务

只要你有IT行业相关的需求,那就可以联系我们

联系方式:17621969147 李先生

你可能感兴趣的:(网络,组播)