AddrMgr中的ADDRMGR_USER_SECURITY是做什么用的?
每一个加入网络的节点,无论经过几级路由,都会在协调器上留下ADDRMGR_USER_SECURITY,ADDRMGR_USER_SECURITY会和ADDRMGR_USER_ASSOC挣用AddrMgr空间,经常在协调器上导致AssocList没有满,AddrMgr满了。ADDRMGR_USER_SECURITY的节点可以随意删除么?
你好,
如果一个网络开启的Security功能的话,那么当一个节点通过其他的路由加入网络后,需要得到Coordinator的授权,然后这个路由设备就会Key发给入网的设备。
这个设备的信息就会保存在Addrmgr里面,并且类型是ADDRMGR_USER_SECURITY。
一般只有在这个节点Leave的时候,会把这个节点的信息删除。
如果手动删除的话,在security上可能会有问题。
我通过测试,发现对于EndDevice来说,协调器收到Annce命令后,删除ADDRMGR_USER_SECURITY,不会有任何影响。但是如果被删除了ADDRMGR_USER_SECURITY的是路由器,那么通过这个路由器入网的节点不能通过密钥认证。
有没有办法增加AddrMgr的容量,而使AssocList保持不变?那个400个节点的帖子有没有链接?
如果信任中心(协调器)都要保存一条节点的ADDRMGR_USER_SECURITY,RAM那么小,网络岂不是不能做到很大
400个节点的实验并没有使能SE。
通过对协议栈加密部分的分析,我的理解如下:
1,任何一个节点入网,无论是直接通过协调器还是通过路由器,协调最终都会收到这个入网请求,并保存为ADDRMGR_USER_SECURITY。
2,通过路由器入网的节点,路由器会向协调器发送APSME_UpdateDeviceReq,使协调器触发ZDO_UPDATE_DEVICE_IND消息,从ZDO_UPDATE_DEVICE_IND消息中获取节点信息。
3,当协调器删除二级路由的ADDRMGR_USER_SECURITY后,二级路由发出的APSME_UpdateDeviceReq协调器无法解析,所以导致该二级路由不能加入设备。