8.3. DIO 传输 (DIO Transmission)
RPL 节点使用 Trickle 计时器 [RFC6206] 传输 DIO. 如果来自 DAGRank 较小的发送方的 DIO 不会导致接收方的父节点集合, 首选父节点或 Rank 发生变化, 则相对于 Trickle 计时器而言, 该 DIO SHOULD 被视为一致.
以下分组和事件 MUST 被视为相对于 Trickle 计时器的不一致, 并导致 Trickle 计时器重置:
-
当节点在转发分组时检测到不一致, 如第 11.2 节详述.
-
当节点收到不带 Solicited Information 选项的组播 DIS 消息, 除非 DIS 标志限制此行为.
-
当节点收到带 Solicited Information 选项的组播 DIS, 且该节点匹配 Solicited Information 选项中的所有谓词, 除非 DIS 标志限制此行为.
-
当节点加入新的 DODAG Version (例如通过更新其 DODAGVersionNumber, 加入新的 RPL Instance 等).
注意, 此列表并非穷尽, 实现 MAY 将其他消息或事件视为不一致.
节点 SHOULD NOT 响应单播 DIS 消息而重置其 DIO Trickle 计时器. 当节点收到不带 Solicited Information 选项的单播 DIS 时, 它 MUST 以单播方式向发送方返回 DIO. 该 DIO MUST 包含 DODAG Configuration 选项. 当节点收到带 Solicited Information 选项的单播 DIS 消息, 并匹配该 Solicited Information 选项的谓词时, 它 MUST 以单播方式向发送方返回 DIO. 该单播 DIO MUST 包含 DODAG Configuration 选项. 因此, 节点 MAY 向潜在 DODAG 父节点传输单播 DIS 消息, 以探测 DODAG Configuration 和其他参数.
8.3.1. Trickle 参数 (Trickle Parameters)
Trickle 计时器的配置参数规定如下:
-
Imin: 从 DIO 消息中学习为 (2^DIOIntervalMin) ms. DIOIntervalMin 的默认值为 DEFAULT_DIO_INTERVAL_MIN.
-
Imax: 从 DIO 消息中学习为 DIOIntervalDoublings. DIOIntervalDoublings 的默认值为 DEFAULT_DIO_INTERVAL_DOUBLINGS.
-
k: 从 DIO 消息中学习为 DIORedundancyConstant. DIORedundancyConstant 的默认值为 DEFAULT_DIO_REDUNDANCY_CONSTANT. 在 RPL 中, 当 k 的值为 0x00 时, 它被视为 RPL 中的无限冗余常量, 即 Trickle 永不抑制消息.