什么是IGMP? 为什么需要IGMP?

什么是IGMP? 为什么需要IGMP?

为什么需要IGMP?

IP组播通信的特点是报文从一个源发出,被转发到一组特定的接收者。但在组播通信模型中,发送者不关注接收者的位置信息,只是将数据发送到约定的目的组播地址。要使组播报文最终能够到达接收者,需要某种机制使连接接收者网段的组播路由器能够了解到该网段存在哪些组播接收者,同时保证接收者可以加入相应的组播组中。IGMP就是用来在接收者主机和与其所在网段直接相邻的组播路由器之间建立、维护组播组成员关系的协议。

IGMP在组播网络中的部署位置

IGMP应用场景有哪些?

IGMP运行在成员主机和与其直接相邻的组播路由器上,负责组播组成员关系的管理和维护。同时,为了将组播源的数据顺利转发到接收者,组播路由器之间需要运行组播路由协议PIM来建立转发路径。

IGMP典型应用组网图

IGMP是如何工作的?

到目前为止,IGMP有三个版本:

IGMPv1版本

IGMPv2版本

IGMPv3版本

IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组成员离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。

所有IGMP版本都支持ASM(Any-Source Multicast)模型。IGMPv3可以直接应用于SSM(Source-Specific Multicast)模型,而IGMPv1和IGMPv2则需要IGMP SSM Mapping技术的支持才可以应用于SSM模型。

IGMP三个版本的比较

表1-1 IGMP三个版本的比较

项目

IGMPv1

IGMPv2

IGMPv3

查询器选举方式

依靠组播路由协议PIM选举

同网段组播路由器之间竞争选举

同网段组播路由器之间竞争选举

普遍组查询报文

支持

支持

支持

成员报告报文

支持

支持

支持

特定组查询报文

不支持

支持

支持

成员离开报文

不支持

支持

没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达

特定源组查询报文

不支持

不支持

支持

指定组播源

不支持

不支持

支持

可识别报文协议版本

IGMPv1

IGMPv1、IGMPv2

IGMPv1、IGMPv2、IGMPv3

ASM模型

支持

支持

支持

SSM模型

需要IGMP SSM Mapping技术支持

需要IGMP SSM Mapping技术支持

支持

三个版本在演进过程中对协议报文的处理是向后兼容的,因此尽管各个版本的协议报文格式不同,但是运行IGMP高版本的路由器可以识别低版本的IGMP报文。例如v2版本的组播设备可以正确处理v1主机的加入,v3版本的组播设备可以正确处理v1和v2版本的主机加入。当组播设备收到低版本的主机的IGMP加入报文后会自动降低组播组的兼容版本到该主机对应的版本,并工作在该版本上。

工作在v2或v3版本的组播设备收到IGMPv1主机发送的Report报文时,会自动把该组播组的兼容模式设定为v1模式。在这种情况下,设备会忽略针对该组的IGMPv2 Leave报文。工作在v3版本的组播设备收到v2版本的Report报文时,会自动把该组播组的兼容模式设定为v2模式。在这种情况下,设备会忽略IGMPv3的BLOCK报文、IGMPv3的TO_IN报文以及IGMPv3的TO_EX报文的源列表,即抑制了IGMPv3对组播源的选择功能。通过手工配置把组播设备从低版本升到高版本时,如果有组播组存在,则这些组播组继续工作在低版本的兼容模式,直到所有低版本的主机退出该组播组。

IGMPv1工作机制

IGMPv1协议主要基于查询和响应机制完成组播组管理。当一个网段内有多个组播路由器时,由于它们都可以接收到主机发送的成员报告报文,因此只需要选取其中一台组播路由器发送查询报文就足够了,该组播路由器称为IGMP查询器(Querier)。在IGMPv1中,由组播路由协议PIM选举出唯一的组播信息转发者(Assert Winner或DR)作为IGMPv1的查询器,负责该网段的组成员关系查询。

如下图所示,组播网络中RouterA和RouterB连接主机网段,RouterA为IGMP查询器,在主机网段上有HostA、HostB、HostC三个接收者。HostA和HostB想要接收发往组播组G1的数据,HostC想要接收发往组播组G2的数据。

组播网络示意图

IGMPv1的工作机制可以分为普遍组查询和响应机制、新组成员加入机制和组成员离开机制三个方面。

普遍组查询和响应机制

通过普遍组查询和响应,IGMP查询器可以了解到该网段内哪些组播组存在成员。

IGMP查询和响应示意图

普遍组查询和响应过程如下:

IGMP查询器发送目的地址为224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;收到该查询报文的组成员启动定时器。

普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省情况下每隔60秒发送一次。HostA和HostB是组播组G1的成员,则在本地启动定时器Timer-G1。缺省情况下,定时器的范围为0~10秒之间的随机值。

第一个定时器超时的组成员发送针对该组的报告报文。

假设HostA上的Timer-G1首先超时,HostA向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB收到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。

IGMP查询器接收到HostA的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项,“*”代表任意组播源。网络中一旦有组播组G1的数据到达路由器,将向该网段转发。

新组成员加入机制

新组成员加入示意图

主机HostC加入组播组G2的过程如下:

主机HostC不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。

IGMP查询器接收到HostC的报告报文后,了解到本网段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。

组成员离开机制

IGMPv1没有专门定义离开组的报文。主机离开组播组后,便不会再对普遍组查询报文做出回应。

假设HostA想要退出组播组G1

HostA收到IGMP查询器发送的普遍组查询报文时,不再发送针对G1的报告报文。由于网段内还存在G1组成员HostB,HostB会向IGMP查询器发送针对G1的报告报文,因此IGMP查询器感知不到HostA的离开。

假设HostC想要退出组播组G2

HostC收到IGMP查询器发送的普遍组查询报文时,不再发送针对G2的报告报文。由于网段内不存在组G2的其他成员,IGMP查询器不会收到G2组成员的报告报文,则在一定时间(缺省值为130秒)后,删除G2所对应的组播转发表项。

IGMPv2工作机制

在工作机制上,与IGMPv1相比,IGMPv2增加了查询器选举和离开组机制。

组播网络中RouterA和RouterB连接主机网段,在主机网段上有HostA、HostB、HostC三个接收者。假设HostA和HostB想要接收发往组播组G1的数据,HostC想要接收发往组播组G2的数据。

组播网络示意图

查询器选举机制、离开组机制的过程如下。

查询器选举机制

IGMPv2使用独立的查询器选举机制,当共享网段上存在多个组播路由器时,IP地址最小的路由器成为查询器。

查询器选举示意图

在IGMPv2中,查询器的选举过程如下:

最初,所有运行IGMPv2的组播路由器(RouterA和RouterB)都认为自己是查询器,向本网段内的所有主机和组播路由器发送普遍组查询报文。

RouterA和RouterB在收到对方发送的普遍组查询报文后,将报文的源IP地址与自己的接口地址作比较。通过比较,IP地址最小的组播路由器将成为查询器,其他组播路由器成为非查询器(Non-Querier)。RouterA的接口地址小于RouterB,则RouterA当选为查询器,RouterB为非查询器。

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

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

离开组机制

离开组示意图

在IGMPv2中,主机HostA离开组播组G1的过程如下:

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

查询器收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。

该网段内还存在组G1的其他成员,这些成员(HostB)在收到查询器发送的特定组查询报文后,会立即发送针对组G1的报告报文。查询器收到针对组G1的报告报文后将继续维护该组成员关系。

如果该网段内不存在组G1的其他成员,查询器将不会收到针对组G1的报告报文。在Timer-Membership超时后,查询器将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达查询器时,查询器将不会向下游转发。

IGMPv3工作机制

在工作机制上,与IGMPv2相比,IGMPv3增加了主机对组播源的选择能力。

特定源组加入

IGMPv3的成员报告报文的目的地址为224.0.0.22(表示同一网段所有使能IGMPv3的路由器)。通过在报告报文中携带组记录,主机在加入组播组的同时,能够明确要求接收或不接收特定组播源发出的组播数据。网络中存在S1和S2两个组播源,均向组播组G发送组播数据,Host仅希望接收从组播源S1发往组播组G的信息。

特定源组的组播数据流路径

如果Host和组播路由器之间运行的是IGMPv1或IGMPv2,Host加入组播组G时无法对组播源进行选择,无论其是否需要,都会同时接收到来自组播源S1和S2的数据。如果采用IGMPv3,成员主机可以选择仅接收S1组播数据。

方法一:Host发送IGMPv3报告(G,INCLUDE,(S1)),仅接收源S1向组播组G发送的数据。

方法二:Host发送IGMPv3报告(G,EXCLUDE,(S2)),不接收指定源S2向组播组G发送的数据,从而仅有来自S1的组播数据才能传递到Host。

特定源组查询

当接收到组成员发送的改变组播组与源列表的对应关系的报告时(比如CHANGE_TO_INCLUDE_MODE、CHANGE_TO_EXCLUDE_MODE),IGMP查询器会发送特定源组查询报文。如果组成员希望接收其中任意一个源的组播数据,将反馈报告报文。IGMP查询器根据反馈的组成员报告更新该组对应的源列表。

相关推荐

DNFdps不见了怎么打开 dnfdps打开方法介绍
365bet网站

DNFdps不见了怎么打开 dnfdps打开方法介绍

📅 07-17 👁️ 3980
贝博手机app下载v6.49.74(综合)官方网站入口/网页版/苹果/安卓手机版下载
大疆DJI Goggles 2飞行眼镜单独开卖,售价4499元
beat365中国在线体育

大疆DJI Goggles 2飞行眼镜单独开卖,售价4499元

📅 07-04 👁️ 8469
粽子詳細做法,從準備餡料到燒粽子,一步一步教你做!今年端午節,自己動手燒粽子吧
三星i9208参数怎么样 三星i9208参数详情
365bet网站

三星i9208参数怎么样 三星i9208参数详情

📅 08-01 👁️ 9926
七彩虹官网
365bet网站

七彩虹官网

📅 07-20 👁️ 6806
竹笋为什么有尖
365买球官网入口

竹笋为什么有尖

📅 08-09 👁️ 5914
《王者荣耀》李小龙什么时候出 李小龙皮肤上线时间介绍
街头霸王系列下载
365bet网站

街头霸王系列下载

📅 07-20 👁️ 552