IGMP协议原理

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

IGMP协议简介

IGMP协议运行于主机和与主机直接相连的组播路由器之间。
IGMP工作机制:

  • 接收者主机向所在的共享网络报告组成员关系。
  • 查询器周期性的向该共享网络发送组成员查询消息。
  • 接收者主机接收到查询消息之后进行相应以报告组成员关系。
  • 网段中的组播路由器根据接收到的相应来刷新组成员的存在关系。

IGMP有三个版本,分别是IGMPV1,IGMPV2,IGMPV3.

IGMPv1

IGMPv1包括两种类型的报文:
  • 普遍组查询报文:查询器向网络中的所有主机和路由器发送查询报文,用于了解哪些组播组存在成员。
  • 成员报告报文:主机向查询器发送报告报文,用于申请加入某个组播组或者应答查询报文。
报文格式

在这里插入图片描述

  • Version:IGMP的版本,值为1
  • Type:报文类型。有两种取值:
    - 0X1:表示普遍组查询报文
    - 0X2:表示成员报告报文
  • Unused:在IGMPv1中,这一段没有被使用,在发送时设置为0 。
  • Checksum:校验和。
  • Group Address:组播组地址。在普遍组查询报文中,该字段为0,代表所有的组信息都要向我报告,收集所有的组成员信息;在成员报告报文中,该字段为成员加入的组播组地址。
组成员的加入机制

请添加图片描述

  • 主机Host C不等待普遍组查询报文到来,主动发出组成员报告报文以声明加入
  • IGMP查询器收到Host C报告报文之后,了解到本网段内出现了组播组G2的成员,于是就生成转发表项。网络中一旦有G2的数据到达本路由器,就接着向该网段转发。
普遍组查询和响应机制

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

请添加图片描述

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没有专门定义组成员的离开报文。主机离开组播组之后,便不在会对普遍组查询报文做出回应。
请添加图片描述

  • 假设HostA想要退出组播组G1
    HostA收到IGMP查询器发送的普遍组查询报文时,不再发送针对G1的报告报文。由于网段内还存在G1组成员HostB,HostB会向IGMP查询器发送针对G1的报告报文,因此IGMP查询器感知不到HostA的离开。
  • 假设HostC想要退出组播组G2
    HostC收到IGMP查询器发送的普遍组查询报文时,不再发送针对G2的报告报文。由于网段内不存在组G2的其他成员,IGMP查询器不会收到G2组成员的报告报文,则在一定时间(缺省值为130秒)后,删除G2所对应的组播转发表项。

IGMPv2

IGMPv2的变化

IGMPv2的工作机制与IGMPv1基本相同,最大的不同之处在于IGMPv2增加了离开组机制。成员主机离开组播组时,会主动发送成员离开报文通知IGMP查询器;IGMP查询器收到成员离开报文后,会连续发送特定组查询报文,询问该组播组是否还存在组成员。如果在一段时间内没有收到成员主机发送的报告报文,IGMP查询器将不再维护该组的组成员关系。IGMPv2可以使IGMP查询器及时了解到网段内哪些组播组已不存在成员,从而及时更新组成员关系,减少网络中冗余的组播流量。

IGMPv2报文
  • 除了普遍组查询报文和成员报告报文,IGMPv2新增加了两种报文:
    • 成员离开报文:成员离开时主动向查询器发送报文,用于宣布自己离开了某个组播组。
    • 特定组查询报文:查询器向共享网段内指定组播组发送查询报文,用于查询该组播组是否存在成员。
  • IGMPv2在IGMPv1没有使用的报文段添加了最大响应时间字段。本字段可以通过命令配置,用于控制成员对于查询报文的响应速度。

请添加图片描述

  • Type:报文类型。有以下四种取值:
    • 0X11:查询报文,包括普遍组查询和特定组查询。
    • 0X12:表示IGMPv1的报告报文。
    • 0X16:表示IGMPv2的报告报文。
    • 0X17:表示成员的离组报文。
  • Max Response Time:最大响应时间。成员主机在收到IGMP查询器发送的普遍组查询报文之后,需要在最大的响应时间内做出回应。
  • Checksum:校验和。
  • Group Address:组播组地址。
    • 在普遍组查询报文中,本字段为0.
    • 在特定组查询报文中,本字段为要查询的组播组地址。
    • 在成员报告和离组报文中,该字段为成员要加入或者是离开的组播组地址。
IGMPv2工作机制

在工作机制上,与IGMPv1相比,IGMPv2增加了查询器选举和离开组机制。
请添加图片描述
如图所示,组播网络中RouterA和RouterB连接主机网段,在主机网段上有HostA、HostB、HostC三个接收者。假设HostA和HostB想要接收发往组播组G1的数据,HostC想要接收发往组播组G2的数据。

查询器选举机制

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

离组机制

请添加图片描述
如图,在IGMPv2中,主机HostA离开组播组G1的过程如下:
1.HostA向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G1的离开报文。
2.查询器收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。
3.该网段内还存在组G1的其他成员(HostB),这些成员(HostB)在收到查询器发送的特定组查询报文后,会立即发送针对组G1的报告报文。查询器收到针对组G1的报告报文后将继续维护该组成员关系。
如果该网段内不存在组G1的其他成员,查询器将不会收到针对组G1的报告报文。在Timer-Membership超时后,查询器将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达查询器时,查询器将不会向下游转发。

IGMPv3

IGMPv3的变化

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

IGMPv3工作机制

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

附:
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘不忙!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值