tcp 组播_华为组播理论知识详解(二)

二、IGMP协议简介

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

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

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

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

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

bd20cd5e35ea166c2c55a0df817e7fb3.png

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

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

1、IGMP版本简介

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

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

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

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

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

9fd18b33c5fae8d811b444f3270a211f.png

2、IGMPv1工作原理

2.1、IGMPv1报文介绍

IGMPv1包括两种类型的报文:

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

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

成员报告报文(Report):

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

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

fb2c9632aac2322f48624f076d310cb4.png

图1 IGMPv1报文格式

9e7dd40b7a7164ec2ae1e5f138f04967.png

2.2、IGMPv1工作机制

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

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

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

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

779c191f02321893f60968991e6347b5.png

图2 组播网络示意图

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

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

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

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

9b473ae727a5d2d1c663bfbbb3eb91e8.png

图3 IGMP查询和响应示意图

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

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的数据到达路由器,将向该网段转发。

2.2.2、IGMPv1新组成员加入机制

5398d430e2418351f66fb10f67088ac3.png

图4 新组成员加入示意图

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

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

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

2.2.3、IGMPv1组成员离开机制

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

假设HostA想要退出组播组G1

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

假设HostC想要退出组播组G2

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

3、IGMPv2与IGMPv1相比的变化

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

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

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

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

1、IGMPv2报文介绍

与IGMPv1相比,IGMPv2的变化如下:

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

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

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

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

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

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

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

d3e1d140cce8f95b4a4ac5a7790105cb.png

图1 IGMPv2报文格式

233cf7fba3a6baf2e8b62bdf7c9e1a01.png

2、IGMPv2工作机制

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

9e3ea286fa7eb32ddf4cd72eac9409c7.png

图2 组播网络示意图

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

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

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

2.1 、IGMPv2查询器选举机制

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

27cbcea7408f8070d9dc6bec5f20a5f4.png

图3 查询器选举示意图

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

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

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

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

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

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

2.2、IGMPv2离开组机制

3b5297f5adc6fea8d5db24209ec16e31.png

图4 离开组示意图

如上图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的组播数据到达查询器时,查询器将不会向下游转发。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值