摘要

  • 第 21 版明确由父发布者把一份网络节点订阅拆为互不重叠的组件订阅,并要求订阅状态中的消息发布者列表至少有一项。
  • 父发布者发出的生命周期通知,是它对当前代理集合的声明;这份声明不能单独证明拆分覆盖了所有必要组件,也不能证明每个代理持续交付。
  • 可审计的连续性必须同时保留节点语境、当时生效的发布者集合、进程标识、序列号纪元、必要时的消息标识、观测时间和订阅状态变更。

最后征求意见期间的一次权力校正

draft-ietf-netconf-distributed-notif-21 于 2026 年 9 月 6 日上传,当时 NETCONF 工作组文档仍处于 IETF 最后征求意见阶段,截止日期是 9 月 8 日。它拟进入标准轨道,也已提交 IESG,但仍是可变更的互联网草案,不是 RFC。

此前,第 20 版收到的 IANA 审查结论是 IANA - Not OK。审查指出 XML 示例无效,并说明未来注册动作。第 21 版补上引号,修订注册措辞,纠正安全章节所列的 YANG 路径,审查状态随之变为 Version Changed - Review Needed。这表示需要重新审查,不表示注册已经完成。

更重要的改动只有一个主语。订阅者在父发布者处维持节点级订阅,随后由父发布者把它拆成组件订阅。旧文本把拆分归给订阅者。订阅者知道自己要什么;父发布者才掌握设备内部有哪些代理、各自具备什么能力。因此,选择组件覆盖面的权力在节点内部,责任也不能被推回请求方。

第 21 版还给订阅状态中的 message-publisher-id 列表加入 min-elements 1。空发布者集合不再是合规的建模状态。这是一张有用的结构性回执,却不是完整性证明。

订阅编号代表合同,不代表单一进程

架构把收集端分成订阅者和一个或多个接收者。请求只发给父发布者。父发布者公布节点通知能力,形成互不重叠的组件订阅,把属性交给代理,并维持总体状态。代理继承节点级订阅编号和生命周期,采集自己的组件数据,再直接向接收者发布。

于是,同一个订阅编号可以覆盖多个发声者。按订阅编号聚合的图表即使平滑,也可能有一个代理已经沉默。共同的编号只能说明这些消息属于同一逻辑合同,不能证明只有一个进程,更不能证明所有应有组件都被纳入。

草案有意不规定父发布者与代理之间如何协调,也不规定 YANG 模式子树怎样分配给代理。实现因此有自由,但协议文本也无法替某个实现证明覆盖完整。组件之间“不重叠”只能防止重复,不能证明没有遗漏。

父发布者的声明不是运行现实

所有订阅生命周期通知都由父发布者发送。subscription-started 与 subscription-modified 会列出当前消息发布者;拆分变化时,父发布者必须发出新的代理集合。运营系统应把这些通知保存为带时间边界的声明。

至少存在三份账。第一份是父发布者声明的集合;第二份是接收者实际观察到的发声进程;第三份是设备当前运行且按请求理应贡献数据的组件。前两份相等,只能证明所有被声明的代理都曾被听见。一个从未写入声明的线卡,或一段错误分配的模式子树,仍可能完全隐身。

符号层的清晰不能取代运行层的核对。父发布者有权作出拆分,但权力声明应当与设备清单、能力和配置证据相互校验。差异需要保留责任人,而不是被压成一个绿色健康分数。

连续性属于每个发布进程

每条 push-update 或 push-change-update 可以携带发出它的本地消息发布者标识。通知信封草案还定义了可选的主机名和逐进程序列号:32 位计数器从 1 开始,在 4,294,967,295 后回绕,并用 0 让回绕可见。观测时间表示值被观察的时刻,不必等于事件发生、编码或送达时刻。

这些字段回答不同问题。发布者标识回答“谁在断言”;序列号揭示当前进程纪元里的缺口;消息标识在相应传输中帮助识别重复;观测时间给测量定位;订阅状态历史说明当时谁本应出现。

进程重启会开启新的序列纪元,发布者集合变化可能让缺口合理化,旧消息也可能迟到。本地唯一标识跨设备汇总时还可能碰撞。因此,连续性键必须带上节点语境、发布者标识、序列纪元、必要的消息标识,以及父发布者状态的有效区间。

一个地址可以容纳多份权力

所有代理在接收者看来使用同一源 IP。UDP 场景甚至可能共享四层源端口;HTTPS 架构则要求每个软件进程使用专用源端口。五元组、TLS 端点或订阅编号很容易索引,但在这里都只是路由语境,不是充分来源证明。

UDP 通知传输把消息发布者标识与消息标识组合起来;若收集域内不同节点会复用本地标识,还可能需要源 IP。对大通知也不能依赖 IP 分片。能认出缺失发布者、却不能安全接收其最大消息的系统,仍会把可归因的问题变成静默丢失。

直发数据也会拆开安全边界

让网络处理器或线卡绕过中央路由处理器直接发布,可以消除集中数据路径的瓶颈。但认证、授权、密钥轮换、速率限制和资源控制也随之分散。NETCONF、RESTCONF 的安全传输和 NACM 仍然重要,可它们实际使用的身份与执行点属于部署事实。父发布者上的规则,不能自动证明每个直发代理都执行了同等策略。

消息发布者标识还会暴露内部进程布局。发布者集合的变化可反映重启、扩容或任务迁移。这种可见性正是审计价值所在,也可能帮助攻击者绘制设备结构或伪造看似合理的消息。原始拓扑标识应限制传播范围,但不能从需要追责的证据链中删掉。

尚待澄清的最后征求意见问题

正文称更新通知必须包含发布者身份,而当前 YANG 树把逐消息的 message-publisher-id 显示为可选。第 21 版新增的最少一项约束作用于订阅状态列表,并不会自动让每条数据更新都有来源。这里应被视为审查与实现问题,而不是本文替标准组织裁定的缺陷:在什么协商能力和模式条件下,接收者可以拒绝或隔离无来源更新?

正确的测试是分别验证:父发布者列表非空;每条更新确有发布者标识;该标识属于当时生效的集合;不满足时系统留下了什么证据。

范围边界

本文证据只支持草案文本、修订历史、审查状态和相关协议合同,不支持厂商采纳、实现符合性、实际拓扑、丢包、时延收益、事故或漏洞结论。信封、UDP 与 HTTPS 传输文档也仍是草案。

可以长期成立的结论更窄:拆分、声明、发出、观察与核对是五个不同动作。若用一个编号把它们压扁,问责能力就会消失。

来源