第146篇:PIM-DM 与 PIM-SM 组播路由协议
关键词
PIM、PIM-DM、PIM-SM、组播路由、RPF、组播分发树、(*,G)、(S,G)
一、为什么需要组播路由协议?
IGMP 解决了主机和路由器之间的组播组管理,但路由器之间如何转发组播流量?这就需要 PIM(Protocol Independent Multicast)。
组播源 组播路由器 组成员
(S=10.1.1.1) (R1,R2,R3) (H1,H2)
│ │ │
│ PIM 建立分发树 │ IGMP │
│────────────────────────►│───────────────────────►│
│ │ │
PIM 的核心机制:RPF(Reverse Path Forwarding)。
二、RPF(逆向路径转发)
2.1 RPF 原理
RPF 是组播转发的核心:路由器收到组播报文时,检查报文源地址——如果报文从源的最优路径到达,转发;否则丢弃。
组播源 ──── 路径 A(最优)────► 路由器 R1
路径 B(非最优)────► 路由器 R1
↑
R1:从路径 A 收到 → RPF 检查通过 → 转发
R1:从路径 B 收到 → RPF 检查失败 → 丢弃
2.2 RPF 检查
# RPF 检查逻辑:
# 源地址 = 10.1.1.1
# 检查单播路由表到 10.1.1.1 的出接口
# 如果报文从该接口到达 → RPF 通过
# 否则 → RPF 失败
三、PIM-DM(密集模式)
3.1 原理
PIM-DM 假设组成员密集分布,使用推(Push)模式——源发送流量时,全网广播扩散,没有成员的分支再剪枝。
源发送数据
│
▼
R1 向所有 PIM 邻居转发
│
├──► R2 有成员 → 继续转发
│
└──► R3 无成员 → 发 Prune 剪枝
R1 停止向 R3 转发
3.2 特点
| 特性 | 说明 |
|---|---|
| 适用场景 | 组成员密集(如公司内部视频广播) |
| 建树方式 | 先扩散再剪枝 |
| 维护 | 定期刷新(30s) |
| 扩展性 | 差(全局扩散) |
| 配置 | 简单 |
3.3 配置
# PIM-DM 配置(所有路由器)
multicast routing-enable
interface GigabitEthernet0/0/1
pim dm # 启用 PIM-DM
四、PIM-SM(稀疏模式)
4.1 原理
PIM-SM 假设组成员稀疏分布,使用拉(Pull)模式——组成员通过 RP(汇聚点)加入组播树。
RP(汇聚点)
│
Join │ Join
▲ │ ▲
│ │ │
R1 ───┘─── R2
│ │
IGMP IGMP
Report Report
│ │
H1 H2
(加入组) (加入组)
1. H1 发 IGMP Report → R1 知道了组请求
2. R1 向 RP 发 PIM Join
3. RP 收到 Join → 建立共享树(*,G)
4. 源发送数据到 RP → RP 转发给 R1 → H1
4.2 共享树与源树
| 树类型 | 表示 | 路径 | 适用 |
|---|---|---|---|
| 共享树(RPT) | (*, G) | 所有组都经过 RP | 初始阶段 |
| 源树(SPT) | (S, G) | 直接从源到成员 | 优化路径 |
共享树 (*, 224.1.1.1):所有数据都走 RP
RP
/ \
R1 R2
源树 (10.1.1.1, 224.1.1.1):数据直接从源到成员
源 ────► R1
────► R2
4.3 PIM-SM 配置
# ===== 所有路由器 =====
multicast routing-enable
# ===== 各接口启用 PIM-SM =====
interface GigabitEthernet0/0/1
pim sm
# ===== RP 配置(方式一:静态)=====
pim
static-rp 10.254.1.1 # RP 地址
# 或在 RP 路由器上:
interface LoopBack0
ip address 10.254.1.1 255.255.255.255
pim sm
五、PIM-DM vs PIM-SM
| 对比项 | PIM-DM | PIM-SM |
|---|---|---|
| 模型 | 推(Push) | 拉(Pull) |
| 组成员假设 | 密集 | 稀疏 |
| 建树 | 扩散+剪枝 | 通过 RP 加入 |
| RP 需求 | 不需要 | 需要 RP |
| 扩展性 | 差(适合小网络) | 好(适合大网络) |
| 配置 | 简单 | 较复杂 |
| 适用 | 局域网 | 广域网 |
六、总结
| 知识点 | 核心要点 |
|---|---|
| PIM | 协议无关组播路由协议 |
| RPF | 从源最优路径来的才转发 |
| PIM-DM | 推模式,先扩散再剪枝 |
| PIM-SM | 拉模式,通过 RP 加入 |
| RPT/Source Tree | 共享树(*,G) vs 源树(S,G) |
七、思考
- RPF 检查的原理是什么?为什么组播需要 RPF?
- PIM-DM 和 PIM-SM 的核心区别是什么?
- PIM-SM 中 RP 的作用是什么?
- 共享树 (*, G) 和源树 (S, G) 有什么区别?
- 什么场景适合用 PIM-DM?什么场景适合用 PIM-SM?
下篇预告:第147篇《RP(汇集点)的选举与配置》——详解 PIM-SM 中 RP 的选举机制,包括静态 RP、BSR 和 Auto-RP。