简介-IGMP
IGMP(Internet Group Management Protocol)作为因特网组管理协议,是TCP/IP协议族中负责IP组播成员管理的协议,它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IGMP协议运行在主机与组播路由器之间。
IGMP协议的作用:
-
主机侧:通过IGMP协议向路由器通告组成员关系;
-
路由器侧:通过IGMP协议维护组成员关系。
IGMP查询器(Querier):在多路访问网络中发送查询报文的路由器(IGMP报文是组播报文,因此只需要一个组播路由器来担任IGMP查询器)。
IGMPv1
1.1 IGMPv1支持的两种报文类型:
普遍组查询报文(General Query):路由器周期性地向224.0.0.1地址(表示同一网段内所有足迹和路由器)发送通用查询报文,默认查询周期为60秒,发送周期可配置。
成员关系报告报文(Membership Report):主机向查询器发送的报告报文,用于加入某个组播组或者应答查询报文。
1.2 IGMPv1工作机制:
-
普遍组查询与响应;
-
响应抑制机制。
如上图所示(图中接口使能IGMP),假如PC1和PC3都想接收组播组G1的数据,而PC2想接收组播组G2的数据,则普遍组查询与响应机制如下:
-
AR1发送目的地址为224.0.0.1的普遍组查询报文(缺省情况下每隔60秒发送一次,可配置)。
-
收到该查询报文的组成员启动定时器。PC1和PC3是组播组G1的成员,则在本地启动定时器Timer-G1,PC2是组播组G2的成员,本地启动定时器Timer-G2。定时器的范围是0~10秒之间的随机值,定时器先超时的主机发送针对该组的成员报告报文。假设PC1的定时器Timer-G1先超时,则向该网段发送目的地址为G1的成员报告报文,PC2的定时器Timer-G2超时,向该网段发送目的地址为G2的成员报告报文。
-
PC3侦听到PC1的成员报告报文,发现要加入同一组播组。则停止定时器Timer-G1,不再发送针对G1的成员报告报文,这就是响应抑制机制,可以减少网段上的协议流量。
-
AR1接收到成员报告报文后,了解到本网段内存在组播组G1和G2的成员,一旦AR1收到G1和G2的组播数据,将向该网段转发。
1.3 IGMPv1成员加入
① 主机申请加组
新接入主机PC4想加入组播组G3,为了快速接收组播数据,不等待普遍组查询报文, 而立即发送G3的成员报告报文。AR1收到成员报告报文后,了解到本网段内出现了组播组 G3的成员。一旦有G3的组播数据到达AR1,将向该网段转发。
1.4 IGMPv1存在问题
问题一:查询器选举依赖于组播报文协议
多台路由器同时连接到同一接收端网络时,只需要有一台路由器进行IGMP的查询。
IGMPv1无查询路由器选举机制,其依赖于组播路由协议在末端网络中选举一个查询器。由于不同的组播路由协议采用不同的选举机制,所以在IGMPv1中,同一末端网络中可能会存在多台查询器。
问题二:组成员离开为静默离开
IGMPv1没有专门定义离开组消息。
当Client离开组播组时,将不会再对普遍组查询报文做出回应。假设所有Client退出组播组,Client将不再对普遍组查询报文进行响应。由于网段上不存在组播组的其他成员,RTA不会收到任何成员报告报文,则组成员关系超时(130秒=120*2+10,组成员关系超时时间=IGMP普遍查询消息发送间隔 × 健壮系数 + 最大查询响应时间)后,删除对应的组播转发项。
IGMPv2
2.1 IGMPv2对IGMPv1的改进
改进1:组成员离开
如图所示,在IGMPv2中,Client B离开组播组G2的过程如下:
Client B向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G2的离开报文。
查询器收到离开报文,会发送针对G2的特定组查询报文,同时启动组成员关系定时器Timer-Membership=发送间隔x发送次数。缺省每隔1秒发送一次,一共发送两次,发送间隔和发送次数可以配置。
如果网段内不存在其他组G2的成员,则路由器不会收到组G2的成员报告报文。在Timer-Membership超时后,删除组播转发表项中对应的下游接口。路由器将不再向该网段转发G2的组播数据。如果网段内还有G2的其他成员,则这些成员在收到特定组查询报文后,会在最大响应时间内发送G2的成员报告报文。路由器继续向该网段转发G2的组播数据。
改进2:独立的查询器选举机制
相对于IGMPv1,IGMPv2使用独立的查询器选举机制。
所有IGMPv2路由器在初始状态时都认为自己是查询器,向本地网段内的所有主机和路由器 发送普遍组查询报文。其他路由器在收到该报文后,将报文的源IP地址与自己的接口地址 作比较。IP地址最小的路由器将成为查询器,其他路由器成为非查询器。如图所示,RTA 的接口IP地址小于RTB的接口IP地址,则RTA当选为查询器。IGMP的查询器和非查询器都 会处理IGMP组加入信息,但是只有查询器负责发送查询报文。IGMP非查询器不处理 IGMPv2离开报文。
所有非查询器上都会启动一个定时器。如果在该定时器超时前收到了来自查询器的查询报 文,则重置该定时器;否则就认为原查询器失效并发起新的查询器选举。
2.2 IGMPv2和IGMPv1报文比较
IGMPv1报文:
-
版本:包含IGMP版本标识,因此设置为1。
-
类型:普遍组查询 (0x11),成员关系报告 (0x12)。
-
组地址:普遍组查询报文中,组地址为0;成员关系报告报文中,组地址为成员想要加入的组播组的地址。
IGMPv2报文:
IGMPv2报文与IGMPv1报文略有不同,它取消了版本字段,增加了最大响应时间字段。
-
类型:相比于IGMPv1,IGMPv2新增了两种报文:
-
特定组查询报文(0x11):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
-
成员离开报文(0x17):成员离开组播组时主动向路由器发送的报文,用于宣告自己离开了某个组播组。
最大响应时间:表示主机响应查询返回报告的最大时间。
-
对于普遍组查询,最大响应时间默认为10秒。
-
对于特定组查询,最大响应时间默认为1秒。
组地址:
-
普遍组查询报文中,组地址设置为0。
-
特定组查询报文中,组地址为需要查询的组地址。
-
在成员报告或离开组的消息中,组地址为需要报告或离开的组地址。
IGMPv3
3.1 SSM模型的新需求:只接收特定源发送的组播数据
如果Client A和RTC之间运行的是IGMPv1或IGMPv2,Client A无法对组播源进行选择,无论其是否需要,都会同时接收到来自组播源Source A和Source B的数据。
为了满足SSM模型的新需求,IGMPv3提供了在报文中携带指定组播源信息的能力。
3.2 IGMPv3工作机制
为了满足SSM模型中的新需求,与IGMPv2相比,IGMPv3报文的变化如下:
① IGMPv3报文包含两大类:查询报文和成员报告报文。IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。查询报文中不仅包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文。
②(Group-and-Source-Specific Query)。该报文由查询器向共享网段内特定组播组成员发送,用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
③ 成员报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2...),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(S1、S2...),表示接收除了组播源S1、S2……之外的组播源发给组G的数据。当组播组与组播源列表的对应关系发生了变化,IGMPv3报告报文会将该关系变化存放于组记录(Group Record)字段,发送给IGMP查询器。
④ 在IGMPv3中一个成员报告报文可以携带多个组播组信息,而之前的版本一个成员报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。
IGMP各版本之间的差异
IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组成员离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。三个版本在演进过程中对协议报文的处理是向前兼容的,因此尽管各个版本的协议报文格式不同,但是运行IGMP高版本的路由器可以识别低版本的IGMP报文。文章来源:https://www.toymoban.com/news/detail-490278.html
所有IGMP版本都支持ASM(Any-Source Multicast)模型。IGMPv3可以直接应用于SSM(Source-Specific Multicast)模型,而IGMPv1和IGMPv2则需要IGMP SSM Mapping技术的支持才可以应用于SSM模型。文章来源地址https://www.toymoban.com/news/detail-490278.html
到了这里,关于IGMPv1,v2,v3详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!