跳到主要内容

7. 较少受限的变体 (Less-Constrained Variations)

7.1. Storing Mode 主 DODAG (Storing Mode Main DODAG)

本规范预期主 DODAG 以 Non-Storing Mode 运行. 该限制的原因主要与 LLN 操作, 功耗和频谱节约有关:

  • 在 Non-Storing Mode 中, Root 已经知道 DODAG 拓扑, 因此额外拓扑信息会减少到 siblings.

  • 下行路由通过发送给 Root 的单播消息更新, 这确保 Root 在修复之后能比 Storing Mode 更快地重新到达 LLN 节点. 此外, Root 可以控制在 DODAG 中使用路径多样性来到达 LLN 节点. 基于这两个原因, Non-Storing Mode 为 Root 维护 P-Routes 提供了更好的能力.

  • 当主 DODAG 以 Non-Storing Mode 运行时, P-Routes 启用松散源路由, 而这只在该模式下有优势. Storing Mode 不使用 Source Routing Headers, 因而无法从该能力获得相同收益.

另一方面, 由于 RPL 是第 3 层路由协议, 其适用范围超出 LLN, 可扩展到通用 IP 网络. 与 OSPF, IS-IS, Enhanced Interior Gateway Routing Protocol (EIGRP), BABEL 或 RIP 等替代 IGP 相比, RPL 在使用 routing stretch 而不是这些协议计算出的到目的地最短路径路由时, 需要的资源更少. 如 "An Autonomic Control Plane (ACP)" [RFC8994] 附录 A.9.4 所讨论, P-Routes 增加了为特殊目的地安装最短和/或受约束路由的能力.

在有供电和有线的网络中, 如果有足够内存存储所需路由, RPL Storing Mode 比 Non-Storing Mode 提供更好的折中, 因为它减少 routing stretch 并降低 Root 负载. 在这种情况下, Root 与 RPL 节点之间的控制路径可以比 LLN 中更积极且以更多冗余方式维护, 并且在大多数时候可到达节点以维护 P-Routes, 从而实现更细粒度且响应更快的控制.

本节规定当主 DODAG 以 Storing Mode 运行时支持 P-Routes 所需的补充内容. 只要数据平面能充分处理 RPI, 本规范中的变更就仅限于 DAO 消息. Track 结构, 路由和转发操作保持不变. 由于没有能力协商, 预期网络中的所有节点都以相同方式支持本规范, 或通过管理以相同方式配置.

在 Storing Mode 中, Root 缺少形成主 DODAG 的 Child-to-Parent 关系以及 sibling 信息. 为提供这些知识, 网络中的节点必须发送额外 DAO 消息, 这些消息像 Non-Storing DAO 消息一样单播给 Root.

在 DAO 消息中, 发起路由器使用 SIO 通告一组邻居节点, 无论被通告节点相对于该路由器在 DODAG 中的位置如何.

DAO 消息必须按如下方式形成:

  • 发起路由器由 DAO 的源地址标识. 该地址必须是该路由器向邻居路由器注册的地址, 以便当这些路由器将该路由器作为其邻居通告时, Root 能够关联来自这些路由器的 DAO. DAO 包含一个或多个序列, 每个序列由一个 TIO 和一个或多个 SIO 组成. 不存在 RPL Target Option, 这样 Root 不会被误导而向 Target 添加 Storing Mode 路由.

  • TIO 按 Storing Mode 中的方式形成, 且不包含 Parent Address. Path Sequence 和 Path Lifetime 字段与 SIO 中通告的节点的 Address Registration 所使用的值对齐, 如 [RFC9010] 第 9.1 节所解释. 所有节点中使用相似值允许像 [RPL] 中那样为多个 SIO 因子化 TIO.

  • TIO 后跟一个或多个 SIO, 它们提供被通告邻居节点的地址 (ULA 或 GUA).

但是, 并非所有类型的路由网络基础设施都支持 RPL 路由信息头部, 高速路由器尤其如此. 当数据平面不支持 RPI 时, 就不能有 Local RPL Instances, RPL 只能作为单一拓扑 (主 DODAG) 运行. RPL Instance 是运行主 DODAG 的实例, 封装 RPL Instance 的入口节点不是 Root. 沿 Tracks 的路由是相对于主 DODAG 上可用路由的替代路由. 它们可以 (MAY) 与到 children 的路由冲突, 且必须在路由表中优先. Targets 必须与 Track 出口相邻, 以避免数据包重新注入主 DODAG 时可能形成的环路.

7.2. 作为完整 DODAG 的 Track (A Track as a Full DODAG)

本规范使用并行或交织的 protection paths 构建 Tracks, 而不是构建可在任意期望位置互连的更复杂 DODAG. 该限制的原因与受限节点操作, 存储大量拓扑信息的能力以及计算复杂路径的能力有关:

  • 通过本规范, LLN 中的节点没有拓扑感知, 也不需要维护关于链路质量和可用性的动态信息.

  • Root 具有完整拓扑信息和统计指标, 允许它或其 PCE 对其 DODAG 中的所有 Tracks 执行全局优化. 基于这些信息, Root 计算 protection path 并生成源路由路径.

  • 节点仅选择所提出路径之一, 并在封装中应用关联的预计算 Routing Header. 这同时减轻了路径计算复杂性和 Routing Header 压缩形式的复杂性.

RAW 架构 [RAW-ARCH] 实际上预期 Track 入口处的 PLR 对 Track 沿途转发条件的变化作出反应, 并重新路由数据包以保持所需可靠性程度. 为实现这一点, PLR 需要 DODAG 的完整丰富性, 以形成任何可满足 SLO 的路径.

本节规定将 Track 转换为完整 DODAG 并使主 Root 能够向 Track 入口提供必要拓扑信息所需的补充内容. 预期 PLR 的指标会与 PCE 的指标处于不同量级, 因为路由和转发之间的时间尺度不同. 更多内容见 [RAW-ARCH]. 因此, PLR 将从替代来源学习所需指标, 例如 OAM 帧.

为了将拓扑信息传递给入口, Root 使用包含 Targets 和 TIO 序列的 P-DAO 消息, 这些序列共同表示 Track, 表达方式与经典 Non-Storing Mode 相同. 不同之处在于 Root 是源而不是目的地, 并且 Root 可以通过一个 P-DAO 报告多个 Targets 的信息, 可能包括完整 Track.

注意, TIO 中的 Path Sequence 和 Lifetime 由 Root 选择, P-DAO 中的 Target/Transit 信息元组并不是 Root 在关于这些 Targets 的 DAO 消息中收到的元组. Track 可以遵循 sibling routes, 不需要与主 DODAG 一致.