IGMP 简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mantis_1984/article/details/83178968

IGMP 简介

IGMP是 Internet Group Management Protocol(互联网组管理协议)的简称。它是 TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在 IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系.

IGMP 的版本

到目前为止, IGMP 有三个版本:

  • IGMPv1(由 RFC 1112 定义)
  • IGMPv2(由 RFC 2236 定义)
  • IGMPv3(由 RFC 3376 定义)

所有版本的 IGMP都支持ASM(Any-Source Multicast,任意信源组播)模型; IGMPv3 可以直接应用于 SSM(Source-Specific Multicast,指定信源组播)模型,而IGMPv1 和** IGMPv2** 则需要在IGMP SSM Mapping 技术的支持下才能应用于 SSM 模型。

IGMPv1 工作机制

IGMPv1主要基于查询和响应机制来完成对组播组成员的管理。
当一个网段内有多台组播路由器时,由于它们都能从主机那里收到 IGMP 成员关系报告报文(Membership Report Message,此只需要其中一台路由器发送 IGMP 查询报文(Query Message)就足够了。这就需要有一个查询器(Querier)的选举机制来确定由哪台路由器作为 IGMP查询器。
对于 IGMPv1 来说,由组播路由协议(如 PIM)选举出唯一的组播信息转发者 DR(Designated Router,指定路由器)作为 IGMP 查询器。
IGMP查询响应示意图
如图所示,假设Host B与Host C想要收到发往组播组G1 的组播数据,而Host A想要收到发往
组播组G2 的组播数据,那么主机加入组播组以及IGMP查询器(Router B)维护组播组成员关系的
基本过程如下:

  • (1) 主机会主动向其要加入的组播组发送 IGMP成员关系报告报文以声明加入,而不必等待IGMP
    查询器发来的 IGMP 查询报文;
  • (2) IGMP 查询器周期性地以组播方式向本地网段内的所有主机与路由器发送 IGMP 查询报文(目
    的地址为 224.0.0.1);
  • (3) 在收到该查询报文后,关注 G1 的 Host B 与 Host C 其中之一(这取决于谁的延迟定时器先超时)——譬如 Host B 会首先以组播方式向 G1 发送 IGMP 成员关系报告报文,以宣告其属于G1。由于本地网段中的所有主机和路由器都能收到 Host B 发往 G1 的报告报文,因此当 Host C 收到该报告报文后,将不再发送同样针对 G1 的报告报文,因为 IGMP 路由器(Router A 和 Router B)已知道本地网段中有对 G1 感兴趣的主机了。这个机制称为主机上的 IGMP 成员关系报告抑制机制,该机制有助于减少本地网段的信息流量;
  • (4) 与此同时,由于 Host A 关注的是 G2,所以它仍将以组播方式向 G2 发送报告报文,以宣告其属于 G2;
  • (5) 经过以上的查询和响应过程, IGMP 路由器了解到本地网段中有 G1 和 G2 的成员,于是由组播路由协议(如 PIM)生成(*, G1)和(*, G2)组播转发项作为组播数据的转发依据,其
    中的“*”代表任意组播源;
  • (6) 当由组播源发往 G1 或 G2 的组播数据经过组播路由到达 IGMP 路由器时, 由于 IGMP 路由器上存在(*, G1)和(*, G2)组播转发项,于是将该组播数据转发到本地网段,接收者主机便能收到该组播数据了。

IGMPv1 没有专门定义离开组播组的报文。当运行 IGMPv1 的主机离开某组播组时,将不会向其要离开的组播组发送报告报文。当网段中不再存在该组播组的成员后, IGMP 路由器将收不到任何发往该组播组的报告报文,于是 IGMP 路由器在一段时间之后便删除该组播组所对应的组播转发项。

IGMPv2的改进

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

  1. 查询器选举机制

在 IGMPv1 中,当某共享网段上存在多个组播路由器时,由组播路由协议(如 PIM)选举的指定路由器充当查询器。
在 IGMPv2 中,增加了独立的查询器选举机制,其选举过程如下:

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

在 IGMPv1 中,主机离开组播组时不会向组播路由器发出任何通知,导致组播路由器只能依靠组播组成员查询的响应超时来获知组播组成员的离开。
而在 IGMPv2 中,当一个主机离开某组播组时:

  • (1) 该主机向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送离开组(Leave Group)报文;
  • (2) 当 查 询 器 收 到 该 报 文 后 , 向 该 主 机 所 声 明 要 离 开 的 那 个 组 播 组 发 送 特 定 组 查 询(Group-Specific Query)报文(目的地址字段和组地址字段均填充为所要查询的组播组地
    址);
  • (3) 如果该网段内还有该组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间(Max Response Time)内发送成员关系报告报文;
  • (4) 如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报文,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该网段内已无该组播组的成员,于是不再维护这个组播组的成员关系。

IGMPv3的改进

IGMPv3 在兼容和继承 IGMPv1 和 IGMPv2 的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。

  1. 主机控制能力的增强

IGMPv3 增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),使主机在加入某组播组 G 的同时,能够明确要求接收或拒绝来自某特定组播源 S 的组播信息。当主机加入组播组时:

  • 若要求只接收来自指定组播源如 S1、 S2、……的组播信息,则其报告报文中可以标记为INCLUDE Sources(S1, S2,……);
  • 若拒绝接收来自指定组播源如 S1、 S2、……的组播信息,则其报告报文中可以标记为EXCLUDE Sources(S1, S2,……)。

如下图所示,网络中存在Source 1(S1)和Source 2(S2)两个组播源,均向组播组G发送组播报文。 Host B仅对从Source 1 发往G的信息感兴趣,而对来自Source 2 的信息没有兴趣。
指定源组的组播流路径
如果主机与路由器之间运行的是 IGMPv1 或 IGMPv2, Host B 加入组播组 G 时无法对组播源进行选择,因此无论 Host B 是否需要,来自 Source 1 和 Source 2 的组播信息都将传递给 Host B。
当主机与路由器之间运行了 IGMPv3 之后, Host B 就可以要求只接收来自 Source 1、发往 G 的组播信息(S1, G),或要求拒绝来自 Source 2、发往 G 的组播信息(S2, G),这样就只有来自Source 1 的组播信息才能传递给 Host B 了。

  1. 查询和报告报文功能的增强

(1) 携带源地址的查询报文
IGMPv3 不仅支持 IGMPv1 的普遍组查询和 IGMPv2 的特定组查询,而且还增加了对特定源组查询的支持:

  • 普遍组查询报文中,既不携带组地址,也不携带源地址;
  • 特定组查询报文中,携带组地址,但不携带源地址;
  • 特定源组查询报文中,既携带组地址,还携带一个或多个源地址。

(2) 包含多组记录的报告报文
IGMPv3 报告报文的目的地址为 224.0.0.22,可以携带一个或多个组记录。在每个组记录中,包含有组播组地址和组播源地址列表。组记录可以分为多种类型,如下:

  • IS_IN:表示组播组与组播源列表之间的过滤模式为INCLUDE,即只接收从指定组播源列表发往该组播组的组播数据。
  • IS_EX:表示组播组与组播源列表之间的过滤模式为 EXCLUDE,即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。
  • TO_IN:表示组播组与组播源列表之间的过滤模式由 EXCLUDE 转变为 INCLUDE。
  • TO_EX:表示组播组与组播源列表之间的过滤模式由 INCLUDE 转变为 EXCLUDE。
  • ALLOW:表示在现有状态的基础上,还希望从某些组播源接收组播数据。如果当前的对应关系为 INCLUDE, 则向现有组播源列表中添加这些组播源; 如果当前的对应关系为 EXCLUDE,则从现有组播源列表中删除这些组播源。
  • BLOCK:表示在现有状态的基础上,不再希望从某些组播源接收组播数据。如果当前的对应关系为 INCLUDE,则从现有组播源列表中删除这些组播源;如果当前的对应关系为
    EXCLUDE,则向现有组播源列表中添加这些组播源。

协议规范

与 IGMP 相关的协议规范有:

  • RFC 1112: Host Extensions for IP Multicasting
  • RFC 2236: Internet Group Management Protocol, Version 2
  • RFC 3376: Internet Group Management Protocol, Version 3
  • RFC 4605: Internet Group Management Protocol (IGMP) / Multicast Listener Discovery(MLD)-Based Multicast Forwarding (“IGMP/MLD Proxying”)

本文摘自《H3C S5500-EI系列以太网交换机——IP组播配置指导》关于IGMP部分的说明,觉得写的很全面,现分享出来供参考共同学习。

猜你喜欢

转载自blog.csdn.net/mantis_1984/article/details/83178968