摘要

  • L2VPN IGMP/MLD 侦听扩展的第 09 版更新了草案日期、编号和失效日期,但没有改动模型机制,内嵌 YANG 修订仍是 2022-10-11。
  • 模块规范性导入的 L2VPN YANG 第 10 版早在 2020 年失效;这不证明技术错误,却证明“当前草案”不能替代依赖闭合证明。
  • 可用于决策的证据必须继续穿过编译与偏差、设备版本、NACM 权限、预期与运行态差异,最后抵达 AC/PW 上的实际组播转发。

最容易误判的不是一份明显过时的文件,而是一份今天刚刚变成“当前”的文件。Datatracker 在 9 月 7 日记录了 draft-ietf-pim-igmp-mld-snooping-yang-l2vpn-ext-09。它把 RFC 9166 原本面向桥接业务的 IGMP/MLD 侦听模型扩展到 L2VPN:静态配置可以指定组播路由器接口与出接口,动态状态可以报告在接入电路或伪线上学习到的接口,L2VPN 网络实例则引用相应的侦听实例。

这是一块真实的管理接口设计,不是口号。但把第 08 版与第 09 版逐行比较,只能看到封面日期、草案编号和有效期变化。模块内部的 revision 仍写着 2022-10-11,而 ietf-l2vpn 与 ietf-pseudowires 的引用仍落在 draft-ietf-bess-l2vpn-yang-10。

更关键的是,这个依赖的记录显示:第 10 版最后更新于 2020 年 1 月,并在同月失效。归档文本仍可读取,所以“失效”不是技术判决书,也不等于实现不存在。它只是把一个不能跳过的问题摆到台面上:导入者的日期变新,并不会自动让被导入的接口变成当前、稳定或已实现。

四种新旧不能混为一谈

数据库更新时间、草案封面日期、YANG 模块修订日、依赖文档生命周期分别回答四个问题。管理报告经常把它们压成一句“标准本周更新”,然后路线图把这句话升级为“接口已经稳定”,自动化团队再把它理解为“设备可以部署”。第一句话可能真实,后面三步却都缺少证据。

这正是现实层需要被分开的原因。文档记录只能证明文档状态。模块能否在一组明确版本中解析,设备是否声明支持,控制器是否处理偏差,配置是否真正落地,报文是否按预期复制,都是其他层的事实。

rw 是请求,ro 是报告

草案把静态 AC/PW 项建模为可写,把动态学习结果建模为只读。可写节点表达一种可能的配置请求;只读节点表达设备声称观察到的状态。两者都不是最终业务结果。

RFC 8342提供了精确的中间层:running 可能还要经过转换;intended 是系统尝试应用的配置;operational 才包含已经应用的配置与系统状态。一个引用不存在资源的配置可以在预期态里合法存在,却永远不进入运行态。反过来,运行态里出现一条伪线成员,也不能证明某一路组播流已送达所有有兴趣的站点、没有泄洪到无成员站点,或在成员抖动后恢复正确。

授权又是另一条轴。RFC 8341的 NACM 分开读、建、改、删与执行权限。模式把叶子标为可写,并没有授权任何具体主体去写。草案自己的安全章节也承认,未授权写入可能把报文送到不适当的目的地;未授权读取则可能泄露侦听运行态。SSH 或 TLS 保护会话,不会替配置意图或转发正确性背书。

依赖闭合回执应该很薄

解决办法不是要求 IETF 为每个厂商或网络盖章。标准层负责可共享的名称、结构与语义,运行者负责证明它们在本地系统中闭合。

一张最小回执应列出草案或 RFC、内嵌模块修订和全部导入模块的精确版本,并说明如何处理失效或替代依赖。然后记录校验器、feature 与 deviation、设备软件版本、NACM 主体与操作。变更前后保存 running、intended、operational 差异。最后用 IGMP/MLD 学习状态和真实报文验证 AC 与 PW 上的复制,同时做负向测试,确认无成员处没有泛洪。回滚还要检查残留配置与学习状态是否消失。

这是一种最小初始规范:共同层只保存可比较的薄证据,不夺走运营者的本地决定权;也是运行代码优先的实际含义——模型可以规定测试对象,却不能替测试宣布结果。

第 09 版也许只是实质修改前的行政续期;失效依赖可能存在本文证据包没有覆盖的实现或后继工作;厂商也可能用私有模型提供等价能力。这些不确定性不能被写成失败,也不能被写成成功。它们都要求同一件事:补上回执。

草案是新的,这一点没有争议。依赖图、变更权与转发结果是否同样“新”,仍需分别证明。

来源

  1. 扩展草案当前记录
  2. 扩展草案第 09 版
  3. 扩展草案第 08 版
  4. L2VPN YANG 依赖记录
  5. L2VPN YANG 第 10 版
  6. RFC 9166
  7. RFC 8342
  8. RFC 8341
  9. RFC 4541
  10. 现实层
  11. 运行代码优先
  12. 最小初始规范