IGMP协议

本文详细介绍了IGMP(Internet Group Management Protocol)协议的不同版本及其报文格式,并解释了IGMP如何帮助主机与组播路由器交互多播成员关系管理信息。

IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。 
  IGMP协议(IPv4) 和MLD协议(IPv6)用来帮助主机指定对那些组感兴趣(加入哪一些多播组),以及确定来自某些特定源的报文应该被接收还是过滤掉。为了实现这一目标,主机需要向本地子网的组播路由器发送一些报文来向组播路由器交互一些多播成员关系管理的信息。 
  IGMP协议到目前已经有三个版本。 
+ IGMPv1(由RFC 1112 定义) 
+ IGMPv2(由RFC 2236 定义) 
+ IGMPv3(由RFC 3376 定义)

1. 报文

  IGMP协议涉及到2种报文, 
+ 查询报文 
+ 报告报文(包括加入报文和离开报文) 
  IGMP协议报文的具体格式,与IGMP版本有关,不同的版本格式也会不一样。 
  IGMP在IP层是分装成IP数据报进行传输的。IGMPv1和IGMPv2报文具有固定长度8字节。IGMPv3查询报文和报告报文不一样,且报文没有固定长度(因为要包含指定源地址)

(1) IGMPv1报文 与 IGMPv2 报文

IGMPv1报文首部 
这里写图片描述 
IGMPv2报文首部: 
这里写图片描述 
  IGMPv2报文首部兼容IGMPv1报文首部 
* Type:* 
0x11-成员查询; 
0x12-IGMPv1成员报告; 
0x16-IGMPv2成员报告 
0x17-IGMPv2成员离开。 
* Max Rsp Code:* 
最大响应时间,缺省10s(以0.1s为单位) 
* Checksum:* 
校验和 
* Group Address: * 
组播组地址 
IGMPv2普通查询:组地址为0.0.0.0,目的地址为224.0.0.1 
IGMPv2特定组查询:组地址和目的地址为要查询的特定组地址 
IGMPv2成员报告:组地址和目的地址为要报告的组地址 
IGMPv2离开报文:组地址为要离开的组地址,目的地址为224.0.0.2

(2) IGMPv3 查询报文

这里写图片描述 
* Type:* 0x11 表示成员关系查询报文 
Max Rsp Code:最大响应代码 
S标志:(禁止路由器处理),禁止任何接收路由器更新它们在收到查询时要更新 的那些 定时器(通常设为0) 
QRV:查询者健壮变量(<=7) 
QQIC:查询者查询间隔代码 
注: 
IGMPv3普通查询源地址和组地址为0.0.0.0,目的地址为224.0.0.1 
IGMPv3特定组查询源为0.0.0.0 ,组地址和目的地址为为查询组组地址。 
IGMPv3特定组和源查询组地址和目的地址为查询组地址,源地址含有指定源地址。

(3) IGMPv3 报告报文

这里写图片描述

  IGMPv3的报告报文兼容IGMPv1、和IGMPv2的报告报文。 
Type: 报告类型: 
0x22-V3成员报告 
0x12-V1成员报告 
0x16-V2成员报告 
0x17-V2离开报告 
Reserved: 保留 
CheckSum: 检验和 
Reserved: 保留 
* Num of Grp Records:* 多播组记录的数目。 
* Group Record:* 多播组记录,其格式如下所示: 
这里写图片描述 
Records Type: 记录类型

Record Type 名称 含义 何时发送
0x01 IS_IN MODE_IS_INCLUDE:来自相关源地址的报文不应该被过滤掉 用于应答多播路由器的查询报文
0x02 IS_EX MODE_IS_EXCLUDE:来自相关源地址的报文应该被过滤掉 用于应答多播路由器的查询报文
0x03 TO_IN CHANGE_TO_INCLUDE_MODE:来自相关源地址的报文不应该被过滤掉 本地应用程序过滤状态发生变化
0x04 TO_EX CHANGE_TO_EXCLUDE_MODE:来自相关源地址的报文应该被过滤掉 本地应用程序过滤状态发生变化
0x05 ALLOW ALLOW_NEW_SOURCES:来自相关源地址的报文不应该被过滤掉 多播源地址列表发生变化
0x06 BLOCK BLOCK_OLD_SOURCES:来自相关源地址的报文应该被过滤掉 多播源地址列表发生变化

  我们可以看到 Record Type为 0x01、0x02时,记录表示的是一种当前的状态,即主机当前对某种组播感兴趣;0x03、0x04主要是翻译了对某种组播是否感兴趣的状态发生的变化;0x05,0x06则是表示源地址列表发生了变化。 
  我们知道,多播路由器会定时发送查询报文,这是主机在应答时发送的报告报文的记录类型就是0x01、0x02这两种记录。 如果主机因自身对多播组的兴趣发生变话,而主动发送报告报文,那么报文的记录类型就是0x03、0x04、0x05、0x06这几种,具体是哪一种取决于主机对多播组的兴趣发生了怎么样的变化。

Aux Data Type:辅助数据类型 
Num of Sources: 多播源地址列表的数据。 
Multicast Address: 多播组地址 
Sources Address: 多播源地址列表 
Auxiliary Data:辅助数据

2. 轻量级IGMPv3

  在前面介绍IGMPv3的报文时,在Group Record时,可以看到,Record Type有许多中类型,IS_IN、IS_EX、TO_IN、TO_EX、ALLOW、BLOCK。这里我们关注下IS_IN、IS_EX、TO_IN、TO_EX这四种Mode(其实是两对)。我们先看IS_IN、IS_EX这一对模式,它们分别表示有主机针对某个组播来自特定源的流量感兴趣,以及本地子网对某个组播来自特定源的流量不感兴趣。事实上,任何可以用IS_EX组播表示的成员关系,也都可以用对应的IS_IN表示。 比如:IS_EX(ALL)相当于IS_IN(NULL), IS_EX(NULL)相当于IS_IN(ALL), IS_EX(src1,src2)相当于IS_IN(src3,src4…)。同理,所有能以TO_EX表示的成员关系,可以都可以用TO_IN表示。 
  出于上面的结论,为了使得IGMPv3更加简洁易用,轻量级的IGMPv3遍出现了。首先,IGMPv3应该支持ASM和SSM。先考虑SSM的情况,我们如果要指定组播源,那么这个组播源大多数情况下是属于全体组播源中的少数,所以在指定组播源时,轻量级的IGMPv3不再使用IS_EX(a,b,c…)和TO_EX(a,b,c…), 而都用IS_IN和TO_IN表示。在考虑ASM的情况,由于不指定组播源,如果我们使用IS_IN和TO_IN,那要包含所有的组播源,这样就会导致Report消息太繁重。因此,我们仍然支持IS_EX(NULL)和TO_EX(NULL)来表示ASM。

### IGMP协议的工作原理 IGMP(Internet Group Management Protocol)是一种用于管理组播组成员的协议,主要应用于IPv4网络中。它通过路由器或交换机与主机之间的交互,动态维护组播组成员关系,确保组播数据仅发送给加入组播组的设备。IGMP协议的工作流程可以分为组成员加入组播组、查询组成员状态和组成员离开组播组三个阶段。 在组成员加入组播组时,主机向其直接连接的路由器或交换机发送IGMP成员报告报文,以声明其希望加入的组播组。路由器或交换机接收到该报文后,会更新其组播转发表,并将该主机所在的接口加入到相应的组播组中。 为了确保组播组的成员仍然活跃,路由器或交换机会定期发送IGMP查询报文,询问当前是否有主机仍然希望接收组播流量。如果在一定时间内未收到主机的响应,路由器或交换机会认为该接口上不再有组播成员,并从组播转发表中删除该接口。 当主机希望离开某个组播组时,它可以选择不再响应IGMP查询报文,或者在某些版本的IGMP协议中,直接发送离开组报文。路由器或交换机在发现主机不再响应查询后,会将其从组播组中移除,并在必要时向上游路由器发送离开消息,以通知网络中其他设备更新组播转发表。 IGMP协议的不同版本在工作机制上有所差异。例如,IGMPv3引入了对指定信源组播(SSM)模型的支持,并允许主机指定接收来自特定源的组播流量,同时可以阻止非指定源的流量[^4]。 ### IGMP协议的应用场景 IGMP协议广泛应用于需要组播通信的网络环境中。以下是一些典型的应用场景: - **实时音视频传输**:例如在线会议、远程教育、网络电视(IPTV)等应用,需要将音视频数据同时发送给多个终端用户,IGMP协议能够有效管理组播成员,确保数据仅发送给有需求的设备[^2]。 - **内容分发**:在大规模内容分发系统中,如软件更新、新闻广播等,可以通过组播方式减少网络负载,提高传输效率。IGMP协议帮助路由器和交换机识别哪些接口需要转发组播数据,从而优化网络资源的使用[^1]。 - **企业网络中的组播应用**:在企业内部网中,组播可用于实现多点视频会议、实时监控、统一培训等场景。IGMP协议确保只有需要接收组播数据的主机才能接收到相关流量,避免了不必要的带宽浪费[^3]。 - **网络管理与监控**:某些网络管理协议和监控工具利用组播技术实现对多个设备的同时配置或状态查询。IGMP协议在这些场景中帮助维护组播组成员的动态变化,确保管理信息能够准确送达目标设备。 ### 相关问题 ```bash # IGMPv3中指定信源组播的配置示例(适用于Cisco设备) ! ip igmp snooping vlan 10 ! interface GigabitEthernet0/1 ip pim sparse-mode ! ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值