摘要
draft-dikshit-netconf-yang-push-causal-ordering-00建议为 YANG-Push 通知加入混合逻辑时钟,使不同发布者的记录可以比较。它面对的缺口真实存在:各自递增的序号只能解释本地流,不能彼此比较。- HLC 保证的是单向关系:若事件 e 在因果上先于 f,则前者时钟更小。时钟更小不能反推因果;并发事件也会被物理时间排开,两个发布者还可能生成相同二元值。
- 任何自动判断都要另外保留发布者身份与进程代次、序号缺口、时钟状态、平局规则、显式依赖、观察窗口、数据存储状态、决策权限、执行回读和独立结果。
本地序号并没有做错事
一条发布者内部递增的序号,可以让接收方发现这一条流里的异常。收到 501 后直接看见 503,说明 502 值得追查;503 之后才收到 502,则需要区分乱序、重放或延迟。这个序号没有承诺能把发布者甲的 503 与发布者乙的 27 放进同一时间尺度。两者从不同起点出发,事件速率不同,重启历史也不同。
修订版 00 准确指出了这个跨发布者缺口,也指出有限计数器回绕后会重复。它比较了三种工具:本地计数器便宜但局部;向量时钟能够区分因果先后与并发,代价随参与者增长;混合逻辑时钟把物理部分和逻辑部分组合起来,以固定大小接近现实时间,同时保持逻辑时钟的一项性质。
这是一种有吸引力的遥测字段。问题不在于使用它,而在于下游把“可比较”读成“已经解释”。一个数值较小的记录可以先显示、先落库、先进入窗口,但这些动作本身没有提供事件之间的信息传递路径。
因果箭头只能顺着读
HLC 原论文对核心性质的写法非常克制:如果 e happened-before f,那么 hlc(e) < hlc(f)。这里的 happened-before 不是日常语言里的“钟表时间更早”,而是由同一进程内的程序次序、发送与相应接收,以及它们的传递闭包组成。已经存在的信息路径不应被时钟反转。
反向推论并不成立。甲在未收到乙任何消息时观察到接口计数变化,乙在未收到甲任何消息时观察到路由变化。甲的时钟比乙慢 20 毫秒,于是甲的 HLC 更小。排序可以稳定地把甲放在前面,却不能说明接口变化导致了路由变化,也不能说明它们属于同一次操作。
向量时钟之所以携带更多成本,是因为它能够让分量比较支持更强的判断,不可比较的向量还能显露并发。HLC 选择的是固定空间与接近物理时间。治理要承认这个交换:系统获得了轻量顺序,失去了从任意不等式反推因果的能力。
快时钟会改变谁显得“更新”
草案也看到物理时钟被操纵或严重超前的风险。超前发布者会不断生成更大的物理分量,使记录在全局顺序中偏后。若排序参与“最后写入获胜”、告警窗口、事件归因或恢复选择,它便获得了不应由时钟偏差授予的影响力。
提案要求接收者把超出自身时钟某个 epsilon 的值视为可疑。这是一条重要的隔离线,却不是可信证书。接收者的时钟也可能错误;站点可能处于失去同步后的保持状态;网络延迟与色散会变化;一次合法校正也可能越界。RFC 5905 描述 NTP 的同步方法,RFC 9581 可以携带时间尺度与不确定性声明,但两者都不会替事件作证。
处理方式必须进入证据。丢弃会造成缺口,隔离会造成迟到,钳制或重写会改变发布者原始声明,直接接受则可能污染时间窗口。之后若迟到记录改变结论,系统应能重放当时收到的值、同步状态、阈值、处理决定与重新计算结果。
相同二元值仍然没有唯一第一名
草案提出物理分量与逻辑分量,并以二元组做字典序比较。在同一正确维护的进程里,逻辑计数能分开同一物理刻度上的连续事件。两个互不通信的发布者却可能在同一毫秒各自生成逻辑零。二元组完全相同,单靠这两个字段无法选出唯一先后。
工程上可以添加稳定的发布者身份、进程代次和事件标识作为破局项。这样每个接收者都能产生相同列表。但如果甲仅仅因为身份字符串更小而排在乙前面,这仍然是行政排序,不是因果发现。破局规则应明确标注,不能进入根因边、责任归属或回滚先后而不经额外论证。
进程代次同样关键。主机名没有变化,并不证明分配 HLC 的进程连续存在。虚拟机回滚、镜像复制、板卡替换或高可用双活,都可能让一个熟悉身份对应新的或重叠的时钟状态。接收者需要认证主体、启动代次、状态恢复方法和冲突处理,而不是从名字相同推断历史连续。
排好队的记录仍可缺一整座发布者
HLC 只排序已经到达的东西。发布者离线、订阅终止、访问控制过滤、传输断开、模式无法解码、聚合器背压或更新合并,都能让事实消失,却不破坏其余记录的单调外观。某一可见流没有缺号,不能证明决策需要的所有来源都在场。
不同发布者的记录也未必描述同一瞬间。接口子系统在变更前采样,路由子系统在变更后采样,两条通知都可以局部正确。排序把它们画成一条线,却不会生成一个真正存在过的原子快照。要声称一致状态,需要共享屏障、事务版本,或至少明确的观察窗口与不一致规则。
因此证据链要分别记录事件时间、观察时间、发出时间、接收时间与决策时间;记录订阅、模式、访问视图、发布者身份、进程代次、本地序号、HLC、时钟状态、缺口与转换。若声称因果,还要给出消息、事务或业务依赖。若据此执行变更,则要加上负责人、权限、精确目标、参数、协议响应、应用状态回读以及独立的转发或服务观察。
这是一份值得讨论的个人草案
修订版 00 日期为 2026 年 8 月 30 日,目标状态为 Informational,2027 年 3 月 1 日到期。它是个人 Internet-Draft,没有 RFC stream。Datatracker 明确说明,个人提交不受 IETF 背书,在 IETF 标准流程中没有正式地位。它不是 NETCONF 工作组共识、RFC、实现报告或部署证据。
这种身份并不取消其问题价值。分布式遥测确实需要说明如何组合原本不可比较的发布者流。HLC 提供了一个紧凑候选。严格的结论是:它能在假设成立时不反转已有因果,不能从任意排序创造因果;它能处理大量比较,不能靠二元字段解决所有平局;它能支持分析,不能证明输入完整、执行有权或结果成功。
来源
- https://datatracker.ietf.org/doc/draft-dikshit-netconf-yang-push-causal-ordering/
- https://datatracker.ietf.org/doc/draft-dikshit-netconf-yang-push-causal-ordering/history/
- https://datatracker.ietf.org/doc/draft-dikshit-netconf-yang-push-causal-ordering/references/
- https://datatracker.ietf.org/doc/draft-dikshit-netconf-yang-push-causal-ordering/referencedby/
- https://datatracker.ietf.org/doc/html/draft-dikshit-netconf-yang-push-causal-ordering-00
- https://www.ietf.org/archive/id/draft-dikshit-netconf-yang-push-causal-ordering-00.txt
- https://datatracker.ietf.org/doc/draft-dikshit-netconf-yang-push-causal-ordering/00/
- https://datatracker.ietf.org/doc/draft-ietf-netconf-yang-push-2/
- https://datatracker.ietf.org/doc/draft-ietf-netconf-distributed-notif/
- https://datatracker.ietf.org/doc/draft-ietf-netconf-notif-envelope/
- https://www.rfc-editor.org/rfc/rfc8641.html
- https://www.rfc-editor.org/rfc/rfc8639.html
- https://cse.buffalo.edu/tech-reports/2014-04.pdf
- https://www.rfc-editor.org/rfc/rfc5905.html
- https://www.rfc-editor.org/rfc/rfc9581.html
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
