一、IGMP 是什么
IGMP(Internet Group Management Protocol,互联网组管理协议),网络层协议,封装在IP报文里,IP协议号2。
IGMP没有端口号。
作用:管理组播组,让主机和本地组播路由器之间通信,告诉路由器:本机是否需要接收某个组播组的数据。
单播:一对一;广播:同一网段所有主机;组播:一对一组,只发给订阅了该组的主机。
IGMP只工作在主机与本地路由器之间;路由器之间组播路由使用PIM等协议,不是IGMP。
二、IGMP版本对比
| 版本 | 特点 |
|---|---|
| IGMPv1 | 只有成员报告、查询报文;无离开组报文;等待超时才判定主机退出 |
| IGMPv2(主流) | 增加离开组报文,主机主动通知路由器退出组播组;支持最大响应时间 |
| IGMPv3 | 支持源过滤,可以指定:接收/不接收来自某个源IP的组播流量 |
三、IGMPv2 报文类型
- 成员查询报文(Query):路由器周期性发送(默认125s),询问网段内哪些主机还在某个组播组。分为通用查询、特定组查询。
- 成员报告报文(Report):主机主动发给路由器,声明我要加入这个组播组。
- 离开组报文(Leave):主机退出组播组时主动发送。
四、IGMPv2 工作流程
1. 主机加入组播组
主机想加入某个组播组,发送IGMP成员报告,告知本地组播路由器:我订阅这个组播地址。
路由器收到后,向上游组播路由拉取该组播流量,转发到本网段。
抑制机制:同一网段多台主机加入同一个组,一台主机发送报告后,其他主机收到报告,抑制自己不再发送报告,减少网段报文数量。
2. 路由器周期性查询
路由器每隔一段时间发送通用查询:“哪些组播组还有成员?”
组内主机收到查询,启动随机计时器,最先到期的主机发送成员报告,其余主机被抑制。
3. 主机离开组播组
主机不再需要组播数据,发送离开组报文。
路由器收到离开报文,立刻发送特定组查询,检查网段内是否还有其他主机留在该组;
如果一段时间没有收到任何成员报告,路由器判定该网段无此组成员,停止转发这个组播流量到本局域网。
IGMPv1没有离开报文,只能等待超时,离开延迟很大。
五、IGMPv3 新增能力
可以做源过滤,两种模式:
- INCLUDE模式:只接收来自指定源IP的组播流量
- EXCLUDE模式:接收该组播,排除某些源IP
适合多源组播场景,IPTV常用。
六、常见应用场景
IPTV视频直播、在线视频会议、设备组播升级、监控摄像头组播流。
七、重要误区
- ❌ IGMP不是组播路由协议;IGMP只在主机 ↔ 本地路由器之间工作;路由器之间组播路由用PIM、DVMRP。
- ❌ IGMP不能跨网段;它只管理当前局域网的组播成员。
- 组播报文目的地址是D类IP(224.0.0.0 ~ 239.255.255.255)。
八、优缺点
✅ 优点
- 一对多传输,相同数据在链路只传一份,节省带宽(IPTV典型收益);
- v2支持主动离组,减少不必要流量;v3支持源过滤。
❌ 缺点
- 二层交换机默认会把组播像广播一样泛洪到所有端口;需要开启IGMP Snooping,交换机监听IGMP报文,只把组播转发到有订阅主机的端口。
- 部分防火墙对组播支持较差。
IGMP Snooping:二层交换机功能,不是IGMP协议本身;交换机监听IGMP报文,记录哪个端口存在组播接收者,隔离不需要组播的端口。
九、小结
- IGMP网络层协议,IP协议号2,用于主机和本地路由器之间管理组播组成员;
- IGMPv2:查询、成员报告、离开报文;主机可主动离组;v3支持源IP过滤;
- 同一网段存在报告抑制机制,减少重复报文;
- IGMP只管本网段成员,不是组播路由协议;交换机IGMP Snooping优化二层组播转发;
- 组播使用D类IP地址。
思考题:交换机开启IGMP Snooping的作用是什么,如果不开启会发生什么?
0 条笔记