IGMP 互联网组管理协议
协议概述
- 互联网组管理协议 IGMP(Internet Group Management Protocol)是 TCP/IP 协议族中用于管理多播组成员关系的协议
- IGMP 协议由 RFC 1112 定义,目前常用版本为 IGMPv3(RFC 3376)
- 工作在网络层,与 IP 协议协同工作(IGMP 报文封装在 IP 数据报中传输)
主要功能
- 主机加入/离开多播组
- 路由器维护多播组成员信息
- 支持多播路由协议(如 PIM)构建多播分发树
工作流程
- 主机通过发送 Membership Report 报文加入多播组
- 路由器定期发送 Membership Query 报文查询组成员状态
- 主机响应 Membership Report 报文维持组成员关系
- 主机发送 Leave Group 报文主动退出多播组
版本演进
| 版本 | 主要特性 |
|---|---|
| IGMPv1 | 基本组成员查询和报告机制 |
| IGMPv2 | 添加快速离开机制 |
| IGMPv3 | 支持源特定多播 (SSM) |
与其他协议的关系
- 依赖 IP 协议进行传输(协议号 2)
- 为 PIM 等多播路由协议提供组成员信息
- 在支持多播的网络设备(如交换机)中实现 IGMP Snooping 功能
硬件多播映射过程
在局域网中,硬件多播映射是将 IP 多播地址转换为 MAC 多播地址的过程,具体步骤如下:
-
IP 多播地址到 MAC 多播地址的转换
- IPv4 多播地址范围:224.0.0.0 到 239.255.255.255
- MAC 多播地址前缀:01-00-5E(以太网)
- 转换规则:
- 取 IP 多播地址的低 23 位
- 映射到 MAC 地址的低 23 位
- 例如:IP 多播地址 224.0.1.1 → MAC 地址 01-00-5E-00-01-01
-
多播帧的传输
- 主机将数据封装在目标 MAC 地址为多播地址的帧中发送
- 交换机通过 IGMP Snooping 学习多播组成员信息
- 只向包含组成员的端口转发多播流量
-
IGMP Snooping 工作流程
- 交换机监听 IGMP 报文
- 记录端口与多播组的对应关系
- 维护多播组转发表
- 根据转发表智能转发多播流量
-
多播路由器的角色
- 接收所有多播流量(监听 224.0.0.1)
- 通过 IGMP 查询维护组成员信息
- 与上游多播路由器交换路由信息
多播地址映射表
| IP 多播地址范围 | MAC 多播地址前缀 | 备注 |
|---|---|---|
| 224.0.0.0-239.255.255.255 | 01-00-5E | 以太网多播地址 |
| 224.0.0.0/24 | 01-00-5E-00-00-XX | 本地网络控制块 |
| 224.0.1.0-238.255.255.255 | 01-00-5E-XX-XX-XX | 全局范围多播 |
典型应用场景
- 视频会议系统
- 网络直播
- 分布式计算
- 实时数据分发
注意:由于 IP 多播地址有 28 位有效位,而 MAC 多播地址只有 23 位,因此存在 32:1 的地址映射冲突可能,需要在应用层做额外处理。