华为组播理论知识详解(二)
首页 > HuaWei > 组播配置   作者:浙江思唯网络  2016年3月15日 12:28 星期二  字号:   评论:0 条
时间:2016-3-15 12:28   评论:0 条 

二、IGMP协议简介

IGMPInternet Group Management Protocol的简称,又被称为互联网组管理协议,是TCP/IP协议族中负责IPv4组播成员管理的协议。

IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。

IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。

IP组播通信的特点是报文从一个源发出,被转发到一组特定的接收者。但在组播通信模型中,发送者不关注接收者的位置信息,只是将数据发送到约定的目的组播地址。要使组播报文最终能够到达接收者,需要某种机制使连接接收者网段的组播路由器能够了解到该网段存在哪些组播接收者,同时保证接收者可以加入相应的组播组中。

IGMP就是用来在接收者主机和与其所在网段直接相邻的组播路由器之间建立、维护组播组成员关系的协议。

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


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

IGMP在组播网络中的部署位置如上图1所示。

1IGMP版本简介

到目前为止,IGMP有三个版本:IGMPv1版本(由RFC 1112定义)、IGMPv2版本(由RFC 2236定义)、IGMPv3版本(由RFC 3376定义)。

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

三个版本在演进过程中对协议报文的处理是向前兼容的,因此尽管各个版本的协议报文格式不同,但是运行IGMP高版本的路由器可以识别低版本的IGMP报文。

所有IGMP版本都支持ASMAny-Source Multicast)模型。IGMPv3可以直接应用于SSMSource-Specific Multicast)模型,而IGMPv1IGMPv2则需要IGMP SSM Mapping技术的支持才可以应用于SSM模型。

IGMP三个版本的比较如下表1所示。

IGMP三个版本的比较

项目

IGMPv1

IGMPv2

IGMPv3

查询器选举方式

依靠组播路由协议PIM选举

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

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

普遍组查询报文

支持

支持

支持

成员报告报文

支持

支持

支持

特定组查询报文

不支持

支持

支持

成员离开报文

不支持

支持

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

特定源组查询报文

不支持

不支持

支持

指定组播源

不支持

不支持

支持

可识别报文协议版本

IGMPv1

IGMPv1IGMPv2

IGMPv1IGMPv2IGMPv3

ASM模型

支持

支持

支持

SSM模型

需要IGMP SSM Mapping技术支持

需要IGMP SSM Mapping技术支持

支持

 

2IGMPv1工作原理

2.1IGMPv1报文介绍

IGMPv1包括两种类型的报文:

普遍组查询报文(General Query):

查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。

成员报告报文(Report):

主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。

IGMPv1报文的格式如下图1所示,其中各个字段的说明见下表1

IGMPv1报文格式.png

  1 IGMPv1报文格式

IGMPv1报文字段说明

字段

说明

Version

IGMP版本,值为1

Type

报文类型。

该字段有以下两种取值:

0x1:表示普遍组查询报文。

0x2:表示成员报告报文。

Unused

IGMPv1中,该字段在发送时被设为0,并在接收时被忽略。

Checksum

IGMP报文的校验和。

校验和是IGMP报文长度(即IP报文的整个有效负载)的16位检测,表示IGMP信息补码之和的补码。Checksum字段在进行校验计算时设为0。当发送报文时,必须计算校验和并插入到Checksum字段中去。当接收报文时,校验和必须在处理该报文之前进行检验。

Group Address

组播组地址

在普遍组查询报文中,该字段设为0;在成员报告报文中,该字段为成员加入的组播组地址。

 

2.2IGMPv1工作机制

IGMPv1协议主要基于查询和响应机制完成组播组管理。

当一个网段内有多个组播路由器时,由于它们都可以接收到主机发送的成员报告报文,因此只需要选取其中一台组播路由器发送查询报文就足够了,该组播路由器称为IGMP查询器(Querier

IGMPv1中,由组播路由协议PIM选举出唯一的组播信息转发者(Assert WinnerDR作为IGMPv1的查询器,负责该网段的组成员关系查询。

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

组播网络示意图.png

2 组播网络示意图

下面以上图2所示组网为例,介绍IGMPv1的工作机制。

如上图2所示,组播网络中RouterARouterB连接主机网段,RouterAIGMP查询器,在主机网段上有HostAHostBHostC三个接收者。HostAHostB想要接收发往组播组G1的数据,HostC想要接收发往组播组G2的数据。

 

2.2.1IGMPv1普遍组查询和响应机制

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

IGMP查询和响应示意图 .png

IGMP查询和响应示意图 

如上图3所示,普遍组查询和响应过程如下:

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

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

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

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

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


2.2.2IGMPv1新组成员加入机制

新组成员加入示意图 .png

新组成员加入示意图 

如上图4所示,主机HostC加入组播组G2的过程如下:

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

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

 

2.2.3IGMPv1组成员离开机制

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

假设HostA想要退出组播组G1

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

假设HostC想要退出组播组G2

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

3IGMPv2IGMPv1相比的变化

IGMPv2的工作机制与IGMPv1基本相同,最大的不同之处在于IGMPv2增加了离开组机制。

主机离开组播组时,会主动发送成员离开报文通知IGMP查询器;IGMP查询器收到成员离开报文后,会连续发送特定组查询报文,询问该组播组是否还存在组成员。

如果在一段时间内没有收到成员主机发送的报告报文,IGMP查询器将不再维护该组的组成员关系。

IGMPv2可以使IGMP查询器及时了解到网段内哪些组播组已不存在成员,从而及时更新组成员关系,减少网络中冗余的组播流量。

1IGMPv2报文介绍

IGMPv1相比,IGMPv2的变化如下:

除了普遍组查询报文和成员报告报文之外,IGMPv2新增了两种报文:

1.1、成员离开报文(Leave):

成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。

1.2、特定组查询报文(Group-Specific Query):

查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。

IGMPv2对普遍组查询报文格式也做了改进,添加了最大响应时间(Max Response Time)字段。此字段取值可以通过命令配置,用于控制成员对于查询报文的响应速度。

IGMPv2报文的格式如下图1所示,其中各个字段的说明见下表1

IGMPv2报文格式.png

IGMPv2报文格式 

IGMPv2报文字段说明

字段

说明

Type

报文类型。

该字段有以下四种取值:

0x11:表示查询报文。IGMPv2的查询报文包括普遍组查询报文和特定组查询报文两类。

0x12:表示IGMPv1成员报告报文。

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

0x17:表示成员离开报文。

Max Response Time

最大响应时间。

成员主机在收到IGMP查询器发送的普遍组查询报文后,需要在最大响应时间内做出回应。该字段仅在IGMP查询报文中有效。

Checksum

IGMP报文的校验和。

校验和是IGMP报文长度(即IP报文的整个有效负载)的16位检测,表示IGMP信息补码之和的补码。Checksum字段在进行校验计算时设为0。当发送报文时,必须计算校验和并插入到Checksum字段中去。当接收报文时,校验和必须在处理该报文之前进行检验。

Group Address

组播组地址。

在普遍组查询报文中,该字段设为0

在特定组查询报文中,该字段为要查询的组播组地址。

在成员报告报文和离开报文中,该字段为成员要加入或离开的组播组地址。

 

2IGMPv2工作机制

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

      组播网络示意图.png

2 组播网络示意图

下面以上图2所示组网为例,介绍IGMPv2的工作机制。

如上图2所示,组播网络中RouterARouterB连接主机网段,在主机网段上有HostAHostBHostC三个接收者。假设HostAHostB想要接收发往组播组G1的数据,HostC想要接收发往组播组G2的数据。

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

2.1 IGMPv2查询器选举机制

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

查询器选举示意图.png

查询器选举示意图 

如上图3所示,在IGMPv2中,查询器的选举过程如下:

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

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

如上图3所示,RouterA的接口地址小于RouterB,则RouterA当选为查询器,RouterB为非查询器。

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

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

 

2.2IGMPv2离开组机制

离开组示意图.png

离开组示意图 

如上图4所示,在IGMPv2中,主机HostA离开组播组G1的过程如下:

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

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

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

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

 


 您阅读这篇文章共花了: 
二维码加载中...
技术交流:欢迎在本文下方留言或加入QQ群:859273036 互相学习。     
本文地址:http://www.023wg.com/Multicast/211.html
版权声明:若无注明,本文皆为“Swiers思唯网络博客”原创,转载请保留文章出处。

返回顶部    首页   
版权所有:Swiers思唯网络博客    浙江思唯网络