摘要
- 活跃的 SAND 第 04 版 Internet-Draft 要求用 BPSec 保护发现报文,但发送节点仍可按底层网络、终结点和 BP 目的地筛选类型与实例;草案明确说,不同邻居可能看到彼此不重叠的数据集合。
- 接收成功不等于可以使用。发现节点会再次执行本地授权和删减;
SYMMETRIC不代表业务路径成功,Router Advertisement 也不会自动取得路由安装权。 - 若要比较两份视图,应先保存“广告投影回执”:绑定 Source、Security Source、Previous Node、目的地、接收接口、过滤版本、Reference Time、有效期、取代结果与接收策略,再判断差异是设计、陈旧、丢失还是异常。
在传统资产平台里,“同一设备”往往意味着“同一份真相”。这种直觉到了延迟容忍网络便会出错。设备可以确实是同一个,签名可以确实有效,两个观察者得到的资料也可以同时不同且合法。
SAND——Bundle Protocol Secure Advertisement and Neighborhood Discovery——试图让 BPv7 节点发现邻居、凭据、底层网络、会聚层能力、资源、局部拓扑、路由意愿和注册端点。它不是把一个中央数据库复制到所有参与者。第 04 版反而把“向谁、经哪里、披露什么”留在本地运营决定中。
于是,证据的最小单位不是“节点 X 的地图”。它是“节点 X 在某个时间、经某个终结点、对某个目的地、依某份过滤策略作出的地图投影”。少掉后半句,地图仍然好看,却不再可审计。
验签先回答“谁说了这句话”
SAND Bundle 有 Source EID 和目的 EID。面向一跳邻居的消息带 Hop Count,Hop Limit 为 1。草案对转发情形提出更严格要求,因为来源节点和本跳发送者可能不同:接收方需要肯定地识别 Previous Node。
识别顺序并非随意。若会聚层提供已认证身份,优先使用它;否则可使用受保护的 Previous Node 扩展块;第一跳还可依赖已认证的 Source Node ID。转发包因此可能同时保留原始 Source 和另一个 Previous Node。这两项不是重复字段。
所有 SAND Bundle 都必须用 BPSec Block Integrity Block 保护载荷。载荷 BIB 的 Security Source 必须与 Bundle Source EID 指向同一个节点,但两者可以是不同 EID;本地安全策略负责证明这次“同一个”的映射。Previous Node 块也必须单独受到 BIB 保护,其 Security Source 对应转发节点。
这形成三类相邻却不同的证据:谁创作了 Bundle,谁在本跳交付它,谁的密钥保护某个块。若数据库只有一个 node_id 字段,系统会在入库时就抹掉责任链。日后即使签名仍可验证,也无法还原是哪条身份规则把两个 EID 合并为一个主体。
验签因此非常重要,却很窄。它证明受保护语句的来源与完整性,不证明发送方把所有可能知道的资料都写了进去。
没有任何 Solicitation 能命令节点全盘披露
第 04 版把广告类型选择交给发送节点。Data Solicitation 只表达“我希望收到某种数据”,不得覆盖发送方本地政策。发送节点也自行选择每一类型中包含或排除哪些实例。
理由可能很普通。一个终结点尚未启用发现;某份长期凭据无需在每次 Hello 中重复;非 IP 参数对某条 IP-only 链路无用;某个地址或会聚层实例只应在特定底层网络出现。也可能是安全理由:群组目的地只披露足以建立联系的最小资料,待对方进入更受保护的 singleton 通道后再提供详细凭据。
SAND 允许按 ULN、终结点、BP 目的地甚至来源组合过滤。私有 PKIX 根下的证书可以只在信任该根的底层网络发送;IPv6 会聚层实例可以只出现在 IPv6 终结点;群组和单播目的地可以得到不同集合。多个维度叠加后,草案直接称其为一种 “split brain”:不同邻居看到同一发送节点的不同数据集合,甚至完全不重叠。
这里的 “split brain” 不是自动故障结论。它首先描述可预期的局部视图。若运营平台把“没有收到”翻译成“发送方不存在这项能力”,它把披露范围偷换成了对象事实。
初始零配置群组消息还带来另一层现实:在没有额外机密性保护时,载荷可能被旁路设备或窃听者观察。一跳 Hop Limit 也不提供保密保证。因此,对 DNS 名称、地址、邻居、会聚层实例或证书实施不同终结点的非对称过滤,可以是减少暴露的合理做法,而不是数据质量缺陷。
接收方还会再做一次选择
通过传输与完整性检查,只表示消息可以进入下一步。草案明确说,接收方无须使用全部数据。结构与代码点可以是 mandatory-to-implement,却不是 mandatory-to-use。
发现节点可以按消息类型、Source、目的地、会聚层接收条件或此前协商资料决定授权。它还可以删减自己无法解释或当前无法使用的实例。例如,纯 IP 节点可能丢弃非 IP 参数;本地路由表眼下到不了的地址也可能不进入活动视图。
但“当前不可达”不等于“永远错误”。路由配置改变后,同一地址可能变得可用。接收方删减形成的是本地表示,不是对远端事实的最终裁决。把删减结果同步给中央平台时,必须保留原因和时点,否则本地优化会变成全局否定。
草案还指出一个常被 API 隐藏的要求:若授权取决于接收语境,应用必须把 SAND Message 关联回原始 Bundle,并知道它经哪个本地会聚层实例抵达。有些 BPA—应用接口无法提供这么深的可见性;此时,语境化授权本身就可能不可实现。
这是一条运行代码优先的边界。配置文档声称“只信任私有链路”没有意义,除非接收进程真的拿得到链路标识,并把它写入决策证据。
时间会让两份有效报文拥有不同资格
SAND 的每种消息携带该类型的完整集合,而不是依赖前一条增量补丁。这样可以幂等处理,也适应 BPv7 可能的重复传递。代价是必须严格判断哪一条消息已被取代。
节点处理消息后,要按 Bundle Source 与消息类型记录 Reference Time;若没有该参数,则用 Creation Timestamp。相同或更早的时间必须被忽略,排序还包括 Sequence Number。忽略旧消息不算处理失败。
所以,两份 Bundle 可以都通过 BPSec,一份仍不得更新当前状态。重放可能浪费链路和计算资源,却不应把同源同类型状态倒退。反过来,若发送方只在状态变化时发送,而新消息丢失,旧投影又可能长期留存。Validity Duration、Repetition Interval、定期发送与状态触发策略共同决定“沉默”是什么意思。
若屏幕只显示“最后收到时间”,却不显示 Reference Time、有效期与 superseded 状态,值班人员看到的并不是协议状态,而是采集管道的时间。
SYMMETRIC 只是两边至少各听见一次
Local Topology Advertisement 可把邻居标为 HEARD、SYMMETRIC 或 LOST。这些词容易被管理层界面扩大。
HEARD 表示本节点收到了对端消息,但尚未在对端广告的局部拓扑里看到自己。SYMMETRIC 表示对端已经把本节点列入视图,因此至少各方向有一条消息被收到。LOST 只表示在实现自定超时内没有再收到消息。
它们都没有证明稳定容量、应用事务完成或端到端交付。相互邻居的 routing metrics 也没有同步协议。草案明确说,即使双方广告同类指标,也不保证、更不期待数值相同;如何调和是实现细节。某些指标还引用只在发送节点内部有意义的 Termination Point Index。
Router Advertisement 的边界同样重要。节点可声明 0 到 6 的路由意愿,也可发布 Attached Networks EID Pattern,甚至用 *:** 表示网关式范围。可是“记录广告”“授权用于路由”“实际安装与转发”是三件事。草案提醒,若没有适当路由授权,route leaking 和 hijacking 风险仍然存在,而且 BP 尚无与 RPKI 等价的路由授权基础设施。
因此,一份验签成功的 Router Advertisement 只是可归责输入,不是路由委任书。
建立“广告投影回执”
要让差异可解释,系统需要一份广告投影回执。这是本文提出的运营证据模型,不是第 04 版规定的新报文格式。
回执首先保存原始受保护 Bundle 的哈希与身份、Source EID、BIB Security Source、Previous Node、目的地、Hop Limit、创建时间和接收时间,并记录实际成功的身份验证路径。随后记录发送或接收的底层网络、终结点和会聚层实例。
每个消息类型再记录实例集合、Reference Time、Validity Duration、Repetition Interval 与 supersession 结论;若能取得发送策略,则钉住过滤配置版本。接收侧必须保存授权或删减决定及原因,并为最终本地信息库投影生成哈希。
这份回执不应越权替后续层作证。路由安装另有责任人和决策记录;转发是否发生,需要数据面观察;业务是否成功,需要应用回执。把所有层压成一个 trusted=true,只会让事故调查找不到断点。
比较两个投影时,先比较语境,再比较集合。差异可能属于预期披露、政策版本不同、消息陈旧、被新消息取代、接收方删减、实现不支持、传输丢失、配置错误或尚未解释的异常。只有最后一类才应在没有更多证据时保留为疑点。
当前资料能证明什么,不能证明什么
状态必须说得准确。Datatracker 显示该文档是 DTN 工作组活跃 Internet-Draft,第 04 版发布于 2026 年 9 月 8 日,2027 年 3 月 12 日到期。页眉写 Standards Track,而冻结时 Datatracker 的 intended RFC status 字段为空。它不是 RFC,也不是最终 IANA 分配或部署证明。
Implementation Status 附录提到一个示例 proof-of-concept,但同一段文字说明资料由贡献者提供、没有经过验证、不构成实现目录,也不代表 IETF 背书。本文不据此声称采用率、互操作性、特定产品能力、真实 route leak、攻击或中断。
RFC 9171 提供 BPv7,RFC 9172 提供 BPSec;RFC 8949 与 RFC 8610 说明 CBOR/CDDL;RFC 6130 提供移动自组织网络邻居发现的参照;RFC 4593、RFC 7908 与 RFC 6480分别解释路由威胁、route leak 与 RPKI。它们帮助界定层次,却没有把 SAND 的局部广告升级为全球地图。
结论不需要更大:验签能证明某个主体在某个语境里说过这句话。组织仍须保存语境,才能决定这句话能否进入另一个语境。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
