跳到主要内容

4.7. PIM Bootstrap and RP Discovery (PIM 引导和 RP 发现)

PIM-SM 需要一种机制来让域中的所有路由器知道每个组播组的汇聚点 (Rendezvous Point, RP) 地址.本节描述 RP 发现的机制.

RP 发现方法

PIM-SM 支持多种 RP 发现方法:

  1. 静态配置: 管理员手动配置每个路由器的组到 RP 映射
  2. Bootstrap Router (BSR) 机制: 动态分发 RP 信息 [RFC 5059]
  3. Embedded-RP: 在 IPv6 组播地址中嵌入 RP 地址 [RFC 3956]
  4. Auto-RP: Cisco 专有的动态 RP 发现机制

本节重点描述 BSR 机制和组到 RP 映射的基本原理.

Bootstrap Router (BSR) 机制概述

BSR 机制提供了一种动态,容错的方式来分发 RP 信息:

  1. BSR 选举: 域中的路由器自动选举一个 Bootstrap Router
  2. RP 候选通告: 配置为 RP 候选的路由器向 BSR 发送 Candidate-RP-Advertisement 消息
  3. RP-Set 分发: BSR 收集候选信息并通过 Bootstrap 消息分发 RP-Set
  4. 逐跳泛洪: Bootstrap 消息在域中逐跳泛洪

4.7.1. Group-to-RP Mapping (组到 RP 映射)

每个路由器维护一个组到 RP 的映射表.对于给定的组 G, 路由器需要确定使用哪个 RP.

映射过程:

  1. 查找覆盖组 G 的所有 RP 候选
  2. 使用哈希函数选择特定 RP
  3. 缓存映射以提高效率

组范围: RP 可以为特定的组范围配置, 例如:

  • RP1 服务 239.1.0.0/16
  • RP2 服务 239.2.0.0/16

4.7.2. Hash Function (哈希函数)

PIM-SM 使用哈希函数将组地址映射到 RP-Set 中的特定 RP.哈希函数设计为:

  • 确定性: 所有路由器对相同组选择相同 RP
  • 保序性: RP-Set 变化时最小化重新映射
  • 负载分布: 在多个 RP 之间分布组

哈希算法 (简化):

1. 从 RP-Set 中筛选服务该组的 RP
2. 对每个 RP:
value = 1103515245 * ((1103515245 * (G) + 12345) XOR RP) + 12345
3. 选择 value 最大的 RP
4. 如果多个 RP 的 value 相同, 选择 IP 地址最大的

示例:

Group: 239.1.1.1
RP-Set: {10.0.0.1 (服务 239.0.0.0/8), 10.0.0.2 (服务 239.0.0.0/8)}

计算哈希值:
- RP 10.0.0.1: hash(239.1.1.1, 10.0.0.1) = 0x12345678
- RP 10.0.0.2: hash(239.1.1.1, 10.0.0.2) = 0x23456789

选择: RP 10.0.0.2 (哈希值更大)

RP 状态维护

每个路由器维护以下 RP 相关状态:

  • 当前 RP-Set: 从 BSR 接收的 RP 候选列表
  • 组到 RP 映射缓存: 已计算的映射结果
  • RP 优先级: 每个 RP 的优先级值

当 RP-Set 发生变化时:

  1. 路由器重新计算受影响组的 RP 映射
  2. 如果 RP 改变, 触发状态重建(发送 Prune 到旧 RP, Join 到新 RP)

其他 RP 发现机制

Embedded-RP (IPv6):

  • RP 地址直接编码在组播组地址中
  • 格式: ff7x:0yz0:RIID::/96
  • 无需额外的发现协议

静态配置:

  • 简单可靠, 适用于小型网络
  • 缺乏灵活性和容错能力
  • 配置示例: ip pim rp-address 10.0.0.1 239.0.0.0/8
备注

关于 BSR 机制的详细规范, 请参阅 RFC 5059.关于 Embedded-RP, 请参阅 RFC 3956.