ZigBee join & rejoin & leave procedure

ZigBee join & rejoin & leave procedure

一、Join 流程

1、 通过协调器加入网络
Joining direct to Trust Center
在关联之前需要打开 Permit Join,Joining Device 发送 Beacon Request,附近的 Router/Coordiantor 会响应一个 Beacon,Joining Device 会选择一个信号最好的设备作为父设备申请加网。

  1. Joining Device 发送关联请求;
  2. Trust Center 发送关联响应;
  3. Trust Center 用 Default Global Centralized Key 或者 Install Code derived key(用Install Code 生成的Link key)加密 Network Key 后传输给 Joining Device;
  4. Joining Device 收到 Network Key 后发送 Device Announce;
  5. Joining Device 向 Trust Center 请求节点描述符;
  6. Joining Device 收到节点描述符后解析数据,判断 Stack Compliance Revision是否大于等于21(R21)和 apsTrustCenterAddress 不等于0xFFFFFFFFFFFFFFFF(等于 0xFFFFFFFFFFFFFFFF 表示网络处于分布式网络安全模式),条件成立就发送 Request Key 命令请求更新 Unique Trust Center link key ;
  7. Trust Center 发送 Unique Trust Center link key;
  8. Joining Device 如果使用了Install Code, 则将从 Defautl 或 Provisional(临时)状态更新到 Unverified(未验证)状态,然后发送验证密钥请求;
  9. Trust Center 收到后将对比密钥,正确则发送 Confirm Key。

在 Z-Stack 3.0.2 中可以看到 apsTrustCenterAddress 是在传输 Network key 时更新的,其实就是 Trust center 的扩展地址(extAddr, 8字节)。

相关函数:
void ZDSecMgrTransportKeyInd( ZDO_TransportKeyInd_t* ind );
void ZDSecMgrUpdateTCAddress( uint8 *extAddr );

2、通过路由加入网络
Joining when parent is not the Trust Center通过路由加入网络和通过协调器加入网络差不多,多了两个步骤,如下;

  1. Update Device:作用是通知 Trust Center 有设备变动,设备加入网络或者离开网络;
  2. Tunnel: Transport Key:传输 Network Key。

二、Rejoin 流程

1、Secured Rejoin
Secured Rejoin当设备需要 Rejoin 的时候,它应该先尝试 Secured Rejoin,Rejoin 失败后再尝试 Unsecured Rejoin。
Secured Rejoin 流程如上图,不再详述。

2、Trust Center Rejoin(Unsecured Rejoin)

Trust Center RejoinTrust Center Rejoin 需要重新传输 Network Key。

三、Leave 流程

Leave 分主动离网和被动离网,流程很简单,本设备发送Leave命令或者其他设备发送Leave命令。

一般情况的离网 Rejoin 标志位为0,即不再发生 Rejoin 动作,如下图;并且清除相关表和变量:
a. nwkNeighborTable
b. nwkRouteTable
c. nwkManagerAddr
d. nwkUpdateId
e. nwkNetworkAddress
f. nwkGroupIDTable
g. nwkExtendedPANID
h. nwkRouteRecordTable
i. nwkIsConcentrator
j. nwkConcentratorRadius
k. nwkSecurityMaterialSet
l. nwkActiveKeySeqNumber
m. nwkAddressMap
n. nwkPANID
o. nwkTxTotal
p. nwkParentInformation
Leave
1. 主动离网

调用Leave功能函数即可,Router 离网时一般是不会将子设备强制离网的,也就是 Remove Children 标志位为0;

2、被动离网

本设备被其他设备要求离网,Router 离网时一般是不会将子设备强制离网的,也就是 Remove Children 标志位为0,除非其他设备要求它清除子设备。

参考:
Ti《Z-Stack 3.0 Developer’s Guide.pdf》
Silicon Labs《ug103-05-fundamentals-security.pdf》
ZigBee Alliance《docs-05-3474-21-0csg-zigbee-specification.pdf》

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值