IGMP详解

IGMP(Internet Group Managment Protocol,因特网组管理协议)

目录

前提

概述

IGMPV1

两个角色:

IGMPV2报文格式

IGMPV2的选举机制改进

 IGMPV3

报文格式--查询报文

报文格式---成员关系报告报文

重点字段 Group Record

IGMPV3成员加组机制

IGMPV3组成员离组机制


前提

组播通信中,组播网络需要将组播数据发送特定的组播组成员,所以组播网络需要知道组成员位置和其加入的组

通过IGMP,组成员可将加组信息发送给组播网络,使组播识别和感知。、

感知组播组成员的方法

手工静态配置:在组播路由器上静态指定连接组播组成员的接口,静态加组。

灵活性差,配置工作量大,但是稳定高效,新上线组成员快速建立组播转发通路。

动态感知:组播网络通过IGMP消息感知接口,成员加组信息。

概述

IGMP是TCP/IP协议簇中负责IPV4组播成员管理的协议。主要利用组播组内的IGMP报文交换来建立和维护组播组成员关系。igmp报文份封装在ip报文中。目前有三个版本,IGMPv1、IGMPV2 、IGMPV3,组播路由器与组成员交互IGmp报文后会生成IGMP路由表项和IGMP组表项,这两项共同帮助设备生成组播路由表项。

IGMP组表项:用于维护组加入信息并通知组播路由协议。

IGMP路由表项:扩展组播路由表项的出接口。

IGMPV1:基于查询和响应机制完成组播管理。

IGMPV1

两个角色:

1.组播组成员

2.IGMP查询器:组播报文,一个多路访问网络只需要一个组播路由器发送查询报文,即IGMP查询器。

两种报文:(General Query) 普遍组查询报文:     查询器向共享网络上所有主机和路由器发送的查询报文(查询组成员)

(Report)成员关系报文:主机向查询器发送的报文。用于申请加入某个组播组或应答普遍组查询报文。

 

       

 版本(version)4bit :对IGMPv1而言,该字段值为1.
类型(type)4bit:指示了IGMPv1报文的报文类型。

   成员关系查询报文,该字段值为1,成员关系报告报文,该字段值为2。

保留字段(unused)8bit :未使用字段。发送时必须是0,接受忽略。        
校验和(checksum)16bit:用于校验IGMPv1报文。在进行校验时为0.传送报文时,必须计算该校验字并插入到该字段中,接收时,该字段在处理该包时进行检验。
组地址(group address)32bit:若是IGMPv1成员关系查询报文,该字段值为0(0.0.0.0);

若是IGMPv1成员关系报告报文,该字段值是主机加入组播组的组地址。

IGMPV1组成员加组机制

igmp查询器发送普遍组查询-(缺省情况下60s发送一次)-->> 组成员反馈成员关系报告报文>>>>>igmp查询器收到成员关系报告后生成IGMP路由表项IGMP组表项

IGMPV1 依赖组播路由协议(PIM)进行选举IGMP查询器

当组播组成员离组时,就不会再对普遍组查询报文做出回应。IGMP查询器不会收到特定组的报告报文则在130s(缺省值)删除特定组的对应组播选项。

IGMPV2,IGMPV1的改进版本,2者功能兼容

为了改进组成员离开机制,IGMP新增了两种报文

成员离开报文(leave):成员离开组播组时主动向查询器发送的报文,离开时目的地址为224.0.0.2

特定组查询报文(Group-Specific Query)查询器向共享网段内指定组播组发送的查询报文,作用查询此组播组是否存在成员;目的地址为查询组播组的组地址。

IGMPV2报文格式

TYPE 8bit  报文类型,有以下几种类型:

0x11 = Membership Query IGMP查询消息。

0x12 = Version 1 Membership Report IGMPv1成员报告消息。

0x16 = Version 2 Membership Report IGMPv2成员报告消息。

0x17 = Leave Group 离开消息。

在IGMPV2中,旧的4位版本字段和旧的4位类型字段拼成了一个新的8位类型字段,通过分别将成员查询(V1和V2的)及版本1的成员报告报文的IGMP版本2的类型代码置为0x11和0x12,保持了IGMPV1和V2包格式的向后兼容。

Max Resp Time 8bit  主机响应查询返回报告的最大时间

在发出响应报告前的以1/10秒为单位的最长时间,缺省值为10秒。

新的最大响应时间(以1/10秒为单位)字段允许查询用路由器为它的查询报文指定准确的查询间隔响应时间。IGMP版本2主机在随机选择它们的响应时间值时以此作为上限。

这样在查询响应间隔时有助于控制响应的爆发。

Group Address 32 bit

组播组地址(如果是通用查询则为0.0.0.0)。

除了在通用查询时这一字段置为0.0.0.0外,这一字段和IGMP版本1中的这一字段意义相同。

特定组的查勋报文中,组地址的为需要查询的组的地址。

IGMPV2的选举机制改进

使用独立的查询器选举机制,当共享网段上存在多个组播地址时,IP地址最小的路由器称为查询器。(注:非查询器上会启动一个定时器:其他查询器存在时间定时器【Other Querier Present Timer】;在该定时器超时前,如果收到了来自查询器的报文,则重置定时;反之则认为查询器失效,发起新的查询器选举。

IGMPV2成员离组机制

组播组成员向本地网段内所有的组播路由器(des:224.0.0.2)发送泽针对该组的离开报文

查询器收到报文>>发送针对该组的特定组查询报文(缺省情况下发送两次。间隔1s)启动组成员关系定时器(Timer-Membership=间隔*次数)

两种情况:如果该组还存在其他成员。在收到查询器发送的特定组查询报文后会立即发送针对该组的报告报文,查询器收到此报告报文后,会继续维护该组的租成员关系。反之,因查询器不能收到报告报文,就会删除该组对应的IGMP组表项,当后续再有该组的组播数据到达时。也不会进行转发。

 IGMPV3

报文格式--查询报文

 Type 8比特: 成员关系查询Type=0x11。 
 Max Resp Code 8比特: 设备接收到查询消息后发出响应报文的最大延迟时间,超过该时间没有发出响应报文,则查询设备认为此次查询超时,单位是1/10秒
 Checksum 16比特 :1GMP消息的校验和。传送报文时,必须计算校验和并填入该字段中;接收报文时,必须在处理报文之前检验校验和,以判断IGMP消息在传输过程中是否发生
了错误
 Group Address 32比特 :对干普遍组查询消息,该字段置0。对于特定组查询消息,特定组/源查询消息,该字段为设詈为欲查询的组播组的地址 
 Resv 4比特: 保留字段,发送报文时置0;接收到报文时,对该字段不做任何处理
  1比特 该比特位詈1时,所有收到此查询消息的其他路由器不启动定时器刷新过程,但是此查询消息并不抑制查询器选举过程和路由器的主机侧外理过程, 
 QQIC 8比特 :查询器的查询间隔,单位是秒,非查询器收到查询报文时,如果发现该字段非0,则将自己的查询间隔参数调整为该字段的值。
 Number of Sources(N) 16比特 :消息中包令的组播源的数量 对干普谝组查询报文和特定组查询报文 该字船为0,对于特定组/源地址查询报文 该字段非0,此参数的大小受到所在网络
MTU大小的限制。
 Source Address 32比特 :组播源地址,其数量受到Number ofSources字段值大小的限制。

报文格式---成员关系报告报文

封装该消息的IP报文头的目的地址字段为224.0.0.22,本地网段上的所有IGMPv3路由器都能识别并接收

重点字段 Group Record

 重要字段

Record Type 8bit :Group Record消息的类型。

MODE_IS_INCLUDE:接收源地址列表包含的源发往该组的组播数据。如果指定源地址列表为空,该消息为无效消息。

MODE_IS_EXCLUDE:不接收源地址列表包含的源发往该组的组播数据。

CHANGE_TO_INCLUDE_MODE:过滤模式由EXCLUDE转换到INCLUDE,接收源地址列表包含的新组播源发往该组播组的数据。如果指定源地址列表为空,主机离开组播组。

CHANGE_TO_EXCLUDE_MODE:过滤模式由INCLUDE转换到EXCLUDE,拒绝源地址列表中新组播源发往该组的组播数据。

ALLOW_NEW_SOURCES:表示在现有的基础上,需要接收源地址列表包含的源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则向现有源列表中添加这些组播源;如果当前对应关系为EXCLUDE,则从现有阻塞源列表中删除这些组播源。

BLOCK_OLD_SOURCES:表示在现有的基础上,不再接收从源地址列表包含的源组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则从现有源列表中删除这些组播源;如果当前对应关系为EXCLUDE,则向现有源列表中添加这些组播源。

IGMPV3成员加组机制

成员加组机制和V2大体相同,主要有一下不同

IGMPV3的成员关系报告能够携带组播源信息

IGMPV3成员关系报文没有成员关系报文抑制机制。

IGMPV3组成员离组机制

IGMPV3没有专门的成员离组报文,成员离开需要借助成员关系报告实现

IGMP查询器在收到改变源组对应关系的成员关系报告后,会发送特定源组查询报文,确认是否还有组成员存在

各版本差异

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值