zl程序教程

您现在的位置是:首页 >  工具

当前栏目

华为数通笔记-组播协议介绍之IGMP

笔记华为协议 介绍 组播 数通
2023-09-11 14:15:51 时间

组播网络需要基于多种组播协议才能建立转发路径:

  • 工作在成员端网络的主要是IGMPInternet Group Management Protocol,因特网组管理协议)协议

用于告知组播网络,组成员的位置与所加组播组。

  • 工作在组播转发网络的协议主要有PIMMSDPMBGP
    • PIMProtocol Independent Multicast,协议无关组播)协议主要作用是生成AS域内的组播分发树
    • MSDPMulticast Source Discovery Protocol,组播源发现协议)主要作用是帮助生成AS域间的组播分发树
    • MBGPMulticast BGP,组播BGP)主要作用是帮助跨域组播流进行RPF校验

 

1.IGMP

组播通信中,组播网络需要将组播数据发送给特定的组播组成员,因此组播网络需要知道组成员的位置与组成员所加的组播组。

通过IGMPInternet Group Management Protocol,因特网组管理协议),组成员可以将加组消息发送给组播网络,从而让组播网络感知组成员的位置所加组播组

本课程主要讲解IGMP的作用和基本原理,包括IGMPv1、IGMPv2和IGMPv3三个版本的原理与区别,和IGMP Snooping的工作机制、IGMP SSM Mapping工作机制、IGMP代理的工作机制。

1.组播网络的转发困境

IP组播通信的特点是报文从一个源发出,被转发到一组特定的组播组成员。在组播通信模型中,组播源不关注接收者的位置信息,组播数据转发需要依赖组播网络才能将数据发送至组播组成员。

组播数据在进行传递时,组播网络为了将组播数据转发至组播组成员,需要知道组播组成员的位置所加组播组

组播网络感知组播组成员有两种方法:

  • 手工静态配置:在组播路由器上静态指定连接组播组成员的接口,静态配置组成员加组信息。
    • 手工静态方式灵活性差,配置工作量大,但相对比较稳定,对于新上线的组成员能够快速建立组播转发通路。
  • 动态感知:通过IGMP协议通知组播网络,组播网络根据IGMP消息感知组播组成员所在接口,以及组成员加组信息。
    • 动态感知方式较为灵活,且配置简单,现网一般使用动态感知方式

当组播网络获得组成员位置与加组信息后,可以基于这些信息转发组播报文。

2.IGMP协议的概述

IGMPTCP/IP协议族中负责IPv4组播成员管理的协议,用来在接收者主机和与其直接相邻的组播路由器之间建立维护组播组成员关系

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

到目前位置,IGMP有三个版本:

  • IGMPv1
  • IGMPv2
  • IGMPv3

组播路由器与组成员间交互报文后会生成IGMP路由表项IGMP组表项

IGMP路由表项与IGMP组表项将帮助设备生成组播路由表项

最后一跳组播路由器(组播叶子路由器)上,组播路由表可以基于IGMP路由表项,IGMP组表项与组播协议路由表(PIM路由表)汇总后形成。

IGMP路由表项与IGMP组表项能为组播协议路由表提供组播组地址信息出接口信息

 

1.IGMPv1基本概念

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

查询和响应机制由两种报文实现:

  • 普遍组查询报文(General Query查询器向共享网络上所有主机和路由器发送的查询报文,用于查询哪些组播组存在成员
  • 成员关系报告报文(Report主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文

由于IGMP报文是组播报文,因此一个多路访问网络里只需要一个组播路由器发送查询报文即可,该组播路由器被称为IGMP查询器(Querier

IGMPv1报文格式

IGMPv1普遍组查询报文与成员关系报告报文均为组播报文目的地址为224.0.0.1

IGMPv1普遍组查询报文与成员关系报告报文格式类似,其中最主要的是Version,Type,Group Address这三个字段:

普遍组查询和响应机制

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

图3 IGMP查询和响应示意图

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

  1. IGMP查询器发送目的地址为224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;收到该查询报文的组成员启动定时器。
    普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省情况下每隔60秒发送一次。HostA和HostB是组播组G1的成员,则在本地启动定时器Timer-G1。缺省情况下,定时器的范围为0~10秒之间的随机值。
  2. 第一个定时器超时的组成员发送针对该组的报告报文。
    假设HostA上的Timer-G1首先超时,HostA向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB收到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。
  3. IGMP查询器接收到HostA的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项,“*”代表任意组播源。网络中一旦有组播组G1的数据到达路由器,将向该网段转发。

 

IGMPv1查询器选举机制(维护组成员关系)

普遍组查询是组播报文,因此同一网段内只需要一台查询器即可查询所有组成员的加组信息。

IGMPv1没有基于IGMP的查询器选举机制,所以需要依赖组播路由协议(PIM)进行IGMP查询器选举。IGMPv1将组播路由协议(PIM)选举出唯一的组播信息转发者(Assert WinnerDR)作为IGMPv1的查询器,负责该网段的组成员关系查询。

查询器和非查询器均能收到成员关系报告(目的地址224.0.0.1因此均能形成IGMP路由表与IGMP组表项。

 

IGMPv1组成员离组机制

IGMPv1没有专门定义离开组消息,当组播组成员离开组播组时,将不会再对普遍组查询报文做出回应。

当网段内不存在特定组的组成员,IGMP查询器不会收到特定组成员的报告报文,则在一定时间(缺省值为130s)后,删除特定组所对应的组播转发表项。

新组成员加入机制

图4 新组成员加入示意图

在终端上通过点击播直播视频,PC便会向查询器发送成员报告报文加入组播组,组播组的地址为这个直播所使用的组播地址(组播源发送流量的目的地址)

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

  • 主机HostC不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。
  • IGMP查询器接收到HostC的报告报文后,了解到本网段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。

2.IGMPv2介绍

IGMPv1在离组机制与查询器选举机制上有一定缺陷:

  • IGMPv1离组使用超时机制,组成员只能静默离组。在未超时的时间内,组播流量依然会被组播路由器转发
  • IGMPv1查询器选举必须要依赖PIM协议,导致查询器选举不够灵活。

IGMPv2改善了IGMPv1的缺陷:

  • IGMPv2组成员加组机制与IGMPv1基本相同
  • IGMPv2增加了离开组机制
  • IGMPv2增加了查询器选举机制

IGMPv2能与IGMPv1兼容。

IGMPv2报文格式

为了改善组成员离开机制,IGMPv2新增了两种报文:

  • 成员离开报文(Leave成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。成员离开报文目的地址为224.0.0.2

(IGMPv1普遍组查询报文与成员关系报告报文均为组播报文,目的地址为224.0.0.1)

  • 特定组查询报文(Group-Specific Query:查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。特定组查询报文目的地址为所查询组播组的组地址

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

IGMPv2报文格式如下:

IGMPv2报文各字段说明:

  • Type
    • 报文类型。该字段有以下四种取值:
    • 0x11:表示查询报文。IGMPv2的查询报文包括普遍组查询报文和特定组查询报文两类。
    • 0x12:表示IGMPv1成员关系报告报文。
    • 0x16:表示IGMPv2成员关系报告报文。
    • 0x17:表示成员离开报文。
  • Max Response Time:表示主机响应查询返回报告的最大时间。
    • 对于普遍组查询,最大响应时间默认为10
    • 对于特定组查询,最大响应时间默认为1秒。
  • Group Address
    • 普遍组查询报文中,组地址设置为0。
    • 特定组查询报文中,组地址为需要查询的组地址。
    • 在成员关系报告或离开组的消息中,组地址为需要报告或离开的组地址。

IGMPv2查询器选举机制

IGMPv2组成员加组机制与IGMPv1一致,不再赘述。

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

 

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

IGMPv2组成员离开机制

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

  • 查询器收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。
  • 如果该网段内还存在组G1的其他成员,这些成员在收到查询器发送的特定组查询报文后,会立即发送针对组G1的报告报文。查询器收到针对组G1的报告报文后将继续维护该组成员关系。
  • 如果该网段内不存在组G1的其他成员,查询器将不会收到针对组G1的报告报文。Timer-Membership超时后,查询器将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达查询器时,查询器将不会向下游转发。

新组成员加入机制

图4 新组成员加入示意图

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

  1. 主机HostC不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。
  2. IGMP查询器接收到HostC的报告报文后,了解到本网段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。

3.IGMPv3介绍

出于安全考虑,组播组成员可以只选择接收从特定组播源发来的组播数据。组成员需要告知组播网络,接收来自哪些特定组播源的组播流量。

IGMPv1IGMPv2的报文中均无法携带组播源的信息,因此无法配合SSM使用(可使用SSM Mapping功能解决这个问题)。

IGMPv3主要是为了配合SSM(Source-Specific Multicast)模型发展起来的,提供了在报文中携带组播源信息的能力,即主机可以对组播源进行选择。

IGMPv3大部分工作机制与IGMPv2类似:

  • 查询器选举机制一致:IP地址小的为查询器。
  • 使用普遍组查询报文查询组成员加组信息。
  • 使用特定组查询报文查询特定组播的成员存活情况

IGMPv3需要支持上报组播源信息,与IGMPv2相比IGMPv3的变化如下:

  • IGMPv3查询报文除了包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文(Group-and-Source-Specific Query)。
  • IGMPv3成员关系报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。
  • 由于同个组播组的不同成员可能希望接收来自不同源的组播,因此IGMPv3无需成员关系报告报文抑制机制。
  • IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。

IGMPv3报文格式

查询报文

IGMPv3的查询报文共有三类:

  • 普遍组查询报文(General Query。该报文作用与IGMPv1,IGMPv2中的普遍组查询报文作用一致。
  • 特定组查询报文(Group-Specific Query。该报文作用与IGMPv2中的特定组查询报文作用一致。
  • 特定源组查询报文(Group-and-Source-Specific Query。该报文用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。

IGMPv3查询报文格式如下:

IGMPv3查询报文重要字段说明:

  • Type:报文类型,取值为0x11
  • Max Response Code:最大响应时间。成员主机在收到IGMP查询器发送的普遍组查询报文后,需要在最大响应时间内做出回应。
  • Group Address组播组地址。在普遍组查询报文中,该字段设为0;在特定组查询报文和特定源组查询报文中,该字段为要查询的组播组地址
  • Number of Sources:报文中包含的组播源的数量。对于普遍组查询报文和特定组查询报文,该字段为0;对于特定源组查询报文,该字段非0。此参数的大小受到所在网络MTU大小的限制。
  • Source Address:组播源地址,其数量受到Number of Sources字段值大小的限制。

成员关系报告报文

IGMPv3成员关系报告报文除了通告组成员的加组信息外,还能通告组成员希望接收的组播源信息。通告组播源主要有两种模式:

  • INCLUDE:希望接收来自特定组播源的组播流量
  • EXCLUDE:希望过滤来自特定组播源的组播流量

成员关系报告报文中的组播组信息和组播源信息的关系会记录在组记录(Group Record)字段,发送给IGMP查询器。IGMPv3成员关系报告报文的目的地址为224.0.0.22,报文格式如下:

在IGMPv3中一个成员关系报告报文可以携带多个组播组信息,而之前的版本一个成员关系报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。

IGMPv3成员关系报告报文重要字段说明:

  • Type:报文类型,取值为0x22
  • Number of Group Records:报文中包含的组记录的数量。
  • Group Record:组记录。

Group Record重要字段说明:

Record Type:组记录的类型。共分为三大类。

  • 当前状态报告。用于对查询报文进行响应,通告自己目前的状态,共两种:一种是MODE_IS_INCLUDE,表示接收源地址列表包含的源发往该组的组播数据。如果指定源地址列表为空,该报文无效;另一种是MODE_IS_EXCLUDE,表示不接收源地址列表包含的源发往该组的组播数据。
  • 过滤模式改变报告。当组和源的关系在INCLUDEEXCLUDE之间切换时,会通告过滤模式发生变化,共两种:一种是CHANGE_TO_INCLUDE_MODE,表示过滤模式由EXCLUDE转换到INCLUDE,接收源地址列表包含的新组播源发往该组播组的数据。如果指定源地址列表为空,主机将离开组播组;另一种是CHANGE_TO_EXCLUDE_MODE,表示过滤模式由INCLUDE转换到EXCLUDE,拒绝源地址列表包含的新组播源发往该组的组播数据。
  • 源列表改变报告。当指定源发生改变时,会通告源列表发生变化,共两种:一种是ALLOW_NEW_SOURCES,表示在现有的基础上,需要接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则向现有源列表中添加这些组播源;如果当前对应关系为EXCLUDE,则从现有阻塞源列表中删除这些组播源;另一种是BLOCK_OLD_SOURCES,表示在现有的基础上,不再接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则从现有源列表中删除这些组播源;如果当前对应关系为EXCLUDE,则向现有源列表中添加这些组播源。

Number of Sources:本记录中包含的源地址数量。

Multicast Address:组播组地址。

Sources Address:组播源地址。

IGMPv3普遍组查询

  • IGMPv3的成员关系报告报文能够携带组播源信息(想要接收来自哪些组播源的数据)
  • IGMPv3成员关系报告报文没有成员关系报告报文抑制机制

 

IGMPv3组成员离组机制

IGMPv3没有专门的成员离开报文,成员离开需要借助组成员关系报告实现。

IGMP查询器在收到改变源组对应关系的成员关系报告后,会发送特定源组查询报文,确认是否还有组成员存在。

改变源组关系的成员关系报告报文很多,比如:设备原来接收来自S1的组播数据,那么通过发布(G1EXCLUDES1)报文或(G1CHANGE_TO_EXCLUDE_MODES1)报文都可以改变源组关系 

特定源组加入

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

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

如果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。

IGMP各版本间的差异

机制

IGMPv1

IGMPv2

IGMPv3

查询器选举

依靠其他协议(PIM)

自己选举

自己选举

成员离开方式

静默离开(超时130s)

主动离开(离开报文)

主动离开(成员关系报文)

特定组查询

不支持

支持

支持

指定源、组

不支持

不支持

支持

版本兼容性

IGMPv1

IGMPv1、IGMPv2

 

 

4.IGMP特性介绍

IGMP Snooping介绍

当组播数据从最后一跳路由器发往组播组成员时,往往会经过交换机。由于组播数据的目的MAC地址是组播MAC地址,默认情况下交换机将泛洪此类数据帧,有可能导致不同组的组播流量会被别组的成员接收。

IGMP Snooping功能可以控制组播流量在以太网的泛洪范围,避免不同组的组播流量被别组成员接收。

当Router将组播报文转发至Switch以后,Switch负责将组播报文转发给组播用户。由于组播报文的目的地址为组播组地址,在二层设备上是学习不到这一类MAC表项的,因此组播报文就会在所有接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽,而且影响了网络信息安全。

IGMP Snooping有效地解决了这个问题。配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项,控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。

IGMP Snooping可以实现组播数据在数据链路层的转发和控制。

当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时,IGMP Snooping分析报文携带的信息,根据这些信息建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发。

IGMP Snooping工作原理

二层组播转发表项中存在两类接口:

  • 路由器端口(Router Port:二层组播设备上朝向三层组播设备(DRIGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。
  • 成员端口(Member Port:又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文。

路由器端口生成过程:

  • 由协议生成的路由器端口叫做动态路由器端口。收到源地址不为0.0.0.0IGMP普遍组查询报文或PIM Hello报文(三层组播设备的PIM接口向外发送的用于发现并维持邻居关系的报文)的接口都将被视为动态路由器端口。
  • 手工配置的路由器端口叫做静态路由器端口。

成员端口生成过程:

  • 由协议生成的成员端口叫做动态成员端口。收到IGMP Report报文的接口,二层组播设备会将其标识为动态成员端口。
  • 手工配置的成员端口叫做静态成员端口。

IGMP Snooping设备通过监听IGMP报文,形成二层组播转发表,并决定接口类型,具体过程如下:

路由器端口形成后会启动老化计时器(默认180s,当路由器端口收到新的普遍组查询后刷新该计时器。

成员端口形成后会启动老化计时器(默认180s,当成员端口收到新的成员关系报告报文后刷新该计时器。

IGMP Snooping不再使用成员关系报告报文抑制机制

维护转发表项

  • 由于IGMP Snooping需要监听IGMP报文才能决定端口角色,进而指导转发,所以所有组成员都需要发送IGMP组成员关系报告报文。
  • IGMP Snooping设备收到成员关系报告报文后,只将成员关系报告报文从路由器接口发送出去,从而避免其余组成员收到成员关系报告报文,不触发成员关系报告报文抑制机制。

IGMP Snooping设备通过监听IGMP离开报文,IGMP成员关系报告报文决定特定端口是否还需要发送特定组播,具体过程如下:

收到IGMP离开报文后,成员端口的老化定时器 = 健壮系数(默认2x 特定组查询间隔(默认1s

IGMP SSM Mapping介绍

现网中存在部分只能运行IGMPv1与IGMPv2的老旧终端,在部署SSM模式的组播时,由于IGMPv1与IGMPv2报文中无法携带组播源信息,因此无法使用SSM模式的组播网络。

IGMP SSM Mapping通过静态的将组播源与组播组进行绑定,使得IGMPv1IGMPv2的组成员也能接入SSM组播网络。

无论使用IGMPv1,IGMPv2或IGMPv3加入SSM组播组,SSM组播组的地址依然是232.0.0.0~232.255.255.255。

IGMP SSM Mapping工作原理

IGMP查询器上静态配置SSM地址的映射规则,将IGMPv1IGMPv2成员关系报告中的组信息映射为源组信息

IGMP SSM Mapping工作原理如下:

配置了SSM Mapping规则后,当IGMP查询器收到来自成员主机的IGMPv1IGMPv2报告报文时,首先检查该报文中所携带的组播组地址G,然后根据检查结果的不同分别进行处理。

  • 如果GASMAny-Source Multicast)范围内,则只提供ASM服务。
  • 如果GSSM组地址范围内(缺省情况下为232.0.0.0232.255.255.255):
    • 如果路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文。
    • 如果路由器上有G对应的SSM Mapping规则,则依据规则将报告报文中所包含的(*, G)信息映射为(G, INCLUDE, (S1, S2...))信息,提供SSM服务。

IGMP SSM Mapping不处理IGMPv3的报告报文。为了保证同一网段运行任意版本IGMP的主机都能得到SSM服务,需要在与成员主机所在网段相连的组播路由器接口上运行IGMPv3

IGMP代理介绍

IGMP Proxy

现网中可能存在一台IGMP查询器需要管理大量组成员的情况,大量成员主机频繁加入/离开组播组时,会产生大量的IGMP成员关系报告/离开报文,从而给IGMP查询器带来较大的处理压力。

通过IGMP Proxy功能可减少IGMP查询器接收IGMP成员关系报告/离开报文的数量,减轻IGMP查询器压力。

IGMP Proxy通常被部署IGMP查询器和成员主机之间的三层设备上

为了缓解IGMP查询器压力,IGMP Proxy设备将成员关系报告/离开报文汇聚后统一上送给IGMP查询器。

IGMP Proxy设备也可以代理IGMP查询器向成员主机发送查询报文,维护组成员关系,基于组成员关系进行组播转发。

为了实现以上功能,IGMP Proxy定义了两类接口:

  • 主机接口(Host Interface)IGMP Proxy设备上配置IGMP Proxy功能的接口,该接口一般面向IGMP查询器
  • 路由器接口(Router Interface)IGMP Proxy设备上配置IGMP功能的接口,该接口一般面向组成员

IGMP Proxy工作机制 成员加组

IGMP Proxy减少成员关系报告报文的工作机制如下:

  • 路由器接口作为IGMP接口,对下呈现为IGMP查询器,发送查询报文,处理成员关系报告报文,形成IGMP表项,并将成员关系报告从主机接口发送给上游的IGMP查询器
  • 当新用户加入同一个组播组时,IGMP Proxy设备不会再向IGMP查询器反馈成员关系报告报文,因此减少了成员关系报告报文数量。

IGMP代理设备收到某组播组的报告报文后,会在IGMP组表项中查找该组播组:

  • 如果没有找到相应的组播组,IGMP代理设备会向接入设备发送针对该组播组的报告报文,并在组播转发表中添加该组播组;
  • 如果找到相应的组播组,IGMP代理设备就不需要向接入设备发送报告报文

IGMPv1/IGMPv2/IGMPv3成员加组机制不再赘述

IGMP Proxy工作机制 成员离组

  • GMP Proxy减少离组报文的工作机制如下:
    • 当组成员离开时,IGMP Proxy通过IGMP离组机制确定是否有特定组播组的组成员,当确定已经没有组成员后才发送离开报文给上游IGMP查询器。

  • IGMP代理设备收到某组播组G1的离开报文后,会向接收到该离开报文的接口发送一个特定组查询报文,检查该接口下是否还存在组播组G1的其他成员:
    • 如果没有其他成员,在组播转发表中将该接口删除,然后判断组播组G1是否还有其他接口。
      • 如果没有,IGMP代理设备再会向接入设备发送针对该组播组的离开报文;
      • 如果有,IGMP代理设备不向接入设备发送针对该组播组的离开报文;
    • 如果有其他成员,IGMP代理设备会继续向该接口转发组播数据。
  • IGMPv1/IGMPv2/IGMPv3成员离组机制不再赘述。