跳到主要内容

5.1. RPL 实例 ID (RPL Instance ID)

全局 RPLInstanceID MUST 在整个 LLN 中唯一. 分配和配置全局 RPLInstanceID 的机制超出本规范范围. 整个网络中最多可以有 128 个全局实例. 本地实例总是与 DODAGID 一起使用, 该 DODAGID 在某些情况下可以显式给出或隐式给出, 并且每个 DODAGID 最多可支持 64 个本地实例. 本地实例由拥有该 DODAGID 的节点分配和管理, 不需要与其他节点进行任何显式协调, 详见下文.

全局 RPLInstanceID 在 RPLInstanceID 字段中按如下方式编码:

     0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|0| ID | Global RPLInstanceID in 0..127
+-+-+-+-+-+-+-+-+

图 4: 全局实例的 RPLInstanceID 字段格式

本地 RPLInstanceID 由拥有 DODAGID 的节点自动配置, 并且对于该 DODAGID MUST 是唯一的. 用于配置本地 RPLInstanceID 的 DODAGID MUST 是该节点的可达 IPv6 地址, 并且 MUST 用作该本地实例内所有通信的端点.

本地 RPLInstanceID 在 RPLInstanceID 字段中按如下方式编码:

     0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1|D| ID | Local RPLInstanceID in 0..63
+-+-+-+-+-+-+-+-+

图 5: 本地实例的 RPLInstanceID 字段格式

本地 RPLInstanceID 中的 'D' 标志在 RPL 控制消息中始终设置为 0. 在数据分组中, 它用于指示 DODAGID 是该分组的源还是目的地. 如果 'D' 标志设置为 1, 则 IPv6 分组的目的地址 MUST 是 DODAGID. 如果 'D' 标志被清零, 则 IPv6 分组的源地址 MUST 是 DODAGID.

例如, 考虑节点 A, 它是某个本地 RPL 实例的 DODAG 根, 并已分配本地 RPLInstanceID. 根据定义, 穿过该本地 RPL 实例的所有流量要么源自节点 A, 要么终止于节点 A. 在这种情况下, DODAGID 将是节点 A 的可达 IPv6 地址. 所有流量都会在源地址或目的地址中包含节点 A 的地址, 因而包含 DODAGID. 因此, 本地 RPLInstanceID 可以通过适当设置 'D' 标志来指示 DODAGID 等价于源地址或目的地址.