Summary

  • RFC 10041 允许支持者在满足条件时把 LSLinkInfinity(0xffff)链路排除出相应 SPF;条件是区域 LSDB 中所有 Router-LSA 对应的路由器均通告 Unreachable Link 能力。
  • 老设备加入、能力 LSA 消失或老化,都可能让条件从“全部支持”变成“并非全部支持”。传播期间的解释差异可能形成暂态环路。
  • Daniel Kade 提议建立“区域语义启用凭据”,把实时成员清单、能力证据、收敛时段、受影响链路、路由重算与回退条件绑定起来。

两台路由器都算对了,包却走成了圈

一台新路由器看见最大度量值后,把链路从 SPF 中删除。旁边的旧路由器仍把同一条链路保留为最后手段。面对某个目的地,新路由器把包交给旧路由器,旧路由器又按照自己的最短路径把包送回来。每台设备都遵循本地规则,组合结果却是环路。

RFC 10041 解决的是语义迁移。传统 OSPF Router-LSA 的固定格式会让已通告链路进入基础 SPF。某条链路可能只希望用于流量工程,或仅供 RFC 9350 的 Flexible Algorithm 使用,却仍被普通逐跳路由选中。

新规范允许链路继续出现在拓扑中,同时用 0xffff 把它排除出相应计算。但在旧规范里,这个数仍表示可达。不能让两种解释在同一区域随意并存。

共识不在资产表里

支持新规则的路由器通过区域范围的 Router Information LSA 声明功能位。只有当区域 LSDB 中每一个发出 Router-LSA 的路由器都声明该能力时,设备才可以使用“不可达”解释。

这不是“升级工单全部完成”,也不是控制器清单显示版本合格。协议要求的证据来自各路由器实际看到的链路状态数据库。

当不支持者数量降到零,区域进入新语义;当数量从零变成正数,必须恢复兼容解释并重新计算路由。一个新成员、一条能力 LSA 的撤回或老化,都能创建新的语义时期。

传播窗口就是风险窗口

LSA 不会同时到达所有设备。RFC 10041 明确指出,老路由器加入一个原本全部支持的区域时,各节点会逐步发现它。在这一段时间里,同一个数可能在部分设备上表示不可达,在另一些设备上仍表示高代价可达。

所以启用记录不能停在配置成功。至少要记录预定变更、第一条改变全员条件的 LSA、传播窗口以及代表性路由器在共同解释下完成重算的时刻。

检查相互指向的下一跳、TTL 异常和短时流量损失,可以发现环路迹象。但 LSDB 一致与数据面实际转发仍是两类证据,不能互相替代。

0xfffe 保留“最后手段”

Stub Router Advertisement、LDP-IGP 同步和链路优雅下线都曾使用最大度量来表达“不希望经过,但必要时仍可用”。RFC 10041 用 MaxReachableLinkMetric(0xfffe)保存这层意思,并更新 RFC 5443、6987、8379 和 8770。

两个数只差一,却代表不同控制:0xfffe 是最后手段,0xffff 在全区域支持时是从相应 SPF 中排除。把两者都显示为“高度量”会抹掉变更意图。

自动成本也必须封顶于 0xfffe。按带宽反比计算时,一条很慢但真实可用的链路不应因为算术碰到最大值就突然变成不可达。

不可达只属于一个计算语境

一条在基础 SPF 中不可达的链路未必物理断开。它可以继续供 TE 看见,也可能由使用其他度量的 Flexible Algorithm 选择。反过来,0xfffe 链路也可能正常工作,只是被强烈降权。

治理记录应拆开动词:通告、解释、排除、计算、安装、观测。物理团队、IGP 策略、TE 引擎、灵活算法和转发硬件分别控制不同阶段。RFC 10041 改变的是计算规则,不证明隧道已经建立或流量已经通过。

区域语义启用凭据

我建议建立一份区域语义启用凭据。这是 Daniel Kade 的治理提议,不是 RFC 10041 或 IETF 追加的要求。

凭据首先固定区域身份与 Router-LSA 所反映的实时成员。对每台路由器保存能力 LSA 的有限引用、状态、新鲜度和观测点。

第二部分记录变更时期:责任人、启用或撤回、不支持者数量前后值、第一条决定性 LSA、传播区间、SPF 重算与收敛观察点。后来加入的成员必须开启新记录。

第三部分逐链路区分 0xffff、0xfffe、TE 或 Flexible Algorithm 用途以及自动成本上限,不把“从此 SPF 排除”写成“物理故障”。

第四部分保留有限的路由与下一跳差异,并单独保存转发观察。回退条件包括:出现不支持者、能力证据过期、LSDB 视图不一致、能力位快速抖动或发现环路。

凭据不必公开完整 LSDB、设备凭据或敏感拓扑。时间、计数、哈希和受控链路引用已经足以审计语义变更。

写权限、稳定性与共识是三件事

RFC 10041 的 YANG 模块扩展 RFC 9129 的 OSPF 模型。未经授权的写入可以关闭新解释或把链路通告为不可达;读取也可能暴露有助于拒绝服务的信息。安全传输、双向认证和 RFC 8341 的 NACM 用来限制访问。

被攻陷的路由器仍可能频繁改变能力位,迫使全区域反复计算。RFC 8405 的 SPF 退避算法用于抑制这种压力。访问控制回答谁能改,退避回答多久重算,共识证据回答区域是否一致。

IANA 注册表让能力位拥有稳定身份,却不让全员支持永久成立。成员、版本、策略或 LSA 一变,旧凭据就失效。

RFC 10041 的深层教训是:分布式协议中,意义本身也可能是一项共享状态。单个通告里的数值没有足够权力关闭道路,只有被观测到一致的整个区域才有。

资料来源

  1. Lu Heng:Data Sovereignty: Technical vs Practical Realities
  2. Lu Heng:Why BTW Media Exists
  3. Lu Heng:Running-Code Primacy
  4. RFC 10041:在 OSPF 中通告不可达链路
  5. RFC 2328:OSPFv2
  6. RFC 5340:IPv6 OSPF
  7. RFC 5443:LDP-IGP 同步
  8. RFC 6987:OSPF Stub Router Advertisement
  9. RFC 7770:OSPF Router Information Advertisement
  10. RFC 8341:NACM
  11. RFC 8379:OSPF 链路优雅下线
  12. RFC 8405:SPF 退避算法
  13. RFC 8770:OSPFv3 Stub Router
  14. RFC 9129:OSPF YANG 模型
  15. RFC 9350:IGP Flexible Algorithm
  16. IANA:OSPF 参数