浅析多播协议IGMP三个版本的区别

2019-12-17 08:10王浦衡
科技视界 2019年34期

王浦衡

【摘 要】随着计算机通信技术的发展,多播通信以其高效、快捷的数据传输技术得到广泛应用。本文主要论述IGMP协议v1,v2,v3三个版本的原理和区别。

【关键词】多播协议;IGMP;TCP/IP

中图分类号: TP212.9;TN929.5 文献标识码: A文章编号: 2095-2457(2019)34-0207-002

DOI:10.19694/j.cnki.issn2095-2457.2019.34.096

Analysis on the Difference of Three Versions of Multicast Protocol IGMP

WANG Pu-heng

(Hunan Chemical Vocational and Technical College,Zhuzhou Hunan 412000,China)

【Abstract】With the development of computer communication technology,multicast communication has been widely used for its efficient and fast data transmission technology.This paper mainly discusses the principles and differences of three versions of IGMP protocol v1,V2 and v3.

【Key words】Multicast protocol;IGMP;TCP/IP

1 多播协议IGMP介绍

IGMP英文全称Internet Group Management Protocol,中文称多播协议或者组播协议,是TCP/IP协议簇中负责联网设备节点多播成员管理的协议,用于管理各IP主机以及和其连接的路由器共同搭建维护多播组成员关系。

截至目前,有V1/V2/V3三个版本多播协议。

这三个版本的IGMP都支持“任意信源多播”;V3版本可以直接支持“指定信源多播”,而V1和V2两个版本则需要在IGMP指定信源多播映射技术支持下才能支持“指定信源多播”。

2 多播工作原理

2.1 v1版多播协议工作机制

v1版IGMP协议通过查询报文和响应报文来实现对多播组成员的管理。当一个多播网络中存在多个多播路由器时,因为所有的多播路由器都能从主机节点接收到IGMP成员发送过来的关系报告报文,所以,只需要指定一个路由器能发送IGMP查询报文就可以了,因此这个时候就需要有一个选举机制来选出其中某一个路由器作为IGMP查询器。

如图1所示,假设PC-B与PC-C想要接收到多播组信源为G1的多播数据,而PC-A想要收到多播组信源为G2的多播数据,那么主机加入多播组以及IGMP协议查询器路由器(RB)与主机构建成员组关系的基本过程应该是:

1)网络中的主机首先将主动向查询路由器发送成员关系报告报文用来申明它要加入的多播组,而不是被动等待IGMP协议查询路由器发来的IGMP查询报文;

2)IGMP查询路由器以目的地址为224.0.0.1周期性向本地网段内的所有路由器与主机发送IGMP查询报文;

3)本网段内主机和路由器收到查询报文之后,延时定时器先到时的主机或路由器会先以多播的方式向G1(查询器)发送IGMP成员关系报文报告自己属于多播组G1。因为是以多播形式发送的报告,所以本地网段中同属于此多播组的其他主机都能收到此报告报文,因此,其他同属于此多播组的主机或路由器将不再发送同样的报告报文,这时的IGMG查询路由器已经知道本地网段中有主机从属于G1多播组。这种机制称为成员关系报告抑制机制,这个机制有助于降低本地网段中的报文流量;

4)与此同时,属于多播组G2的其他主机或者路由器,仍将依据上述原理以多播方式向G2查询器发送报告报文,告知G2查询器本网段中有从属于G2多播组的成员。

5)通过上述的查询和报告后,IGMP路由器可以确认多播组G1和G2在本地网段中有相应的成员,随后多播路由协议如PIM生成任意源多播数据向多播组G1和G2进行多播数据发送;

2.2 v2版多播协议工作机制

与v1版IGMP协议相比,v2版IGMP协议改进了查询器选举机制,并定义了成员离开多播组机制。

1)多播协议查询路由器选举机制

在v1版的IGMP协议中,当某个网络上有多个多播路由器时,多播路由协议将直接指定其中某个路由器作为IGMP的查询器。但在第二版的IGMP协议中,多播路由协议不是直接指定某一台路由器作为查询器,而是会在这几个路由器之间实施一个选举机制,选出一个路由器作为查询器。选举过程是:

当启用v2版多播协议的所有路由器在开机初始化时,默认情况下都会认为自己是IGMP查询路由器,然后以目的地址为224.0.0.1的多播报文向本网段内的所有主机及路由器发送IGMP查询报文。本网络中其他路由器(或者主机)收到该查询报文后,会将路由器发来的查询报文的源IP地址跟自己的接收报文接口IP地址做比较,IP地址相对小的路由器将被选举成为IGMP查询路由器,其他路由器自动成为非查询路由器。而且,所有非查询路由器上都会启用一个计时器,用来记录“查询器”存在的时间,如果在计时器结束计时前收到了来自查询路由器的查询报文,则重置这个计时器,不然就认为原来选举出来的查询路由器失效不存在,并以此触发查询器的重新选举。

2)多播离组机制

在v1版的多播协议中,如果其中某一个主机要离开多播组时,这个主机是不会向多播路由器发出任何离组通告的,这种机制设定导致了多播路由器只能依据多播组路由器向成员主机发送查询报文的响应超时来判断成员离组。但在v2版的多播协议中,当某一台主机离开多播组时,这台主机将以目的IP地址为224.0.0.2向本地网段中的所有多播路由器发送离组报文,当多播组的查询器路由器收到这个离组通告报文后,会立即向这台主機声明要离开的多播组发送特定的多播查询报文,查询该多播组是否还有其他的成员,如果这个网络中这个多播组还有其他的多播成员主机,则会在收到这个特定的多播查询确认报文后,会在规定的响应时间内(查询路由器查询报文给出)向查询器路由器发送关系报告报文,告知查询路由器自己的存在。查询路由器收到这个关系报告报文后,会继续保持这个多播组的成员关系表,不然的话,查询路由器会认为这个网络中已经没有这个多播组成员,就不会再维护这个多播的成员关系表。

2.3 v3版多播协议的改进

v3版的IGMP相比v1版IGMP和v2版IGMP,在兼容和继承的基础上进一步加强了主机的控制能力,改进了查询路由器查询报文和主机报告报文的功能。

1)改进主机控制能力

v3版多播协议增加了针对多播源的过滤模式,方法就是当某台主机在加入某多播组G的同时,能够明确是接收(include)还是拒绝(exclude)来自某個特定多播源Sources的多播报文。

如图2所示,一个网络中存在Source 1(S1)和Source 2(S2)两个多播源,同时向多播组G发送多播报文。但是Pc B只想接收从Source1发往多播组G的信息,而不想接收从Source 2发往多播组G的信息。这时,如果这个网络中的主机和路由器之间运行的是v1和v2版的IGMP多播协议,那么Pc B将无法对来自不同多播源(Source1、Source2)的信息进行取舍,结果就造成不管Pc B是否需要,所有发往多播组G的多播信息都将被Pc B接收。但如果此时运行的是v3版的IGMP多播协议,Pc B就可以按照自己的需求,只接收来自Source1发往多播组G的多播信息(或者按照自己的需求拒绝接收来自Source2 的多播信息),这样,Pc B就可以按自己的需求接收自己想要的多播信息,以便节约线路和设备的资源。

2)增强查询路由器查询报文和主机报告报文功能

A.查询路由器的查询报文包含源地址

v1版IGMP协议的“普通组查询报文”,不包含源地址,也不包含组地址;

v2版IGMP协议的“特定组查询报文”,不包含源地址,但包含组地址;

v3版IGMP多播协议,在原有支持v1版和v2版的“普通组查询报文”及“特定组查询”的基础之上,还支持对特定源组的查询,所谓的“特定源组查询”就是既包含1个或多个源地址,还包含组地址;

B.主机的报告报文包含多个多播组的组记录

v3版多播协议主机报告报文中,目的地址为多播地址“224.0.0.22”,同时多播组的组记录可以包含一个或多个组记录。而在每个组记录中,包含有多播组地址和多播源地址列表。

3 小结三个版本IGMP协议的区别

3.1 IGMP V1:没有leave报文,主要依靠Timer计时器,来决定是否离开组。

3.2 IGMP V2:增加leave报文,明确了查询路由器的选举机制。

3.3 IGMP V3:增加SSM(Source Specific Multicast)功能。取消V1&V2版本中的响应抑制功能。

【参考文献】

[1]侯艳,徐宝海.《IGMP工作原理与安全技术》,《才智》,2010.10.25.

[2]王跃.《IGMP组播协议与应用》,《才智》,2010.3.15.