Summary

  • RFC 9933 可以在 PCEP 的路径对象和约束中表达 SR-Algorithm。对 128 至 255 的灵活算法而言,编号还必须解析到一个按优先级和发布者身份选出的“胜出 FAD”,计算同时依赖其度量、约束、拓扑属性和参与节点。因此,编号相同并不能单独证明策略连续。
  • 可审计的做法不是把整个网络地图塞进协议,而是在旁路保存一份“策略解析回执”:锁定胜出 FAD、选举依据、作用域、度量词典、目标函数、被放宽的对象、裁剪规则版本、TED 快照摘要和变更授权,使敏感数据不公开也能接受受控复核。

凌晨的一次路径切换之后,事故小组找到两条记录。切换前的路径写着 SR-Algorithm 130,切换后的路径也写着 130。PCEP 会话正常,双方能力协商成功,返回的段列表格式正确。仅从这些信号看,策略似乎从未改变。

然而,在两次计算之间,网络里可能出现了一份优先级更高的 Flexible Algorithm Definition。它把优化度量从时延改为本地成本,新增反向管理组排除条件,并让一台不支持新约束的路由器退出该算法。协议仍然可以正确工作,编号也无需改变,但 130 已经不再代表昨天的决策空间。

这不是编号失效,而是编号发挥了索引作用。索引的价值就在于用很短的表示调用很复杂的规则。问题出现在组织把“索引相同”误读成“规则相同”。

RFC 9933《在路径计算单元通信协议中携带 SR-Algorithm》提供了一个清晰的治理切口。它规定如何在 PCEP 中传递与 SID 相关的算法字段、如何请求 SR-Algorithm 约束,以及如何表达新的路径度量。对于灵活算法,完整策略却不是随请求一并传送,而是由 PCE 从其他控制面状态中解析出来。

技术标准需要高效地传递意图;治理记录需要在事后恢复意图究竟被解析成了什么。两者不是一件东西,也不应相互冒充。

RFC 9933 在链路上留下了什么

RFC 9933 于 2026 年 7 月以 IETF Standards Track 文档发布,更新了面向 SR-MPLS 与 SRv6 的 PCEP 扩展。它允许 SR-ERO、SR-RRO 以及对应的 SRv6 子对象携带 Algorithm 字段,也允许头端在 LSPA 对象里放入 SR-Algorithm TLV,向 PCE 提出算法约束。

标准没有让这个能力被随意调用。双方必须先宣告支持;在未协商能力时使用该扩展,会收到明确的无效操作错误。字段长度不一致会使对象无效,无法解析的 SID 有对应错误。当约束组合无法满足时,PCE 必须返回空 ERO 或 NO-PATH,而不能悄悄放松条件后给出另一条路。

这些规则构成了很强的协议证据:可以确认双方理解能力、消息结构合法、约束被按规范处理、失败没有被伪装成成功。但它们不回答一项制度问题:请求中的算法值在那个时刻究竟指向哪一套可执行政策。

IANA 的 IGP 算法类型登记给 0 和 1 赋予了 SPF 与 Strict-SPF 的标准含义,2 至 127 仍属于标准化空间,128 至 255 则用于 Flexible Algorithms。进入后一范围后,数字的意义来自运营者配置和域内发布,不是数字自身携带的固定正文。

所以,一条只显示“SR-Algorithm 130”的日志既可能完全真实,也可能不足以支持审计结论。它记录了入口,却没有记录入口当时通往哪个房间。

胜出 FAD 才是正在执行的政策

RFC 9350 把计算类型、度量类型和一组约束合称为 Flexible Algorithm Definition,即 FAD。128 至 255 的一个编号通过配置与这组定义相联系。

同一个区域里可能有多个路由器发布同一编号的不同定义。为保证参与者一致,RFC 9350 给出确定性的选择顺序:先选数值优先级最高的公告;如仍有并列,则选择来自数值最大的 IS-IS System-ID 或 OSPF Router ID 的公告。最终结果被称为“winning FAD”。

这套规则解决了分布式一致性,却也说明了编号为什么不是策略指纹。真正的解析结果取决于候选公告、优先级、发布者身份和决胜规则。只要出现一份优先级更高的新公告,同一个 130 就可以合法地指向另一套计算类型、度量与约束。

还有一个容易被管理界面隐藏的细节:发布 FAD 的路由器不一定参与该灵活算法,接收方仍须考虑它的公告。也就是说,定义政策的权力与执行政策的节点可以分离。集中定义可能非常有效,但谁能发布、谁能提高优先级、谁批准生效,必须成为责任链的一部分。

如果节点不支持胜出 FAD 里的计算类型、度量、约束、标志位或子 TLV,RFC 9350 要求它停止参与并移除相应转发状态。FAD 变化还可能引发全网重新计算与收敛。规范保证节点对新状态采取一致行为,却不会自动保留“为什么要换成这份定义”的批准记录。

因此,昨天的当前配置无法替代昨天的胜出证据。审计需要知道当时有哪些候选、哪一个获胜、败选者是什么、变更原本计划持续多久,以及异常定义是否按期撤回。

作用域不是附注,而是含义的一部分

RFC 9350 以区域作为 FAD 的选择作用域,并明确允许同一个灵活算法编号在不同区域具有不同定义。例如,一个区域可以用 130 优化最小时延,另一个区域可以用同一个 130 优化带宽。

这种设计使本地政策可以适配不同网络条件,不是协议歧义。歧义产生在脱离作用域的记录里。把所有区域的 130 汇总成一个标签,就像只记录法条编号却不记录司法辖区,或者只记录金额却不记录币种:数字没错,解释仍然错了。

跨域控制器、服务保证系统和事故报告至少需要区域、层级、政策时期以及本地命名空间,才能让编号有可复用的意义。尤其在 IS-IS 层级或 OSPF 区域之间,是否刻意保持相同语义应当被明确声明,而不能从相同数字反推。

RFC 9933 把单次端到端计算中不同域采用不同 SR-Algorithm 约束,或同一算法在各段使用不同胜出 FAD 度量与约束的情形列为范围之外。这条边界提醒运营者:如果业务路径跨越多个政策域,证据也必须逐域保留,不能用一条全局“算法 130”记录把差异抹平。

治理的目标并非消灭地方差异,而是让每个地方含义都有清楚的辖域。

保存请求,并不等于保存决策

对于 128 至 255 的值,RFC 9933 要求 PCE 按照 Flexible Algorithm 流程计算。PCE 使用自己的 Traffic Engineering Database,其中应包含 FAD、节点参与情况和面向应用的链路属性。这些事实可能来自 IGP 扩展,也可能通过 RFC 9552 所描述的 BGP-LS 分发进入。

因此,一次路径计算是请求与当时证据环境的共同函数。保存请求的字节,只保存了函数的一部分输入。

优化度量的处理尤其说明这一点。对灵活算法,PCE 必须使用 FAD 指定的度量类型;即使 PCC 在 PCEP 消息里直接放入另一个优化度量,PCE 也必须忽略它。PCE 同时应用 FAD 约束和 PCC 直接提供的约束,但 PCC 不应把 FAD 自身约束再次复制进消息,以免产生不期望的行为。

这是合理的协议分工:不必在每次请求里复制长而动态的域内政策。但事后重放同一个请求时,如果胜出 FAD、拓扑属性、参与节点或规则顺序不同,得到另一条路径完全可能符合规范。

于是,PCEP 请求和响应可以作为通信记录完整,却作为决策记录不完整。真正可重放的档案还必须包含当时解析政策所使用的环境。

度量编号里藏着运营者的价值判断

RFC 9843 为灵活算法增加带宽与时延约束、自动带宽度量计算和通用度量机制。度量类型 128 至 255 可以由运营者在本地赋义。

本地空间很有必要。网络可能需要表达财务成本、抖动、能源风险或合同暴露,而这些语义不适合在出现之初就变成全球标准。但“metric-type 130”只有配合本地词典才可解释。RFC 9843 也明确提示:如果用户自定义度量跨越区域或层级,所有域都应给同一类型赋予相同含义。

即使使用标准带宽度量,决策仍含有政策参数。链路直接发布的带宽度量可以覆盖自动计算;在没有直接值时,胜出 FAD 可能提供参考带宽或阈值表。只要中央参考参数变化,许多链路的计算成本就会变化,而 SR-Algorithm 仍可继续叫 130。

度量不是中性的数字容器。决定衡量时延、容量、金钱还是其他风险,就是在分配基础设施资源和失败暴露。谁拥有词典、谁批准公式、数据源如何排序、何时开始生效,都是控制权。

一份可复核记录应为本地度量保存语义版本、单位、归一化规则、所有者和作用域;为自动度量保存计算方式、阈值、参考值和数据优先级。否则,人们也许能重算出同一个浮点数,却不知道那个数当时代表什么。

裁剪规则也是会升级的决策器

灵活算法不只给链路打分,还会根据约束把部分链路从候选拓扑中删除。RFC 9917 建立了 IANA 的“IGP Flex-Algorithm Path Computation Rules”登记表,用有序规则描述裁剪过程。

截至本次研究,IANA IGP 参数登记 列出十条规则:排除管理组、排除共享风险链路组、include-any 与 include-all 条件、度量缺失、带宽与时延限制,以及反向管理组判断。该登记采用 Expert Review,规则数量没有预设上限。

这意味着评估器本身也有版本。旧软件与新软件即使接收相同 FAD,也可能因为支持的约束或规则集合不同而产生不同结果。RFC 9933 要求 PCE 在不支持组合时失败,这是防止静默偏离的重要保障;但一条 NO-PATH 若没有规则版本与淘汰原因,仍难以解释最后一条候选为何消失。

自动化系统常保存输入和输出,却忘记解释器也是状态。要真正复现决策,必须同时拥有事实快照、政策版本和评估器版本。缺少任何一个,重放只是表面相似。

SR-Algorithm、度量和目标函数不能混为一谈

RFC 5541 定义了 PCEP 目标函数。PCC 可以把目标函数标为必须采用,也可以只表达偏好;如果只是偏好,PCE 可依据本地能力与政策选择其他目标函数。

RFC 9933 明确说 SR-Algorithm 不替代目标函数。算法编号也不等于度量类型。这几层各自回答不同问题:SR-Algorithm 约束计算族并为灵活算法选择 FAD 命名空间;FAD 提供计算类型、度量与约束;目标函数在有效候选中决定优化方向;TED 提供当前事实;对象处理规则决定哪些直接约束可被放宽。

RFC 9753 针对有状态 PCEP 中的可选对象给出处理方式。在双方支持时,某些对象可以被忽略,同时需要让对端知道这一处置。满足全部约束的路径与放宽可选约束后获得的路径,在制度上不是同一种结果。回执应记录每个对象是采用、忽略、拒绝还是不支持。

RFC 9826 提供了 PCEP 的 YANG 数据模型,可以观察实体、对端、会话、通知与统计。RFC 9933 还建议实现让运营者查看相关能力、FAD 和参与节点。可见性为取证创造条件,但“现在能看见”不等于“历史会保留”。

TLS 能保护消息,不能冻结政策含义

RFC 9933 建议使用 TLS 保护 PCEP 会话,RFC 9916 又更新了 PCEPS 对现代 TLS 行为的要求。没有可信的传输,攻击者可以篡改约束或冒充控制器,任何治理讨论都会失去基础。

但合法对端通过安全信道发来的合法请求,仍可能被一份刚刚更换的 FAD 解析。TLS 能证明谁发送了哪些字节、传输中是否被改动,却不知道哪个变更委员会批准了更高优先级、紧急定义何时到期,也不知道本地度量 130 的业务含义。

密码学完整性保护已有记录;政策溯源决定记录里是否包含将来需要的理由。把两者混同,就是要求密封信封解释收信机构为何作出某项决定。

策略解析回执应该记录什么

没有必要把完整拓扑、商业成本或安全排除条件装进每条 PCEP 消息。协议必须快速且可互操作,敏感网络信息也不应无边界公开。证据可以在运行通道旁保存,用摘要与受控档案相连。

一份策略解析回执应包含:请求标识、PCE/PCC 身份、时间与作用域;SR-Algorithm 值及出现位置;规范化胜出 FAD 和摘要;获胜发布者、优先级、决胜输入与公告范围;当时的度量词典或推导参数;目标函数及其必须、偏好或替代状态;PCC 直接约束和每个可选对象的处置;有序裁剪规则与实现版本;TED、参与节点和能力排除的摘要;ERO、空 ERO 或 NO-PATH 结果及结构化原因;最后还要有变更工单、批准角色、生效窗口、回滚触发器和复核日期。

普通跨团队视图可以只公开摘要、版本、原因类别与保管责任。获得授权的审计者再去受保护仓库解析这些承诺。审计性不等于把网络地图公开在互联网上,它意味着制度能够在适当边界内给出证据。

回执还可以区分“事实变了”和“规则变了”。链路故障会在同一政策下改变路径;FAD 更新会在相近拓扑下改变路径。若不同时锁定事实与政策,人们很容易把人为治理决定错当成网络自然波动。

Sources