基于 ZigBee 协议栈的 Mesh 网络分析
摘要:ZigBee技术是一种短距离、低功耗的无线通信技术,具有高可靠的无线数传网络,在整个网络范围内每一个ZigBee网络模块之间可以相互通信,ZigBee技术拥有大规模的组网能力,采用自组网、路由发现、路由修复、节点加入等技术,并且支持单播、广播和多播特性,能够给丰富的应用带来有利的支撑。该产品已广泛应用于智能电网、智能交通、智能家居、数字化医疗等领域。
关键词:ZigBee 技术;自组网;路由发现和修复中图分类号:TN929.5 文献标识码:A 文章编号:1673-1131(2015)10-0198-02.
0 引言
一个 ZigBee 网络是一个多跳网络,这就意味着两个设备间交换数据必须依靠网络内的其他中间设备。根据网络正常运行的需要,每个设备必须执行特定的功能,配置特定的参数和设置特定的值 [1]。一个设备在网络中执行特定的角色被称为设备类型,在一个ZigBee网络中有三种设备类型,分别是协调器、路由器、终端节点,一个 ZigBee 网络包含一个协调器节点、多个路由器节点和多个终端节点。
协调器负责开启一个 ZigBee 网络,它是网络中的第一个设备节点,协调器节点自动控制无线电频率环境建立网络,自动选择一个通道和一个网络标识符开始网络 [2]。路由器节点允许其他设备加入网络,多跳路由帮助它的子节点进行通信,通常情况下路由器节点在整个时间内是一直存在的,必须处于持续供电状态。一个终端节点在网络中没有保持网络状态的职责,所以它可以进行休眠和唤醒,可以作为一个靠电池供电的节点。
1 Mesh 网络的拓扑类型
网状网络的拓扑类型如下图图 1 所示。
一个典型的 Mesh 网络如图一所示,其中绿色的节点为协调器节点、蓝色的节点为路由器节点、黄色的节点为终端节点。
图 1 网状网络的拓扑结构
2 路由协议
ZigBee是运用一个无线自组网按需平面距离矢量路由协议(Ad hoc On-Demand Distance Vector Routing,AODV)[3],该协议在无线传感网络中的简单应用,促使网络能够处理移动节点、连接失败和数据包丢失的情况。
临近的路由节点是处在无线电射程范围内的路由器节点,每一个路由节点通过建立路由表保持与它邻居节点的联系,当路由器从它的临近节点接到信息的时候,这个路由表可以被更新。
当一个路由器从它的应用层或者其他的设备收到一个单播的数据包,网络层指示它按照下边的流程进行传输。假如这个数据包的目的地是它的的路由器邻居节点(包括它的子设备节点),这个数据包将会直接传送到它的目的设备,否则这个路由器将会检查它的路由表与数据包的目的地址入口相一致的路由器地址。如果有这样一个存在的路由表入口地址,这个数据包将会被传送至下一跳路由器。如果单次发送请求失败,这个网络层将会重复地传送这个数据包,并且等待回值,这个传送的最大次数(NWK_MAX_DATA_RETRIES)可以在“f8wconfig.cfg”中进行配置。如果这个有效的入口地址在路由表内不存在或者在尝试重发最大次数之后依然失败,路由器开始发起路由发现,并且这个数据包将会被缓存直到完成整个处理过程。
通常在协议栈里,路由器都执行着最优化的路由存储表。一般情况下,每一个目标设备都需要一个路由入口,通过结合一个父亲节点的所有设备的终端入口,这些父亲节点设备的入口地址都是最优化的存储并且没有丢失任何功能。
3 路由发现和选择
路由发现是通过网络设备间的配合来发现和建立路由网络,路由发现可以由一些路由设备开始,通常用于执行一些特定的目的设备。路由发现机制在资源和目的设备之间进行搜寻所有可能的路由节点,并且尝试选择可能达到最优效果的路由设备。
路由选择通过计算最少的能量消耗来进行路由器的选择,一个终端节点不断地记录和它邻居节点之间的链接消耗,这个链接消耗是一个判断接收到信号强度的典型值,通过合计一个路由节点的所有链接消耗,整个路由器的路由消耗就被推导出来了,路由算法试图选择消耗最少的路由节点[4]。
路由器通过请求、应答数据包被发现,一个源设备通过向它的邻居节点广播一个路由器请求数据包来请求一个路由节点作为目的地址,当一个路由节点收到这个请求数据包,它就开始广播这个请求数据包。但是在广播这个数据包之前,它首先更新最少的链接消耗,制作路由发现入口表格。这个请求数据包可能通过不同的途径,重复到达目的地址,每一个请求数据包将会包含沿着它所走过的所有路径的路由消耗,目的设备选择最优的请求数据包并且向这个源设备发送应答数据包。
应答数据包通过单播的方式沿着它原路径相反的方向进行回传,当这个数据包被回传至源设备节点,中间的节点更新它们的路由表,指出路由器到目的地址的路径[5]。在每一个中间节点的路由发现表被用来确定数据包返回的下一跳路由表入口地址。
一旦一个路由建立完成,数据包可以正常发送,当一个节点与它的下一跳设备失去链接,这个节点就将它的无效路由器信息对所有的节点进行广播,在能够接收到信息的邻居路由表上进行链接失效的更新,一旦接收到一个请求、返回、错误数据包,节点就更新它的路由表。
4 路由维护
网状网络提供路由维护与自愈的功能,中间节点沿着一个路径记录传输失败的信息,如果一个链接确定了失效,它上游的节点开始对用了这个链接的所有的路由节点进行修复,这个开始重新发现的操作发生在下一次一个数据包到达这个路由器的时候[6]。如果这个路由重新发现不能正常发起,或者由于一些其它原因发起失败了,一个路由错误数据包发送回源节点设备,然后源节点设备开始发起一个新的路由发现。两种方法路由器都可以自动地重新建立链接。
路由器选择路由表为已确定的路由建立入口地址,如果在一段时间内一个路由器没有数据通过其进行发送,就会标记为失效的路由器,它不会被取消除非是网络空间的需要。这个路由器自动失效时间可以在“f8wconfig.cfg”中进行配置,根据ROUTE_EXPIRY_TIME 的值(以秒为单位)来设置失效时间。
5 存储链表
路由器的功能要求路由器存储一些路由表。每一个ZigBee路由器节点包括协调器节点都包含一个路由表,数据包可以通过这个路由表进行正确的路由选择,每一个路由表入口包括目的地址、下一跳的节点、链接状态相关的信息。所有的数据包按照选择的路径经过多级跳转最终发送到目的地址。为了回收路由表空间入口地址,那些没用的路由表地址可以被终止。
路由设备包含的路由发现,存储一个路由发现表,这个表格用来保存正在进行路由发现的路由器临时信息,这些入口条目持续在路由发现操作的整段时间内,一旦一个入口条目失效它就可以被用于其它路由器执行路由操作,这个可同时在网络中执行最大个数的路由发现的值MAX_RREQ_ENTRIES 可以在“f8wconfig.cfg”中进行改变。
6 离线路由网络清除
假如一个路由器脱离网络一段时间,它的子节点就会尝试加入其他的路由网络,当这个路由器重新加入网络,这个子节点将会出现在它的子链表中,就会阻止他们选择适当的路由通信。为了避免这种情况的发生,路由器易于打开和关闭网络,zgRouterOffAssocCleanup 配置成 TRUE 是被推荐的设置。当这个状态时,接收到的通信数据会被其他的路由节点转发,弃用的终端节点入口将会从该路由器的子链表中移除。
参考文献:
[1] 高蔚兰.ZigBee:新一代无线网络的综述[J].硅谷,2010 (14):21-22.DOI:10.3969.
[2] 王芳.基于 MESH 结构的 ZigBee 网络可靠路由算法[D].山东大学,2009.
[3] 吕志安.ZigBee 网络与应用开发[M].北京:北京航空航天出版社,2008.
[4] 班艳丽. 基于能量有效的 ZigBee 网络路由算法研究 [D].山东大学,2009.
[5] 全武,宋瀚涛,江宇红,等.Ad Hoc 无线网络及路由选择协议[J].计算机应用,2002,22(6):26-28,31.
[6] 封瑜,葛万成.基于 ZigBee 技术的无线传感器网络构建与应用[J].无线电技术与信息,2006(9):56~60.
作者简介:王长荀(1988-),男,河南滑县人,硕士,研究方向为物联网应用技术。