跳到主要内容

5. 6LoWPAN 路由要求

本节定义 6LoWPAN 路由需要满足的一组要求. 对低功耗网络而言, 一个重要设计特性是 LoWPAN 必须支持多种设备类型和角色, 包括:

  • 使用一次性电池或能量采集供电的主机节点, 也称为受功耗约束节点.
  • 由市电供电的主机节点, 即功耗较充裕的节点.
  • 功耗较充裕且性能较高的网关, 这些网关不一定必须由市电供电.
  • 承担不同功能的节点, 如数据聚合器、转发节点、本地管理器或协调器.

由于这些设备类型和角色不同, LoWPAN 需要重点考虑两个属性:

  • 节能: 一些设备由市电供电, 但许多设备由电池供电, 可能需要依靠一节 AA 电池工作数月到数年. 还有一些设备大部分时间由市电供电, 但也必须能在较长时间内依靠电池运行, 例如建筑工地首次通电前的场景.
  • 低性能: 设备通常很小, 内存很少, 处理器性能有限, 带宽低, 丢包率高.

这些基本属性会影响路由解决方案设计. 无论是简化并修改现有路由规范, 还是引入新方案以适应 LoWPAN 的低功耗要求, 都需要满足以下要求.

5.1. 支持 6LoWPAN 设备属性

本节列出的总体目标应由 6LoWPAN 路由协议满足. 每项要求的重要性取决于协议运行的节点类型以及该节点承担的角色. 以下要求假定 LoWPAN 中存在电池供电节点.

[R01] 6LoWPAN 路由协议应当允许小代码量实现, 并且只需要较少路由状态, 以适应典型 6LoWPAN 节点能力. 一般而言, 代码大小受可用 flash 内存限制, 路由表受 RAM 大小限制, 可能只能容纳少于 32 个条目.

LoWPAN 节点的 RAM 通常在 4 KB 到 10 KB 之间, 最低约 2 KB; 程序 flash 通常在 48 KB 到 128 KB 之间. 例如, MICAz 具有 128 KB 程序 flash、4 KB EEPROM 和 512 KB 外部 flash ROM; TIP700CM 具有 48 KB 程序 flash、10 KB RAM 和 1 MB 外部 flash ROM.

受这些硬件限制影响, 路由协议代码应当适配较小内存规模, flash 使用量不应超过 48 KB 到 128 KB, 且还要为应用程序代码留下至少数十 KB 空间. 一般而言, 低复杂度路由协议有助于降低功耗、提高健壮性、减少路由状态、便于分析, 并可能降低受到安全攻击的概率.

此外, 协议应当能在有限路由状态下运行, 包括路由表和邻居列表. 某些典型内存规模无法保存大量节点状态. 例如, 工业监测应用可能需要支持最多 20 跳 [RFC5673]. 小型网络可以设计为支持更少跳数. 虽然这高度依赖网络架构, 但协议至少应提供一种能在 32 个或更少转发表项下运行的模式.

[R02] 6LoWPAN 路由协议应当通过高效使用控制包和高效转发数据包来尽量降低功耗. 例如, 应尽量减少代价高昂的 IP multicast, 因为它会导致整个 LoWPAN 链路广播.

优化电池寿命的一种方式是降低控制消息开销. 与计算操作或采集传感器样本等功能相比, 无线通信通常是功耗主因 [Doherty]. 发送和接收功耗与数据单元长度以及发送、接收频率近似线性相关 [Shih].

[Hill] 展示了两个低功耗节点射频控制器的能耗. TR1000 在 0.75 mW 发送功率下发送时消耗 21 mW, 接收时消耗 15 mW, 接收灵敏度为 -85 dBm. CC1000 在 0.75 mW 发送功率下发送时消耗 31.6 mW, 接收时消耗 20 mW, 接收灵敏度为 -105 dBm. 基于理想 AA 电池能量, CC1000 大约可连续发送 4 天或连续接收 9 天. 实际任务可用时间取决于通信频率、其他低占空比操作以及电池能量容量.

某些情况下, 路由协议引入的开销很大. [Doherty] 报告称, 层次路由使用的 LEACH 协议中, [Heinzelman] 提出的数据包和协议包在 100 bit/s 速率下消耗了 97% 的发送能量. 即使控制包开销要求不那么苛刻, 控制包仍很重要. 对 Low-Rate Low-Power Wireless Personal Area Network (LR-WPAN) 传感器数据而言, ZigBee (IEEE 802.15.4) 在传输传感器数据时使用 AODV 路由, 路由协议包约消耗 15% 的发送能量, 数据包约消耗 85% [Doherty]. 因此, 路由协议应当考虑使用高效路由机制和简单的交换协议包格式.

[R03] 6LoWPAN 路由协议控制消息应当不超过单个 IEEE 802.15.4 MAC frame 的大小, 最大 127 bytes, 以避免代价高昂的分片和重组.

单个 IEEE 802.15.4 frame 的最大物理层包大小为 127 bytes [IEEE802.15.4]. 如果 LLC/SNAP 承载 Ethernet frame type, 40-byte IPv6 头部加 8-byte UDP 头部后, UDP payload 只有 74 bytes. 因此, 为保持协议简单并避免 frame 分片和重组, 6LoWPAN 路由协议控制消息应当数量有限且尽可能小.

5.2. 支持 6LoWPAN 链路属性

由于 LoWPAN 的拓扑条件, 链路故障和传输失败经常发生. 可能需要提高包可靠性或使用额外备份传输. 处理异常网络状况, 例如数据或控制包丢失、单向链路、链路质量变化, 对设计健壮可靠的路由协议至关重要. 路由协议不仅需要在设计中感知这些网络状况, 还必须利用 6LoWPAN 互联功能, 确保数据能可靠地从源传递到目的地. 以下要求考虑 LoWPAN 链路特性.

[R04] LoWPAN 路由协议设计必须考虑链路可靠性、链路错误率、链路质量和链路稳定性, 用于路由优化.

低功耗无线链路天然不可靠. 包丢失可能由多种原因导致:

  • 许多设备大部分时间处于睡眠状态, 因此发送包时可能没有邻居正在监听.
  • EMI、建筑物和基础设施阻挡、地形等环境因素可能导致传输失败, 或使对称链路变为非对称链路, 反之亦然.
  • 拥塞, 特别是在传感器网络中, 多跳通信以及多个源汇聚到网关的路由流量会增加网关附近节点拥塞的概率 [Shelby-6LoWPAN].
  • 无线频谱通常共享, 需要多个使用 ISM 频段的无线技术协同, 这些频段中的网络可能受到其他网络或设备干扰.

因此, 6LoWPAN 路由协议设计必须考虑链路可靠性、链路错误率、链路质量和链路稳定性, 用于路由优化.

[R05] LoWPAN 路由协议设计必须考虑非对称链路.

6LoWPAN 路由协议必须支持非对称链路, 因为 LoWPAN 中许多实际链路都是非对称的, 例如低功耗感知节点与功耗充裕基站之间的链路 [Shelby-CoAP]. 在这种情况下, 路径选择必须能处理非对称链路.

[R06] 6LoWPAN 路由协议应当能抵抗链路丢包动态变化.

6LoWPAN 路由协议应当能适应链路丢包变化, 以处理 IEEE 802.15.4 链路的不可靠性. 连接 LoWPAN 节点的典型链路不一定始终可用. 链路丢包变化可能来自节点移动、电量耗尽、睡眠周期、信号衰落、接收信号强度降低或干扰, 并可能导致链路长时间不可用. 路由协议应当以适当方式处理这些链路特性.

[R07] 6LoWPAN 路由协议应当设计为正确处理可能的 frame 大小.

在某些 LoWPAN 中, 控制包最大大小非常有限, 单个 IEEE 802.15.4 MAC frame 最多 127 bytes, 因为 MAC 层没有原生分片和重组支持.

最大 frame 大小意味着必须使用小头部和低状态消息开销. 控制包应当足够小, 能放入单个链路层 frame. 不过, 构造消息时仍需要一定灵活性. 消息设计必须容纳标准 IPv6 头部和其他头部, 如链路层头部和适配层头部, 也必须能容纳其他路由协议和现有 IETF 协议需要的选项.

5.3. 支持 6LoWPAN 特征

本节考虑可能影响 6LoWPAN 路由协议设计的基本网络特征.

[R08] 6LoWPAN 路由协议设计应当考虑流量模式、网络密度、节点可能的角色或功能, 以及不同网络配置的使用和数量.

6LoWPAN 路由协议应当能处理多种 LoWPAN 拓扑, 包括:

  • 点到点、点到多点、多点到点或多点到多点流量模式.
  • 集中到单个点的通信流量, 例如网关.
  • 不同主机和路由器密度, 以及不同路由器与主机比例.
  • 路由器功能可能不同于主机功能, 也可能位于同一节点上.
  • 不同节点功能, 如受限节点和非受限节点, 或承担路由、转发、聚合等功能的节点.
  • 不同网络配置, 如 peer-to-peer、star、mesh network.
  • 部署后运行期的动态网络形成和拓扑变化.
  • 不同网络规模, 从少量节点到数百甚至更多节点.
  • 可能出现并需要处理的网络分区.

[R09] 6LoWPAN 路由协议使用的度量应当考虑节点属性和链路属性的组合影响.

将链路质量和节点属性纳入路由度量非常重要, 这有助于降低能耗并保证成功交付. 例如, 最少跳数路径不一定最节能, 因为它可能经过高度拥塞节点, 或经过错误更多、因此需要更多重传的链路.

路由度量应能有效表示以下类型:

  • 链路度量: Received Signal Strength Indication (RSSI)、Link Quality Indication (LQI)、Expected Transmission Count (ETX)、吞吐量、延迟.
  • 节点度量: 状态, 如睡眠、唤醒、监听; 剩余能量; 跳数; 地理信息, 如 GPS 坐标.
  • 组合度量, 即链路和节点的组合.

也应当考虑其他可能度量, 如可靠性、健壮性和稳定性.

[R10] 6LoWPAN 路由协议应当设计为同时实现可扩展性和长寿命.

可扩展性和长寿命是 LoWPAN 的基本特征:

  • 可扩展性: 一个 LoWPAN 可能只包含少数节点, 如个人区域网络或人体区域网络, 也可能包含大量设备, 如城市基础设施或公路监测. 对家庭自动化应用, 预期路由协议必须支持网络中的 250 台设备 [RFC5826]. 对城域级传感器网络, 路由协议必须能把大量感知节点聚类到约 10^2 到 10^4 个感知节点的区域中 [RFC5548]. 因此, 路由机制需要设计为可在不同规模网络中扩展运行. 但由于内存和计算能力不足, 6LoWPAN 路由可能需要把转发表项限制在很小数量, 例如最多 32 个路由表项. 特别是在大型网络中, 路由机制必须设计成路由器数量少于主机数量.
  • 长寿命: 路由修复过程及相关控制消息不应损害路由协议的总体能耗.

[R11] 路由修复过程及相关控制消息不应损害路由协议的总体能耗.

本地修复可以改善吞吐量和端到端延迟, 在大型网络中特别明显. 由于路由能快速修复, 丢弃的数据包更少, 路由协议包发送次数也更少, 因为路由无需由源发起路由发现即可修复 [Lee]. 一个重要考虑是避免过早耗尽能量, 即使这会影响其他要求.

[R12] 6LoWPAN 路由协议应当允许动态自适应拓扑和移动节点. 在支持动态拓扑和移动节点时, 路由维护应牢记最小路由状态和最小路由协议消息开销这一目标.

拓扑层面的节点移动可能来自物理移动, 也可能来自无线环境变化; 因此, 即使在物理静止节点组成的网络中, 也很可能需要处理移动性. 6LoWPAN 不使用单独协议来维护到移动节点的连通性, 而是期望路由协议处理该问题.

此外, 一些节点可能从一个 6LoWPAN 移动到另一个 6LoWPAN, 并预期能在有限时间内成为后一个 6LoWPAN 的正常成员.

例如, 建筑监测应用对移动恢复和稳定时间有 5 到 20 seconds 的要求, 见 [RFC5867] 第 5.3.1 节. 对更具交互性的家庭自动化系统, 用户输入后期望即时反馈, 因此移动要求更严格; 在网络内部移动时, 通常要求收敛时间低于 0.5 seconds, 见 [RFC5826] 第 3.2 节. 在工业环境中, 移动设备, 如吊车, 会四处移动, 路由协议需要支持最高 35 km/h 的车辆速度 [RFC5673]. 当前 6LoWPAN 通常不用于此类高速移动, 但必须支持动态关联和解除关联.

为在动态环境中形成健壮路由, 6LoWPAN 路由协议应处理以下挑战:

  • 移动节点在 LoWPAN 内改变位置: 如果节点移动模式未知, 路由协议不易检测移动性或将其与其他事件区分. 移动节点可以视为在一个位置消失并在另一个位置重新出现的节点. 跟踪移动模式会增加复杂度, 可以通过响应式路由更新处理移动节点来避免.
  • LoWPAN 相对于其他互联 LoWPAN 移动: 在每个 stub network 内, 一个或多个能力较强的 gateway node, 即 6LBR, 需要配置为处理移动 LoWPAN.
  • 节点永久加入或离开 LoWPAN: 为便于路由表更新、减少更新大小并最小化错误控制消息, 离开网络的节点可以向最近的边界路由器或负责本地关联和解除关联的特定节点通告其解除关联.

[R13] 6LoWPAN 路由协议应当支持多种流量模式, 即点到点、点到多点和多点到点, 同时避免 LoWPAN 中过多 multicast 流量.

6LoWPAN 经常具有点到多点或多点到点流量模式. 许多新兴应用也包含点到点通信. 6LoWPAN 路由协议应在设计时考虑从多个源到多个目的地转发包. ROLL WG 的当前文档说明, LoWPAN 用例的工作负载或流量模式往往高度结构化, 不同于典型客户端和服务器工作负载中占主导的任意到任意数据传输. 很多情况下, 利用这种结构可以简化因资源约束或连通性变化而产生的难题.

5.4. 支持安全

安全是低功耗网络的关键问题. 任何 6LoWPAN 路由协议方案都应满足以下基本安全要求. 这些要求必须适用于路由机制和网络数据交换, 同时应避免过多功耗和处理能力消耗.

[R14] 6LoWPAN 路由协议应当支持消息完整性、消息源认证和消息机密性服务, 以防御路由威胁.

考虑到路由协议安全的重要性以及 6LoWPAN 安全威胁的性质, 例如 [ROLL-SEC] 所述威胁, 路由协议应当支持:

  • 消息完整性, 防止协议消息被中间节点修改.
  • 消息源认证, 防止伪造来源的欺骗攻击.
  • 消息机密性, 防止被动窃听.

还应考虑消息时效性. 过期消息本身也可能成为一种攻击形式. 在这种情况下, 应用层自身或结合数据链路安全功能提供的时效性服务对 6LoWPAN 很有帮助.

路由协议必须防护 replay、injection、modification 等攻击, 因为这些攻击可能导致路由或拓扑环路、针对特定节点的拒绝服务、生成虚假路由信息、资源耗尽或网络分区 [ROLL-SEC].

安全支持将作为选项提供; 如果启用, 必须遵守安全 6LoWPAN 路由协议使用规则. 通过实现链路层安全, 即 IEEE 802.15.4 第 7.6 小节定义的 CCM* 模式安全, 并增加路由协议特定的安全和消息完整性检查机制, 如时间戳或序列号, 可以抵御大多数安全威胁.

设计必须考虑协议必须执行的重量级操作成本. 例如, 使用公钥相比对称密钥可能导致更高能耗. 需要大量节点状态的通用安全操作, 如地址和密钥管理、认证、链路层密钥建立, 应在所有 LoWPAN 协议之间复用, 以节省开销. 6LoWPAN 路由协议应当设计为支持启用这些功能, 而这些功能本身也应避免消耗过多能量.

5.5. 支持 Mesh-Under 转发

当前 6LoWPAN 架构允许通过 mesh-under routing [RFC4944] 进行多跳转发. 这种方法的一个关键特征是, 支持 mesh-under forwarding 和 route-over routing 的能力可能成为 6LoWPAN 协议要求. 但这是否也是 6LoWPAN 路由协议的要求仍是开放问题. 因此, 需要考虑两种不同方法的要求: 一种使用 IP routing, 另一种使用自己的转发机制.

Mesh-under forwarding 机制使用链路层地址, 即 MAC address, 因此会在 IP 子网边界停止. 当它与使用 IPv6 address 和 routing table 的 route-over routing 结合使用时, 可能需要跨层信息, 包括其自己的 forwarding table.

因此, mesh-under forwarding 机制可能为相关操作提供自己的拓扑维护消息和转发表. 这可与 route-over routing protocols 所需功能相比较, 后者用于邻居和链路发现、转发表项管理、拓扑维护和路径发现.

因此, 一个关键问题是如何组合 route-over 和 mesh-under 两种方法, 以及如何协调工作, 从而避免冗余或互操作性问题. 后续工作应特别关注这些架构问题.

5.6. 支持管理

网络管理应考虑以下要求.

LoWPAN 可能需要动态配置和初始化. 例如, 网关启动后并不知道哪些节点属于自己的子网. 节点加入网络的能力本质上独立于路由技术, 尽管某些路由协议可能有助于该过程. 路由协议应当支持网络初始化和配置. 这可能涉及路由协议与地址分配、自动配置和邻居发现等其他功能之间的交互.

为了监测和调试, 获取相关路由协议参数、当前配置以及当前 router 和 host 功能状态非常重要. 应能获得路由表、邻居表、消息计数和链路质量信息等内容. 应考虑用于诊断、故障检测、监测和事件或告警报告功能的接口. 虽然某些情况下已有协议和接口可用, 但也可能需要专门适配 LoWPAN 的方案.

由于某些 LoWPAN 通常会周期性进入睡眠模式, 因此应能控制节点睡眠和唤醒模式, 以便以更低延迟收集信息.

支持路由协议演进, 并根据环境和流量模式改变路由参数, 也很重要. 例如, 可能需要选择度量类型、调整计时器值, 或选择和改变协议模式, 如果协议支持. 一种可能是切换到完全不同的协议. 但由于代码大小要求, 这未必可行. 用户应能支持多个路由协议实现.

还应考虑以下管理方面:

  • 设备管理和节点拓扑配置能力.
  • 安全管理, 包括密钥管理.
  • 睡眠计划管理.
  • 服务质量管理.
  • 路径修复、故障检测和控制.
  • 跨层集成与协调.