第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 存在单点故障

静态 RP - 图示

2.3 BSR 机制

BSR(Bootstrap Router)是 IETF 标准推荐的动态 RP 选举机制,通过两个角色完成:

  1. BSR(Bootstrap Router):收集所有候选 RP(C-RP)的信息,并分发给全网
  2. C-RP(Candidate RP):候选 RP,宣告自己愿意担任 RP

BSR 机制 - 图示

BSR 选举规则

  1. BSR 选举:所有路由器配置为候选 BSR(C-BSR),优先级最高的成为 BSR;优先级相同则 IP 地址大的胜出
  2. 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 工作机制详解

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 单点故障、组范围配置错误

思考

  1. 静态 RP 的配置必须在所有 PIM-SM 路由器上保持一致。在网络规模扩大到 100 台路由器时,如何确保配置的一致性?有没有自动化工具或机制可以帮助?

  2. BSR 机制中,BSR 通过泛洪 BSM(Bootstrap Message)分发 RP 信息。BSM 泛洪使用 TTL=1,只能在直连链路上传播。那 BSR 如何确保全网路由器都能收到 RP 信息?

  3. 如果一个组播组 239.1.1.1 同时有两个 C-RP 声明服务(优先级相同),BSR 会如何选择?IP 地址大的胜出,但如果两台 C-RP 分别位于网络的不同区域,选择"IP 大"的 C-RP 是否一定能保证最优的组播路径?

下篇预告:第148篇:组播 VLAN 与跨 VLAN 组播复制