利用捎带技术提高 ZigBee 网络性能的方法
技术分类: 消费电子设计 | 2009-02-09
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 最小原则决定与