微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 为什么defaultKey设置不一样的节点还是可以加入网络?

为什么defaultKey设置不一样的节点还是可以加入网络?

时间:10-02 整理:3721RD 点击:

使用ti的协议栈Z-Stack Home 1.2.0,两个节点,一个协调器,另一个是终端,SECURE=1,zgPreConfigKeys = TRUE,把defaultKey改成不一样。但是发现终端还是可以加入协调器形成的网络,这是通过抓包软件显示发现确实是加入了网络,如图,

但是终端向协调器发送数据,协调器接收不到,猜测是defaultKey不同,数据解析不出来。我感到迷惑的地方是defaultKey不同,节点也可以加入网络,按照《Zigbee Wireless Networking》上说法是不可以加入网络的,如图,

zigbee网络会在Authentication Procedure一步上把defaultKey不同的节点抛弃。

我的理解和实践不一致,深感疑惑,请高人解答。

你好,

能不能把你的抓包文件用附件上传下,截图的话我这边不好解析。

节点入网成功的标志,不是父设备发Association Response给他子设备吗,而是节点发Device Announce 出来,有看到节点发Device Announce吗?

谢谢!

非常感谢你的提醒,附件是抓包图,据我分析,应该已经入网,因为子节点通过父节点广播了自己的信息,这是ti最新的协议栈了,就是Z-Stack Home 1.2.0。

但是我我使用旧一点的协议栈ZStack-CC2530-2.3.0-1.4.0,同样的设置居然产生的结果不一样,旧的协议栈测试结果和我的理解一致:节点想通过父节点广播信息,但是父节点的广播并没有发出。

真的纠结了!

你好,

整个过程应该是没有问题的,节点也确实入网成功了。

但是有一点需要你确认下,你的NWK Key应该不是用的PreConfig Key, 也就是zgPreConfigKeys = FALSE。

因为从抓包过程来看,节点在获得父设备分配的短地址以后,父设备把NWK KEY发送给了子设备,01:03:05........

所以即便你在节点处的DEFALUT KEY设置不一样也没关系,因为子设备只会用父设备传过来的KEY。

另外如果zgPreConfigKeys = TRUE,那么节点在入网过程中,父设备也会传输Transport Key给子设备,但是这个消息的Key都是00:00:00.。。

原因是双方的Key都是Preconfig的,不需要再重新传输了。

我又确认了一下,确实是设置了zgPreConfigKeys = TRUE,打断查看zgPreConfigKeys的值确实生效,是0x01。但是父设备怎么会传key过来呢?纠结啊!我尝试过使用ha1.2原封不动的代码,仅仅作了最简单的可上电组网的改动,还有把zgPreConfigKeys = TRUE,结果还是一样啊。

我这边目前的理解,nwkKey的分配方式两种:

1.入网时由TC分配

2.设备上电前进行预配置(这种安全性高一些)

二者选其一;

如果选用第二种 zgPreConfigKey = TRUE时,需要禁掉TC_LINKKEY_JOIN

禁掉TC_LINKKEY_JOIN确实是可以的,就不知道ti的工程师是不是这样设置的,只是忘记了在文档上说明一下,如果不是,那会不会影响了某些功能,这些都不知道啊,暂时也只能这样了,这问题纠缠太久了

Hi Ye,你好,看了你们的帖子受益匪浅。我也正在学习zstack的安全设置,

不过我下载了你的psd以后用sniffer看到那个传递key的帧

。。其他情况都对 就是帧内的内容 我这里看到 的似乎是加密过的 ,不是VV说的明文密钥,你那里是这样显示的么?

(我自己做过实验 ,如果协调器没有perconfigkey =ture 那么帧里面会是明文密钥)

我的sniffer显示文件用的格式是CC2530 no File Format.

————————

另外 我在Zstack的资料(不是Zstack home 还没去看过那个)Application-Level Tuning of Z-Stack.pdf  和 Smart Energy Sample Application User's Guide.pdf 以及 Z-Stack Smart Energy Developer's Guide.pdf 里面有提及 TCLink Key的事情,不知道是不是你需要的

应该就是通过链接密钥 通过交换 生产网络密钥,源码里面似乎安全模式4和5以后会使用TCLink

 VV你好!我有个问题,希望能得到你的帮助,谢谢!
我想通过加密,实现只有相同秘钥的能入网,
我的设置方法:SECURE=1,zgPreConfigKeys = TRUE,没有加TC_LINKKEY_JOIN。
我的测试方法是,Coordinator设置了加密,而设备分两种情况:
1、设置了加密,但是秘钥不同,结果不能入网。
2、没有设置加密,结果还是能入网,但是接收不到任何数据。

那么这种情况我应该如何设置,实现的效果就是,只有秘钥相同的才能入网,而没有设置加密功能的或者秘钥不同的,都不能入网。 

Hi VV:

我使用Untitled打开这个抓包文件也看不见父设备发送的NWK KEY(第15行),是加密的,

前面的小锁头有一个斜杠,应该是没解密。并且Packet Information 列是Command不是你的Transport Key.

你是怎么设置的能将这行解密呢?

@Mark Zhang

其实你的第2种情况也没有入网成功,你可以通过抓包看下具体的过程,就比较清楚了。

一般入网以入网的设备发送Device Announce为准。

@Yongjie,

在Ubiqua里面有一个Tools->Option->security 可以添加Trust Center Link Key的地方,你把你的Key添加上去就可以了

VV

@Yongjie,

在Ubiqua里面有一个Tools->Option->security 可以添加Trust Center Link Key的地方,你把你的Key添加上去就可以了

OK,搞定了,谢谢VV

好的,谢谢,我再研究一下

@VV

       我的终端设备和协调器  都设置      SECURE=1, TC_LINKKEY_JOIN  ,和zgPreConfigKeys = FALSE;

       做了以下测试:

       协调器一直通电,   终端设备通电3分钟,然后断电1分钟左右,  然后继续上电3分钟 的重复动作。

       经过一段时间之后,

       1.  发现部分终端设备 发给 协调器的消息,   从抓包上 看到  协调器 MAC又回 ACK,  但是没有传到 应用层。 但这些设备都 不显示掉线。     

       2.  另外发现部分设备 一直无法入网, 发了rejoin request 给协调器, 协调器 继而 发了leave 指令 给终端设备。

   

       关于 情况1 , 是否是协调器的 NWK key 改变了, 而终端设备仍然保持着原有 NWK  key ,导致信息无法解析到应用层?

       请问:

                 1. 入网之后 协议器 收到消息之后, MAC 需要用  相关  的KEY  进行对比之后   才反馈ACK 吗?

                 2. 信息传到到 应用层 之前  需要 哪些KEY  进行解析?

                 3. 解析的KEY  运行过程中  协调器 端 会不会改变? 

       log: 0312.TC key set as 000.rar   

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top