ZigBee协议栈网络层的研究与实现
扫描二维码
随时随地手机看文章
1. 引言
随着科学技术的发展,无线技术逐渐取代有线技术,仅支持静态固定拓扑的无线网络也逐渐被支持动态变化拓扑的无线网络取代。在短距离的无线控制、监测、数据传输领域,通用的技术有802.11、蓝牙、HomeRF等,它们各有自己的优势,但仍然存在功耗大、组网能力差等劣势。为了弥补上述协议的不足,ZigBee联盟于2004年12月中旬推出基于IEEE 802.15.4的ZigBee协议栈。 ZigBee短距离低速无线个域网(Low Rate-Wireless Personal Area Network,LR-WPAN)不仅具有低成本、低功耗、低速率、低复杂度的特点;而且具有可靠性高,组网简单、灵活的优势。本文将介绍ZigBee协议栈并提出网络层的具体实现方案。
2. ZigBee协议栈体系结构
本节将在介绍IEEE 802.15.4标准和ZigBee协议的基础上,重点分析ZigBee协议栈的网络层关键技术及其工作机制。
2.1 IEEE 802.15.4标准
IEEE 802.15.4标准[1]于2003年5月制定完成,它满足国际标准化组织 (ISO)开放系统互连(OSI)参考模型,主要包括物理层、数据链路层。IEEE 802.15.4协议与其他无线网络相比,突出的优点是:组网能力强,适应面广,可靠性高,节能性好。
2.2 ZigBee协议栈
完整的Zigbee协议栈由物理层、介质访问控制层、网络层、安全层和高层应用规范组成。
图1 ZigBee协议栈
如图1所示,ZigBee协议栈的网络层、安全层和应用程序接口等由ZigBee联盟制定。其中安全层(Security)主要实现密钥管理、存取等功能。应用程序接口负责向用户提供简单的应用软件接口(API),包括应用子层支持(ApplicaTIon Sub-layger Support,APS)、ZigBee设备对象(ZigBee Device Object,ZDO)等,实现应用层对设备的管理。
2.3 网络层关键技术
ZigBee协议栈的核心部分在网络层。网络层主要实现节点加入或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能,支持Cluster-Tree,AODVjr,Cluster-Tree+AODVjr等多种路由算法,支持星形(Star)、树形(Cluster-Tree)、网格(Mesh)等多种拓扑结构。
Cluster-Tree(簇-树)是一种由网络协调器(Coordinator)展开生成树状网络的拓扑结构,适合于节点静止或者移动较少的场合,属于静态路由,不需要存储路由表。AODVjr算法是针对AODV[5,6](Ad hoc按需距离矢量路由协议)算法的改进,考虑到节能、应用方便性等因素,简化了AODV的一些特点,但是仍然保持AODV的原始功能。表1是两种算法的优缺点比较。
表1 Cluster-Tree和AODVjr的优缺点比较
Cluster-Tree+AODVjr路由算法汇聚了Cluster-Tree和AODVjr的优点。网络中的每个节点被分成四种类型:Coordinator、RN+、RN-、RFD(RN:RouTIng Node,路由节点;RFD:Reduced FuncTIon Device)。其中Coordinator的路由算法跟RN+相同,Coordinator、RN+和RN-都是全功能节点(FFD: Full FuncTIon Device),能给其他节点充当路由节点;RFD只能充当Cluster-Tree的叶子(Leaf Node)。如果待发送数据的目标节点是自己的邻居,直接通信即可;反之,如果不是自己的邻居时,三种类型的节点处理数据包各不相同:RN+可以启动AODVjr,主动查找到目标节点的最佳路由,且它可以扮演路由代理(Routing Agent)的角色,帮助其他节点查找路由;RN-只能使用Cluster-Tree算法,它可以通过计算,判断该交给数据包请自己的父节点还是某个子节点转发;而RFD只能把数据交给父节点,请其转发。
图2为Cluster-Tree+AODVjr算法时网络层数据传输示意图。节点E发送数据包给节点D,数字代表各种包发送的时间先后次序。从图中可以看出,节点E的类型是RFD,它只能将数据DATA传送给其父节点C。C的类型是RN+,所以它先把数据放入缓存后,再通过组播AODVjr路由请求包RREQ查找到节点D的路由,节点D再通过单播沿最短的路径D-B-C给节点C回复AODVjr路由应答包RREP。节点C找到路由后,把缓存数据沿C-B-D发送给节点D,节点D再沿D-B-C-E发送确认包ACK给节点E,节点E收到确认包后,整个通信过程结束。
图2 网络层数据传输示意图
3.网络层实现
作者已在符合IEEE 802.15.4的硬件平台上实现ZigBee协议栈,成功研发出ZigBee开发包(ZigBee Development Kit,ZDK),验证了其可行性。同时,根据一些特定的应用将算法改进,取得良好的运用效果。本节将重点介绍ZigBee网络层的实现。
3.1无线模块的设计
根据不同类型节点功能不同的特点,作者在不同的硬件平台设计模块。设计制作的ZigBee系列模块完全满足IEEE 802.15.4和ZigBee协议的规范要求,符合ISM/SRD规范,通过美国FCC认证。模块集无线收发器、微处理器、存储器和用户API等软硬件于一体,能实现1.0版ZigBee协议栈的功能。Coordinator可以连接使用ARM处理器开发的嵌入式系统,功能较多的路由节点(RN+,RN-)由高档单片机充当,功能较少的叶子节点(RFD)使用普通的单片机。模块还可以根据实际需要,工作在不同的睡眠模式和节能方式。
图3是模块的硬件设计框图,射频芯片采用Chipcon公司生产的符合IEEE 802.15.4标准的模块CC2420;控制射频芯片的微处理器,可以根据需要选择Atmel公司的AVR系列单片机或者Silicon Labs公司的8051内核单片机。单片机与射频芯片之间通过SPI进行通信,连接速率是6Mbps。单片机与外部设备之间通过串口进行通信,连接速率是38.4kbps。单片机自带若干ADC或者温度传感器,可以实现简单的模数转换或者温度监控。为了方便代码移植到不同的硬件平台,模块固件采用标准C语言编写代码实现。
图3 ZigBee模块框图
3.2网络的建立
ZigBee网络最初是由协调器发动并且建立。协调器首先进行信道扫描(Scan),采用一个其他网络没有使用的空闲信道,同时规定Cluster-Tree的拓扑参数,如最大的儿子数(Cm)、最大层数(Lm)、路由算法、路由表生存期等。
图4 节点加入及脱离网络握手示意图
图4是设计的节点加入及脱离网络握手示意图。协调器启动后,其他普通节点加入网络时,只要将自己的信道设置成与现有的协调器使用的信道相同,并提供正确的认证信息,即可请求加入(Join)网络。一个节点加入网络后,可以从其父节点得到自己的短MAC地址,ZigBee网络地址以及协调器规定的拓扑参数。同理,一个节点要离开(Leave)网络,只须向其父节点提出请求即可。一个节点若成功地接收一个儿子,或者其儿子成功脱离网络,都必须向协调器汇报。因此,协调器可以即时掌握网络的所有节点信息,维护网络信息库(PIB,PAN Information Base)。