新闻  |   论坛  |   博客  |   在线研讨会
利用捎带技术提高ZigBee网络性能的方法
lulu888 | 2009-06-24 14:32:17    阅读:976   发布文章

  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网络的通信效率。

  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)信息附加在目标节点发送给源节点的数据包中,由这些数据包捎带给源节点。

  采用捎带技术后,如图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 采用捎带技术前后的通信质量对比

  6 结论

  本文提出采用捎带技术的AODVjr算法,同时给出简化的ZigBee协议体系结构,并在硬件平台上实现该方案。实践证明,采用捎带技术能降低算法实现的复杂度,减少通信量,节约电池能量,有效提高ZigBee网络的总体性能。本方法还可以在其他使用AODV算法的网络中推广,具有一定的实用价值。

来源:EDN CHINA

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客