一个主机可以属于多个组播组_华为组播理论知识详解(三)

4、IGMPv3与IGMPv2相比的变化

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

4.1、IGMPv3报文介绍

与IGMPv2相比,IGMPv3报文的变化如下:

IGMPv3报文包含两大类:

查询报文和成员报告报文。

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

查询报文中不仅包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文(Group-and-Source-Specific Query)

该报文由查询器向共享网段内特定组播组成员发送,用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。

成员报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。

IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2...)),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(S1、S2...)),表示接收除了组播源S1、S2……之外的组播源发给组G的数据。

当组播组与组播源列表的对应关系发生了变化,IGMPv3报告报文会将该关系变化存放于组记录(Group Record)字段,发送给IGMP查询器。

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

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

adc1e172c2c2ee0dffc17abd749ebb6b.png

图1 IGMPv3查询报文格式

2a65ddfeb82842dbe0c221bfc75e4943.png

IGMPv3成员报告报文的格式如下图2所示,其中各个字段的说明见下表2。

4797554ba1604502f9d8970442e95df8.png

图2 IGMPv3成员报告报文格式

9f51149f2144dc9866d2f0d5facd6d1b.png
8f492793b882c20880b8ddc02e1e93df.png

图3 Group Record字段格式

30b7317b6f24b731e90244c4071c5e54.png
c61f2b3c9bca0597f96a7a67b26b4bef.png

4.2、IGMPv3工作机制

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

4.2.1 、IGMPv3特定源组加入

IGMPv3的成员报告报文的目的地址为224.0.0.22(表示同一网段所有使能IGMPv3的路由器)。通过在报告报文中携带组记录,主机在加入组播组的同时,能够明确要求接收或不接收特定组播源发出的组播数据。

07b59aee0ecf5a71ae1a3afd4b5bc536.png

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

如上图4所示,网络中存在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。

4.2.2、IGMPv3特定源组查询

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

5、IGMP SSM Mapping

SSM(Source-Specific Multicast)称为指定源组播,要求路由器能了解成员主机加入组播组时所指定的组播源。

如果成员主机上运行IGMPv3,可以在IGMPv3报告报文中直接指定组播源地址。

但是某些情况下,成员主机只能运行IGMPv1或IGMPv2,为了使其也能够使用SSM服务,路由器上需要提供IGMP SSM Mapping功能。

IGMP SSM Mapping的机制是:

通过在路由器上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(*, G)信息转化为对应的(G, INCLUDE, (S1, S2...))信息,以提供SSM组播服务。

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

如果G在ASM(Any-Source Multicast,任意源组播)范围内,则只提供ASM服务。

如果G在SSM组地址范围内(缺省情况下为232.0.0.0~232.255.255.255):

如果路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文。

如果路由器上有G对应的SSM Mapping规则,则依据规则将报告报文中所包含的(*, G)信息映射为(G, INCLUDE, (S1, S2...))信息,提供SSM服务。

74e140b462fc0930b6bef2bb9d3e6983.png

图1 IGMP SSM Mapping组网图

如上图1所示,SSM网络中HostA运行IGMPv3、HostB运行IGMPv2、HostC运行IGMPv1。HostB和HostC无法升级到IGMPv3,如果要为该网段中的所有主机提供SSM服务,需要在IGMP查询器(Router)上使能IGMP SSM Mapping并配置相应的映射规则。

假如在Router上配置如下映射关系:

7d69a0a6e79339a2f5cbee47b9687b90.png

经过映射后,Router收到HostB和HostC的成员报告报文时,首先判断报文携带的组地址是否在SSM范围内,发现在SSM范围内,则根据配置的映射规则生成如下所示的组播表项。如果一个组地址映射了多个源,则生成多个(S, G)表项。

0f8acf7ef878c7462039ce1f8fb72669.png

在映射过程中,一个组播组地址只要能在规则中匹配到,都会生成一条相应的表项。因此232.1.1.1有四条表项,232.1.2.2有三条表项。

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

6、IGMP典型应用举例

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

4f8869077154dd9fb3ed8ad3f95f9369.png

图1 IGMP典型应用组网图

上图1所示为IGMP的典型应用组网图。

在实际应用中,可能有如下几种方案。

01a661780c63cf9a1cc24ed7712098b9.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值