5. 使用 Controller 构建 P2MP Tree
Controller 配置有 SR P2MP Policy 及其 CPs, 负责计算 PTIs 并在 SR domain 中实例化. Provisioning 细节不在本文范围内.
5.1. Controller 上的 SR P2MP Policy
Operator, network node 或 machine 可以向 controller 配置 Root address, Leaf-node set 和 CPs. 随后可通过 signaling protocol 在 Root node 上实例化 policy 和 CPs. 反过来, 它们也可以先配置在 Root node 上, 再在 controller 上实例化. CP 约束和优化目标基于 SR Policy 工作, 也 MAY 使用其他 P2MP tree computation 约束.
5.2. Controller Functions
Controller 通常执行:
- Topology discovery: 跨 IGP areas, levels 或 Autonomous Systems (ASes) 发现拓扑.
- Capability exchange: 发现节点参与 SR P2MP Policy 的能力, 并通告其支持 SR P2MP Policy 的能力.
5.3. P2MP Tree Compute
Controller 为 SR P2MP Policy 的 CPs 计算一个或多个 PTIs. 如果无法计算合适的 P2MP tree, CP 可以没有 PTI. Controller MUST 按 RFC 9524 要求计算稳态无环的 P2MP tree.
当 topology 变化影响 tree instance, 或根据新的 network state 可以找到更优路径时, controller SHOULD 修改 CP 的 PTI. Controller MAY 采用 Make-Before-Break: 创建新 PTI, 网络中实例化后激活新实例, 然后移除旧 PTI, 以降低流量丢失.
5.4. SID Management
Controller 为 PTI 的 Replication segments 分配 Replication-SIDs. 它们可以由 controller 动态分配, 或由配置 SR P2MP Policy 的实体静态分配.
对 SR-MPLS, Replication-SID 可以从 SR Local Block (SRLB) 或 SR Global Block (SRGB) 分配. RECOMMENDED 从 SRLB 分配, 因为 Replication segments 对 PTI 的每个节点是本地的. NOT RECOMMENDED 从 SRGB 分配, 因为 SRGB 在 SR domain 中具有全局意义, 大量 PTIs 可能耗尽该 block.
Controller 也可以分配 BSID, 或允许 Root node 分配 BSID. 对 SR-MPLS, RECOMMENDED 从 SRLB 分配 SR P2MP Policy 的 BSID. Controller 可配置 reserved block 用于 Replication-SIDs 和 BSIDs; 这些 block 可与 SRLB, SRGB 或二者重叠, 但冲突消解过程不在本文范围内.
5.5. 在 Nodes 上实例化 P2MP Tree Instance
计算 P2MP trees 后, controller 使用 PCEP, BGP, NETCONF/YANG 或其他机制实例化组成 PTI 的 Replication segments. Nodes SHOULD 报告 Replication segment 成功实例化. 如果实例化失败, 例如 Replication-SID 与节点上的另一个 SID 冲突, node SHOULD 报告失败, 最好包含原因.
如果实例化失败, controller SHOULD 尝试重新实例化, 且 SHOULD 对尝试次数设置上限. 多次失败后, controller SHOULD 通过 syslog 等机制生成告警. 这些告警 SHOULD 限速. 如果某些 Replication segments 实例化失败, controller MAY 拆除 PTI; 如果 Root node 上的 Replication segment 实例化失败, RECOMMENDED 拆除该 PTI.
一种批量方式是先实例化 Leaf nodes 和 intermediate Replication nodes 的 Replication segments. 如果它们全部成功, 再实例化 Root node 上的 Replication segment. 如果 Root 成功, controller 可以在需要承载流量时立即激活该实例.
5.6. Protection
5.6.1. Local Protection
PTI 上的 link, node 或 replication branch 可以使用 SR Policies 保护. Backup SR Policies 关联到 Replication segment 的 replication branches, 并编程进 data plane. Backup SR Policy 的 segment list 叠加到 replication branch 的 downstream Replication-SID 上. 也可以使用 LFA, TI-LFA, Micro-Loop 或 SR Micro-Loop prevention 机制保护 PTI 的 links/nodes.
5.6.2. Path Protection
如果 topology 允许, controller 可以创建 disjoint backup tree instance 提供 end-to-end tree protection. 通常可通过 backup CP 的约束或优化目标确保其 PTIs 与 primary/active CP 的 PTIs 分离.