Zigbee 技术网络层的研究与分析

时间:2022-09-23 03:22:05

Zigbee 技术网络层的研究与分析

摘要:Zigbee技术是一种新兴的低复杂度、低功耗、低数据速率、低成本、易应用的短距离双向无线通信技术,网络层是Zigbee协议栈中最为复杂的一层。该文介绍和分析了Zigbee技术支持的网络拓扑结构,重点介绍了节点接入网络技术,路由表维护机制,网络地址分配机制,路由选择算法和网络包的格式。

关键词:ZIGBEE技术;协议栈;路由;路由接入

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)18-4208-04

Zigbee技术是一种新兴的低复杂度、低功耗、低数据速率、低成本、易应用的短距离双向无线通信技术[1-3]。它是一种介于无线标记技术和蓝牙技术之间的技术方案,主要应用于短距离的无线连接[3]。Zigbee作为新兴的短距离无线通信技术,正有力地推动低速率个人区域网络(Low-Rate Wireless Personal Area Network, LR-WPAN)的发展[4-5]。Zigbee为一个无线网状组网标准,物理层(PHY)和媒体访问控制层(MAC)由IEEE802.15.4协议标准提供[6-7],网络层及以上各层由Zigbee联盟制定。网络层的主要功能是提供一些必要的函数,确保IEEE802.15.4 MAC子层能够正常的工作,且为应用层提供合适的服务接口。包括网络层数据服务实体和网络层管理服务实体两个必须的服务实体。网络层数据服务实体提供数据服务,通过对应用支持子层协议数据单元增加一个适当的网络层协议头生成一个网络层协议数据单元;指定拓扑传输路由,发送一个网络层协议数据单元到一个合适的设备。网络层管理服务实体允许应用与堆栈相互作用,提供如下服务:配置一个新设备、初始化网络、连接和断开网络、寻址、邻居表发现、路由发现以及接收控制。

Zigbee网络层支持星型、树型和网状型网络拓扑结构,如图1所示。在星型拓扑结构中,整个网络由一个Zigbee协调器和多个从设备组成,且由协调器控制,Zigbee协调器负责发起和维护整个网络的正常工作,保持同网络中其他设备之间的通信。在树型和网状拓扑结构中,Zigbee协调器负责启动网络和选择网络的关键参数,如:最大子设备数、最大路由器数、最大深度等;同时也可以利用Zigbee协调器来扩展网络结构。在树型网络中,路由器设备采用分级路由策略来传输数据和控制信息,且树型网络可以采用基于信标的方式进行通信。在网状网络中,设备之间使用完全对等的通信方式,且不发送通信信标。

1 网络层核心功能

1.1接入网络

Zigbee协调器建立网络后,其他设备作为协调器的子设备接入网络。在一个网络中具有从属关系的设备允许一个新设备连接时,就与新的设备形成一个父子关系,新设备为子设备,与新设备连接的设备为父设备,一个网络中的所有设备(除协调器外)都是Zigbee协调器的子设备。任何子设备可以通过联合方式或者直接方式连接网络。

通过联合方式接入网络,只要设备具有允许加入子设备的功能和具有有效地网络地址空间,它就可以接受一个新设备发送的连接请求命令。通常仅仅只有Zigbee协调器和路由器设备具有允许接受子设备的能力,才能接受连接请求命令,终端设备不具备这个能力。对于子设备,首先MAC层扫描信道,可执行被动扫描或主动扫描。在扫描过程中,子设备发送一个beacon request帧,对工作在这个信道中的所有设备收到此帧,发送beacon帧,告知发送者是否允许其他设备以其子设备的方式加入网络。一旦信道扫描完成,MAC层通知网络层扫描完成,网络层选择合适的潜在父设备发送入网请求命令。如果收到潜在父节点拒绝该设备加入,网络层将在关联表中重新设置潜在父节点,以不再重新向该潜在的父设备发送入网请求命令。如果一次加入网络不成功,将继续选择其他的潜在父节点加入,直到找到一个合适的父设备加入。如果加入成功,则设置父设备分配的16位网络地址进行通信。

对于父设备,只要协调器或路由器可以执行分配网络地址过程。如果潜在的父设备没有可用的地址分配,将告知发送入网请求命令的设备该设备不能接收子设备。如果有可用的地址则分配网络地址,允许该设备作为其子设备加入网络。

直接方式连接网络,首先由父设备(Zigbee协调器或路由器)确定所指定要加入网络的设备是否已经存在于网络中,如果不存在,则分配一个唯一的16位的网络地址。具体的接入网络子设备与父设备的连接流程可参考文献,这里不再详细论述。

1.2 邻居表维护

Zigbee的每个设备都必须维护一个邻居表。设备的邻居表应包含在其一跳传输范围内的每一个设备的信息。存储在邻居表中的信息可用于各种目的,通常在实际的Zigbee设备运行中,不需要包含所有的信息。其中邻居设备的PAN标识符、扩展地址(如果设备为父设备或者子设备)、网络地址、设备类型、与设备之间的关系是邻居表必须包含的内容。除此之后,还可以包含以下信息,执行设备希望在邻居表中记录这些额外的信息:空闲时接收机工作;表示邻居设备接收机在超帧活动期的空闲期是否工作。扩展地址(任意邻居设备);信标顺序:表示传递信标的频率。深度:邻居设备的树状深度,协调器设备为0。允许连接:用于表示邻居设备是否正在接受连接请求。传输失败:表明以前该设备是否传输成功。潜在的父设备:在连接失败的情况下,是否排除邻居设备为潜在的父设备。平均LQI:估计RF传输链路质量。逻辑信道:表示邻居设备工作的逻辑信道。输入信标帧时标:邻居设备接收到的最后一个信标帧的时间标记。信标帧传送时间偏差:邻居设备信标与它的父设备信标之间的传输时间差,从相应的输入信标时标减去该偏差可以计算出邻居的父设备传输信标的时间。

1.3 网络地址分配机制

在网络层中,Zigbee协议采用分布式地址分配机制为每一个入网节点分配网络地址。Zigbee每一个节点都有一个16位的短地址和一个64位的扩展地址。64位扩展地址在设备制造过程中设置且对于每个节点都是唯一的,类似于计算机网络中的MAC地址,在设备接入网络过程中使用。16位短地址类似于IP地址,可以与Internet网连接,在整个网络中静态分配。分布式地址分配由协调器节点确定网络参数:[Cm],[Rm]为每个父节点可以拥有最大子节点数,最大路由节点数,[Lm]为网络最大深度;地址只能由父节点分配给各个子节点,协调器决定整个网络的深度。父节点可根据公式[1]确定是否可以具有给子节点分配子区段地址数。

[Cskip(d)=1+CmLm-d-1 Rm=1 1+Cm-Rm-CmRmLm-d-11-Rm Rm>1 ] (1)

当[Cskip(d)=0]时,则该节点没有接收子节点的能力,[Cskip(d)>0]时,该节点有能力接收子设备,则根据需要接入的节点是否具有路由器能力来分配不同的地址。[Ar,d,m]为父节点为具有路由器能力的节点分配网络地址公式,其中[Ri]为当前父节点所接受的具有路由器能力的节点数。

假设给出一个具有最大子设备数[Cm]为4,最大路由器设备数[Rm]为4,最大深度[Lm]为4,则可利用上述公式计算出[Cskip(d)]的值如1所示。此网络结构如图2所示。

1.4 Zigbee路由选择

Zigbee协调器和路由器具有如下功能:为上层和Zigbee其他设备中继数据帧、参与路由选择、建立路由、为终端设备参与路由选择、参与端到端路由修复、参与本地路由修复、在路由选择和路由修复中,使用规范的Zigbee路由成本进行度量。同时还可以提供如下功能:记录最佳有效路由,维护路由表;为上层初始化路由选择;为其他Zigbee路由器初始化路由选择;初始化端到端路由修复;为其他Zigbee路由器初始化本地路由修复。Zigbee协议定义了三种路由模式:禁止路由发现、使能路由发现和强制路由发现。

禁止路由发现(Suppress):如果发现网络路由器存在,数据包路由指向该路由器。否则数据包沿树型发送。

使能路由发现(Enable):如果发现网络路由器存在,数据包指向该路由器。如果网络路由器不能确定,路由器可以启动路由发现,当路由发现完成后,数据包沿计算出来的路径进行路由转发。若果该路由器没有路由发现能力,数据包将沿树型路由转发。

强制路由发现(Force):如果路由器有路由发现能力,不管路由是否存在,都将启动路由发现过程。路由发现完成后,数据包沿计算出来的路径进行路由转发。如果该路由器没有路由发现能力,数据包沿树型路由转发。

1)路由成本

在路由选择和路由维护时,Zigbee采用路由成本的度量方法来比较路由的好坏。即与路由中每一条链路相关的链路成本之和组成的链路成本。计算如公式(4):

[CP=i=1L-1CDi,Di+1] (4)

其中:[CP]为长度为[L]的路由[P],由每一个长度为2的子路由[Di,Di+1]成本和,[CDi,Di+1]为链路成本。链路成本[][Cl]为链路[l]的函数,且其值为集合[0,…,7],函数的表达式为公式(5)。

[Cl=7min7,1pl] (5)

其中[pl]为链路[l]发送数据包的概率。

公式(5)的关键问题在于如何测量或估计[pl]。[pl]可以通过实际计算收到的信标帧和数据帧来进行估计。其中最直接和最有效的方法是基于IEEE802.15.4的MAC层和PHY层所提供的每一帧的LQI进行平均计算值。通常使用驱动函数表来映射平均LQI值与[Cl]值。

2)数据传输

网络层收到数据帧后,按照如下流程转发数据帧,流程图如4所示。

首先判断该帧是来自上层的数据帧还是下层的数据帧。对于上层数据包,判断其目的地址是是否为广播地址,是则广播数据帧;不是则按照规定的流程发送数据包。如果收到数据帧的设备是Zigbee协调器或路由器,且帧的目的地址为该设备的终端子设备,则发送MSDE-DATA.request原语,将数据帧直接发送到目的地址设备;如果目的地址不是该设备的终端子设备,则首先检查是否有与目的地址相对应的路由表入口,如果存在路由表入口,则根据该入口找到下一跳地址,发送数据帧;如该设备不存在与该目的地址相对应的路由表入口,则检查网络层帧报头控制域的路由选择子域,该值为1,设备开始路由选择,该值为0则采用分级路由的方法沿树选择路由。

对于收到MAC层的数据帧,首先检查其目的地址,如果目的地址为广播地址,网络层首先重新广播该数据帧,然后将该数据帧发送到上层进行处理。如果该数据帧不为广播帧,则网络层判断该目的地址是否与自己的逻辑地址相同,相同则发送该帧到上层进行处理,不同则该设备只是一个中间设备,则按照处理接收上层的非广播数据包的方法进行处理。

对于没有路由能力的设备,采用分级路由的方法沿树选择路由。

1.5 Zigbee网络层包格式

网络层帧由网络层帧报头和可变长有效载荷组成,如图3所示。网络层帧报头包含帧控制、地址和序列信息。帧控制域为16bit,包括定义的帧类型、地址和序列域以及其他控制信息;路由域包含了目的地址、源地址、广播半径与序列号相关信息。

通常地址和序列域不是所有帧都必须包含,但是网络层帧报头域以固定顺序出现。目的地址域长度为2字节,为16位目的设备的网络地址或广播地址(0xFFFF)。源地址域为源设备的网络地址。16位网络地址与IEEE802.15.4协议中定义的MAC层16位短地址是一致的。广播半径域和广播序列域仅在目的地址为广播地址时才存在,长度都为1个比特位。帧的有效载荷域为可变长度,包含个中帧类型的具体信息。

网络层定义了三种类型的命令帧:路由请求命令,路由应答命令和路由错误命令。设备使用路由请求命令来请求在其一跳范围内的其他设备发现到达该目的设备的路由路径,以在网络中建立一条稳定的、经济的路径到达目的设备。路由请求命令的目的设备发送路由应答命令来告知路由请求源设备已收到路由请求命令。当设备无法向前传输数据帧时,设备发送路由错误命令通知源设备,在数据传输过程中出现了错误。

2 结论

本文主要关注Zigbee协议栈中的网络层,对其相关的信息进行了详细的介绍。首先介绍了Zigbee技术能支持的网络拓扑结构,对节点接入网络过程、路由选择算法、路由表维护机制和如何为新加入节点分配网络地址分配进行了详细的描述,并给出了Zigbee网络中主要包的类型和对应的格式。

参考文献:

[1] Jung J Y, Lee J W. Improved Zigbee Connection Method for Healthcare Device[C]//2006 International Conference on Hybrid Information Technology Cheju Island, Korea, 2006(1):673-676.

[2] Zheng J,Lee M. Will IEEE802.15.4 Make Ubiquitous Networking a Reality?:A Disscussion on a Potential Low Power, Low Bit Rate Standard[J].IEEE Communications Magazine,2004,42(6):140-146.

[3] Zigbee Standards Organization. Zigbee Specification V1.0:Zigbee Specification [S].2005.

[4] 李腊元,李春林.计算机网络技术[M].北京:国防工业出版社,2004.

[5] 任丰原,黄海宁,林闯.无线传感器网络[J].软件学报,2003,14(7):1282-1291.

[6] IEEE. Wireless Medium Access Control (MAC) and Physical Layer(PHY) Specifications for Low-Rate Wireless Personal Area Netwrok[S]. IEEE Standards 802.15.4-2003,2003.

[7] IEEE. Wireless Medium Access Control (MAC) and Physical Layer(PHY) Specifications for Low-Rate Wireless Personal Area Netwrok[S]. IEEE Standards 802.15.4-2003,2006.

上一篇:Matlab7.1环境下IIR滤波器的设计与仿真 下一篇:基于并查集的克鲁斯卡尔算法在地铁规划中的应...