ZigBee3.0 节点入网流程分析

用户头像
taox
关注
发布于: 2020 年 05 月 14 日
ZigBee3.0 节点入网流程分析



未入网节点的简要入网流程为:先扫描各信道中存在的网络,尝试加入合适的网络。成功加入后,节点将通过身份验证并接收网络密钥。最后,如果此网络存在信任中心,则节点将其预配置的链接密钥交换为信任中心生成的链接密钥。



下面详细分析节点入网的每个步骤。

Figure - Network steering procedure for a node not on a network



Step1 节点入网前首先设置 CommissioningStatus 为 IN_PROGRESS, DoPrimaryScan 为 TRUE,ScanChannels 为 PrimaryChannelSet。如果 PrimaryChannelSet 为 0x00000000, 则跳转到 Step12。



Step2 节点通过信道扫描,寻找是否存在合适的网络。为此,节点广播发送 Beacon Request。



Step3~5 协调器或者路由节点收到 Beacon Request 后,回复 Beacon。

Beacon 部分参数说明:

  • Source PAN ID:设备所处网络的PAN ID

  • Short source Address:设备所处网络的短地址

  • Pan Coordinator:设备是否为协调器

  • Permit Association:关联许可是否开发

  • Router Capacity:可否接入Route Device

  • End Device Capacity:可否接入End Device



如果节点收到 Beacon,表示信道扫描成功;否则,信道扫描失败,跳转到Step12。



节点可能同时收到多个 Beacon 回复,它会分析 Beacon 的 Link Quality 和关键参数来决定下一步动作。

1)首先判断 Permit Association 是否为True。

2)然后根据自身的设备类型,判断 Router CapacityEnd Device Capacity 是否符合要求

3)如果存在多个 Beacon 符合要求,选择 Link Quality 最佳的网络入网;如果没有 Beacon 符合要求,跳转到Step12。



Step6 节点使用 MAC association 命令尝试加入网络。

Association Request 部分参数说明

  • Device Type: FFD(协调器或者路由设备),RFD(终端设备)

  • Power Source:Mains(常供电设备),Battery(电池供电设备)



节点发出 Association Request 命令并收到协调器的 MAC ACK 后,向协调器发送 Data Request命令,请求分配网络短地址。



当协调器接收到 Data request 命令后,为入网节点分配一个唯一的网络短地址,并回复Association Response 命令。



Step7 如果节点收到 Association Response 命令并解析获得了网络短地址,表明入网成功;否则入网失败,跳转到Step6,继续尝试加入下一个合适的网络。节点可以尝试再一次加入相同的网络,但是连续尝试次数不能超过 MaxSameNetworkRetryAttempts。如果找不到合适的网络,跳转到Step12。



Step8 节点入网成功,需要在 apsSecurityTimeOutPeriod 时间内被协调器认证并接收 Network Key。



协调器使用创建网络时生成的 KEY-Transport KEY 秘钥加密 Transport KEY 命令的APS层信息,节点收到命令后,使用 ZigBeeAlliance2009 秘钥解密,获得 Network Key 用于后续通信数据的网络层信息的加解密。



Step9 如果节点在 apsSecurityTimeOutPeriod 时间内没有收到 network key,或者解密、认证失败,节点应该重置自身的网络参数并跳转到Step6,重新尝试加入网络。如果找不到合适的网络,跳转到Step12。



Step10 节点设置 bdbNodeIsOnANetwork 为TRUE,然后广播 Device_annce ZDO 命令,通知当前网络的其它节点,有新节点入网成功。此命令网络层的信息正是用上一步收到的 network key 加密。

如果 apsTrustCenterAddress 为 0xffffffffffffffff,则表明加入的是分布式安全网络,跳转到Step13。



Step11 为了更新通信数据 APS 层的加解密秘钥,节点执行检索新的 Trust Center link key 过程。如果成功,跳转到 Step13;如果失败,节点退出当前网络并重置网络参数。



1)节点向协调器发送 request key,请求获取新的 Trust Center link key。



2)协调器发送 Transport Key(Link), APS层携带新的 Trust Center link key 信息,并使用 Key-Load Key秘钥加密。



3)节点获取到新的 Trust Center link key 后,使用 HMAC 哈希算法得到 Initiator Verify-Key Hash Value,将此数值添加到 Verify Key Request 命令并发出,让协调器确认是否正确。



4)协调器验证节点的 Initiator Verify-Key Hash Value,并回复 Verify Key Request 命令,如果此命令的 apsStatus 参数为 Success,则表示 Trust Center link key 更新成功。



Step12 如果节点的 DoPrimaryScan 为 FALSE 或者 SecondaryChannelSet 参数为0x00000000, 跳转到Step16。如果 SecondaryChannelSet 参数不等于 0x00000000, 节点应该设置 DoPrimaryScan 参数为 FALSE, 将 ScanChannels 参数设置为 SecondaryChannelSet 并跳转到Step2。



Step13 节点广播 Mgmt_Permit_Joining_req ZDO 命令,permit joining flag 参数为 true 的其它路由节点收到此命令后,会同步 permit Duration 时间。



Step14 如果入网节点为路由节点,应该激活它的 permit joining flag,用以接收其它节点的入网请求。



Step15 节点设置 CommissioningStatus 为SUCCESS。如果节点支持 touchlink 功能,设置 aplFreeNwkAddrRangeBegin, aplFreeNwkAddrRangeEnd, aplFreeGroupID-RangeBeginaplFreeGroupIDRangeEnd 参数为0x0000。



Step16 节点可以使用制造商定制的程序重新申请入网,也可以设置 CommissioningStatus 为 NO_NETWORK 并停止入网。



发布于: 2020 年 05 月 14 日 阅读数: 57
用户头像

taox

关注

还未添加个人签名 2017.11.12 加入

还未添加个人简介

评论

发布
暂无评论
ZigBee3.0 节点入网流程分析