摘要

  • ipn URI 由分配者标识、节点号和服务号组成,既能保持紧凑,又把节点号管理分散给不同分配者。
  • BPv7 对端点标识执行逐跳的“延迟绑定”;名字里没有当前位置、可达性或路由承诺。
  • LocalNode 与 Private Use 只有在边界内才保有正确含义,处理实体的身份还要由独立的安全校验来证明。

RFC 9758 处理的是一个看似简单、实际很容易越权的问题:数字到底证明了什么。三段数字可以唯一指出一个资源,却不能因此变成通往资源的地图。

一个元组,不是一条路径

标准把每个 ipn URI 解释为三元组。分配者标识说明哪一组织负责分配节点号;节点号把同一节点上的资源归在一起;服务号区分节点上的逻辑功能。分配者标识与节点号合在一起,才是完整节点号 FQNN。

这种层次化结构避免由一个全球机构登记每一个节点。IANA 只协调分配者标识。分配者在自己的范围内维持节点号唯一,不必为每次分配同其他分配者协商。大型组织还可以取得连续的标识范围,再把不同标识交给下属单位。设计借鉴了 CIDR 的分组方式,但 RFC 9758 明确划线:这些标识描述组织,不是地址。

因此,一条 IANA 记录最多证明某个标识由哪个变更控制者管理。分配者自己的清单可以再证明某个节点号交给了谁。它们都无法证明节点此刻在哪里、下一次接触何时出现、哪个链路可用、目的服务是否运行,更无法证明数据已经送达。

每一跳都要给出新的答案

BPv7 使用延迟绑定。Bundle 到达一个中继后,中继才把端点标识解析成本地可执行的下一步。节点移动时,名字不必随之改变;代价是任何一跳都不能假装旧绑定永远有效。

RFC 9758 禁止从 ipn 的任何组成部分推断位置、可达性、寻址或路由。即使某个分配者用链路层地址生成节点号,接收者也不能把数字反解为链路地址。编号方法属于分配者,转发决定属于当前节点,两种权力不应被压成一列数字。

这正好形成一条可审计的证据链:注册表说明命名空间是否冲突;分配者记录说明节点号由谁发出;绑定表说明某一时刻的下一跳;转发日志说明是否尝试联系;状态报告说明协议后来观察到什么;应用回执才说明业务结果。前一张凭证不能替代后一张。

“看起来有效”不是身份认证

标准直接提醒:ipn EID 所指端点并不保证随时可达,Bundle Protocol 自身也从不保证端点上处理实体的身份。若要验证有关源身份的断言,需要检查保护主块的 BPSec Block Integrity Block,并满足本地安全策略、密钥和安全上下文。URI 语法正确,只说明解析器接受了名字。

恶意节点甚至可以构造完全合规的三元组,把 Bundle 引向可能受到损害的端点,或者伪造源标识,让接收节点作出错误处理。RFC 9758 因此把真实性与有效性检查放在使用数据之前,并另外提到 BPSec 与采用 TLS 的 TCPCLv4。命名、传输保护与内容处理是三道门。

作用域泄漏会让唯一性失效

特殊编号把边界暴露得最清楚。全零三元组是 Null ipn URI,表示“无处”,作为目的地必然不可达。服务号零表示节点的管理端点。预留的 LocalNode 值只在当前 Bundle 节点上有意义:它不得离开本机,不得出现在外部发现机制里,也不得被宣告为会话对端的节点身份。

Private Use 的范围比本机大,却没有全球意义。在本次研究快照中,默认分配者的 1 至 0x3FFF 节点号属于私用范围。它们只有在共同协调 FQNN 的一个管理域内才保证不冲突。域间网关必须阻止携带这类源或目的标识的 Bundle 越界。两边各自正确的本地编号一旦相遇,就可能变成同一个含糊名字。

所以边界过滤不是整理数据,而是在维护命名空间的语义。RFC 9758 警告,LocalNode 或 Private Use 若传播到有效范围之外,会破坏 ipn 所要求的唯一性,并可能被恶意利用来阻碍整个网络正常工作。

同一个名字可以有不同字节

RFC 9758 在保留打包的两元素 CBOR 形式之外,又定义了显式三元素形式。端点比较必须基于解码后的分配者、节点与服务值。因此,不同字节串可以表示同一个 EID;与此同时,面向语法的完整性检查仍可能区分它们。

向后兼容也不等于旧实现理解新格式。只认识两元素形式的 BPv7 节点可能把三元素编码当作畸形数据。混合网络要为目的端选择编码策略,并实测双方行为。“支持 ipn”不能代替精确的版本与线格式证据。

薄注册表的正确位置

研究时,IANA 把 ipn 列为永久 URI scheme,并在同一组下维护分配者标识、默认分配者节点号和 BPv7 知名服务号三张表。较小的分配者数字在 CBOR 中更省空间,因而低位编号本身也有稀缺性,专家评审需要防止少数申请者占据大段高效率空间。

这与 Heng Lu 的最小初始规范原则相合:共同层只保存避免冲突所必需的事实,把未来选择留在本地。注册表应当保持真实、可审计、可替换,却不能把“记录了名字”膨胀成“控制了路由”或“保证了结果”。现实层、协调层和叙事层一旦混在一起,一个稳定数字就会替没有发生的交付作证。

来源

  1. IANA Uniform Resource Identifier (URI) Schemes
  2. RFC 1918:私有互联网地址分配
  3. RFC 3986:统一资源标识符通用语法
  4. RFC 4838:延迟容忍网络体系结构
  5. RFC 6260:压缩 Bundle 头编码
  6. RFC 7116:LTP、CBHE 与 Bundle Protocol 的 IANA 注册表
  7. RFC 8126:IANA 考虑事项编写指南
  8. RFC 9171:Bundle Protocol Version 7
  9. RFC 9172:Bundle Protocol Security
  10. RFC 9174:TCP Convergence-Layer Protocol Version 4
  11. RFC 9758:Updates to the 'ipn' URI Scheme
  12. 最小初始规范、本地化未来决策与自愿采用
  13. 现实层、象征权力,以及清晰为何让人敌视
  14. Running-Code Primacy