ble_mesh学习笔记(8) 关于IV index 更新详细理解

iv index 更新过程说明文档

手动画了一个 A节点 更新 B节点的IV index的过程:

1、A节点更新,发送sec beacon 给B节点,B节点接收后更新

2、始终保持 在更新完成之前采用 old iv index 进行TX通信。 采用上一次iv index 和当前的iv index 进行接收。保证数据在整个更新过程中始终能够交互。

3、无论设备在何种状态,TX 和RX 都可以使用 iv index 进行相互间的数据交互。

IV 索引是一个 32 位值,它是共享网络资源,网络中的所有节点共享 IV 索引的相同值,并将其用于它们所属的所有子网。 IV 索引从 0x0000000 开始,并在 IV 更新过程中递增,每个Network PDU中包含了IV Inedx的最低位,如果主子网上的设备在主子网上收到更新,则应将 IV 更新传播到所有其他子网。

  • IV Index 通过 Secure Network beacons 进行共享并指示是否需要更新。

img

  关于IV Index 最重要的便是IV update 了,IV Index 通过 Secure Network beacons 进行共享并指示是否需要更新:

img

  其中 flag 包含了IV Update Flag

img

 

1、节点主动更新IV Index

IV 索引为应用程序和网络层中用于身份验证加密 (AES-CCM) 的 nonce 提供熵。因此,必须经常更改它,以避免在 nonce 中重复使用序列号。IV 更新过程由作为主子网成员的任何节点启动。当节点认为它有耗尽其序列号的风险,或者它确定另一个节点接近耗尽其序列号时,可能会这样做。节点更改其 IV 索引,并向网格中的其他节点发送 IV 索引正在更新的指示。

针对天猫精灵mesh就明确的规定:

 

例如,如果 IV 索引在从"正常操作"状态转换到"正在进行的 IV 更新"状态之前为 0x00101847, 转换后,IV更新标志为1,当前IV索引为0x00101848,节点应使用IV索引0x00101847传输,接受使用IV索引0x00101847接收的消息时,网络层中的IVI字段设置为1和0x00101848时,网络层中的IVI字段为设置为 0。这允许使用旧 IV 索引处于"正常操作"状态的所有节点向此节点发送消息,并且此节点向尚未转换的节点发送消息。

  具体 IV Update Flag 与使用哪个IV Index的关系:

 

在"正在进行"状态的 IV 更新运行至少 96 小时后,节点应切换回 IV 正常操作状态,并且不更改 IV 索引。在转换点,节点应重置序列号为 0x000000。

例如,当转换回正常操作状态时, IV更新标志为0,当前IV索引为0x00101848,节点使用IV索引0x00101848传输,接受使用IV Index 0x00101847接收的消息,当网络层中的IVI字段设置为1和0x00101848时,网络层中的IVI字段设置为0。这允许节点向网络中的所有节点发送消息,无论它们也处于"正常操作"状态还是处于"正在进行的 IV 更新"状态。它还允许节点接收来自处于"正常操作"状态或"正在进行中的 IV 更新"状态的所有节点的消息。

 

2、入网过程中直接更新, 配网下发入网数据进行处理.

  将节点添加到网络时,节点将被授予 IV 索引:

1、如果当网络处于正常运行状态时,该节点被添加到网络中,则该节点应在"正常"操作中至少运行 96 小时。

2、如果当网络处于"正在进行"状态的 IV 更新状态时将节点添加到网络中,则应为该节点提供新的 IV 索引值,并在"正常"操作中至少运行 96 小时

 

3、IV Index Recovery procedure

天猫精灵针对低功耗节点错过iv index 更新过程 ,需要采用恢复过程。

img

        节点应支持 IV 索引恢复过程,因为长时间远离网络的节点可能会错过 IV 更新过程,在这种情况下,它无法再与其他节点通信。为了恢复 IV index ,节点必须侦听包含网络 ID 和当前 IV 索引的安全网络信标。当接收并成功验证其 IV 索引高于当前已知 IV index 的值 1 或更高的主子网的安全网络信标时,节点应从此安全网络信标中的值设置其当前 IV 索引及其当前 IV 更新过程状态。此过程忽略 96小时持续时间的限制

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值