查看: 2874|回复: 1
打印 上一主题 下一主题

ZigBee无线协议学习笔记(4)

[复制链接]
跳转到指定楼层
沙发
发表于 2014-7-22 17:19:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 伊海 于 2014-7-22 18:49 编辑

9. 四节点网络应用
9.1. 连接和绑定
每个WPAN均有一个PAN协调器,允许连接所有其他形式的ZigBee器件以形成网络。路由器负责路由数据,并允许终端设备与其他路由器自动接入。

网络连接

网络绑定


9.2. 特征
形成ZigBee网络;
器件关联性;
应用绑定;
器件间的路由通信;
无线化的“Sensing-and-acting”(灯的On/Off控制通过按键开关来实现);
自修复/路由修复。
9.3. 网络形成

建立PAN协调器,为PAN协调器上电(P);自动网络。
关联网络设备Router(R1)、Router2(R2)以及Router3(R3)
PAN/C(P)发送信标,并启动网络
9.4. 路由与通信
P与R3之间的通信通过R1-Hopping进行路由

R1与R2之间的通信通过P-Hopping进行路由


9.5. 网络软件流程


回复

使用道具 举报

板凳
 楼主| 发表于 2014-7-22 17:20:09 | 只看该作者
本帖最后由 伊海 于 2014-7-22 18:28 编辑

10. 安全
10.1. 概述
AES/CCM安全算法是ZigBee联盟以外的研究人员发明的,并且广泛应用于其他通讯协议之中。ZigBee提供如下的安全特性:
构造安全 (Infrastructure security)
网络访问控制(Network access control)
应用数据安全(Application data security)
10.2. 配置
为了拥有一个安全的网络,首先所有设备镜像的创建,必须将预处理标志位SECURE都置为1。在文件“f8wConfig.cfg”中可以找到。接下来,必须选择一个默认的密码。这个可以通过“f8wConfig.cfg”文件中的DEFAULT_KEY来设置。理论上,这个值设置为一个随机的128位数据。
这个默认的密码可以预先配置到网络上的每个设备或者只配置到协调器上,然后分发给加入网络的所有设备。这个可以通过文件“nwk_globals.c”文件的gPreConfigKeys选项来配置。如果这个值为真,那么默认的密码将被预先配置到每一个网络设备上。如果这个值为假,那么默认的密码只需配置到协调器设备当中。注意,在以后的场合,这个密码将被分发到每一个加入网络当中的设备。因此,加入网络期间成为“瞬间的弱点”,竞争对手可以通过侦听获取密码,从而降低了网络的安全性能。
10.3. 网络访问控制
在一个安全的网络中,当一个设备加入网络时会被告知一个信任中心(协调器)。协调器拥有允许设备保留在网络或者拒绝网络访问这个设备的选择权。
信任中心可以通过任何逻辑方法决定一个设备是否允许进入这个网络中。其中一种就是信任中心只允许一个设备在很短的窗口时间加入网络。这个是可能的,举例说明,如果一个信任中心设备有一个“push”按键。当按键按下,在这个很短的时间窗口中,它允许任何设备加入网络。否则所有的加入请求都将被拒绝。以他们的IEEE地址为基础,一个秒级的时间段将被配置在信任中心用来接收或者拒绝设备。
这种类型的策略可以通过修改ZDSeeMgr.c模块中的ZDSecMgrDeviceValidate()函数来实现。
10.4. 更新密码
信任中心可以根据自己的判断更新通用网络密码。应用程序开发人员修改网络密码更新策略。默认信任中心执行能够用来符合开发人员的指定策略。一个样例策略将按照一定的间隔周期更新网络密码。另外一种将根据用户输入来更新网络密码。ZDO安全管理器(ZDSecMgr.c)API通过 “ZDSecMgrUpdateNwkKey”和“ZDSecMgrSwitchNwkKey”提供必要的功能。“ZDSecMgrUpdateNwkKey”允许信任中心向网络中的所有设备广播新的网络密码,此时,新的网络密码将被作为替代密码保存在所有网络设备中。一旦信任中心调用“ZDSecMgrSwitchNwkKey”,一个全网范围的广播将触发所有的网络设备使用替代密码。
10.5. 快速参考

使能安全(Enabling Security) SECURE = 1(f8wConfig.cfg)   
使能预配置网络密码(Enabling Preconfig Network Key) gPreConfigKeys = TRUE(nwk_globals.c)   
设置预配置网络密码(Setting Preconfig Network Key) 设置defautlKey = {KEY}(ZDSecMgr.c)   
使能/禁止信任中心的加入许可功能(Enabling/Disabling joining permission on the Trust Center) 调用函数ZDSecMgrPermitJoining()(ZDSecMgr.c)   
加入期间特定设备批准(Specific device validation during joining) 修改ZDSecMgrDeviceValidate(ZDSecMgr.c)   
网络密码更新(Network key updates) 调用ZDSecMgrUpdateNwkKey()和ZDSecMgrSwitchNwkKEy()函数(ZDSecMgr.c)

11. TI Z-Stack协议栈架构分析
11.1. TI Z-Stack
协议栈定义通信硬件和软件在不同级如何协调工作。在网络通信领域,在每个协议层的实体们通过对信息打包与对等实体通信。在通信的发送方,用户需要传递的数据包按照从高层到低层的顺序依次通过各个协议层,每一层的实体按照最初预定消息格式向数据信息中加入自己的信息,比如每一层的头信息和校验等终抵达最低的物理层,变成数据位流,在物理连接间传递。在通信的接收方数据包依次向上通过协议栈,每一层的实体能够根据预定的格式准确的提取需要在本层处理的数据信息,最终用户应用程序得到最终的数据信息进行处理。
ZigBee无线网络的实现,是建立在ZigBee协议栈的基础上的,协议栈采用分层的结构协议分层的目的是为了使各层相对独立,每一层都提供一些服务,服务由协议定义,程序员只需关心与他的工作直接相关的那些层的协议,它们向高层提供服务,并由低层提供服务。
在ZigBee协议栈中,PHY、MAC层位于最低层,且与硬件相关;NWK、APS, APL层以及安全层建立在PHY和MAC层之上,并且完全与硬件无关。分层的结构脉络清晰、一目了然,给设计和调试带来极大的方便。
整个Z-Stack采用分层的软件结构,硬件抽象层(HAL)提供各种硬件模块的驱动,包括定时器Timer,通用I/O口GPIO,通用异步收发传输器UART,模数转换ADC的应用程序接口API,提供各种服务的扩展集。操作系统抽象层OSAL实现了一个易用的操作系统平台,通过时间片轮转函数实现任务调度,提供多任务处理机制。用户可以调用OSAL提供的相关API进行多任务编程,将自己的应用程序作为一个独立的任务来实现。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表