您可以添加到网摘 让更多人关注此文章:
摘要:对构建低速无线个域网的关键技术——ZigBee协议进行深入研究,重点讨论其网络层所支持的拓扑结构及采用的路由算法。ADOVjr是AODV的简化算法,ZigBee协议网络层使用该路由算法架设Ad hoc网络,支持随意的拓扑架构。在深入研究AODVjr的基础上,提出一种将因特网“捎带确认”技术应用于ZigBee协议AODVjr路由算法的方案,并使用该方案架设无线传感器网络。实验证明该方案能降低算法实现的复杂度,减少通信量,节约电池能量,有效提高ZigBee网络的总体性能,具有一定的实用价值。 DSP2812 关键字: 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确认信息。
DSP2812
图1 AODVjr算法查找路由及通信方式
在ZigBee协议里,AODVjr的RREQ包和RREP包作为网络层命令传送,成为单独的网络负荷,如图2所示。其中命令标识值等于0x01时是RREQ包,等于0x02时是RREP包;单字节的命令选项只使用一个比特,用于区分该路由包是单独进行路由查找还是进行路由修复(Route Repair)[1]。
(a)路由请求包
DSP2812
(b)路由应答包

(c)命令选项
图2 ZigBee网络层的命令包
[1] [2] [3] 下一页
|