跳到主要内容

6.4. 目的地通告对象 (Destination Advertisement Object, DAO)

目的地通告对象 (Destination Advertisement Object, DAO) 用于沿 DODAG 向 Upward 传播目的地信息. 在 Storing 模式下, DAO 消息由子节点单播到所选父节点. 在 Non-Storing 模式下, DAO 消息被单播到 DODAG 根. 在显式请求或发生错误时, DAO 消息的目的地可以选择通过向 DAO 发送方返回目的地通告确认 (Destination Advertisement Acknowledgement, DAO-ACK) 消息来确认该 DAO 消息.

6.4.1. DAO 基本对象格式 (Format of the DAO Base Object)

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RPLInstanceID |K|D| Flags | Reserved | DAOSequence |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ DODAGID* +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option(s)...
+-+-+-+-+-+-+-+-+

'*' 表示 DODAGID 并不总是存在, 如下文所述.

图 16: DAO 基本对象

  • RPLInstanceID: 8 位字段, 指示从 DIO 获知的与 DODAG 关联的拓扑实例.

  • K: 'K' 标志指示预期接收方返回 DAO-ACK. 见第 9.3 节.

  • D: 'D' 标志指示 DODAGID 字段存在. 使用本地 RPLInstanceID 时, 该标志 MUST 被设置.

  • Flags: Flags 字段中剩余的 6 个未使用位保留供标志使用. 发送方 MUST 将该字段初始化为零, 接收方 MUST 忽略该字段.

  • Reserved: 8 位未使用字段. 发送方 MUST 将该字段初始化为零, 接收方 MUST 忽略该字段.

  • DAOSequence: 节点发出的每个唯一 DAO 消息都会递增该字段, 并在 DAO-ACK 消息中回显.

  • DODAGID (optional): 128 位无符号整数, 由 DODAG 根设置, 用于唯一标识 DODAG. 仅当 'D' 标志被设置时, 该字段才存在. 通常只有在使用本地 RPLInstanceID 时才存在该字段, 以标识与 RPLInstanceID 关联的 DODAGID. 使用全局 RPLInstanceID 时, 该字段无需存在.

  • DAO Base 的 未分配位 为保留位. 发送时 MUST 将其设置为零, 接收时 MUST 忽略.

6.4.2. 安全 DAO (Secure DAO)

安全 DAO 消息遵循图 7 中的格式, 其中基本格式是图 16 所示的 DAO 消息.

6.4.3. DAO 选项 (DAO Options)

DAO 消息 MAY 携带有效选项.

本规范允许 DAO 消息携带以下选项:

  • 0x00 Pad1
  • 0x01 PadN
  • 0x05 RPL Target
  • 0x06 Transit Information
  • 0x09 RPL Target Descriptor

DAO 消息的一种特殊情况称为 No-Path, 在 Storing 模式下用于清除通过 DAO 操作配置的 Downward 路由状态. No-Path 携带 Target 选项以及关联的 Transit Information 选项, 生命周期为 0x00000000, 用于指示到该 Target 的可达性丢失.