跳到主要内容

4.5. PIM Join/Prune Messages (PIM Join/Prune 消息)

PIM Join/Prune 消息用于构建和维护组播分发树.这些消息由路由器发送以:

  • 请求加入组播树 (Join)
  • 请求离开组播树的分支 (Prune)
  • 覆盖其他路由器的 Prune 消息

Join/Prune 消息类型

PIM-SM 使用三种类型的 Join/Prune 消息:

  1. (*,G) Join/Prune: 用于共享树 (RP Tree)
  2. (S,G) Join/Prune: 用于源特定最短路径树
  3. (S,G,rpt) Join/Prune: 用于在共享树上剪枝特定源

4.5.1. Receiving (,G) Join/Prune Messages (接收 (,G) Join/Prune 消息)

当路由器在接口上接收到 (,G) Join 或 Prune 消息时, 它会更新该接口的 (,G) 下游状态.

处理 (*,G) Join:

  • 将接口的 (*,G) 状态转换为 "Join"
  • 重置 Join/Prune 到期定时器
  • 如果这导致出接口列表发生变化, 可能需要向上游发送 Join

处理 (*,G) Prune:

  • 在多路访问 LAN 上, 启动 Prune-Pending 定时器以允许其他路由器覆盖
  • 如果没有被覆盖, 将状态转换为 "NoInfo"

4.5.2. Receiving (S,G) Join/Prune Messages (接收 (S,G) Join/Prune 消息)

(S,G) Join/Prune 消息的处理类似于 (*,G), 但针对特定的源-组对.

关键差异:

  • (S,G) 状态独立于 (*,G) 状态维护
  • (S,G) Join 用于构建 SPT
  • 可能触发到源的上游 Join

4.5.3. Receiving (S,G,rpt) Join/Prune Messages (接收 (S,G,rpt) Join/Prune 消息)

(S,G,rpt) Prune 消息用于在共享树上排除特定源的流量.

典型场景:

  1. 接收者通过 (*,G) 加入共享树
  2. 对于特定源 S, 接收者不想要其流量
  3. 发送 (S,G,rpt) Prune 来剪枝该源

4.5.4. Sending (,G) Join/Prune Messages (发送 (,G) Join/Prune 消息)

路由器周期性地向 RP 方向发送 (*,G) Join 消息以维护共享树状态.

上游 (*,G) 状态机 (简化):

NotJoined(*,G) 状态:
- 条件: JoinDesired(*,G) == TRUE
- 操作: 发送 Join(*,G), 转换到 Joined(*,G)

Joined(*,G) 状态:
- 周期性发送 Join(*,G) (刷新)
- 条件: JoinDesired(*,G) == FALSE
- 操作: 发送 Prune(*,G), 转换到 NotJoined(*,G)

Join 周期: 默认 60 秒 Holdtime: 3.5 × Join 周期 = 210 秒

4.5.5. Sending (S,G) Join/Prune Messages (发送 (S,G) Join/Prune 消息)

(S,G) Join 消息用于构建到特定源的最短路径树.

触发 (S,G) Join 的条件:

  • 本地接收者通过 IGMPv3 请求特定源
  • 从共享树切换到 SPT (流量速率超过阈值)
  • 作为 RP, 需要停止接收 Register 消息

4.5.6. (S,G,rpt) Periodic Messages ((S,G,rpt) 周期性消息)

(S,G,rpt) Prune 消息通常与 (*,G) Join 消息一起发送, 以指示:"我想要组 G 的流量, 但不要来自源 S 的流量".

消息组合示例:

Join(*,G) + Prune(S,G,rpt)
→ "加入共享树, 但排除源 S"

4.5.7. State Machine for (S,G,rpt) Triggered Messages ((S,G,rpt) 触发消息的状态机)

(S,G,rpt) 状态机处理在 LAN 上覆盖其他路由器的 Prune 消息的情况.

关键机制:

  • Override Timer: 用于随机化覆盖消息的发送
  • Prune-Pending: 延迟 Prune 的生效以允许覆盖
备注

关于详细的状态机定义,定时器值和消息格式, 请参阅 RFC 7761 第 4.5 节的完整规范.状态机图和伪代码在原文中有详细说明.