4.8. Source-Specific Multicast (源特定组播)
源特定组播 (Source-Specific Multicast, SSM) 是 PIM-SM 的一个简化子集, 专门用于 (S,G) 信道模型.在 SSM 中, 接收者明确指定他们想要接收的源, 而不是依赖共享树和 RP.
SSM 的关键特性
与标准 PIM-SM 的区别:
- 无 RP: SSM 不需要汇聚点
- 无共享树: 仅使用源特定最短路径树
- 无 Register: 源的 DR 不需要注册到 RP
- 简化协议: 不需要 (*,G) 状态和相关机制
优势:
- 协议更简单
- 部署更容易
- 避免了 RP 相关的复杂性和故障点
- 更好的安全性(接收者明确知道源)
SSM 地址范围
IPv4 SSM 范围: 232.0.0.0/8
IPv6 SSM 范围: ff3x::/32
这些地址范围专门保留给 SSM 使用.
4.8.1. Protocol Modifications for SSM Destination Addresses (SSM 目标地址的协议修改)
当使用 SSM 地址范围时, PIM-SM 行为有以下修改:
接收者行为:
- 使用 IGMPv3 或 MLDv2 的源特定加入
- 指定 (S,G) 对而非仅组 G
- 示例: "我想接收来自 10.1.1.1 的 232.1.1.1 的流量"
路由器行为:
- 仅创建 (S,G) 状态, 不创建 (*,G) 状态
- 不查找 RP
- 不发送或处理 Register 消息
- 不发送 (*,G) Join/Prune
简化的转发逻辑:
if (Group 在 SSM 范围内) {
if (存在 (S,G) 状态 AND RPF 检查成功) {
转发到 (S,G) olist
} else {
丢弃数据包
}
}
4.8.2. PIM-SSM-Only Routers (仅 PIM-SSM 路由器)
路由器可以实现为仅支持 SSM, 不支持完整的 PIM-SM.这样的路由器称为 PIM-SSM-Only 路由器.
PIM-SSM-Only 路由器的要求:
- 必须支持 (S,G) Join/Prune
- 必须支持 (S,G) Assert
- 必须支持 IGMPv3/MLDv2 的源特定查询
- 必须拒绝非 SSM 范围的加入请求
不需要的功能:
- RP 发现和维护
- Register/Register-Stop 消息处理
- (*,G) 状态管理
- (S,G,rpt) 状态管理
- BSR 机制
- Null-Register 处理
实现简化: PIM-SSM-Only 实现可以显著简化:
- 减少约 50% 的代码量
- 更少的配置复杂性
- 更少的故障点
兼容性:
- PIM-SSM-Only 路由器可以与完整 PIM-SM 路由器互操作
- 在 SSM 范围内, 行为完全兼容
- 不能用于非 SSM 组播流量
SSM 部署考虑
何时使用 SSM:
- 源地址已知且固定
- 应用支持源特定订阅(如 IPTV, 股票行情)
- 希望简化组播部署
- 需要增强安全性
何时不使用 SSM:
- 源动态变化且不可预测
- 需要任意源组播 (ASM)
- 遗留应用仅支持 IGMPv2
- 需要双向组播
迁移策略:
- 新应用优先使用 SSM
- 在网络中同时支持 SSM 和 ASM
- 逐步迁移现有应用到 SSM
备注
关于 SSM 的详细规范, 请参阅 RFC 4607.关于 IGMPv3 和源特定加入, 请参阅 RFC 3376.