作为物联网设备间通信应用最为广泛的标准,ZigBee技术也成为了广泛关注的焦点。ZigBee又称紫蜂,是由ZigBee联盟基于802.15.4提出的短距低耗无线通信协议,它旨在为短距离(通常10~100m)通信提供双向可靠的协议。
ZigBee技术具有近距离、低复杂度、低功耗、低成本等属性。这些属性保证了ZigBee技术可以为许多领域提供可靠的通信协议,其中包括了智慧家庭、医疗保健、农业控制等。同时,在工业互联网中,ZigBee技术在智能能源、远程控制、安全系统等方面有着极大的发展空间。
ZigBee协议与OSI 7层协议并不完全相同,但是与OSI协议有着类似的组成元素。ZigBee协议的主体由4层构成,自上而下分别是应用层(application layer,APL)、网络层(network layer,NWK)、介质访问控制层(medium access control layer,MAC)以及最底层的物理层。其中应用层还包括了应用支持子层(application support sub-layer,APS)、ZigBee设备对象(ZigBee device object,ZDO)和应用框架(application frame)。此外专门设计了包含协议安全性的安全服务提供(security service provider,SSP),该层涵盖了网络层和应用支持子层。与OSI及其他协议类似,协议的下层不清楚上层的任何信息。也就是说,协议上层可以被认为是下层的管理者,下层服从上层协议传递的任务并完成,同时不关心上层进行了什么操作。尽管在操作上看是上层管理下层,但是下层是上层协议的基础。因此,整个协议栈共同操作,完成ZigBee网络的架构。
相邻两层协议之间通过服务访问节点(service accessing point,SAP)来完成交互。在ZigBee中每两层之间有两个服务访问节点,一个访问节点负责数据,另一个节点负责管理。ZigBee协议的体系结构如图2-7所示。
图2-7 ZigBee协议体系结构
ZigBee节点是采用ZigBee协议栈进行通信的节点,通常可以分为3类,包括ZigBee终端节点、ZigBee路由节点和ZigBee协调节点。在一个ZigBee网络中,这3种节点均是必须存在的。
每个ZigBee网络均存在一个协调节点来管理整个网络,而且在通常情况下也仅有一个这样的协调节点,协调节点负责建立网络。在这个过程中,它选择网络中用于不同终端节点设备通信的通道。同时,ZigBee的协调节点往往还作为网络安全控制的信任中心。首先,协调节点有权限允许其他设备加入或离开网络并跟踪所有终端节点和路由节点;其次,协调节点还将配置并实现设备节点之间的端到端安全性;最后,协调节点负责存储并分发其他节点的密钥。在ZigBee网络中,协调节点不能休眠并需要保持持续供电。
ZigBee网络中的路由节点扮演着协调节点和终端节点之间的“中间人”角色。路由节点需要首先通过协调节点的准许加入网络,然后开始进行协调节点和设备节点间的路由工作。该工作包括了路径的建立和数据的转发。路由节点同样具有允许其他路由和终端节点加入网络的权限。最后,和协调节点类似,在加入网络之后,路由节点也不能休眠直到该节点退出ZigBee网络。
ZigBee终端节点是ZigBee网络中最简单且基本的设备,而且通常情况下ZigBee终端节点往往是低功率、低能耗的,如运动传感器、温度传感器、智能灯泡等。终端节点设备必须首先加入网络才能与其他设备通信。但是,与协调节点和路由节点不同,终端节点设备不会路由任何数据,也没有权限允许其他设备加入网络。由于无法中继来自其他设备的消息,因此终端节点只能通过其父节点(通常是路由节点)在网络内进行通信。同时,与其他两种类型的节点不同,终端节点可以进入低功耗模式并进入休眠状态以节省功耗。
ZigBee的提出即基于802.15.4协议,802.15.4协议为ZigBee提供了底层协议,即ZigBee协议的下两层MAC层和物理层采用的是802.15.4协议,而ZigBee主要针对网络层之上进行设计。
作为ZigBee协议的最底层,物理层定义了网络的物理及电气特征,该层最基本的工作是负责数据的传输和接收。此外,物理层还负责链路质量指示、信道能量检测及净信道评估等。
ZigBee协议通过MAC层提供了网络的概念,它定义了相同区域内多个ZigBee中的节点如何共享物理层资源。需要说明的是,ZigBee协议用一个16位的个域网地址(personal area network ID,PAN ID)来标识整个网络,同时采用了CSMA-CA来避免通信冲撞。MAC层的其他功能还包括了为网络协调节点生成信标、完成保障时隙(GTS)机制,以及将数据传送至上层。
从协议来讲网络层确保底层MAC层的正确操作并为应用层提供接口。而在ZigBee的网络中,网络层负责网络的架构和数据包的路由,并且按照规划的路径确保数据包可靠地从一个节点发送到另一个节点。在ZigBee中,路由工作是由协调节点和路由节点共同规划并维护路由路径来保证正常通信。
ZigBee网络由协调节点负责建立,即选择网络组成和选择网络拓扑结构。在ZigBee中通常有3种网络拓扑结构,即星状结构、树状结构和网状结构。这3种拓扑结构如图2-8所示。
图2-8 ZigBee网络拓扑结构
(a)星状结构;(b)树状结构;(c)网状结构
星状拓扑是最简单的一种拓扑结构,在ZigBee中,星状拓扑包含了一个协调节点和多个终端节点。这些终端节点直接且仅和位于网络中心的协调节点相连进行通信。而终端节点需要两两进行通信时,由协调节点进行转发。
树状拓扑包含了一个协调节点和多个路由节点及终端节点。协调节点和多个路由节点及终端节点相连,即协调节点作为这些路由节点和终端节点的父节点。同时,每个路由节点还可以连接其他的路由节点或者终端节点作为其子节点。需要说明的是,终端节点只能作为子节点而不能作为父节点。在树状结构中两个节点需要进行通信时,该终端的消息会沿路径树向上传至目标通信节点共同的祖父节点再转发至目标通信节点。
网状拓扑和树状拓扑类似,也包含了一个协调节点和多个路由节点及终端节点。与树状节点不同的是,路由节点间可以相互直接通信,这样就组成了网络状的拓扑结构。在传送消息时,协调节点和路由节点共同为待通信的两个节点规划最优的路径。网络拓扑的优点是路由更加灵活且优化。同时整体网络的鲁棒性(robust)增强,这是由于即使个别节点出现问题不能工作,还可以选择其他路径来保证通信完成。
应用层是ZigBee网络的最高层,它为ZigBee用户的需求提供服务。举例来说,一个用户需要获得室内温度和湿度数据。该用户通过ZigBee网络应用层提出请求,之后ZigBee网络应用层向下层逐层传递指令并找到相应的传感器进行感知获得数据。获得数据后传感器通过ZigBee网络传回数据,并通过应用层应用向用户反馈其所要求的数据。应用层是ZigBee网络和用户之间的接口,它决定了ZigBee网络所能够提供的服务种类。因此,应用层在ZigBee网络中起着重要的作用。
应用层包括了应用支持子层、应用框架和ZigBee设备对象。应用支持子层位于网络层之上,起到一个过渡层的作用。同时,该层还相当于一个过滤器,将应用框架中的不同应用需求过滤到相应的网络层节点从而进行下一步通信。同时,应用支持子层还连接着ZigBee设备对象和供应商应用,即ZigBee设备对象通过应用支持子层和不同供应商所提供的应用相连。具体来说,应用支持子层通过APS数据实体和APS管理实体完成该层的工作。APS数据实体在一个ZigBee网络中为不同的应用实体之间提供数据通信。而APS管理实体为不同的应用对象提供包括安全保护、绑定设备、维护应用对象数据库等服务。
应用框架包含了ZigBee簇库并为ZigBee的各种应用提供了运行框架。一个用户的应用框架内可以同时容纳240个应用目标,这些应用目标通过应用配置文件进行管理,同时它们会管理和控制下层的协议。应用配置文件的使用允许了不同供应商针对特定应用程序开发的产品之间进一步互操作。
ZigBee设备对象是定义于应用支持子层和应用框架之间的结合部分。它的主要工作包含了定义设备在ZigBee网络中属于何种节点,即属于协调节点、路由节点还是用户节点;ZigBee设备对象还具有发现节点和服务的功能;此外,ZigBee设备对象还负责安全加密管理,即主要负责安全密钥的生成和分发。