第145篇:IGMP Snooping——交换机如何感知组播
关键词
IGMP Snooping、组播监听、组播表、VLAN 内组播、组播泛洪抑制
一、没有 IGMP Snooping 的问题
1.1 组播的泛洪问题
当交换机不感知组播时,组播流量会被当作广播处理:
没有 IGMP Snooping 的交换机:
组播源 ──── 交换机 ──── 所有端口(泛洪所有组播流量)
│
┌────┴────┐
│ │
主机 A 主机 B
(想接收) (不想接收)
问题:主机 B 不需要的组播流量也发给了它,浪费带宽
1.2 IGMP Snooping 的作用
IGMP Snooping 让交换机监听 IGMP 报文,建立组播转发表,只将组播流量转发给需要的端口。
有 IGMP Snooping 的交换机:
组播源 ──── 交换机(建立了组播表)───► 主机 A
│ (想接收)
│
主机 B
(不转发,不浪费带宽)
二、IGMP Snooping 的工作原理
2.1 建立组播表
交换机监听 IGMP Report 和 IGMP Leave,动态更新组播转发表:
1. 主机 A 发 IGMP Report(加入 224.1.1.1)
2. 交换机记录:224.1.1.1 → 端口 1(主机 A)
3. 主机 C 发 IGMP Report(加入 224.1.1.1)
4. 交换机更新:224.1.1.1 → 端口 1、端口 3
5. 主机 A 发 IGMP Leave(离开 224.1.1.1)
6. 交换机响应查询,确认组成员变化
7. 更新表:224.1.1.1 → 端口 3(仅主机 C)
2.2 组播转发表
display igmp-snooping group
-----------------------------------------------
VLAN 10: Total 2 entries
Group Member ports Router ports
224.1.1.1 GE0/0/1, GE0/0/3 GE0/0/24
224.1.2.1 GE0/0/5 GE0/0/24
| 字段 | 说明 |
|---|---|
| Group | 组播组地址 |
| Member ports | 有组成员的主机端口 |
| Router ports | 连接上游组播路由器的端口 |
三、Router Port 的作用
3.1 为什么需要 Router Port
组播转发表中的 Router Port 用于将 IGMP Report 转发给上游路由器:
组播源
│
路由器 (IGMP 查询器)
│
┌─────┴─────┐
│ 交换机 │
│ GE0/0/24 ← Router Port(连接路由器)
│ GE0/0/1 ← Member Port(主机 A)
│ GE0/0/2 ← Member Port(主机 B)
└───────────┘
Router Port 的确定: - 收到 IGMP Query 的端口 → 自动成为 Router Port - 手动配置的静态 Router Port
3.2 静态 Router Port 配置
# 手动指定 Router Port(如果自动检测失败)
interface GigabitEthernet0/0/24
igmp-snooping static-router-port vlan 10
四、IGMP Snooping 配置
4.1 基本配置
# ===== 全局启用 IGMP Snooping =====
igmp-snooping enable
# ===== 在 VLAN 中启用 =====
vlan 10
igmp-snooping enable
igmp-snooping version 2 # IGMP 版本
# ===== 查看 IGMP Snooping 状态 =====
display igmp-snooping configuration
-----------------------------------------------
IGMP Snooping: Enable
VLAN 10: Enable
Version: 2
Query Interval: 60s
Robustness Variable: 2
4.2 IGMP Snooping 代理
让交换机代理 IGMP 查询:
# 交换机作为 IGMP 查询器(如果没有路由器)
vlan 10
igmp-snooping querier enable
igmp-snooping general-query source-ip 192.168.10.1
4.3 静态组播组
# 静态指定组播成员
interface GigabitEthernet0/0/1
igmp-snooping static-group 224.1.1.1 vlan 10
五、IGMP Snooping 的优化
5.1 快速离开
# 启用快速离开(收到 Leave 立即删除,不需要查询)
interface GigabitEthernet0/0/1
igmp-snooping fast-leave vlan 10
适用场景:每个端口只有一个主机时。
5.2 组播 VLAN 复制
# 跨 VLAN 组播复制
vlan 10
igmp-snooping mrouter-learn-pim
multicast replication-vlan 100
六、排错
# 查看组播转发表
display igmp-snooping group vlan 10
# 查看 IGMP 报文统计
display igmp-snooping statistics
# 查看 IGMP Snooping 配置
display igmp-snooping configuration
| 问题 | 原因 | 解决 |
|---|---|---|
| 组播不通 | IGMP Snooping 未启用 | igmp-snooping enable |
| 单端口组播 | 端口不是 Member | 检查 IGMP Report 是否到交换机 |
| 跨 VLAN 不通 | 没有组播 VLAN 复制 | 配置 replication-vlan |
七、总结
| 知识点 | 核心要点 |
|---|---|
| IGMP Snooping | 交换机监听 IGMP 报文,建立组播表 |
| 组播表 | Group → Member ports + Router ports |
| Router Port | 连接上游路由器的端口 |
| 快速离开 | 收到 Leave 立即删除,无需查询 |
| 配置位置 | VLAN 级别启用 |
八、思考
- 为什么没有 IGMP Snooping 时组播流量会被泛洪?
- IGMP Snooping 的组播表包含哪些信息?
- Router Port 是如何确定的?
- IGMP Snooping 快速离开有什么好处?有什么限制?
- 如果 IGMP Snooping 未启用,收到组播流量的交换机会怎么处理?
下篇预告:第146篇《PIM-DM 与 PIM-SM 组播路由协议》——讲解组播路由协议如何在不同路由器之间建立组播转发路径。