4.1.3 ZigBee的体系结构
ZigBee体系结构的最下面两层由IEEE 802.15.4标准定义的PHY层和MAC层构成,ZigBee标准则定义了协议的网络层和应用层,其体系结构如图4-1所示。
图4-1 ZigBee体系结构示意图
任何遵循ZigBee标准的设备同样遵循IEEE 802.15.4标准。但是,IEEE 802.15.4独立于ZigBee标准而开发的,也就是说,仅基于IEEE 802.15.4而不使用ZigBee协议层也可能建立短距离无线网络。而且,用户自己开发的网络层和应用层可以针对某个具体应用,比ZigBee协议层简单,所需的内存小,可以更好地降低成本。
下面逐一介绍各层提供的服务。
1.IEEE 802.15.4物理层
IEEE 802.15.4标准定义的物理层主要提供了以下服务:
①ZigBee无线设备激活和关闭。
②通信信道选择(信道频率设置)。
③检测接收包的链路质量值(Link Quality Indication,LQI)。
④信道能量检测(Energy Detect,ED)。
⑤空闲信道判断(Clear Channel Assessment,CCA)。
⑥基本物理层数据帧收发功能,并能向上层MAC层提供管理服务接口。
本节将详细讲解物理层信道频率的分配、通用的射频规范、物理层服务规范和物理层数据帧结构。
(1)信道频率分配
ZigBee使用免执照的工业科学医疗(ISM)频段,分别为868MHz(欧洲)、915MHz(美国)、2.4GHz(全球)。ZigBee共定义了27个物理信道,其中,868MHz频段定义了1个信道;915MHz频段附近定义了10个信道,信道间隔为2MHz;2.4GHz频段定义了16个信道,信道间隔为5MHz。具体信道分配如表4-1所示。
表4-1 信道频率分配表
(2)射频规范
通用的射频规范包括信道能量检测(ED)、链路质量值(LQI)、空闲信道判断(CCA):
①能量检测(ED)是估计信道带宽内的接收信号功率,为上层选择信道提供依据。
②链路质量值(LQI)用来指示接收数据包的强度和质量,一般是通过接收机ED、信噪比估计或者这两种方法结合来测量。物理层会对接收到的每个数据包执行LQI,测量结果提交给MAC层处理,为网络层或应用层在接收数据帧时提供无线信号的强度和质量信息并作为网络层进行路由选择的依据等。LQI值取值为0x00~oxff,其中0x00代表信号质量最差,oxff代表信号质量最好。
③空闲信道判断(CCA)是通过预定义评估模式来判断无线信道是否处于空闲状态。IEEE 802.15.4定义了三种空闲信道评估模式:
模式一:能量门限检测,当信号能量低于预先设定的信号能量门限值时,认为其信道空闲。
模式二:无线信号特征判断,通过载波侦听检测信道上信号的无线特征来判断,如果检测结果符合IEEE 802.15.4调制和扩频的信号特征,则表示信道忙碌。
模式三:是前两种模式的综合应用。
(3)物理层服务规范
IEEE 802.15.4规定的物理层通过硬件和射频固件提供MAC层与物理无线信道之间的接口,包括一个管理实体即物理层管理实体(Physical Layer Management Entity,PLME)。PLME提供两种服务:数据服务和管理服务。这两种服务通过两个SAP接入,即数据服务通过数据服务接入点(Physical Data Service Access Point,PD-SAP)接入,管理服务通过管理服务接入点(Physical Layer Management Entity Service Access Point,PLME-SAP)接入。其物理层参考模型如图4-2所示。
图4-2 物理层参考模型
①物理层数据服务。通过PD-SAP在无线信道上收发数据,实现与MAC层之间的数据通信。
②物理层管理服务。用于维护物理层相关数据组成的数据库,通过PLME-SAP在物理层实体与MAC层实体之间传输管理命令。
(4)物理层帧格式
物理层帧格式的结构如表4-2所示,第一个部分是前导码,一般是4字节,用于收发器进行码片或者符号的同步。第二个部分是帧头,一般是1字节,表示同步结束,数据包开始传输。前导码和帧头一起构成了同步头。第三部分是帧长度,一般是7比特,由一个字节的低7位表示,表示物理层负载的长度,也就是说负载长度不会超过127字节。第四部分是保留位,占1比特。第五部分是负载,携带的是物理层数据包的传输数据。
表4-2 物理层帧结构表
2.MAC层
MAC层提供的服务包括:
①产生网络信标帧,以及信标帧同步。
②支持PAN连接和断开。
③支持设备的安全性,即MAC子层可以为输入/输出的MAC帧提供四种可选的安全服务:访问控制、数据加密、帧完整性检查和顺序更新(避免帧重发攻击)。
④采用CSMA/CA信道接入机制。
⑤处理和维护GTS(Guaranteed Time Slot)时槽保障机制。
⑥在对等的MAC实体之间提供一个可靠的通信链路,是通过帧确认和数据校验实现。
MAC层实现任务主要依据MAC子层服务规范,下面将详细讲解MAC子层服务规范和MAC数据帧结构。
(1)MAC层服务规范
IEEE 802.15.4规定的MAC层和物理层一样,也包括一个管理实体,即MAC层管理实体(MAC Layer Management Entity,MLME)。MLME负责维护和MAC子层相关的管理目标数据库,此数据库指MAC子层的PAN信息数据库。MAC子层参考模型如图4-3所示。
图4-3 MAC子层参考模型
MAC层管理实体有两个接口,即MAC公共部分子区服务(MAC Common Part Sublayer Service Access Point,MCPS-AP)和MAC管理实体服务接口(MAC Layer Mange Entity Server Access Point,MLME-SAR)。其中MAC数据服务通过MCPS-SAP接入,MAC管理服务通过MIME-SAP接入。
(2)超帧通信
在IEEE 802.15.4中,可以选用以超帧为周期组织ZigBee网络内设备间的通信。超帧结构示意图如图4-4所示。每个超帧以网络协调器发出的信标帧为开始,这个信标帧中包含了超帧将持续的时间以及对这段时间的分配等信息。网络中的普通设备接收到信标帧后,可以根据其中的内容安排自己的任务。
图4-4 超帧结构
超帧将通信时间划分为活动区间和静止区间两个部分。在静止区间,ZigBee网络中的设备不会相互通信,进入休眠状态以节省能量。活动区间被划分为三个部分:信标帧发送时段、竞争接入期(Contention Access Period,CAP)和非竞争接入期(Contention Free Period,CFP)。超帧的活动区间被划分成16个等长的时槽。
在超帧的竞争接入期,IEEE 802.15.4网络设备使用带时槽的CSMA/CA访问机制,并且任何通信都必须在该时段结束前完成。在非竞争接入期,协调器根据上一个超帧ZigBee网络中设备申请GTS的情况,将非竞争时段划分成若干GTS,每个GTS由若干时槽组成。
超帧中规定非竞争接入期必须跟在竞争接入期的后面。竞争时期的功能包括网络设备可以自由收发数据、申请GTS时段、新设备加入网络等。非竞争时期由协调器指定的设备发送或者接收数据。
(3)PAN网络的建立和运行
PAN网络的一般建立过程为:协调器节点进行能量和物理信道扫描,从信道列表中选择一个较好的信道,并为这个新网络选择一个唯一的PAN标识符(PAN ID),并进行PAN ID冲突检测机制。一旦PAN网络建立成功,协调器就可以等待路由器与终端设备加入到网络中。
终端设备会重复发送信标请求,要求加入到ZigBee网络中。协调器发现设备发出的信标请求后,则响应一个信标帧来实现与请求设备的同步,一旦同步成功,则允许设备与协调器进行关联,从而使终端加入到网络中。关联操作是指一个设备在加入一个特定网络时,向协调器注册以及身份认证的过程。
(4)MAC层帧结构
MAC帧格式由三部分组成:MAC帧头(MAC Header,MHR)、MAC载荷和MAC帧尾(MAC Footer,MFR),如表4-3所示。MAC帧头(MHR)包含帧控制域、序列号和地址信息;MAC载荷区域的长度可变,它包含帧的类型;MAC帧尾(MFR)包含帧校验序列。
表4-3 MAC层的一般帧格式
①帧控制域。MAC帧头的帧控制域占2个字节,这2个字节的每位代表不同的含义。帧控制域包含帧类型信息、地址域和其他控制标志部分,帧控制域格式如表4-4所示。
表4-4 帧控制域格式
a.帧类型域总长度为3位,不同的类型值代表不同的帧格式。000:信标帧;001:数据帧;010:应答帧;011:命令帧;100~111:保留。
b.安全使能域总长度为1位,用于判断该帧是否需要加密。如果需要加密。该域设置为“1”;如果不需要加密,该域设置为“0”。
c.待发送域总长度为1位,用于判断是否还有后续数据帧发送至接收端。如果设备在发送帧时有另外的数据需要发送至接收端,该域设置为“1”;如果设备在发送帧时没有其他的数据需要发送,该域设置为“0”。
d.ACK请求即应答请求,总长度为1位,用于判断发送端是否需要接收端在接收到数据之后返回应答。如果需要应答,该域设置为“1”;如果不需要应答,该域设置为“0”。
e.内部PAN子域总长度为1位,用于判断是否发送MAC帧到同PAN网络。如果该域设置为“1”,并且带有目的地址和源地址,则MAC帧不包含PAN标识符域,说明发送方和接收方在同一PAN网络中;如果该域设置为“0”,并且不存在目的地址和源地址,则MAC帧将包含目的地址和源PAN标识符域,说明发送方和接收方不在同一PAN网络中。
f.目的地址模式总长度占2位,占用帧控制域的第10、11位。该域不同的值代表不同的目的地址类型。目的地址模式具体说明如表4-5所示。
表4-5 目的地址模式说明
如果该域设置为“0”,并且该帧类型子域并没有制定此帧尾是应答帧还是信标帧,则源地址模式子域为非零值,它表示该帧发送到由源PAN标识符指定的带PAN标识符的PAN协调器。
g.源地址模式子域总长度占2位,占用帧控制域的第14、15位。该帧不同的值代表不同源地址类型。源地址模式具体说明如表4-6所示。
表4-6 源地址模式说明
如果该域设置为“0”,并且该帧类型子域并没有制定此帧尾是应答帧还是信标帧,则目的地址模式子域为非零值,它表示该帧由目的PAN标识符域中的带PAN标识符的PAN协调器发起。
②序列号。序列号子域长度占一个字节,它指定了帧唯一的标识符。其中信标帧的序列号为信标序列号;数据帧、应答帧和命令帧为数据序列号。每一种类型的帧的帧序号是连续的。
③目的PAN标识符。目的PAN标识符的长度域占用2个字节,它指定了帧接收方唯一的PAN标识符。
④目的地址域。目的地址域的长度域占用2个字节或16个字节。具体值由帧控制域中的目的地址模式子域的值决定。目的地址域指定了帧接收方的地址。
⑤源PAN标识符。源PAN标识符域的长度为2个字节,它指定了帧发起方唯一的PAN标识符。如果帧控制域中的源地址模式为非零值并且内部PAN子域为零值,则仅MAC帧包含此域。在连接一个PAN网络时,设备最初的PAN标识符就已被决定。
⑥源地址域。源地址域的长度为2个字节或16个字节,具体值由帧控制域中的目的地址模式子域的值决定。源地址域指定了帧发送方的地址。
⑦帧载荷域。帧载荷域的长度是可变的。它根据帧类型包含不同的信息。如果帧控制域中的安全子域设置为“1”,则帧载荷域受到安全组件的保护。
⑧帧尾域。帧尾域长度为2个字节,包含了一个16位的CRC校验值。此校验值通过对MHR和MAC载荷部分进行运算得到。
前面提到MAC数据帧一共有四种帧类型:信标帧、数据帧、确认帧和命令帧。
a.信标帧:用于协调器发送信标,建立同步。
b.数据帧:用于设备数据的发送。
c.确认帧:用于确认成功接收到的帧。
d.命令帧:用于处理所有MAC对等实体的控制传输。
这4种帧类型的帧格式分别如下:
信标帧:MAC信标帧的主要功能是建立PAN协调器,实现网络中设备的同步工作和休眠。信标帧格式如表4-7所示。
表4-7 信标帧格式
MAC载荷域由四部分组成:超帧域、同步时隙分配域、待发送地址域和信标载荷域。超帧域规定了这个超帧持续时间、活跃部分持续时间以及竞争访问持续时间等信息;同步时隙分配域将无竞争的时段划分为若干个时隙,并把每个GTS分配给网络中的一个具体设备;待发送地址包含当前待发送消息到协调器设备的地址列表;信标载荷域规定了上层传输信标帧的最大字节数。
数据帧:MAC数据帧用来传输上层发送至MAC层的数据,数据帧的载荷部分包含了上层需要传送的数据。网络层要传输的数据传送至MAC层时,网络层的数据将成为MAC层的载荷。数据帧格式如表4-8所示。
表4-8 MAC数据帧结构
确认帧:如果接收端接收到目的地址为本身的数据帧,并且帧控制域字段的确认请求位为“1”,则接收端需要发送确认帧回复发送节点,表示接收端已接收到发送端的数据。可以看到确认帧的负载长度为0。确认帧格式如表4-9所示。
表4-9 确认帧格式
命令帧:命令帧用于组建PAN网络,传输同步数据等。命令帧格式如表4-10所示。MAC命令帧标识符占用1个字节,其有效取值为0x01~0x09,此标识符不同的取值所代表的名称不同,具体说明如表4-11所示。其他位为保留位。
表4-10 命令帧格式
表4-11 MAC命令标识符
3.网络层
ZigBee网络层处于IEEE 802.15.4 MAC层与应用层之间,主要负责保证IEEE 802.15.4的MAC子层正确操作,且为应用层提供合适的服务接口。
(1)ZigBee网络层功能概述
ZigBee网络层的主要功能是负责网络的建立和网络地址的分配以及网络拓扑结构、网络路由管理等。
①网络的建立及网络地址分配。在一个ZigBee网络中,协调器具有建立一个新网络的能力,协调器通过ZigBee的网络层建立新网络。在ZigBee建立新网络之后,协调器具有为网络中的新成员分配网络地址的功能。
②网络拓扑结构。ZigBee网络层支持星形、树形和网形网络三种网络拓扑结构。如图4-5所示。在这些拓扑结构中一般包括三种设备:协调器、路由器和终端节点。
ZigBee协调器:主要负责网络的建立、信道的选择以及网络中节点地址的分配。
ZigBee路由器:主要负责找寻、建立路由路径并负责转发数据包。
ZigBee终端设备:智能选择已经建立形成的网络,传输数据给协调器和路由器,但不能转发数据。
③网络路由管理。ZigBee网络的功能中,最核心的功能为路由及路由算法的管理,ZigBee网络采用AODV的路由算法实现网络路由。当ZigBee网络规模较大时,ZigBee节点需要维护一个路由表。
图4-5 ZigBee拓扑结构类型
(2)网络层服务规范
ZigBee的网络层提供两个服务实体:数据服务实体(NWK Layer Data Entity,NLDE)和管理服务实体(NWK layer Management Entity,NLME)。这两个实体为网络层提供两种服务:数据服务和管理服务。两种服务通过两个接口进行访问:网络层数据服务访问点(WK Layer Data Entity Service Access Point,NLDE-SAP)和网络层管理服务访问点(NWK Layer Management Entity Service Access Point,NLME-SAP)。
网络层可以通过NLDE-SAP和NLME-SAP为应用层提供服务,同时通过MCPS-SAP和MLME-SAP为MAC提供服务。另外在NLME和NLDE之间有一个隐藏的接口,数据服务可以通过此接口使用管理服务,反之,管理服务通过此接口可以使用数据服务。网络层参考模型如图4-6所示。
图4-6 网络层参考模型
①网络层数据服务允许一个应用程序在同一个网络中的两个或多个设备之间传输应用协议数据单元。主要提供以下服务:
a.生成网络数据单元。网络层数据服务通过在应用层单元数据增加一个合适的协议帧头,生成网络层数据单元。
b.指定路由拓扑。网络层数据服务通过传输一个网络层数据单元至一个合适的设备,通信的链路按照路由路径发向目的地。
c.安全。保证传输的真实性和保密性。
②网络层管理服务提供配置新设备、建立新网络、允许设备加入和离开网络、邻居寻址和路由发现的功能。主要提供以下服务:
a.配置新设备。通过协议栈配置各设备为协调器或作为路由器和终端节点加入一个已存在的网络。
b.建立新网络。配置协调器建立一个新的网络。
c.允许设备加入或离开网络。ZigBee协调器或路由器请求一个设备加入或离开网络。
d.邻居寻址。发现、记录和报告关于设备的单跳邻居信息的能力。
e.路由发现。发现并记录网络传输的路径功能,即保证信息可以有效地传送。
(3)网络层帧结构
网络层帧分为两类:命令帧和数据帧。每一种类型的帧基本都包括两部分:帧头和载荷。帧头由帧控制域、路由域组成。其中路由域包括目的地址域、源地址域、半径域和序列号域。网络帧结构的一般格式如表4-12所示。
表4-12 网络帧结构的一般格式
①帧控制域长度为2个字节,定义的信息包括帧类型、协议版本、路由发现以及安全域。网络层帧控制域格式如表4-13所示。
表4-13 网络层帧控制域格式
a.帧类型子域长度占2位,用于判断网络层的数据帧类型为数据帧(00)或命令帧(01)。
b.协议版本子域占4位,被设置为反映当前所使用的ZigBee网络层协议版本号。
c.路由发现子域占2位,用于控制路由发现的各种操作。不同的取值对应不同的操作,00:禁止路由发现;01:使能路由发现;10:强制路由发现;11:保留。
d.安全子域占1位,当网络层安全操作使能时,该位为“1”,当处于非安全状态下工作时,该位为“0”。
②目的地址域占2个字节,为目的节点设备的16位短地址或者是广播地址0xFFFF。
③源地址域占2个字节,为当前数据帧的源设备的网络地址。
④半径域长度为1个字节,指定了路由传输的半径范围。每当传输一级路由时,半径域将减1。
⑤序列号域,长度为1个字节。每一个帧都有一个序列号,当同一个设备在传输一个新的数据帧时,此序列号的数值将加1。当序列号数值为255时,将重新从0计数。
⑥网络层帧载荷为一个可变长度域,其内容为应用层数据单元。
4.应用层
ZigBee应用层建立在网络层之上,包括应用支持子层(APS)、应用程序框架(AF)和ZigBee设备对象ZDO。应用支持子层的主要功能包括绑定及绑定维护;应用程序框架主要为ZigBee设备对象提供工作环境;ZigBee设备对象主要功能为定义网络的节点角色以及网络服务管理等。
(1)应用支持子层
应用支持子层提供网络层和应用层之间的接口,此接口为ZigBee设备对象(各制造商定义的应用对象)都使用的通用服务。该服务通过两个实体实现:应用支持子层数据实体(Application Support Sub Layer Data Entity,APSDE)和应用支持子层管理实体(Application Support Sub Layer Management Entity,APSME)。APSDE和APSME通过APSDE服务接入点(Application Support Sub Layer Data Entity Service Access Point,APSDE-SAP)和APSME服务接入点(Support Sub Layer Management Entity Service Access Poin,APSME-SAP)提供应用支持子层的数据服务和管理服务。应用层参考模型如图4-7所示。
①APSDE为两个或多个位于同一网络的设备之间提供数据传输服务,包括过滤组地址信息,数据负载的数据包分制和重组以及可靠数据传输。
②APSME提供安全服务、设备绑定、建立和删除组地址,用于维护管理对象的数据库,支持64位IEEE地址和16位网络地址之间的地址映射。
(2)应用程序框架
ZigBee应用程序框架是ZigBee设备对象的工作环境。运行在ZigBee协议栈上的应用程序实际上就是厂商自定义的应用对象,并且遵循规范运行在端点1~240上。
(3)ZigBee设备对象ZDO
ZigBee协议栈中的ZDO主要负责端点号为0的ZigBee设备对象,描述了一个ZigBee的基本功能。这个功能在应用对象设备Profiles和APS之间提供一个接口。ZDO位于应用框架和应用支持子层之间,满足ZigBee协议栈中应用操作的一般需要。
图4-7 应用层参考模型
ZDO通过端点0可以使应用程序和ZigBee协议栈的其他通信层进行通信,实现对协议栈各层的初始化和配置,其主要功能为:
①初始化应用支持子层、网络层和安全服务规范。
②定义网络中设备的角色。
③设备发现,并提供服务。
④服务发现。
⑤实现绑定管理、安全管理和节点管理。
⑥执行端点号为1~240的应用端点的初始化。