一种ZigBee网络中孤立节点自主配置的方法

2016-02-27 01:53毛燕琴沈苏彬
计算机技术与发展 2016年11期
关键词:子树树型信标

曹 晓,毛燕琴,沈苏彬

(1.南京邮电大学 物联网学院,江苏 南京 210003;2.南京邮电大学 计算机学院,江苏 南京 210003)

一种ZigBee网络中孤立节点自主配置的方法

曹 晓1,毛燕琴2,沈苏彬2

(1.南京邮电大学 物联网学院,江苏 南京 210003;2.南京邮电大学 计算机学院,江苏 南京 210003)

ZigBee网络设备结构简单,硬件资源能力有限,因此会出现通信距离或节点失效等因素导致网络链路发生故障,从而产生孤立节点和孤立节点蔓延等问题。孤立节点的发生会造成网络异常,甚至造成网络混乱。ZigBee标准协议的孤立节点重新加入网络处理机制比较局限,无法有效使节点恢复网络连接。针对孤立节点的自恢复网络连接问题,提出代理子树转移加入(ASTJ)方法,一方面通过代理子树节点将子树网络作为整体重新请求加入网络,另一方面通过节点转移的方式释放饱和节点的地址空间,有效利用网络地址。该方法能够防止孤立节点蔓延,提高孤立节点的自主配置能力,修复网络故障,加强网络稳定性。仿真实验结果表明,ASTJ能够提高孤立节点加入率,有效修复网络故障,并尽可能维持网络原有的结构形态。

无线传感器网络;ZigBee;自主配置;孤立节点;加入率

0 引 言

传感器网络是将物品接入网络的最基本要素,是物联网的重要环节。由于物品的分布广泛性、移动性,决定了传感器网络以无线形态为主,无线传感器网络(WSN)[1]有多种技术,如Bluetooth、Wi-Fi、移动通信技术(3G/4G)、ZigBee等。ZigBee[2]是基于IEEE802.15.4[3]协议标准开发的一种具有组网能力强、低功耗、低成本等特性的短距离无线组网通信技术。ZigBee协议具备自组网,孤立节点重新加入网络(ReJoin)等相关的自主配置能力,尽可能地减少外部的介入就能够保证系统稳定、可靠地运行。然而,ZigBee网络中会因为网络参数配置或无线链路失效等原因产生孤立节点[4],标准的ZigBee协议对这一问题的解决能力有限,无法保证网络的健壮性。文中针对标准ZigBee协议中孤立节点自主配置方法进行扩展,提出代理子树转移加入(ASTJ)机制,进一步提高孤立节点的自恢复能力,从而提高系统的稳定性。

1 技术分析及相关研究

1.1 ZigBee技术

ZigBee将设备分为三种[5]:协调器(ZC)、路由器(ZR)、终端设备(ZED)。其中协调器负责启动、维护和控制网络,允许路由器和终端设备加入网络。路由器能够加入网络,并允许其他路由器或终端设备加入网络。终端设备只能够加入网络。

ZigBee支持三种网络拓扑:星型、树型、网状型。星型网络拓扑要求所有节点位于与协调器单跳无线通信范围之内,所有节点直接与协调器连接。网状型网络节点可以和其他节点以多跳的形式进行通信,采用AODV的简化路由协议—AODVjr[6]。树型网络拓扑采用分布式地址分配方式(DAAM)[7],协调器构建网络后采用0x0000作为自己的短地址,当路由器和终端设备加入网络后,使用父节点给它分配的16位短地址来通信。

地址计算公式[8]如下:

Cskip(d)=

A(Rn)=Aparent+1+Cskip(d)*(n-1),ZR地址

A(En)=Aparent+Cskip(d)*Rm+n,ZED地址

其中,Aparent是深度为d的父节点地址;Cskip指父节点的路由器子节点的地址间隔;A(Rn)是给第n个路由器子节点的分配地址;A(En)是给第n个终端子节点的分配地址;Lm,Cm,Rm是决定整个网络架构的三个重要参数,Lm为网络的最大深度,Cm为每个父节点拥有子节点的最大个数,Rm为在Cm个子节点中最多包含的路由节点个数。

分布式地址分配机制根据Lm,Cm,Rm的值确定整个网络设备地址[9]。树型路由根据分布式地址分配的特点使路由变得简单,不需要保存路由表信息,节省存储资源,减少路由操作,降低节点功耗,另外树型拓扑具备多跳结构,能够覆盖较大的通信范围,因此多数智能家居应用场景采用ZigBee树型网络拓扑[10]。

1.2 孤立节点问题

在ZigBee网络中孤立节点是指无法与无线射频通信范围内的ZR/ZC节点连接的节点,形成孤立节点的原因主要有以下两种:

(1)ZigBee网络参数限制导致孤立节点发生。

ZigBee网络中,每个节点都有一个64位的MAC地址,当设备获得16位的短地址才说明设备成功加入网络。协调器在构建网络前需要确定参数Lm,Cm,Rm,参数确定后可能会导致有些节点在加入网络时,因邻居节点中没有可用的地址空间,从而无法加入网络,但此时整个网络中还有充足的地址空间,称这一现象为孤立节点问题[4]。

如图1所示,节点ZR-A请求加入网络,在通信范围内的邻居节点中,只能向节点ZR-B发起加入请求,由于节点ZR-B已经拥有子节点ZR-C,ZR-D和ZED,达到了网络参数Cm=3的限制,没有多余地址空间再分配给ZR-A节点,但是此时整个网络中远远没有达到饱和状态,其他节点还有充足的地址空间。此时,ZR-A节点因为网络参数配置的限制成为了孤立节点。

图1 ZigBee树型网络示例

(2)链路、节点损坏导致孤立节点发生。

ZigBee标准对功耗要求比较严格,用普通干电池供电就能够维持节点运行数月的时间,所以ZigBee节点往往采用功耗较低的嵌入式处理器,其计算能力较弱、存储资源有限,这些硬件上的限制可能会导致设备发生不可预期的错误,比如系统崩溃、链路失效、重置等。尽管ZigBee标准提供了简单的自配置和自修复机制,即失去连接的孤立节点启动重新加入进程,但其仍很难维持网络的连接性,使得一些节点成为孤立节点并无法再次和网络构建连接,甚至会造成孤立节点蔓延问题[10],使网络的状态变得更加混乱。

在树型拓扑中,协调器在MAC层周期性向网络广播同步信标(Beacon)消息[11],网络中的节点通过同步信标消息保持同步,如果一个节点长时间未接收到同步信标消息,就可以认为链路失效或父节点失效,把自己标记为孤立节点,并启动重新加入进程,查找新的父节点加入[10]。孤立节点蔓延问题是指在孤立节点启动加入进程时,并不会向子节点发送同步信标消息,一旦孤立节点长时间没有成功再次加入到网络中,那么它的子节点也会因没有接收到同步信标消息而变成孤立节点,那么最坏的情况下,所有孤立节点的子节点都会变成孤立节点。

如图2所示,图中表示ZigBee树型网络通过信标进行同步,节点ZC和节点ZR1间的链路发生故障导致无法传播同步信标消息给子节点,节点ZR1的所有后代节点都将会和网络失去同步,那么整个树型网络变成如图3所示,ZR1节点及其所有后代节点都将变成孤立节点,这一现象称为孤立节点蔓延。

图2 树型网络发生链路故障示意图

图3 孤立节点蔓延示意图

1.3 相关研究工作

针对ZigBee网络孤立节点问题有一些研究提出了相应的解决方案,比如文献[12]提出主动式和被动式方式来防止和解决孤立节点问题,该方法需要不断检测父节点和链路的状况,会给网络增加额外的通信开销。文献[13]提出一种动态选择网络参数的机制,这种方法一方面需要大量的数据交换,增加了不必要的功耗,另一方面会使得设备间的标准不够统一,无法实现兼容性。文献[14]针对由于参数限制导致的孤立节点,提出了通过转移子节点,让一些饱和节点释放一部分地址空间给孤立节点,但是对当多孤立节点同时发起加入请求时,候选父节点如何去选择最优的孤立节点并允许加入的情形欠缺考虑。文献[10]提出了孤立节点蔓延问题,并针对该问题提出动态重构树的结构来快速恢复,通过向子节点发送冻结信息来阻止孤立节点的蔓延。该文献解决了孤立节点蔓延问题,但在节点重新加入网络的过程没有考虑最佳候选父节点的选择,使用标准的重新加入进程无法保证节点能够重新连接,也不能有效地利用地址空间。

文中针对文献[10]提出的孤立节点蔓延问题,在其解决方案基础上,增加最佳候选父节点的选择以及最佳孤立节点选择机制,并借鉴文献[14]的孤立节点转移方案,提出代理子树转移加入算法。图2中ZR1未接收到信标消息的时间超过最大限制时,把自己标记为孤立节点,为了避免孤立节点蔓延,把自己作为子树网络的代理协调器,同步子树网络,代理整棵子树发起重新加入请求,并通过孤立节点转移方案提高加入网络的成功率,充分利用网络地址空间。

2 代理子树转移加入网络算法

针对ZigBee网络中由于链路故障或节点损坏导致包含子树的节点与网络失去连接而形成的孤立节点问题,文中设计了代理子树转移加入网络算法(Agent Subtree Transfer Join,ASTJ)。该类孤立节点包含子节点,所以首先需要考虑孤立节点蔓延问题。首先向子树网络发送代理同步信标消息,使得子树网络中的节点能够保持同步,然后孤立节点向候选父节点发送加入网络请求,候选父节点通过转移子节点的方式给孤立节点提供网络地址。该方法能够增加孤立节点加入网络的成功率,维持网络原有结构,提升网络修复能力。

代理子树转移加入算法流程:

(1)孤立节点成为子树网络的代理协调器并向子节点发送代理同步信标消息,让整个子网络保持同步,避免所有子节点与网络失去同步而造成孤立节点蔓延,并向子树发送高度Lsub和子节点个数Csub统计信息请求。

(2)子树中的节点接收到代理信标消息后,向代理协调器发送高度和子节点个数应答。

(3)代理协调器接收到应答,记录子树高度和子树节点个数。遍历邻居节点列表向候选父节点发送加入请求NLME-JOIN.request{RejoinNetwork},并将子树高度和子树节点个数作为参数发送。

(4)候选父节点接收到孤立节点发起的请求后,根据参数Lsub决定是否满足作为父节点的条件,如果自己的深度+Lsub大于Lm的限制,那么将发送拒绝加入的应答消息;若满足将遍历子节点列表查看是否有地址空间。如果有,生成网络地址并发送允许加入应答消息NLME-JOIN.confirm{Admission};如果没有,查看是否有可转移子节点。可转移子节点指除了当前连接的父节点外还能够接入其他的节点作为父节点的节点,如果有将发送参数为可转移子节点的应答消息NLME-JOIN.confirm{Transferable},其他情况发送拒绝加入应答消息NLME-JOIN.confirm{Refuse}。

(5)孤立节点接收到所有候选父节点的应答消息后,如果有允许加入应答,选择最佳父节点加入网络,执行步骤(12);如果只有参数为可转移子节点的应答消息,则执行步骤(6);如果全部都是拒绝加入应答消息,那么将退化成单一的孤立节点,放弃子树网络,重新发起加入网络请求,执行步骤(11)。

(6)孤立节点选择最佳的能够转移子节点的候选父节点发起转移加入网络请求NLME-JOIN.request{TransferRejoin}。

(7)候选父节点接收到孤立节点发送的请求后,将遍历子节点列表选择合适的子节点,如果发送请求的子树节点数Csub大于Cskip/2,则发送NLME-LEAVE.request{TwoHop},否则发送NLME-LEAVE.request{OneHop}。

(8)可转移子节点接收到转移请求后,如果参数为OneHop则向单跳范围内的候选父节点发送加入请求NLME-JOIN.request{RejoinNetwork};如果参数是TwoHop,那么将向候选父节点发送NLME-JOIN.request{TransferRejoin}请求。根据转移结果向父节点发送应答消息。

(9)候选父节点接收到应答后,如果有子节点转移成功,则向孤立节点发送允许加入应答,如果子节点转移失败,则向孤立节点发送拒绝加入应答。

(10)孤立节点接收到候选父节点的应答后,如果是允许加入则执行步骤(12);如果拒绝加入,那么将向其他的候选父节点发起加入请求重复步骤(6);如果没有其他候选父节点可选择时将退化成单一的孤立节点,放弃子树网络,重新发起加入网络请求,执行步骤(11)。

(11)此时代理子树加入网络失败,那么将退化成单一的孤立节点向候选父节点加入网络请求,此时NLME-JOIN.request的子树高度和子树节点个数参数均为1,执行步骤(3)。

(12)如果代理子树成功加入网络,将向子树网络广播更新节点信息消息,重新分配网络地址;如果代理子树退化成单一孤立节点成功加入网络,则更新自身信息;如果仍然失败,则经过一定时间间隔重新尝试,执行步骤(3)。

在上述执行步骤中,需要解决如下几个问题:

(1)候选父节点如何选择最佳孤立节点:当候选父节点接收到多个孤立节点同时发起加入请求时,将会根据Csub/Cskip来选择把地址优先提供给哪一个孤立节点。其中,Csub指孤立节点代理的子树上的子节点个数,Cskip指候选父节点的单个路由子节点所能容纳子节点的个数。Csub/Cskip越大即指孤立节点代理子树包含的子节点个数占据候选父节点子节点容量的比例越高,优先级越大,能够尽可能接纳更多节点,提高网络加入率。

(2)孤立节点如何选择最佳候选父节点:当孤立节点接收到多个候选父节点的允许加入应答,应当首先根据候选父节点的深度来选择,深度越小优先级越大,其次考虑链路状态。

(3)候选父节点如何选择最佳转移子节点:如果有多个子节点可以被转移,那么优先选择单一的子节点,包含子节点最少的可转移子节点。

(4)可转移子节点在查找其他父节点时,也可以通过转移子节点的方式来寻找,为了避免广播带来的额外通信负荷,规定最大通过两跳来寻找其他父节点,即NLME-LEAVE.request{TwoHop}参数最大为TwoHop。

3 测试与分析

文中设计仿真实验来验证ASTJ算法的性能,主要验证ASTJ算法是否能够提高因链路失效而形成的孤立节点重新加入率,并与标准ZigBee协议处理孤立节点的方法进行对比分析,验证是否能提升网络链路故障恢复能力。ZigBee标准协议中规定,当节点与网络失去同步时发起孤立节点重新加入网络请求(Rejoin),一方面孤立节点不会顾及子树上的节点,另一方面在向候选父节点发起加入请求时,候选父节点仅查看自己是否有空余的地址空间,如果有则允许加入,否则拒绝加入。

实验是在MATLAB仿真平台上[15]实现,将ZigBee节点的属性抽象成数据模型,并为每个节点建立邻居表、子节点列表。实验场地模拟为100m*100m,ZC位于场地中心,其他ZR和ZED随机分布,假设节点并不移动,变化ZR和ZED节点的比率分别进行测试。仿真环境参数配置的具体详情见表1。根据不同的参数生成相应的网络拓扑,对同一网络拓扑设置相同的链路故障,使其产生孤立节点,分别采用标准ZigBee和ASTJ方法来修复网络故障。

表1 仿真参数配置

图4表示固定ZED=50,变化ZR个数,故障发生前和故障修复后孤立节点加入率的结果。其中,节点加入率=接入网络的节点数/总节点个数。网络拓扑由于参数配置限制导致部分节点未能够加入网络而形成孤立节点,网络中随ZR数目的增加,加入率也在提升。在链路故障发生后,ASTJ机制的节点恢复能力比ZigBee标准机制有大约8%~13%的提升,提高了节点的加入率。

图4 固定ZED个数,故障前后加入率实验结果

图5表示固定ZR=70,变化ZED个数,当ZED在节点中比例越高其孤立节点率急剧上升。在修复链路故障后,ASTJ机制的修复能力比ZigBee标准协议修复能力有所提高,但随ZED比例的提高,其修复能力有所减弱,最后接近于标准ZigBee协议。

图5 固定ZR个数,故障前后加入率实验结果

4 结束语

文中分析了ZigBee网络中孤立节点形成原因及孤立节点蔓延问题,提出ASTJ算法降低孤立节点的发生,并在故障发生后,减少孤立节点的发生,防止孤立节点蔓延,提高网络节点接入率。最后通过仿真实验验证,与ZigBee标准协议相比,ASTJ算法对网络故障恢复能力有明显提升。

[1] 钱志鸿,王义君.面向物联网的无线传感器网络综述[J].电子与信息学报,2013,35(1):215-227.

[2]AllianceZB,SpecificationsZB.ZigBeespecification[EB/OL].2008.http://www.zigbee.org.

[3]IEEEStandardCommittee.IEEEstandard802,part15.4:wi-relessmediumaccesscontrolandphysicallayerspecificationsforlow-ratewirelesspersonalareanetworks(LR-WPANs)[S].[s.l.]:IEEEStandardCommittee,2003.

[4]PanMS,TsaiCH,TsengYC.TheorphanprobleminZigBeewirelessnetworks[J].IEEETransactionsonMobileComputing,2009,8(11):1573-1584.

[5] 杜军朝,刘 惠,刘传益,等.ZigBee技术原理与实战[M].北京:机械工业出版社,2015:28-29.

[6] 谢 川.基于ZigBee的AODVjr算法研究[J].计算机工程,2011,37(10):87-89.

[7]FarahaniS.ZigBeewirelessnetworksandtransceivers[M].[s.l.]:Newnes,2011.

[8] 韩敬海,李瑞改,张玉星,等.Zigbee开发技术及实践[M].西安:西安电子科技大学出版社,2014.

[9] 黄学哲,邓庆绪,金顺希.ZigBee分布式地址分配机制与研究现状[J].信息技术,2012(11):40-42.

[10]HwangKI.DesigningrobustZigBeenetworkswithenhancedself-configuration[C]//Digestoftechnicalpapersinternationalconferenceonconsumerelectronics.[s.l.]:IEEE,2009:1-2.

[11] 高广恩,刘全利,贾灵利,等.一种基于超帧机制的Zigbee时间同步算法研究与实现[J].大连理工大学学报,2012,52(5):719-724.

[12]AttiaSB,CunhaA,KoubaA,etal.Fault-tolerancemechanismsforZigBeewirelesssensornetworks[C]//Work-in-Progress(WiP)sessionofthe19thEuromicroconferenceonreal-timesystems.Pisa,Italy:[s.n.],2007:37-40.

[13]HuSC,LinCK,TsengYC.AutomaticparameterselectionfortheZigBeedistributedaddressassignmentmechanism[C]//24thinternationalsymposiumonpersonalindoorandmobileradiocommunications.[s.l.]:IEEE,2013:2062-2066.

[14]SongTW,YangCS.AconnectivityimprovingmechanismforZigBeewirelesssensornetworks[C]//IEEE/IFIPinternationalconferenceonembeddedandubiquitouscomputing.[s.l.]:IEEE,2008:495-500.

[15] 陈 杰.MATLAB宝典[M].北京:电子工业出版社,2011.

A Self-configuration Scheme of Orphan Nodes in ZigBee Network

CAO Xiao1,MAO Yan-qin2,SHEN Su-bin2

(1.School of Internet of Things,Nanjing University of Posts and Telecommunications,Nanjing 210003,China;2.School of Computer,Nanjing University of Posts and Telecommunications, Nanjing 210003,China)

The structure of ZigBee device is simple and hardware is circumscribed,so the communication range or node failure may lead to link failure,then orphan nodes and orphan propagation problems are produced in ZigBee network and would cause anomalies and even chaotic.The mechanism of standard ZigBee protocol is limitation to resolve orphan node.Aiming at this problem,the Agent Sub-tree Transfer Join (ASTJ) method is proposed to resolve the renewed connection for the orphan nodes,that is,orphan nodes as a whole sub-tree network rejoins the network and utilizes the network address by the way of nodes transfer.The method can prevent the spread of orphan nodes,improve the self-configuration capability of the orphan node,fix the network fault,and increase stability of the network.As the experimental result shows,ASTJ can improve the join ratio evidently,repair network fault effectively,and maintain the network structure as soon as possible.

WSN;ZigBee;self-configuration;orphan nodes;join ratio

2016-01-20

2016-05-17

时间:2016-10-24

江苏省未来网络前瞻性研究(BY2013095-1-08);南京邮电大学自然科学基金(NY211115)

曹 晓(1991-),男,硕士研究生,研究方向为无线传感器网络;沈苏彬,研究员,博士生导师,研究方向为计算机网络、下一代电信网及网络安全。

http://www.cnki.net/kcms/detail/61.1450.TP.20161024.1113.038.html

TP393

A

1673-629X(2016)11-0172-05

10.3969/j.issn.1673-629X.2016.11.038

猜你喜欢
子树树型信标
勘 误
一种新的快速挖掘频繁子树算法
一种快速养成的柞树树型—压干树型
广义书本图的BC-子树计数及渐近密度特性分析*
书本图的BC-子树计数及渐进密度特性分析∗
RFID电子信标在车-地联动控制系统中的应用
基于覆盖模式的频繁子树挖掘方法
基于树型结构的防空力量配属方案生成模型研究
基于信标的多Agent系统的移动位置研究
基于多波段卫星信标信号接收的射频前端设计仿真