IGMP

一、IGMP简述

IGMP 的全称为Internet Group Management Protocol(互联网组管理协议),用于最后一跳路由器与接收者之间建立和维护组播组成员关系.(记录了教师与学生在日常上课中的勾心斗角.查询者即教师,接收者即学生)

二、IGMP版本

2.1 IGMP的三个版本

IGMPv1版本(由RFC 1112定义)
IGMPv2版本(由RFC 2236定义)
IGMPv3版本(由RFC 3376定义)
IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组成员离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。(教师在日常中不断学习到新的策略,不断的进行更新补丁)
三个版本在演进过程中对协议报文的处理是向前兼容的,因此尽管各个版本的协议报文格式不同,但是运行IGMP高版本的路由器可以识别低版本的成员报告。即高版本兼容低版本。

2.2 IGMP版本之间的互操作性

以下以v1与v2举例.
1.v2主机与v1路由器
v1路由器把v2报告视为无效IGMP信息类型并忽略
2.v1主机与v2路由器
版本1的主机离组,并不发送离组报文 版本1忽略版本2的报告
3.混合版本
运行IGMPv1的路由器存在于子网中.必须强制性地为子网中的所有路由器配置IGMPv1来正常使用
所有IGMP版本都支持ASM(Any-Source Multicast)模型。IGMPv3可以直接应用于SSM(Source-Specific Multicast)模型,而IGMPv1和IGMPv2则需要SSM-Mapping技术的支持。

三、IGMPv1工作原理

3.1 IGMPv1报文格式

在这里插入图片描述
Type含义
成员关系查询 (0x11)
版本2成员报告(0x16)
版本1成员关系报告(0x12)
离组消息(0x17)

3.2 IGMPv1报文

IGMP报文封装在IP报文中,IGMPv1报文有两种类型:
通用组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
通用组查询会向本地网段内的所有主机与路由器(allsystem/224.0.0.1)发送IGMP 查询报文。
(学校上课前教师点名)
在这里插入图片描述
在IGMPv1中查询者的查询周期为60s.没有离组报文,悄悄离开.(这个教师有神经质,60s点一次名字.学生逃课不做记录,学生选择逃课)
在这里插入图片描述
成员报告报文(Report):主机向组播路由器发送的报告消息,用于申请加入某个组播组或者应答查询报文。
(上课前学生签到)
在这里插入图片描述

四、IGMPv1工作机制

IGMPv1协议主要基于查询和响应机制完成组播组管理。当一个网段内有多个组播路由器时,只需要其中一台发送查询报文就足够了,此时需要选举出一个IGMP查询器。在IGMPv1中,由组播路由协议PIM选举出唯一的组播信息转发者(Assert Winner或DR)作为IGMPv1的查询器,负责该网段的组成员关系查询。(教导主任通过资历较老选择的教师)

4.1 DR选举:

1.优先级大的
2.IP地址较大的
默认DR优先级均为1.即选择IP地址较大的.
如下图 DR优先级均为默认 R4 0/0/2口地址为10.1.2.4 R5 0/0/2口地址为10.1.2.5 则选举R5为查询者
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.2 通用组查询和响应

在这里插入图片描述
如上图所示,组播网络中RouterA和RouterB连接主机网段,RouterA为查询器,在主机网段上有HostA、HostB、HostC三个接收者。假设HostA和HostB想要接收发往组播组G1的数据,HostC想要接收发往组播组G2的数据。普遍组查询和响应过程如下:

  1. IGMP查询器(RouterA)发送普遍组查询报文,目的地址是224.0.0.1(表示同一网段内所有主机和路由器)。普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省每隔60秒发送一次。
  2. 网段内所有主机都接收到该查询报文,HostA和HostB是组播组G1成员,则在本地启动定时器Timer-G1。HostC是组播组G2的成员,则在本地启动定时器Timer-G2。定时器的范围为0~10秒之间的随机值。(10s之内回应点到)
  3. 第一个定时器超时的主机发送针对该组的报告报文。HostA上的Timer-G1首先超时,向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB侦听到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。报告抑制用于同一网段的同一组播组有多台主机的情况下,避免一个网段上形成报告风暴.(学生分为若干个小组,小组内只要有一个成员点到即可.)
  4. HostC上的Timer-G2超时,向该网段发送报告报文,目的地址为G2。
  5. 路由器接收到报告报文后,了解到本网段内存在组播组G1和G2的成员,则由组播路由协议生成(,G1)和(,G2)组播转发项,“”代表任意组播源。网络中一旦有组播组G1和G2的数据到达路由器,将向该网段转发。 (组播分发树本质为组播路由表.分为SPT(源树/最短路径树)和RPT(共享树).源树的形成会在后续PIM-sm中有详细说明)
    新组成员加入
    在这里插入图片描述
    如上图所示,假设在网段上新接入一个主机HostD,想加入组播组G3,但是侦听到网段中没有G3的组播数据。则不等待普遍组查询报文的到来,立即发送针对G3的报告报文。路由器收到报告报文后,了解到本网段内出现了组播组G3的成员,则生成组播转发项(
    ,G3)。网络中一旦有G3的数据到达路由器,将向该网段转发。

4.3 组成员离开

IGMPv1没有专门定义离开组的报文。当主机离开组播组时,将不会再对普遍组查询报文做出回应。假设HostC退出组播组G2,当收到普遍组查询报文时,HostC不再发送针对G2的报告报文。由于网段上不存在组G2的其他成员,路由器不会收到G2的报告报文,则在一定时间(130秒)后,删除G2所对应的组播转发项。
如果是HostA退出组播组G1,则路由器不会感知到他的离开,因为G1中还有成员HostB。
路由器在3倍的查询时间(180s)内没有收到某个组成员的report消息.才认为该组成员已经离组.
(学校上课时逃课.但同一小组还有组员,可以代为签到.)

五、IGMPv2工作原理

5.1 IGMPv2报文格式

在这里插入图片描述
v2在报文格式上添加了最大响应时间(Max Response Time)字段.此字段用于控制成员的响应速度,取值可以进行调整.默认为10s.

5.2 IGMPv2报文

相比于IGMPv1,除了普遍组查询报文和成员报告报文之外,IGMPv2新增了两种报文:
特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
下图为v2的通用组查询.特定组查询即multicast address为某个特定的查询组地址.在这里插入图片描述
成员离开报文(Leave):成员离开组播组时主动向路由器发送的报文,用于宣告自己离开了某个组播组。
RFC的规定离组的目的地是224.0.0.2,华为是特定组.
华为设备上任意的一个接收者离开组,都会产生离组报文! RFC规定只有上一个发送报告的设备离组.才发送离组报文
如图上一个发送报告的设备为PC1,但PC离组也发送了离组报文.并且发向了组播组地址239.1.1.1.
在这里插入图片描述

在这里插入图片描述

六、IGMPv2工作机制

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

6.1 查询器选举

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

  1. 所有IGMPv2路由器在初始时都认为自己是查询器,向本地网段内的所有主机和路由器发送普遍组查询报文。
  2. 其他路由器在收到该报文后,将报文的源IP地址与自己的接口地址作比较。通过比较,IP地址最小的路由器将成为查询器,其他路由器成为非查询器(Non-Querier)。如图1所示,RouterA的接口地址小于RouterB,则RouterA当选为查询器。
  3. 所有非查询器上都会启动一个定时器(即其他查询器存在时间定时器Other Querier Present Timer)。在该定时器超时前,如果收到了来自查询器的查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。默认为125s.

6.2 离开组机制

在这里插入图片描述
如上图所示,在IGMPv2中,主机HostC想离开组播组G2时:

  1. HostC向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G2的离开报文。(学生请假离课)
  2. 查询器收到离开报文,会发送针对组G2的特定组查询报文。发送间隔和发送次数可以配置。缺省每隔1秒发送一次,一共发送两次。同时启动组成员关系定时器Timer-Membership=发送间隔x发送次数。(教师点2次名后该学生确定离开)
  3. 网段内不存在其他组G2的成员,则路由器不会收到针对组G2的报告报文,会在Timer-Membership超时后,删除(*,G)表项中对应的下游接口。组G2的数据再到达路由器时,将不会再向该网段转发。
  4. 如果网段内还有组G2的其他成员,则这些成员在收到特定组查询报文

七、IGMPv3的工作原理

IGMPv3主要是为了配合SSM(Source-Specific Multicast)模型发展起来的,提供了在报文中携带组播源信息的能力,即能加入到指定源的组播组.

7.1 IGMPv3报文格式

在这里插入图片描述
在这里插入图片描述

7.2 IGMPv3报文

IGMPv3报文包含两大类:查询报文和报告报文。
相较IGMPv2,其变化为:查询报文中除了普遍组查询和特定组查询,新增了特定源组查询报文(Group-and-Source-Specific Query)。该报文由查询器向共享网段内特定组播组成员发送,用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
报告报文不仅通知路由器主机要加入某组播组,并且可以指定只接收哪些组播源发往该组的数据。IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2…)),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(S1、S2…)),表示接收除了组播源S1、S2……之外的组播源发给组G的数据,即S1、S2……在接收范围之外。
当组播组与组播源列表的对应关系发生了变化,在IGMPv3报告报文中存放于组记录(Group Record)字段,发送给查询器。组记录有6种类型,如表1所示。
在这里插入图片描述
在IGMPv3中一个成员报告报文可以携带多个组播组信息,而之前的版本一个成员报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。
IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。例如组225.1.1.1的成员想离开这个组,则会发送(225.1.1.1,TO_IN,(0))的报告报文。

7.3 IGMPv3工作机制

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

7.4 特定源组加入

IGMPv3的成员报告报文的目的地址为224.0.0.22(表示同一网段所有使能IGMPv3的路由器)。通过在报告报文中携带组记录,主机在加入组播组的同时,能够明确要求接收或不接收特定组播源发出的组播数据。如下图所示,网络中存在S1和S2两个组播源,均向组播组G发送组播数据,Host仅希望接收从组播源S1发往组播组G的信息。
在这里插入图片描述如果主机和路由器之间运行的是IGMPv1或IGMPv2,Host加入组播组G时无法对组播源进行选择,无论其是否需要,都会同时接收到来自组播源S1和S2的数据。如果采用IGMPv3,Host可以选择仅接收S1组播数据。
方法一:Host发送IGMPv3报告(G,IS_IN,(S1)),仅接收源S1向组播组G发送的数据。
方法二:Host发送IGMPv3报告(G,IS_EX,(S2)),不接收指定源S2向组播组G发送的数据,从而仅有来自S1的组播数据才能传递到Host。

7.5特定源组查询

当查询器接收到改变组播组与源列表的对应关系的报告时,如表1所示的后四种报告报文,会发送特定源组查询报文。如果组成员希望接收其中任意一个源的组播数据,将反馈报告报文。路由器根据反馈的组成员报告更新该组对应的源列表。

八、IGMP SSM Mapping

SSM(Source-Specific Multicast)称为特定源组播,要求路由器能了解成员主机加入组播组时所指定的组播源。如果成员主机上运行IGMPv3,可以在IGMPv3报告报文中直接指定组播源地址。但是某些情况下,用户主机只能运行IGMPv1或IGMPv2,为了使其也能够使用SSM服务,路由器上需要提供IGMP SSM Mapping功能。
SSM Mapping的机制是:通过在路由器上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(,G)信息转化为对应的(S,G)信息,以提供SSM组播服务。缺省情况下,SSM组地址范围为232.0.0.0~232.255.255.255。关于SSM组地址的详细介绍,请参见组播基础。
配置了SSM Mapping规则后,当路由器收到来自成员主机的IGMPv1或IGMPv2报告报文时,首先检查该报文中所携带的组播组地址G,然后根据检查结果的不同分别进行处理。
如果G在ASM(Any-Source Multicast)范围内,则只提供ASM服务。
如果G在SSM组地址范围内:
如果路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文。
如果路由器上有G对应的SSM Mapping规则,则依据规则将报告报文中所包含的(
,G)信息映射为(S,G)信息,提供SSM服务。

九、IGMP snooping和IGMP snooping proxy

9.1 IGMP snooping的概述

IGMP snooping解决组播报文在二层广播的问题。
运行在链路层,是二层以太网交换机上的组播约束机制,用于管理和控制组播组
通过监听主机发出的IGMP报文,建立组播MAC地址表.

9.2 IGMP Snooping 工作机制

当二层交换机收到主机和路由器之间传递的IGMP报文时,IGMP Snooping分析报文所带的信息
如果主机发出IGMP主机报告报文时,交换机将该主机加入到相应的组播表中
如果主机发出IGMP离开报文时,交换机将删除与该主机对应的组播表项
通过不断监听IGMP报文,交换机在二层建立和维护组播MAC地址表,交换机根据组播MAC地址表转发从路由器下发的组播报文.(在建立MAC地址表关系后,会被抑制在上下联接口和CPU内部接口中.不会向其他接口扩散.)

9.3 IGMP snooping proxy的概述

IGMP snooping proxy减少用户主机所在网段内的IGMP协议报文数量,运行于二层交换机中.

9.4 IGMP Snooping proxy的工作机制

使其能够代理上游三层设备向下游主机发送IGMP查询报文,同时代理下游主机来向上游三层设备发送成员关系报告报文.
在其上游设备看来,它相当于一台主机.在其下游设备看来,它相当于一台查询器.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值