基于ZigBee网络的智能停车场管理系统
1 ZigBee
《基于ZigBee规范构建大规模无线传感器网络》,通信学报,2008年 29卷 11期
2 ZigBee路由
《ZigBee无线传感器网络的路由机制》2009.3 数据通信
《ZigBee网络的路由协议研究》2008年1O月 合肥工业大学学报
2.1 ZigBee数据结构
2.1.1 节点数据
路由表:ZigBee协调点和ZigBee路由节点都保存有一张路由表用来转发数据分组,为网络中的其它节点保存一个路由表条目(表1所示)。
路由发现表:ZigBee协调点和ZigBee路由节点除了保存一张路由表外还保存了一张路由发现表,路由发现表条目用来储存路由发现过程中的一些临时路由信息(表2所示)。
邻居节点列表:ZigBee网络中的每个节点都保存一张邻居节点列表,用来存储此节点传输范围内其它节点的信息(表3所示)。
2.1.2 节点交互的分组
ZigBee网络层的控制分组包括路由请求RREQ(Route Request)分组、路由应答RREP(Route Reply)分组和路由出错RERR(Route Error)。
RREQ分组:ZigBee网络中具有路由功能的节点可以向周围邻节点广播一个RREQ~ H,目的是为了找到希望到达的目的节点的有效路径,格式如表4所示。
第 1 页 共 107页
RREP分组:RREQ分组到达的目的节点收到RREQ后~RREQ分组的发起节点回复一个RREP分组,格式见表5所示。
RERR分组:当节点转发数据分组失败时将产生一个RERR分组,通知此数据分组的源节点分组转发失败,格式如表6所示。
2.2 ZigBee路由协议
为了达到低成本、低功耗、高可靠性的设计目标,ZigBee网络中采用了Cluster—Tree与按需距离矢量路由AODV (Ad hoc On-Demand Distance Vector Routing)相结合的路由算法,但ZigBee中所使用的AODV与自组织网络中的经典的AODV协议并不完全相同,准确地说是一种简化版本的AODV,即AODVjr(AODV Junior)。
在ZigBee网络中,节点可以按照父子关系(当网络中的节点允许一个新节点通过它加入网络时,它们之间就形成了父子关系)使用Cluster—Tree算法选择路径,即当一个节点接收到分组后发现该分组不是给自己的,则只能转发给它的父节点或子节点。显然这并不一定是最优的路径,为了提高路由效率,ZigBee网络中也让具有路由功能的节点使用AODVjr发现路由,即具有路由功能的节点可以不按照父子关系而直接发送信息到其通信范围内的其它具有路由功能的节点,而不具有路由功能的节点仍然使用Cluster—Tree路由发送数据分组和控制分组。 2.2.1 Cluster-Tree
在Cluster—Tree算法中,节点根据分组目的节点的网络地址计算分组的下一跳。对于地址为A、深度为d的ZigBee路由节点,如果满足下面的不等式,则地址为D的目的节点是它的一个后代:
。
如果确定分组的目的节点是接收节点的一个后代,节点就将分组发送给它的一个子节点,此时如果满足:
,则说明目的节点是它的一个终端子节点,这时
第 2 页 共 107 页
下一跳节点地址,v为:
如果目的节点不是接收节点的一个后代,则将分组发送给它的父节点。
簇树路由机制包括树型地址的分配和树型寻址方式,它属于静态路由,不需要存储路由表。网络协调器确定整个网络节点的数目,节点的地址由父节点采用分布式地址分配方案进行分配,每个节点都拥有一个网络深度d,用以指示在其父子链路上,将数据传输到作为根节点的网络协调器的最小跳数。当网络协调器建立一个新的网络时,它给自己分配一个网络地址值A(0)=0x0000,并设定自己的网络深度d(0)=0。如果节点i想要加入网络,并与节点k关联,那么k将作为i的父节点,之后k根据自身的网络地址A(k)和网络深度d(k), 给i分配网络地址A(i)和网络深度d(i)=d(k)+1。
图2是ZigBee 网络的簇树结构,其中参数nwkMaxChildren(Cm)代表与路由器或协调器相关联的最大子节点数,参数nwkMaxRouters(Rm)指子节点中能成为路由器的最大节点数,参数nwkMaxDepth(Lm)是网络的最大深度。对于同样的网络,不同的节点拥有的Cm、 Rm和Lm通常都是常量。
在分配网络地址时,要分以下两种情况:如果网络中新加入的节点n是一个精简功能设备,即该设备不具备路由能力,它将搜索网络协调器并与其建立关联,之后作为网络协调器的第n个子节点。该节点的父节点P根据其网络深度,按照以下等式给它分配网络地址:
反之,如果新加入的节点是具有路由功能的全功能设备,则父节点P按以下等式为其分配网络地址:
上述n必须满足:
。另外,函数
的定义如下:
第 3 页 共 107 页
如果
的值为0,则表明此节点为叶节点;如果
的值大于0,则表明该
节点可作为一个父节点,这个父节点可以接收其它子节点并根据它们是否具有路由能力按上述方法来分配地址。
假设在建立网络和分配地址之后,一个Router节点要传输数据包给网络地址为D的目标节点,并设该Router节点的网络地址和网络深度分别为A和d。它首先根据逻辑表达式:
来判断目标节点是不是它的子节点,是则下--一跳节点的地址
否则,下一跳节点是其父节点。
2.2.2 AODVjr
AODV是Ad hoc网络中一种按需距离矢量算法,它并不维持一个路由表,而是根据需要创建路由以减少广播数。当有数据包需要传送时,为了寻找路径,源节点广播路由请求分组,邻近节点收到广播后再向其它邻近点广播(但丢弃收到的重复路由请求分组),直到到达目的地或者到达已有最新路由的中间节点。路由请求分组采用序列号编码以避免环路,并保证中间节点只回应最新的信息。
当节点转发一个路由请求分组到其邻近节点时,本地节点只对第一次出现的请求分组进行复制,以便为后续的路由回应分组构造反向路径,但它只适合对称链路的网络。
若源节点移动到通讯范围外,则路由表必须重新初始化;若中间节点移动超出通讯范围,其邻近点会发现链路失效,并将链路失效的信息通告给其上行邻近点,直到源节点收到该信息,然后根据需要重新构造路由。
然而,ZigBee中的AODV算法与Ad hoc网络中的AODV算法存在少许的差异。它是基于路径损耗的,考虑了节能、应用方便性等因素,简化了AODV的一些特点,但仍然保持AODV的原始功能。为了简便,我们用AODV—jr来代表ZigBee使用的AODV算法。
AODVjr作为简化版的AODV,具有AODV的主要功能,但考虑到降低成本、节能、使用的方便性等因素,简化了AODV的一些功能。
为了减少控制开销和简化路由发现的过程,AODVjr中并没有使用目的节点序列号。AODV协议使用目的节点序列号确保了所有路径在任何时间无环路,AODVjr规定只有分组的目的节点可以回复RREP,即使中间节点存有通往目的节点的路由也不能回复RREP。
AODVjr不存在AODV中的“先驱节点列表(precusor list)”,从而简化了路由表结构。在AODV中节点如果检测到链路中断则通过上游节点转发RERR分组,通知所有受到影响的源节点。在AODVjr中,RERR仅转发给传输失败的数据分组的源节点,因而不需要先驱节点列表。
第 4 页 共 107 页
在数据传输中如果发生链路中断,AODVjr采用本地修复。在路由修复过程中,同样由于没有使用目的节点序列号而仅允许目的节点回复RREP。如果本地修复失败,则发送RERR至数据分组的源节点通知它由于链路中断而引起目的节点不可达。RERR的格式被简化至仅包含一个不可达的目的节点,而AODV的RERR中可包含多个不可达的目的节点。
AODV中节点周期性地发送HELLO分组,为其它节点提供连通性信息;而AOD~r中节点不发送HELLO分组,仅根据收到的分组或MAC层提供的信息更新邻居节点列表,从而节省了一部分控制开销。
2.2.3 ZigBee路由
在ZigBee路由中,可以将节点分为2类:RN+和RN一。其中,RN+是指具有足够的存储空间和能力执行AODVjr路由协议的节点;RN一是指其存储空间受限,不具有执行AODVjr路由协议的能力的节点,RN一收到一个分组后只能用Cluster—Tree算法处理。
Cluster—Tree算法中,节点收到分组后可以立即将分组传输给下一跳节点,不存在路由发现过程,这样节点就不需要维护路由表,减少了路由协议的控制开销和节点能量消耗,并降低了对节点存储能力的要求及节点的成本。但由于Clustel—Tree建立的路由不一定是最优的,会造成分组传输时延较高,而且较小深度的节点,即靠近ZigBee协调点的节点,往往业务量较大,相对较大深度的节点业务量又比较小,容易造成网络中通信流量分配不均衡。因而,ZigBee允许RN+节点使用AODVjr去发现一条最优路径,RN+节点收到分组后,可以发起AODVjr中的路由发现过程,找到一条通往目的节点的最优路径。
ZigBee中的路由度量指标需要考虑IEEE 802.15.4物理层提供的LQI(Link Qualitv Indicator)值,LQI的值越高表示链路质量越好。选择路由时考虑LQI指标的方法有很多,综合考虑路由的各项性能指标,可以按照以下规则选择路径:选择一条通往目的节点的最短路径,当存在2条相同跳数的最短路径时,节点选择LQI值较高的那条路径。路由建立过程结束后,节点沿着刚刚建立的路由发送分组。如果某条链路发生中断,RN+节点将发起本地修复过程修复路由。由于AODVjr的使用,降低了分组传输时延,提高了分组递交率。
2.3 ZigBee路由的建立与维护
ZigBee路由的建立和维护过程均沿用AODV协议的思想。AODV是一种按需路由协议,它根据业务需求建立和维护路由,是DSDV(Destination—SequencedDistance—Vector)协议和DSR (Dynamic Source Rout—ing)协议的结合。它使用DSDV协议中的“目的节点序列号”防止缓存的路由信息过期以及环路的产生,路由建立是基于DSR协议中所采用的方法,不同点在于AODV协议是逐跳路由而不是源路由。ZigBee网络不同于传统的Ad Hoc网络,单从研究路由协议的角度来说,ZigBee网络中存在RN+和RN一2种类型的节点,其中RN+节点是具有足够的存储空间和能力执行AODVjr路由协议的节点,而RN一节点的存储空间和能力相对有限,它不能够执行AODVjr路由协议,但可以使用Cluster~Tree算法帮助转发控制分组。
2.3.1 路由建立过程
ZigBee路由协议中,RN一节点需要发送分组到网络中的某个节点时使用Cluster—Tree路由发送分组。
RN+节点需要发送分组到网络中的某个节点而又没有通往目的节点的路由表条目时,会发起路由建立过程:
(1)节点创建并向周围节点广播一个RREQ分组,如果收到RREQ的是一个RN一节点,则按照Cluster—Tree路由转发此分组;如果收到RREQ的节点是一个RN+,则根据RREQ
第 5 页 共 107 页