第147篇:RP(汇集点)的选举与配置
关键词:RP、BSR、Auto-RP、静态RP、RP映射、组播组范围、华为
一、引言
第146篇介绍了 PIM-SM 的工作原理,其中 RP(Rendezvous Point,汇集点)是整个 PIM-SM 架构的核心。所有组播源通过 RP 注册组播流,所有接收者通过 RP 加入组播组。RP 的正确配置和高可用设计直接决定了组播网络的稳定性和可扩展性。
然而,RP 本身也是一个需要解决的工程问题:谁来担任 RP?如何选举 RP?RP 故障了怎么办?不同的 RP 选举机制适用于不同规模的网络。
二、核心概念
2.1 RP 选举机制对比
| 机制 | 配置方式 | 扩展性 | 高可用 | 适用场景 |
|---|---|---|---|---|
| 静态 RP | 每台路由器手动配置 | 差(每台都要配) | 需配合备份 RP | 小型网络、测试环境 |
| Auto-RP | Cisco 私有协议 | 中 | C-RP 选举 | Cisco 环境 |
| BSR(Bootstrap Router) | IETF 标准(RFC 5059) | 好 | BSR + RP 冗余 | 中大型网络、多厂商 |
2.2 静态 RP
静态 RP 最简单直接:管理员在所有 PIM-SM 路由器上手动配置相同的 RP 地址。
优点:配置简单,无额外协议开销 缺点: 1. 每台 PIM 路由器都需要手动配置,管理成本高 2. 配置不一致会导致组播不通 3. 单一 RP 存在单点故障

2.3 BSR 机制
BSR(Bootstrap Router)是 IETF 标准推荐的动态 RP 选举机制,通过两个角色完成:
- BSR(Bootstrap Router):收集所有候选 RP(C-RP)的信息,并分发给全网
- C-RP(Candidate RP):候选 RP,宣告自己愿意担任 RP

BSR 选举规则
- BSR 选举:所有路由器配置为候选 BSR(C-BSR),优先级最高的成为 BSR;优先级相同则 IP 地址大的胜出
- RP 选举:BSR 收集所有 C-RP 通告,选择优先级最高的 C-RP 作为 RP;优先级相同则 IP 地址大的胜出
2.4 RP 与组播组范围
RP 可以针对不同的组播组地址范围进行映射:
| 组播组范围 | RP 地址 | 说明 |
|---|---|---|
| 224.0.0.0/4 | 10.1.1.1 | 所有组播组使用同一 RP |
| 239.1.0.0/16 | 10.1.1.1 | 视频会议组播 |
| 239.2.0.0/16 | 10.1.2.1 | IPTV 组播 |
| 232.0.0.0/8 | 无 | SSM 模式,不需要 RP |
三、技术细节
3.1 静态 RP 配置
# ========== 在所有 PIM 路由器上配置 ==========
[HUAWEI] sysname PIM-R1
# 在 PIM-SM 模式下配置静态 RP
[PIM-R1] pim sm
[PIM-R1-pim] static-rp 10.1.1.1
# 指定 RP 服务的组播组范围
[PIM-R1-pim] static-rp 10.1.1.1 group 239.1.0.0 255.255.0.0
[PIM-R1-pim] static-rp 10.1.2.1 group 239.2.0.0 255.255.0.0
# 备份 RP(华为 VRP 支持负载分担)
# 当 RP1 故障时,RP2 接管
[PIM-R1-pim] static-rp 10.1.1.1 backup 10.1.2.1
3.2 BSR 配置
# ========== BSR 配置 ==========
[HUAWEI] sysname BSR-R1
# 配置候选 BSR
[BSR-R1] pim sm
[BSR-R1-pim] c-bsr 10.1.1.1 priority 100
# c-bsr <ip> [priority <0-255>]
# IP 为本设备接口地址,优先级默认 1
# 配置候选 RP
[BSR-R1-pim] c-rp 10.1.1.1 priority 150 group 239.0.0.0 255.0.0.0
# c-rp <ip> [priority <0-255>] [group <group-address> <wildcard>]
3.3 BSR 工作机制详解

| 定时器 | 默认值 | 说明 |
|---|---|---|
| BSM 发送间隔 | 60s | BSR 发送 Bootstrap Message 的间隔 |
| C-RP 通告间隔 | 60s | C-RP 发送通告的间隔 |
| Hash Interval | 37s | RP 哈希变化的间隔 |
| Hash Mask Length | 32 | RP 哈希掩码长度 |
3.4 RP 冗余方案
| 方案 | 实现方式 | 切换时间 | 配置复杂度 |
|---|---|---|---|
| 静态备份 RP | static-rp backup | 需等待 Register 超时 | 低 |
| BSR + 多 C-RP | 动态选举,自动切换 | 等待 BSM 传播 | 中 |
| Load-Balance RP | 多 RP 按组范围分担 | 即时 | 中 |
负载分担 RP 配置
# RP1 服务 239.1.0.0/16
[RP1] pim sm
[RP1-pim] c-rp 10.1.1.1 priority 150 group 239.1.0.0 255.255.0.0
# RP2 服务 239.2.0.0/16
[RP2] pim sm
[RP2-pim] c-rp 10.1.2.1 priority 150 group 239.2.0.0 255.255.0.0
# 两个 RP 互为备份(低优先级)
[RP1-pim] c-rp 10.1.1.1 priority 100 group 239.2.0.0 255.255.0.0
[RP2-pim] c-rp 10.1.2.1 priority 100 group 239.1.0.0 255.255.0.0
四、实战配置/案例分析
4.1 静态 RP + 备份 RP 完整配置
# ========== 主 RP 设备 ==========
[HUAWEI] sysname RP-PRIMARY
[RP-PRIMARY] multicast routing-enable
# 环回口作为 RP 地址(稳定,不受接口状态影响)
[RP-PRIMARY] interface LoopBack 0
[RP-PRIMARY-LoopBack0] ip address 10.1.1.1 255.255.255.255
# 接口配置 PIM-SM
[RP-PRIMARY] interface Vlanif 10
[RP-PRIMARY-Vlanif10] ip address 10.1.10.1 255.255.255.0
[RP-PRIMARY-Vlanif10] pim sm
[RP-PRIMARY] interface Vlanif 20
[RP-PRIMARY-Vlanif20] ip address 10.1.20.1 255.255.255.0
[RP-PRIMARY-Vlanif20] pim sm
# ========== 备份 RP 设备 ==========
[HUAWEI] sysname RP-BACKUP
[RP-BACKUP] multicast routing-enable
[RP-BACKUP] interface LoopBack 0
[RP-BACKUP-LoopBack0] ip address 10.1.2.1 255.255.255.255
[RP-BACKUP] interface Vlanif 20
[RP-BACKUP-Vlanif20] ip address 10.1.20.2 255.255.255.0
[RP-BACKUP-Vlanif20] pim sm
[RP-BACKUP] interface Vlanif 30
[RP-BACKUP-Vlanif30] ip address 10.1.30.1 255.255.255.0
[RP-BACKUP-Vlanif30] pim sm
# ========== 所有 PIM 路由器统一配置 ==========
# 主 RP + 备份 RP
[PIM-R1] pim sm
[PIM-R1-pim] static-rp 10.1.1.1 backup 10.1.2.1
# 或在各路由器上分别配置
[PIM-R2] pim sm
[PIM-R2-pim] static-rp 10.1.1.1 backup 10.1.2.1
4.2 BSR 完整配置
# ========== BSR + C-RP 一体化配置 ==========
# 设备1:BSR + C-RP(高优先级)
[HUAWEI] sysname BSR-CRP1
[BSR-CRP1] multicast routing-enable
[BSR-CRP1] interface LoopBack 0
[BSR-CRP1-LoopBack0] ip address 10.1.1.1 255.255.255.255
[BSR-CRP1] interface Vlanif 10
[BSR-CRP1-Vlanif10] ip address 10.1.10.1 255.255.255.0
[BSR-CRP1-Vlanif10] pim sm
[BSR-CRP1] pim sm
[BSR-CRP1-pim] c-bsr 10.1.1.1 priority 100
[BSR-CRP1-pim] c-rp 10.1.1.1 priority 150 group 239.0.0.0 255.0.0.0
# ========== 设备2:C-RP(备份,低优先级)==========
[HUAWEI] sysname CRP2
[CRP2] multicast routing-enable
[CRP2] interface LoopBack 0
[CRP2-LoopBack0] ip address 10.1.2.1 255.255.255.255
[CRP2] interface Vlanif 20
[CRP2-Vlanif20] ip address 10.1.20.2 255.255.255.0
[CRP2-Vlanif20] pim sm
[CRP2] pim sm
[CRP2-pim] c-bsr 10.1.2.1 priority 50 # 低优先级,备份 BSR
[CRP2-pim] c-rp 10.1.2.1 priority 100 group 239.0.0.0 255.0.0.0 # 低优先级,备份 RP
# ========== 设备3:纯 PIM-SM 路由器 ==========
[HUAWEI] sysname PIM-R3
[PIM-R3] multicast routing-enable
[PIM-R3] interface Vlanif 30
[PIM-R3-Vlanif30] ip address 10.1.30.1 255.255.255.0
[PIM-R3-Vlanif30] pim sm
# 无需配置 RP 或 BSR,自动从 BSM 学习
4.3 验证命令
# 查看 RP 信息
[BSR-CRP1] display pim rp
# RP Address: 10.1.1.1
# RP State: Active
# Group Range: 239.0.0.0/8
# Uptime: 02:15:30
# 查看 BSR 信息
[BSR-CRP1] display pim bsr
# C-BSR Address: 10.1.1.1
# C-BSR Priority: 100
# BSR State: Active BSR
# 查看 C-RP 信息
[BSR-CRP1] display pim crp
# C-RP Address: 10.1.1.1
# Priority: 150
# Group Range: 239.0.0.0/8
# State: Active RP
# C-RP Address: 10.1.2.1
# Priority: 100
# Group Range: 239.0.0.0/8
# State: Backup RP
4.4 故障案例:RP 地址不一致
场景:某企业组播网络中,部分路由器配置了 RP 为 10.1.1.1,另一部分配置了 10.1.1.2。组播源和接收者之间时通时不通。
排查过程:
# 逐台检查 RP 配置
[R1] display pim rp
# RP Address: 10.1.1.1
[R2] display pim rp
# RP Address: 10.1.1.1
[R3] display pim rp
# RP Address: 10.1.1.2 ← 不一致!
[R4] display pim rp
# RP Address: 10.1.1.2 ← 不一致!
# 检查组播路由表
[R1] display multicast routing-table
# (*, 239.1.1.1) RP(10.1.1.1) ← R1 通过 RP 10.1.1.1
[R3] display multicast routing-table
# (*, 239.1.1.1) RP(10.1.1.2) ← R3 通过 RP 10.1.1.2
# 组播源在 R1 侧,注册到 RP 10.1.1.1
# 接收者在 R3 侧,Join 发往 RP 10.1.1.2
# RP 10.1.1.2 上没有该组播源的注册信息 → 不通
根因:R1/R2 配置的 RP 是 10.1.1.1,R3/R4 配置的 RP 是 10.1.1.2。组播源注册到 RP1,接收者向 RP2 发起 Join,RP2 上无该源注册信息,组播流无法建立。
解决方案:
# 方案一:统一静态 RP
[R3] pim sm
[R3-pim] undo static-rp 10.1.1.2
[R3-pim] static-rp 10.1.1.1
[R4] pim sm
[R4-pim] undo static-rp 10.1.1.2
[R4-pim] static-rp 10.1.1.1
# 方案二(推荐):改用 BSR,自动同步 RP 信息
[R1] pim sm
[R1-pim] undo static-rp 10.1.1.1
[R1-pim] c-bsr 10.1.10.1 priority 100
[R1-pim] c-rp 10.1.1.1 priority 150
[R2] pim sm
[R2-pim] undo static-rp 10.1.1.1
[R2-pim] c-rp 10.1.2.1 priority 100
[R3] pim sm
[R3-pim] undo static-rp 10.1.1.2
[R3-pim] c-bsr 10.1.20.1 priority 50
[R4] pim sm
[R4-pim] undo static-rp 10.1.1.2
[R4-pim] c-bsr 10.1.30.1 priority 50
4.5 故障案例:BSR 故障导致 RP 信息丢失
场景:BSR 设备断电重启,重启期间所有 PIM-SM 路由器上的 RP 信息老化,组播业务中断约 2 分钟。
排查过程:
# 查看 BSR 状态
[R1] display pim bsr
# BSR Address: 0.0.0.0 ← BSR 丢失!
# BSM 超时,RP 信息正在老化
# 查看日志
[R1] display logbuffer | include PIM
# %PIM-4-BSR_TIMEOUT: BSR timeout, no BSM received
# %PIM-4-RP_EXPIRED: RP 10.1.1.1 expired for group 239.0.0.0/8
根因:单 BSR 故障后,没有备份 BSR 接替。BSM 超时后(默认为 3 倍 BSM 间隔 = 180s),所有路由器的 RP 信息失效。
解决方案:
# 配置多个 C-BSR,实现 BSR 冗余
# BSR1(高优先级)
[BSR-CRP1] pim sm
[BSR-CRP1-pim] c-bsr 10.1.1.1 priority 100
# BSR2(低优先级,备份)
[CRP2] pim sm
[CRP2-pim] c-bsr 10.1.2.1 priority 50
# 当 BSR1 故障时,BSR2 自动接管
# BSR 选举:优先级高者当选,相同则 IP 大者当选
五、总结
| 项目 | 说明 |
|---|---|
| 静态 RP | 配置简单,适合小型网络,需保证所有路由器配置一致 |
| BSR | IETF 标准,自动选举,适合中大型多厂商网络 |
| RP 选举规则 | 优先级最高 → IP 地址最大 |
| BSR 选举规则 | 优先级最高 → IP 地址最大 |
| RP 冗余 | 静态备份 RP / BSR + 多 C-RP / 负载分担 |
| SSM 模式 | 不需要 RP,接收者直接指定组播源 |
| 常见故障 | RP 不一致、BSR 单点故障、组范围配置错误 |
思考
-
静态 RP 的配置必须在所有 PIM-SM 路由器上保持一致。在网络规模扩大到 100 台路由器时,如何确保配置的一致性?有没有自动化工具或机制可以帮助?
-
BSR 机制中,BSR 通过泛洪 BSM(Bootstrap Message)分发 RP 信息。BSM 泛洪使用 TTL=1,只能在直连链路上传播。那 BSR 如何确保全网路由器都能收到 RP 信息?
-
如果一个组播组 239.1.1.1 同时有两个 C-RP 声明服务(优先级相同),BSR 会如何选择?IP 地址大的胜出,但如果两台 C-RP 分别位于网络的不同区域,选择"IP 大"的 C-RP 是否一定能保证最优的组播路径?
下篇预告:第148篇:组播 VLAN 与跨 VLAN 组播复制