ZigBee网络随机地址分配机制研究

(整期优先)网络出版时间:2022-07-16
/ 3

ZigBee网络随机地址分配机制研究

陈永灿

广东轻工职业技术学院  机电技术学院  广州 510000

摘要:ZigBee网络的随机地址分配机制采用随机算法为节点分配地址,其具有逻辑复杂度低、实现方便、无需参数等优点,但同时会造成较大的通讯开销和时间消耗,且未能对重复地址做出有效清理。对此,本文提出新型随机地址分配算法,能有效地控制通信开销和时间消耗,且能对重复地址信息进行清理。最后在NS2软件上进行模拟仿真,测试数据证明了新提出的算法的有效性和可行性。

关键词:ZigBee;随机地址分配;地址冲突;NS2

1引言

ZigBee技术是在IEEE802.15.4无线通信协议标准上建立的近距离无线组网通信技术[1][2],具有近距离、自组织、低功耗、低复杂度等特点[3],主要用于近距离低速率电子设备之间的数据传输以及典型的有周期性数据、间歇性数据传输需求的场景[4],包括汽车工业、家庭自动化、遥控遥测、定位系统等领域[5]

ZigBee技术的地址分配有两种机制,分别是分布式地址分配机制(Distributed Address Assignment Mechanism,简称DAAM)和随机地址分配机制(Stochastic Address Assignment Mechanism,简称SAAM)。DAAM强调“地址——位置”的对应关系,更确切地说是“子节点地址——父节点地址”的对应关系,该对应关系是树状路由的基础。而SAAM采用逻辑上更简单的随机方式分配地址,该机制对应的是网状路由。

现有的随机地址分配算法(简称SAAM算法)虽能完成节点的入网地址分配工作,但时间消耗和通信开销较大,对于采用电池供电的ZigBee设备来讲,显然是技术弊端。因此,本文在深入研究SSAM算法的基础上,提出新型的基于邻居确认的随机地址分配算法(Stochastic Address Assignment Mechanism based on the Confirm of the Neighbors,简称SAAMCN),以降低时间和通信开销,同时对重复地址做出有效清理。

本文主要工作包括如下四个方面:

(1)研究ZigBee现有的随机地址分配算法SAAM并分析其优缺点;

(2)针对SAAM的缺陷提出新型扫描算法SAAMCN;

(3)将SAAM和SAAMCN在NS2网络仿真平台上实现;

(4)对SAAM和SAAMCN进行多指标多场景的测试,验证SAAMCN算法的有效性。

2SAAM算法分析

SAAM算法的逻辑是:从协调器开始,每个父节点都随机从65533个地址中为子节点分配地址,而不考虑子节点的类型。因为短地址总共65536个,其中有3个(分别是0x0000、0xFFFE、0xFFFF)不参与地址分配,故地址池大小为65533。父节点每随机出一个地址,都要去自己的子地址列表中查询以确认该地址是否已经分配过。若是则重新随机,否则将该网络地址通过入网应答命令传递给子节点。子节点在收到入网应答命令之后,需要向全网广播“设备声明”(Device Announce),其中包含刚获得的网络地址和64位长地址。其他设备收到该声明之后,首先判断自己的网络地址与该声明中的网络地址是否一致,若是则以广播方式发送“地址冲突”(Address Conflict),并且自行重新随机选择网络地址,同样需要发送“设备声明”,否则继续转广播“设备声明”。节点收到“地址冲突”的通告之后,自行重新随机选择网络地址,继续重复上述流程。

节点收到设备声明后的处理逻辑如图1所示:

图1  SAAM算法中节点对设备声明的处理逻辑

节点在收到设备声明之后首先要判断此前是否接收过,若已接收过则直接忽略。还需要注意若节点发现网络地址冲突,则既要发送地址冲突通告,还要通过自行随机的方式重新给自己分配网络地址,最后还需广播设备声明将新获得的网络地址通知全网。节点在收到地址冲突通告后,按图2所示逻辑进行处理。

图2  SAAM算法中节点对地址冲突的处理逻辑

地址冲突通告中包含网络地址、64位长地址、广播序列号。这些信息在最初节点发送设备声明时设置,此后的转发节点只会读取其中的信息并记录在本地的声明发送列表(或冲突发送列表),不会修改其中的值。只有最初发送设备声明的节点收到地址冲突通告,才会在重新选择网络地址之后将广播序列号加一,重复此前的广播。广播序列号的作用除了避免无穷广播之外,还可以便于节点识别这是来自某个节点的第几个广播包。

通过以上分析可知SAAM算法具有以下优点:

①降低了欲入网节点选择潜在父节点的逻辑复杂度,因此减轻了扫描阶段的压力。而且潜在父节点采用随机方式获得网络地址,操作方便。

②由于不存在地址池枯竭的问题,节点的入网也就没有静态和动态之分,所以也就不用考虑借地址等问题,欲入网节点都能分到地址。

③潜在父节点得出网络地址不需要计算,因此不需要

等参数。这就意味着在DAAM机制中与这些参数对应的限制在SAAM机制中都不存在。在一些不能提供等参数值的场合下,SAAM算法非常合适。

同时必须认识到,SAAM算法把压力集中到了获得网络地址之后,因为子节点要进行全网广播来避免地址冲突,并对冲突的地址进行处理。从上述对设备声明和地址冲突通告的处理逻辑上,我们不难发现SAAM算法以下明显的缺点:

①子节点获得网络地址后都需要进行全网广播设备声明,即已入网节点都要为刚入网节点转发一次设备声明,除非该节点的网络地址与刚入网的节点冲突,但冲突的情况更糟糕,因为冲突就需要广播地址冲突通告,节点重新选择网络地址之后还需要广播,又加重了整个网络的负担。而且这种广播是每个节点刚入网是都会促发的,显然通信开销很大,耗时很长。

②在出现地址冲突时,SAAM算法要求重复的地址都要重新选择,但并未考虑原网络地址在网络中存在过,在部分节点的路由表、邻居表等属性表中都有记录,SAAM算法并未对这些记录进行有效的处理。

3SAAMCN算法

针对SAAM算法存在的问题,本文提出基于邻居确认的随机地址分配算法——SAAMCN,可以看作是对SAAM算法的优化或者补充。

首先对于广播成本高的问题,SAAMCN算法采用将广播限制在两跳范围内的方法来解决。这就从根本上解决了成本问题,能够明显降低广播的通信开销,节省时间。但必须要指出该算法在网络规模很大的情况下效果不太理想,因为随着网络规模的扩大,两跳广播覆盖的范围占全网的比率比较小,虽然通信开销和时间消耗控制在低位,但是避免地址冲突的功能就受限制,因此该算法的适用范围是中等及以下规模的网络。

SAAMCN算法在节点接到设备声明之后不仅仅是跟本节点的网络地址比较,还要跟本地的路由表、邻居表等属性表中记录的节点网络地址比较,只要查到有设备声明中网络地址的记录,就可确定该网络地址是重复的,直接发送地址冲突通告即可,因为该通告是并非一定要网络地址重复的节点才能发送。

在出现地址冲突后,拥有该网络地址的节点都将会修改地址,则网络中其他节点关于该网络地址的记录就无效了,因此SAAMCN算法在节点收到地址冲突通告之后,如果本节点的短地址跟正在进行设备声明的短地址不相同(我们称这样的节点为第三方节点),则查询本地的各种属性表,若发现了通告中的短地址记录,则删除相应的信息,以解决地址变更时节点信息未清理的问题。

SAAMCN算法中节点收到设备声明后的处理逻辑如图3所示。

图3  SAAMCN算法中节点收到设备声明的处理逻辑

SAAMCN算法中节点收到地址冲突通告的处理逻辑如图4所示。

图4  SAAMCN算法中节点收到地址冲突通告的处理逻辑

通过对SAAM算法的一系列改进,不难发现SAAMCN算法的已具有如下优势:

①同样具有逻辑复杂度低、地址池不枯竭、不受参数限制等优势,即SAAMCN算法完全保留了SAAM算法的优势;

②采用两跳广播代替SAAM算法的全网广播,有效地控制了通信开销和时间消耗;

③查询属性表确认地址冲突的策略扩大了设备通告的实际范围,因此弥补了两跳广播造成搜索范围有限的劣势;

④特有的冲突地址信息清理机制保证了已失效的地址信息不会继续存在于网络中,保障了网络的正常运行。

4模拟仿真及数据分析

为了验证SAAMCN算法的有效性,本文将其在NS2上进行仿真实现并做相应的测试。本文模拟仿真所采用的NS2是开源免费的仿真软件,且其具有较高的执行效率、丰富的构件库、灵活的配置,良好的可扩展性和开放性等优点[6]。同时将SAAM算法也在NS2上模拟实现并测试,将两组算法的测试数据进行对比,以增强说服力。

本文设置了7套模拟仿真场景,具体如表1所示:

表1  随机地址分配算法的仿真场景

场景

节点数

场景范围

(m*m)

持续时间(s)

场景1

50

1000*600

100

场景2

100

1200*1000

150

场景3

150

1600*1200

200

场景4

200

1800*1500

250

场景5

250

2000*1800

300

场景6

300

2400*2000

350

场景7

400

3200*2800

450

除了时间消耗和通信开销两个指标外,本文再引入重复率指标来衡量两套算法。

定义重复率如下:

                                                     (1)

其中表示整个组网过程中尝试入网的节点总数,表示网络中重复节点的总数。

仿真结果如图5、图6、图7所示。

SAAM_SAAMCN重复率

图5  SAAM和SAAMCN算法的重复率对比

图5显示随机算法的重复率随节点数增加而提高。在200个节点以下的场景中,SAAMCN能保证0.05%以下的重复率,特别是150个及以下节点的场景,重复的情况基本上统计不到,所以SAAMCN算法的非常适用于200个节点以下的场景。现实中,小规模ZigBee网络大约是十几个节点,中等规模网络节点数约几十或者上百个,因此SAAMCN算法在中小规模网络中表现优异。

SAAM_SAAMCN时间消耗

图6  SAAM和SAAMCN算法的时间消耗对比

SAAM_SAAMCN通信开销

图7  SAAM和SAAMCN算法的通信开销对比

图6和图7显示,SAAMCN算法时间消耗和通信开销都远低于SAAM算法。

综合比较三组数据,发现在网络规模低于200个节点时,SAAMCN的重复率和SAAM很接近,但通信开销和时间消耗远远低于SAAM,因此SAAMCN算法具有明显优势。在网络规模大于200个节点时,SAAMCN的时间消耗和通信开销远低于SAAM,重复率高于SAAM。因此得出结论,在网络规模不是很大时,SAAMCN算法在总体指标上优于SAAMCN算法。

5结语

本文在对ZigBee网络随机地址分配机制进行深入研究的基础上,分析出现有随机地址分配算法SAAM会造成较大的通讯开销和时间消耗,且未能有效清理重复地址信息的问题,并提出了新型随机地址分配算法SAAMCN。该算法对广播的跳数做出限制,并充分利用属性表来清理重复地址信息,以解决上述问题。最后通过在NS2仿真平台上的模拟测试,证明SAAMCN在其适用范围内的优越性。

参考文献:

[1]朱旭,牛存良,白晓丽.改进的ZigBee树路由算法[J].计算机工程与应用,2016,52(5):114-118

[2]张少凡,魏长军,张少敏.ZigBee技术的研究与应用[J].电脑知识与技术,2017,13(2):261-263

[3]姚文强.基于ZigBee的路灯网络路由算法的研究与应用[D].苏州:苏州大学,2017:4

[4]荆磊.简析Zigbee技术的适用[J].现代工业经济和信息化,2014,(6):85-86,89

[5]侯启真,史秉鑫,刘衍帆.基于RSSI的ZigBee定位技术研究[J].计算机应用与软件,2016,33(4):134-137

[6]狄万昕.基于ZigBee协议的无线传感网节点能耗研究[D].安徽:安徽工程大学,2016:19