跳到主要内容

6.5. 目的地通告对象确认 (Destination Advertisement Object Acknowledgement, DAO-ACK)

DAO-ACK 消息由 DAO 接收方 (DAO 父节点或 DODAG 根) 作为单播分组发送, 用于响应单播 DAO 消息.

6.5.1. DAO-ACK 基本对象格式 (Format of the DAO-ACK 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 |D| Reserved | DAOSequence | Status |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ DODAGID* +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option(s)...
+-+-+-+-+-+-+-+-+

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

图 17: DAO ACK 基本对象

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

  • D: 'D' 标志指示 DODAGID 字段存在. 通常只有在使用本地 RPLInstanceID 时才设置该标志.

  • Reserved: 7 位字段, 保留供标志使用.

  • DAOSequence: 节点发出的每个 DAO 消息都会递增该字段, 并由接收方在 DAO-ACK 中回显. DAOSequence 用于关联 DAO 消息和 DAO ACK 消息, 不应与 Transit Information 选项中的 Path Sequence 混淆, 后者与 DODAG 下方的给定 Target 相关联.

  • Status: 指示完成情况. 本规范将状态 0 定义为无条件接受. 其余状态值保留为拒绝代码. 本规范未定义拒绝状态代码, 但未来规范中的状态代码 SHOULD 按以下指南分配:

    • 0: 无条件接受, 即接收 DAO-ACK 的节点未被拒绝.
    • 1-127: 并非直接拒绝. 发送 DAO-ACK 的节点愿意充当父节点, 但建议接收节点改为查找并使用备用父节点.
    • 127-255: 拒绝. 发送 DAO-ACK 的节点不愿充当父节点.
  • DODAGID (optional): 128 位无符号整数, 由 DODAG 根设置, 用于唯一标识 DODAG. 仅当 'D' 标志被设置时, 该字段才存在. 通常只有在使用本地 RPLInstanceID 时才存在该字段, 以标识与 RPLInstanceID 关联的 DODAGID. 使用全局 RPLInstanceID 时, 该字段无需存在.

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

6.5.2. 安全 DAO-ACK (Secure DAO-ACK)

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

6.5.3. DAO-ACK 选项 (DAO-ACK Options)

本规范未定义任何由 DAO-ACK 消息携带的选项.