摘要
draft-ietf-netmod-iana-yang-guidance-03描述的是一条拟议出版交接链:带预发布版本的规范性 YANG 模块,经 RFC Editor 受控编辑、版本定稿和重新校验后,再由 RFC 与 IANA 近同步发布。- draft 后缀移除、
pyang/yanglint无报错、RFC 与 IANA 字节一致,各自都能形成有价值的收据;任何一张收据都不能单独证明语义未变、版本提升正确、客户端拿到同一字节、设备实际装载或运行兼容。 - IETF-published module 与从 companion registry 派生的 IANA-maintained module 是两条不同的更新路径;registry 变化会触发后者修订,但 registry、模块与运行系统仍是不同观察层。
把两份完全相同的文件放在桌上,很容易产生一种完成感。哈希相同,revision 相同,YANG Semver 相同;一份从 RFC 中抽取,另一份来自 IANA YANG Module Names registry。出版团队确实可以据此回答一个重要问题:读者从两个权威发布面看到的最终模块是不是同一份字节。
但桌上没有客户端缓存,没有设备进程,没有 feature 与 deviation,没有实际 datastore,也没有一次网络操作。文件一致所关闭的是出版歧义,不是运行现实。
这正是 revision 03 最值得观察的地方。2026 年 9 月 11 日核验时,Datatracker 将它列为 active NETMOD WG Internet-Draft revision 03,状态包括 WG Document 与 I-D Exists,Intended RFC status 为 Informational。正文日期是 2026 年 7 月 6 日,到期日是 2027 年 1 月 7 日。页面的 Last updated 显示 8 月 27 日,是 shepherding AD 与 intended status 的元数据变化;latest revision 仍是 7 月 6 日。它尚未成为 RFC,也不能被写成已经执行过的 IANA 或部署事件。
预发布标记不是瑕疵,而是编辑空间
草案从一个少被解释的时点入手:文档若获 IESG 批准,内含的规范性 YANG 模块通常仍带预发布版本,例如主版本为零,或带 draft-number 后缀。这是在公开说明模块还可能于 RFC Editor 阶段改变,尚未获得正式 revision 的不可变性。
RFC Editor 可以改善不改变含义的描述、把 draft 引用换成最终 RFC 号、修正拼写,并统一格式。边界在于“编辑性”。若改动可能影响语义,就必须与作者协调;若 BC、NBC 或纯编辑分类不清,也应寻求 YANG Doctors 等进一步判断。
出版前要把 revision date 更新到最终修订日期,移除预发布后缀,并决定正式 YANG Semver。对已经发表过的模块,还要与此前版本比较,必要时添加 rev:non-backwards-compatible。如果之后又改了字节,就要重新做版本判断。版本号因此是一项需要保留理由的决定,而不是机器自然吐出的事实。
校验成功有明确、有限的主语
revision 03 建议在所有编辑和格式化完成后重新运行适当工具,出版时通常同时使用 pyang 与 yanglint。它也明确要求带上正确依赖;一组同时出版的模块可能需要一起抽取和校验。
工具的诚实边界写在草案里。描述变化究竟是澄清还是语义改变,工具未必能判断;update comparison 能发现一批已知 NBC 情形,却不能保证覆盖所有边缘;实现本身会有缺陷,可能给出假阳性或假阴性;当前一个版本还是 prerelease 时,自动推荐正式后继版本甚至可能不可用。
所以“无 warning、无 error”只证明特定工具版本、参数、输入字节和依赖上下文通过了规定检查。它不证明编辑没有改变意义,也不证明每个客户端、server 或设备都使用同一解析器和上下文。
IANA 的延迟把两个出版面锁在同一终点
拟议流程要求 IANA 等 RFC Editor 完成后再发布规范性模块。最终模块确定后,RFC 携带该内容,IANA 则在大致同一时间把对应版本发布到 YANG Module Names registry。目的很具体:两处字节精确匹配,引用指向最终 RFC,不让中途版本抢先固化。
这是一项出版控制,而不是部署编排。可审计收据应包含 RFC 抽取字节、IANA 对象、SHA-256、抓取时间、revision date 与版本。即便这些全部相同,也还不知道 unsuffixed URL 的缓存是否更新、客户端取了哪个对象、package 是否解析到同一依赖、server 是否实际装载、YANG Library 是否准确声明、实例数据能否迁移、行为是否兼容。
现有 BTW 文章已经分别处理文件名与 loader selection、schema comparison 的 ED/BC/NBC、module versioning 的分支与 ancestry,以及 packages 的递归组合。本篇只占有“最终出版候选如何被控制并同步到两个发布面”这一交接机制。
IANA-maintained module 是另一条时间线
草案随后讨论的并不是上述副本的同义词。IANA-maintained module 通常从 companion registry 的枚举或 identity 派生。新值先进入权威 registry;IANA 再识别 registry delta,把等价变化写入模块,更新 revision 与 version,检查 BC/NBC,校验,并发布按版本和日期可寻址的文件。
这条链能证明某个已识别 registry 变化被映射进某个模块版本。它不能证明模块在所有时刻都紧跟 registry,也不能证明映射没有遗漏、客户端已经取件、进程已经加载或设备已经采用。RFC 9907 所讨论的 registry 权威与 freshness 仍属于相邻但不同的问题。
一条可辩护的证据链不会省略中间人
至少应分开保留九类记录:获批的 prerelease candidate;RFC Editor 的逐项改动与咨询;最终 revision/Semver 判断;精确校验输入、依赖、工具版本和命令;RFC 中抽取的模块字节;IANA 发布字节与抓取时刻;客户端取件和缓存来源;设备加载及有效 schema 声明;datastore、协议、转发与业务结果。
Heng Lu 的 Running-Code Primacy 在这里是公开的解释框架,而不是对 IETF 动机的归因:协调产物可以定义目标,但不能替运行者完成采用。Minimum Initial Specification 解释了为何这份草案最有价值的部分恰恰很窄——每一项共同规则都应可验证,却不越权替未观察层作证。Reality, Not Advocacy 与 Reality Layers 要求报道停在最后一张真实收据上。
两份完全一致的出版副本当然重要。真正专业的做法,是既承认它解决了什么,也拒绝让它证明从未观察过的事。
信息来源
- Revision 03 正文
- Datatracker 当前记录
- Datatracker 历史
- RFC 9907
- RFC 9890
- RFC 7950
- YANG Module Versioning revision 17
- YANG Semantic Versioning revision 26
- YANG Schema Comparison revision 09
- YANG module filename revision 14
- IANA YANG Parameters
- Heng Lu:Running-Code Primacy
- Heng Lu:Minimum Initial Specification
- Heng Lu:Reality, Not Advocacy
- Heng Lu:Reality Layers
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
