摘要
- RFC 9616 借助 Hello 与 IHU 时间戳测量 Babel 邻居 RTT,不要求两台路由器时钟同步。
- 原始 RTT 不直接进入选路:推荐先平滑,再用 10 毫秒与 120 毫秒两道阈值映射为有界成本,最后用滞后抑制频繁切换。
- 可审计链条必须分别保留时间戳位置、样本、平滑值、参数、候选与选中路由、FIB、实际报文路径和应用结果。
RFC 9616 解决的第一个问题很直观:隧道会把距离藏起来。巴黎本地隧道与经东京绕行的隧道,在跳数指标中都可能只算一跳。基础 RFC 8966 没有强制唯一的指标算法;无线链路常看丢包,其他链路可能只看跳数。拓扑一旦叠加 VPN 或 overlay,形式相同的“一跳”就可能承载完全不同的物理时延。
扩展把缺失的观察加入既有邻居交互。A 在 Hello 中写入本地发送时间 t1;B 记录到达时间 t1'。B 发送 IHU 时携带这两个值,并在同一报文中发送时间为 t2' 的 Hello。A 于 t2 收到后计算:
RTT = (t2 - t1) - (t2' - t1')
关键不在四台时钟读数看起来像不像,而在每次相减都只使用同一台设备的时钟。因此双方不必共享纪元,也不必先完成严格同步。方法可追溯到 Mills 在 RFC 891 所述 HELLO 协议中的工作,RFC 5905 则提供了相关时间处理背景。
这是一种克制的公共机制。每个邻居只需保存最近一次 Origin Timestamp 与 Receive Timestamp;IANA Babel Parameters 把 Timestamp 登记为 3 号 sub-TLV。Hello 携带一个 32 位值,IHU 携带两个。协议把可互操作的观察做薄,却没有替运营者决定什么时延才算“好”。
采样点先决定测到了什么
公式正确并不代表采样边界相同。发送时间应尽量靠近报文交给网络栈之前,接收时间应尽量靠近报文从网络栈交出之后。若实现提前打点,本机发送等待可能被算进链路;若接收后很久才打点,调度延迟也会被归给邻居。
RFC 9616 建议在构造报文时先放四字节 PadN,真正发送前再替换成时间戳。这不是实现美学,而是证据完整性:字段值必须能说明它在系统中的采集位置。仅证明报文格式合规,无法证明不同设备测量的是同一段路径。
时间戳以微秒为单位存入 32 位无符号整数,大约每 71 分钟回绕。设备重启也会让本地时钟从任意新起点开始。文档建议用三分钟窗口拒绝看似来自未来、过旧或因重启失真的样本。邻居关系仍可更新,但该样本不能进入 RTT 计算。
因此,“邻居在线”“样本可用”“平均值当前有效”是三个回执。只保存最终曲线,会掩盖样本是否稀疏、多少值因过期被丢弃、平滑结果是否仍主要反映重启前状态。
原始 RTT 会让选路追逐自身
时延不是独立于流量的自然常数。低 RTT 路径被选中后承载更多流量,排队增加,RTT 上升;流量被移走后队列消退,RTT 又下降。如果每个新样本都直接驱动路由,控制器会在并行路径间往返,导致报文乱序并伤害上层协议。
即使没有这种负反馈,突发流量也会产生孤立尖峰。两条接近的路径可能围绕一个共同数值反复交叉。RFC 引用的原始研究 A delay-based routing metric 报告:现实测试没有出现振荡,而刻意构造的最坏环境会出现分钟量级振荡。这支持“需要稳定化”的机制判断,不等于任何部署都会得到同样结果。
第一层稳定化是指数平滑:RTT := α RTT + (1 - α) RTTn。RFC 建议 alpha 位于 0.8 至 0.9,默认 0.836。旧状态权重较高,孤立尖峰影响较小;真实变化也更慢进入结论。
第二层是有界映射。低于 rtt-min 时,成本保持名义值 C;在 rtt-min 与 rtt-max 之间线性增加;高于上限后固定为 C + max-rtt-penalty。推荐值分别为 10 毫秒、120 毫秒和 150。
第三层是滞后。即使平滑值位于线性区间,小幅波动也不应立即替换当前路径。安静的控制面不是免费结果,它由记忆、信息压缩与响应延迟共同购买。
两个平台都是运营政策
默认下,1 毫秒与 9 毫秒被放进同一个“足够好”区间。对只想阻止跨洲绕路的广域 overlay,这可能完全合理;对购买微秒或低个位毫秒差异的业务,它会抹掉真正关心的价值。
120 毫秒以上同样进入一个平台。130 毫秒与 600 毫秒都只增加最高 150 的惩罚。上界可以避免极端拥塞把成本推到无限并引发不稳定;当所有路径都很差时,它也可能丢掉“谁没那么差”的信息。
降低 rtt-max 会提高稳定性,却扩大无法区分的高时延区域。提高上限保留更多差异,也让更多波动进入路由。最高惩罚决定时延分量相对名义跳成本有多强,但它不是丢包率、带宽、金钱或用户损失的单位。
所谓默认值,本质上仍是一次决策。运营者必须说明:什么范围被视为本地;何时一条链路只应作为最后手段;业务能容忍多少收敛债务;谁有权修改参数。若这些问题没有答案,配置并没有变成中立,只是责任消失了。
稳定性会制造时间债务
RFC 明确提醒:算法对 RTT 变化反应较慢,真实变化后可能在数秒乃至数分钟内继续使用次优路由。固定网络可用这段延迟换取更少的振荡与乱序;高移动网络可能在拓扑已经变化后仍保持旧结论。
所以,路由切换次数少只能证明“稳定”,不能证明“仍然合适”。验证必须主动制造变化,而不是等待图表平静后截屏。
至少应分别改变传播时延、可用带宽与业务负载;应让邻居重启、时间戳回绕、节点移动并越过 10/120 毫秒阈值。每次都记录物理变化、首个有效样本、平滑值移动、成本改变、候选切换、FIB 安装与首包到达。应用端再对齐尾延迟、吞吐、完成率与错误。只有这条时间线能说明稳定化是保护还是遮蔽。
混合部署可运行,不代表含义一致
不认识扩展的实现会忽略 Timestamp sub-TLV,并继续解析其余内容。因此新旧节点可以共存,不会仅因扩展支持不一致而产生环路等病态;文档同时承认,混合网络可能选出次优路径。
这是优良的演进属性:采用可以自愿、局部并分阶段进行。但“兼容”只是连续运行回执,不是统一指标回执。一段邻接可能用 RTT,另一段用跳数,第三段用无线丢包。完整路径叠加了不同观察与不同假设。
能力清单必须落到每条邻接。测试应覆盖不支持扩展的节点成为 transit、支持节点停止发时间戳,以及混合边界上的路径变化。若只统计全网升级比例,就无法解释一条具体路线的成本从何而来。
这与 RFC 9647 的 YANG 管理面议题不同。YANG 可以呈现配置与运行状态;RFC 9616 讨论一个时延信号如何被转为成本。看见字段不是采样正确、含义一致或业务已改善的证明。
隐私拒绝权会改变选路
时间戳使用任意起点,因此不会直接泄露设备启动时间、时区或民用时钟。不过,足够精确的时钟信号仍可能帮助攻击者推断物理位置。RFC 允许节点不发送 Timestamp;邻居就退回跳数路由。
这不是单纯的隐私开关。拒绝暴露信号会改变路由可用的证据,也可能改变选中路径。反过来,强制要求时延指标则扩大观察面。正确做法是记录哪些接口发时间戳、威胁模型是什么、拒绝后采用哪种指标、业务是否因此变化。
薄机制的价值正在这里:标准提供互操作选项,却保留本地拒绝。运行证据再判断某个网络是否值得采用,而不是把发布本身误写成义务。
建立分层回执
第一层是采样出处:软件版本、发送与接收打点位置、时钟源、回绕、重启、接受与拒绝数。第二层是转换参数:平滑算法、alpha、两道阈值、最高惩罚、名义成本与滞后状态。
第三层是控制时间线:链路成本、所有候选、选中原因、变化触发与稳定时间。第四层是执行:RIB、FIB、下一跳、实际报文路径与丢包。第五层才是服务:应用延迟分布、吞吐、完成率和用户可见错误。
若只有“成本下降”,可说的只有:配置算法在该时刻给出了较低的抽象成本。要说“业务改善”,必须把后续回执全部补齐。
来源
- RFC 9616:Babel 路由协议的基于时延指标扩展
- RFC 9616 规范纯文本版
- RFC 9616 规范 XML 源
- RFC Editor 状态页
- IETF Datatracker 文档历史
- RFC 8966:Babel 路由协议
- RFC 891:DCN 本地网络协议
- RFC 5905:NTPv4
- A delay-based routing metric
- IANA Babel 参数登记表
- RFC 9647:Babel 的 YANG 数据模型
- Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption
- Running-Code Primacy
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

