利用捎带技术提高ZigBee网络性能的方法
扫描二维码
随时随地手机看文章
关键字: ZigBee协议;捎带;AODVjr
1 引言
IEEE 802.11、蓝牙、UWB等协议推出以来,在短距离的无线监测、控制、数据传输领域得到广泛应用,但它们仍然存在功耗大、组网能力差等弱点。以组网能力强著称的ZigBee协议能弥补上述协议的不足,特别适合于组建短距离低速无线个域网、无线传感器网络等。
ZigBee协议由ZigBee联盟于2004年12月中旬正是推出,其介质访问控制子层(MAC)基于IEEE 802.15.4标准,网络层采用Cluster-Tree+AODVjr路由算法,支持星形(Star)、树状(Cluster-Tree)、网格(Mesh)等多种拓扑结构[1],算法可在简单的单片机平台上实现[2]。其中,单独采用AODVjr(AODV Junior,简化的AODV)路由算法的Mesh网络最为简单,应用较广泛。AODVjr算法是AODV(Ad hoc On Demand Distance Vector, Ad hoc按需距离矢量路由协议)算法的简化,它跟AODV一样,与目标节点通信时,采用先问路由,再发送数据或命令的办法[3,4]。本文提出采用捎带技术的AODVjr算法,将要发送的数据捎带在AODVjr的路由请求和路由应答包中,大大提高ZigBee网络的通信效率。DSP2812
2 ZigBee的AODVjr协议
ZigBee协议网络层AODVjr算法是需求驱动型的,由源节点选择路由,它是针对AODV算法的简化改进。考虑到节能、成本、应用方便性等因素,AODVjr简化AODV的一些特点,但是仍然保持AODV的主要功能。
首先,在AODVjr路由算法中,没有目标节点序列号,只有目标节点才能发送路由应答(Route Reply,RREP)包,这样可以避免循环问题和无效RREP包出现,提高通信效率。其次,AODVjr删除路由错误(Route Error,RERR)包及前驱列表(Precursor List)。另外,为了避免广播风暴,AODV中周期性发送的Hello包也被删除。在ZigBee的集成路由算法中,AODVjr中的许多优点使得路由协议简单化且实现AODV的基本路由功能[5,6]。
图1(a)和(b)是AODVjr算法寻找路由的方式。当节点A要发送信息给节点D时,如果发现自己没有到节点D的路由,便通过组播(Multi-Broadcast)路由请求(Route Request,RREQ)包,请求其邻居帮忙查找到节点D的路径。每个接收到RREQ包的节点,都维护一条到节点A的路由信息,同时帮助节点A广播查找节点D。通过这种洪泛(Flooding)方式,RREQ包会被广播转发至节点D。节点D接收到RREQ包后,根据RREQ包的路由代价(Cost)决定是否更新自己的路由表,同时通过路由代价最小的路径给节点A回复RREP包。节点A查找目标节点通常是通过组播进行的,而节点D给节点A回复RREP包则通过单播(Unit-Broadcast)进行的。节点A接收到节点D的RREP包后,根据Cost最小原则决定与节点D通信所走的最佳路径。图1中,节点A查找到节点D的最短路径:A->B->C->D,然后把数据发送给节点D,节点D再通过D->C->B->A给节点A确认信息。
图1 AODVjr算法查找路由及通信方式
在ZigBee协议里,AODVjr的RREQ包和RREP包作为网络层命令传送,成为单独的网络负荷,如图2所示。其中命令标识值等于0x01时是RREQ包,等于0x02时是RREP包;单字节的命令选项只使用一个比特,用于区分该路由包是单独进行路由查找还是进行路由修复(Route Repair)[1]。
(a)路由请求包
(b)路由应答包
(c)命令选项
图2 ZigBee网络层的命令包
3 捎带技术在AODVjr的应用
ZigBee网络里的AODVjr属于后应式的按需Ad hoc网络,不周期性地更新自己的路由信息,只有在需要通信时,才发起路由查找过程。在ZigBee网络里,节点会移动或者休眠,通信时几乎每次都要重新查找路由,而每次传输的数据量又比较少,绝大多数情况下只要传送一次即可完成,如获取传感器的值。为了达到节能且降低通信复杂度的目的,可将互联网中常用的“捎带确认”技术应用于ZigBee网络。
所谓“捎带确认”,是指为了提高网络的通信效率,目标节点接收到源节点的数据后,将确认(ACK)信息附加在目标节点发送给源节点的数据包中,由这些数据包捎带给源节点。DSP2812
采用捎带技术后,如图3(a)所示,源节点可以把要发送给目标节点的数据或命令放置在RREQ包后面,成为网络负荷的一部分,由RREQ包传送给目标节点。目标节点接收到RREQ包后,在给源节点回应RREP包之前,处理源节点发送的数据或者命令,将要发送的ACK或者数据由RREP包捎带给源节点,如图3(b)所示。
(a)捎带数据或命令的路由请求包
(b)捎带ACK或数据的路由应答包
(c)改进后的命令选项
图3 采用捎带技术的ZigBee网络层命令包
如图3(c)所示:引进捎带功能后,要修改AODVjr里的命令选项,将保留的7个比特用于表示捎带数据的长度,为0时表示此路由包没有捎带任何数据,是普通的AODVjr路由包。
没有采用捎带技术时,如图1所示,源节点和目标节点之间传输数据需要2个来回;改进后只需要图1(a)、(b)所示的一个来回。由此可见,将数据捎带在路由包中,对于只需通信一次数据就可以传输完毕的情况,能够节省一个来回的时间。这样,网络在通信延迟、节能、效率上都有优化,同时降低通信复杂度。
4 算法的实现
4.1 协议栈
采用捎带技术的ZigBee协议栈有3层,其体系结构如图4所示。协议栈参考ZigBee网络的结构,物理层和介质访问控制层采用IEEE 802.15.4协议,网络层仅使用捎带技术的AODVjr路由算法,通过应用支持子层与应用层建立联系。该协议栈简单、实用、高效。
图4 采用捎带技术的ZigBee协议栈
4.2 路由设计与实现
(a)目标节点接收到RREQ包
(b)源节点接收到RREP包
图5 目标节点和源节点处理RREQ和RREP流程
采用捎带技术后,对算法复杂度的影响不大。只要稍微改动源节点和目标节点发送以及接收RREQ包和RREP包的程序即可,中间节点仍按普通的AODVjr包处理数据。
图5是目标节点和源节点处理RREQ包和RREP包的程序流程,从中可以看出,捎带技术并没有增加算法实现的复杂度。作者在美国赫立讯公司的IP-Link122x系列模块中使用Keil C编程,实现使用捎带技术的ZigBee网络。该模块通过美国FCC认证,经过ZigBee联盟指定的德国莱茵TUV ZigBee实验室一致性测试,是符合IEEE 802.15.4标准和ZigBee协议的模块。本文算法运行在模块自带的嵌入式芯片——Silicon Laboratories公司的8051内核MCU上,采用Chipcon AS公司的射频芯片CC2420收发数据。
5 实验结果
研发过程中,可以使用Chipcon AS公司的IEEE 802.15.4包监听器(Packet Sniffer)分析空气中传送的数据包,对不同节点数目的Ad hoc进行测试,可取得良好的结果。
实验中,采用Mesh拓扑,50个节点组成的ZigBee网络随意分布在三层楼中,采用对等连接方式,仅使用AODVjr路由算法。两个节点通信的平均传输延迟及成功率,采用捎带技术前后质量对比如表1所示。从表1可知,传输延迟时间可以减少很多,且成功率有一定的提高。证明本文提出的网络结构及软硬件设计的可行性。
表1 采用捎带技术前后的通信质量对比
节点间跳数 |
延迟/ms (使用前) |
延迟/ms (使用后) |
成功率/% (使用前) |
成功率/% (使用后) |
2 |
132 |
82 |
99.9 |
99.9 |
4 |
221 |
155 |
99.2 |
99.8 |
6 |
490 |
300 |
98.7 |
99.3 |
8 |
623 |
389 |
96.3 |
99.0 |
10 |
870 |
533 |
95.9 |
98.2 |
12 |
1108 |
612 |
95.2 |
98.0 |
14 |
1302 |
703 |
94.7 |
97.7 |
16 |
1536 |
834 |
94.3 |
97.3 |
18 |
1787 |
965 |
93.3 |
96.6 |
20 |
2110 |
1164 |
92.8 |
96.1 |
6 结论
本文提出采用捎带技术的AODVjr算法,同时给出简化的ZigBee协议体系结构,并在硬件平台上实现该方案。实践证明,采用捎带技术能降低算法实现的复杂度,减少通信量,节约电池能量,有效提高ZigBee网络的总体性能。本方法还可以在其他使用AODV算法的网络中推广,具有一定的实用价值。DSP2812开发板
参考文献:
[1] Zigbee Alliance. ZigBee Specification (Version 1.1)[S]. 2006.
[2] 张成武,谭斌.单片机Zigbee技术在远程抄表系统中的应用[J].微计算机信息,DSP2812开发板 2006:22(32):96-98.
[3] RFC 3561:Ad hoc On-Demand Distance Vector (AODV) Routing[S].2003.http://www.51kaifa.com/shop/read.php?ID=4732
[4]Mobility Management and Networking (MOMENT) Laboratory. Ad hoc On-Demand Distance Vector Routing[EB/OL].http://moment.cs.ucsb.edu/AODV/aodv.html, 2007-4-2.
[5]Ian D. Chakeres, Luke Klein-Verndt. AODVjr,AODV Simplified[J]. Mobile Computing and Communication Review,2002,6(3):100-101.http://www.51kaifa.com/shop/read.php?ID=4732
[6]Qiu F., Wang J-M., Leng J. "Design and Implementation of a Wireless Personal Area Network Based on AODVjr Routing" in Wireless Mobile&Multimedia Networks (ICWMMN) Proceedings[C].Beijing:The Institution of Engineering and Technology,London(IET),2006:424-427.