Zigbee无线解决方案网络层研究



转载:http://www.armsky.net/articles/zigbee/1483783.html

摘要:文章介绍了Zigbee网络的组网过程及网络扩展的方法;首先简单介绍了Zigbee协议的网络层,接着给出了建立一个新网络的过程,及加入网络的两种方法;在这里,孩子节点可通过以下两种方式加入到网络中;通过MAC子层连接程序加入或通过先前指派的父节点直接加入网络;最后,文章针对Zigbee网络的现状及发展情况,提出了未来在无线Zigbee网络研究中需要解决的问题。
关键词:Zigbee;无线传感器网络;低功耗无线个域网
Abstract:The procedure of establishing Zigbee wireless network and the ways to extend the W SN are introduced.Firstly,the network layer of Zigbee and the service access point are introduced.Secondly,the process of establishing a new network and two kinds of ways of joining a metwork are presented.A child can be added to a network in the following two ways:the child can join the network using the MAC layer ass0ciation procedure or the child can be added to the network directly by a previously designated parent device.Finally,the problem need to be studied in the future are brought forword.
Key word:Zigbee;W SN ;LR~ W PAN
O 引言
    Zigbee网络中所有的设备都具有加入一个网络,或离开一个网络的功能。Zigbee的协调器与路由器还具有允许设备加入或离开网络;参与分配逻辑网络地址及维护邻居设备表的功能。通常, 网络层主要负责网络的生成与路由的选择。也就是说Zigbee协议的网络层不仅要确保基于IEEE802.15.4的MAC子层正常操作,同时还要为应用层提供一个合适的服务接口,使MAC子层与应用层之间能够顺利的实现交互。为了完成以上的功能,网络层包含了两种服务实体:数据服务实体及管理服务实体。网络层数据实体(NLDE)通过其服务访问点(NLDE—SAP)提供了数据传输服务, 网络层管理实体(NLME)则通过其服务访问点提供了管理服务。通常,网络层管理实体会利用网络层数据实体来完成它的管理任务,并对管理对象数据库进行维护。
1 原语概念
    在分层的通信协议中,层与层之间通过服务访问点(SAP)相连。每一层都可以通过本层与其下层的SAP调用下层为其提供相应的服务,同时通过其与上层的服务访问点为上层提供相应的服务。服务访问点是层与层之间的唯一接口,而具体的服务是以通信原语的形式供上层调用的。在调用下层服务时,只需要遵循统一的原语规范,并不需要去了解下层如何处理原语。这样就做到了数据层与层之间的透明传输。层与层之间的通信原语分为以下4种,他们之间的关系如图1所示。

    (1)Request:请求原语。用于N+1层向N层请求预先定义的服务,方向为N+1层发给N层。
    (2)Confirm:确认原语。由N层发给N+1层,用于响应先前N层发出的请求原语。
    (3)Indication:指示原语,由N层发给N+1层,用来指示一个N层内部事件,该事件通常与远端某个通信实体的请求原语逻辑相关。
    (4)Response:响应原语,由N+1层发N层,用于响应先前N层发给N+1层的内部事件触发指示原语。
    在组建Zigbee网络的过程中,下表中的原语为常用的原语。
    NLME-NETWORK-FORMATION.request/.confirm :网络形成请求/确认原语
    MLME-SCAN.request/.confirm :扫描请求/确认原语
    MLME-SET.request:设置请求原语
    MLME-START.request/.confirm :开始请求/确认原语
    NLME-PERMIT-JOINING.request:允许加入请求原语
    NLME-NETWORK-DISCOVERY.request/.confirm :网络查找请求/确认原语
    MLME-BEACON-NOTIFY.indication;信标通报指示原语
    NLME-sTART-ROUTER.request/.confirm :开始路由请求/确认原语
    NLME-JOIN.request/.confirm :加入请求/确认原语
    MLME-JOIN.indication:加入指示原语
    MLME-ASS0CIATE.request/.confirm/.indication/.response:连接请求/确认/指示/响应原语
    MLME-COMM-STATUS.indication:通信状态指示原语
    NLME-DIRECT-JOIN.request:直接加入请求原语
    MLME-ORPHAN.indication:孤儿指示原语
2 建立一个新的网络
    Zigbee协调器具有建立一个新网络的功能。协调器可通过向网络层发送网络形成请求原语请求建立新网络,只有没有加入其他网络的Zigbee协调器才能够建立一个新网络。若将协调器以外的其他设备被该程序初始化,则网络管理实体将终止程序并通知上一层(APL层)其请求为非法请求,该操作可以通过发布网络形成确认原语,并将原语中的状态参数置为无效请求来完成。
    收到请求原语后,网络层管理实体会向MAC子层请求对某一指定通道或是默认的可利用通道进行能量检测扫描,来搜寻可能的接口。我们可通过向MAC子层发布扫描请求原语,来启动通道扫描。扫描类型参数应被置为能量检测扫描,初始化的结果可通过向网络层发送扫描确认原语被返回。
    若返回的结果为能量检测扫描成功,网络管理实体会根据能量测试的结果,抛弃那些能量值在可接受水平之上的通道,剩下的即为可选择的能量水平可接受的通道。接着, 网络管理实体第二次发布扫描请求原语进行主动扫描。通过主动扫描即可完成对其他Zigbee设备的查找。为了确定建立新网络的最佳通道,网络层管理实体将审查返回的个域网描述符表,并找出ID表中编号最低的通道,若该通道上没有网络则更好。若没有发现合适的通道,网络管理实体会终结程序,并通知上一层初始化失败。该操作可通过向APL层发布网络形成确认原语来实现,原语中的状态参数应为启动失败。若找到了合适的通道,则网络层管理实体将为新的网络选择一个个域网的ID标识符。需要注意的是,在进行该操作前,管理实体应先检查是否可选的个域网ID值, 已经在先前收到的网络形成请求原语中被指定了。ID值被选定后如果与现有个域网的ID值没有冲突,则该值将成为新网络的ID。否则,设备将随机选择一个个域网的标识符,以保证其个域网ID既非广播个域网标识符(0xffff),且在可选通道的网络中是独一无二的。另外,个域网标识符应小于或等于0x3fff,以保留个域网标识符中的前两位为将来使用。一旦网络管理实体确定了个域网ID值,它会通过向MAC 子层发布设置请求原语将MAC 子层中的macPANID属性设置为该值。若没有唯一的个域网标识符能够被选择,网络层管理实体将终止整个过程,并通过发布网络形成确认原语通知上一层启动失败。
    一旦确定了个域网ID, 网络层管理实体将选定一个值为0x0000的16位网络地址,并置MAc子层的MAc短地址PIB属性为选定的网络地址。网络地址被设定后,网络层管理实体会向MAC子层发布开始请求原语,开始对新个域网进行操作。开始请求原语的参数应按照网络形成请求原语的参数进行设置,个域网启动的状态可通过开始确认原语返回给网络层。在接收到个域网的启动状态后,网络层管理实体会通过发布网络形成确认原语,通知APL层该层请求建立网络的情况。
    协调器建立了新的网络后,可允许其他设备加入到网络中。若协调器想将其他新设备加入到网络中,可通过向网络层发布允许加入请求原语来启动加入操作。注意, 只有Zigbee协调器或是路由器有权允许新设备加入网络。若该程序在其他设备上被启动,网络层管理实体将终止程序。
    网络层接收到允许加入请求原语后,检查原语中允许持续时间参数的值,若允许持续时间参数为OxO0,则网络层管理实体会发布设置请求原语,将MAC子层的MAC连接允许PIB属性置为假。若允许持续时间参数为0x01与0xfe之间的某个值, 网络层管理实体会置MAC子层的MAC连接允许PIB属性为真,并启动一个定时器,定时器经过一段指定的持续时间后终止。定时器停止后, 网络层管理实体重新置MAC连接允许PIB属性为假。若允许持续时间参数为0xff,网络层管理实体将令MAC连接允许PIB属性在所有的时间内一直为真,直到APL层发布另一个允许加入请求原语[1-2]。
3 通过MAC子层连接程序加入网络
    当网络中的原设备有资格允许一个新设备加入到网络中时,原设备与新设备之间就会形成父亲一孩子的关系。新设备即为孩子,而网络中的原设备即为父亲。一个孩子可以通过两种途径加入到网络中来:使用MAC子层的连接程序或通过先前指派的父亲设备直接加入到网络中。任何设备只要拥有必要的物理容量与可利用的网络地址空间,皆可接受一个新设备的加入请求。只有Zigbee协调器或路由器才能接受加入请求,终端设备则不能。
3.1 孩子设备程序
    当一个新设备想要加入网络时,其APL层会向网络层发布一个网络查找请求原语。原语中,扫描通道参数给出了有哪些通道被扫描。扫描持续时间参数给出了扫描每个通道所用的时间。接收到该原语后, 网络层会向下一层MAc子层发布扫描请求原语,请求MAC子层履行一个主动的或被动的扫描。
    在扫描期间,MAC子层接收到的每一个信标帧都带有非零长度的有效载荷。MAC子层将通过向网络层管理实体,发布信标通报指示原语来传递有效载荷的值。信标通报指示原语中还包括信标发送源设备的地址信息,及是否它愿意被连接入网等。网络层管理实体会检查信标有效载荷域的协议ID,检验是否与Zigbee协议标识符相匹配。如果不匹配,信标被忽略。否则,设备会从每个接收到的信标中复制相关的信息到它的邻居表中。
    一旦MAC子层完成了扫描操作,它会向网络层管理实体发布扫描确认原语,收到该原语后, 网络层会接着向APL层发布网络查找确认原语,该原语包含了被侦听到的每一个网络的描述信息。该信息包括Zigbee的版本, 堆栈结构,PANID,逻辑信道及是否允许加入网络等。APL层收到网络查找确认原语后,通过邻居表就可了解所有网络信息。同时也可以再进行一次搜索,来获得更多的网络信息。查找完毕后,就可以从被搜索到的网络中选择一个加入。将加入请求原语中的PANID参数置为目标网络的PAN标识符,重新加入网络参数置为假,即可将它发布到网络层请求加入。
    对于那些没有加入到网络中的设备,来自于APL层的加入请求,会使得网络层搜索它的邻居表,以查找合适的父亲设备。一个合适的父亲应该具有正确的PAN ID,允许其他设备与之连接,并且连接损耗最多不超过3。也就是说父亲节点在邻居表中应至多有一个父亲。若邻居表中没有合适的父亲, 则应在返回的加入确认原语中,将回复状态参数置为无许可值。当邻居表中适合做父亲的设备多于1个时,我们将选择与Zigbee协调器之问具有最小纵深的设备作为父亲。若具有最小纵深的设备多于1个,则我们就可随意的从他们中选取父亲了。
    一旦确定了父亲设备,网络层管理实体将向MAC子层发布连接请求原语。原语中地址参数应包含有被选择设备的地址信息。收到连接请求原语后,MAC子层会回复连接确认原语返回连接状态信息。若加入失败,状态信息将给出连接错误的原因。如果状态参数指明,邻居表中某些设备拒绝其他设备连接加入,则尝试加入的新设备,会在邻居表中将拒绝设备的潜在父亲位设置为0,以表明尝试加入失败。而后网络层将不再向这些设备发布任何连接请求。注意: 当扫描请求原语被发布后,邻居表中的每一个设备,其潜在父亲位都应为1。尝试加入失败后,网络层管理实体会在邻居表中查找另一个合适的父亲。若没有找到合适的设备,管理实体会将MAC子层返回的状态参数,通过加入确认原语发布给APL。若找到了合适的设备, 网络层将启动MAC子层的连接程序,且在新设备成功加入到PAN之前,网络层会一直重复该程序。
    加入网络成功后,在MAC子层向网络层发送的连接确认原语中将包含一个唯一的16位逻辑地址,孩子设备可用该地址进行网络传输。网络层在接收到确认原语后置位邻居表中该设备的关系域,表明已建立父子关系。此时,对于父亲设备来说,又有一个新的设备加入到它的邻居表中。新设备成功加入到网络中后,APL层将发布开始路由请求原语请求路由,若该设备为路由器,则网络层会向MAc子层发送开始请求原语设置它的超帧结构并开始传输信标帧,注意被传输的信标帧其信标序号不能等于15。且PANID,逻辑信道,信标序号及超级帧序号均应与邻居表中父亲设备的相应值相同。网络层在接
收到MAC子层发来的开始确认原语后,会将状态参数通过开始路由确认原语传递给APL层[3]。
3.2 父亲设备程序
    Zigbee协调器或路由器可通过采用MAC子层连接程序将一个设备加入到它的网络中,该程序可通过接收MAC子层发布的连接指示原语被初始化。只有ZigBee协调器或路由器才有资格允许其他设备加入网络,若其他设备初始化该设备,则网络管理实体将终止该程序。
    当加入程序被初始化时,潜在父亲的网络管理实体首先要确定是否想要加入的设备已经存在于网络中。网络管理实体将搜索它的邻居表,查找是否存在匹配的64位扩展地址。若找到了匹配的地址,则管理实体将获得一个相应的16位网络地址,并将之通过响应原语返回给MAC子层若没有找到匹配的地址,则网络层管理实体将为新设备分配一个唯一的l6位地址。对于每个潜在的父亲设备来说,其可分配的地址空间是有限的,一旦该地址空间被耗尽, 它将拒绝所有的加入请求。通常该地址空间的大小由ZigBee协调器来决定。潜在父亲设备用尽所有可分配地址空间后, 网络层管理实体将终止程序,并将该情况反馈给MAC子层。对于多跳网络来说,新设备仍可在网络中选择其他有充足地址空间的潜在父亲设备来加入。
    如果加入请求被批准,父亲设备的网络层管理实体会将孩子没备的信息加入它的邻居表。并通过向MAC子层发布连接响应原语表明连接已成功。而孩子设备的响应情况将通过MAC子层发布的通信状态指示原语返回给网络层。若孩子设备响应失败,网络管理实体将终止程序。若孩子设备响应成功,网络管理实体会通过发布加入指示原语通知APL层孩子已被加入。
4 通过直接加入方式加入网络
    如果ZigBee协调器或路由器想直接将一个设备加入到网络中,它将向网络层发布直接加入请求原语,并将设备地址参数置为加入设备的地址。接收到该原语后,网络层管理实体会搜索它的邻居表以检查是否存在匹配的64位扩展地址,如果存在,管理实体将终止程序,并通知APL层设备已经在网络中。若不存在,管理实体会为新设备分配一个唯一的16位网络地址。由于每一个潜在父亲的地址空间是有限的, 因此只有在存在充足地址空间容量的情况下,潜在父亲设备方能将新设备加入到它的邻居表中。父亲将孩子加入到网络中后,还需要与孩子进行进一步的通信联系才能真正建立起父亲-孩子的关系。通常,孩子设备会通过孤儿初始化程序来实现连接。孤儿初始化程序可用于设备直接加入网络,或是与原网络失去联系后重新人网的情况。使用直接方式加入到网络中的设备,可通过启动孤儿程序来完成父子关系的建立。已经入网的设备,若其网络层管理实体,不断接收到来自于MAc层的通信失败通知,则可通过初始化孤儿程序重新加入网络[4]。
4.1 孩子设备程序
    孩子设备若想利用孤儿程序加入网络,应首先向网络层发布加入请求原语,并将原语中的再加入网络参数设置为真。接收到该原语后, 网络层管理实体会请求MAC子层执行孤儿扫描来查找所有可利用的通道。通常,我们可以通过向MAC子层发布扫描请求原语启动孤儿扫描,扫描结果会通过扫描确认原语返回给网络层管理实体。如果孤儿扫描成功,管理实体将发布加入确认原语,通知上一层(APL)其加入或再加入请求成功。若孤儿扫描失败,管理实体会终止程序并通知上一层没有发现任何网络。
4.2 父亲设备程序
    当一个设备接收到来自于MAC子层的孤儿指示原语, 即是被通知存在一个孤立的设备。网络层接收到该原语后, 网络管理实体首先要分辨这个孤立设备是不是它的孩子,将孤立设备的扩展地址与原设备邻居表中孩子的扩展地址进行比较,若匹配,则网络层管理实体将获得相应的16位网络地址,并通过响应原语发送给MAC子层。父亲与孤立设备连接的情况会通过通信状态指示原语反馈给网络层管理实体。若孤立设备与原设备孩子的地址不匹配,则管理实体将通过响应原语,把情况如实的返回给MAC子层。
5 总结
    目前,无论是Chipcon公司提供的基于CC2430无线单片机的Zigbee开发套件, 还是微芯公司的基于PIC单片机的Zigbee开发工具,都能实现低功耗Zigbee网络的组网及路由,且组网方式也由原来的仅仅支持星型连接,而升级到不仅可以实现点对点的连接,还可以形成树状较复杂的路由网络.未来
ZIGBEE无线网络需要做的工作还有很多,包括对网络整体功耗的评估,连接时间的计算,不同占空比的影响,及多设备多点无线网络的拓扑研究等等。同时,对ZIGBEE堆栈特性的评估比如安全性、绑定时间、路由算法等的研究也是我们需要进行的重要工作。
参考文献:
[1] Zheng J,Lee M J.A Comprehensive performance study of IEEE802.15.4[M].IEEE Press Book。2004.
[2]Zheng J,Lee M J.Will IEEE802.15.4 make ubiquitous networking a reality:A discussion on a potential low power,low bit rate standard[J].IEEE Communication,2004,42 (6):140—146
[3]Chipcon,Packet Sniffer for IEEE802.15.4 and Zigbe User Manual[z].Oslo,Norway,2004.
[4] Kinney P.Zigbee technology:wireless control that simply works[Z].Zigbee Alliance,2004.
[5]Zigbee Alliance.Network specification(Draft Version 1.0)[s].2004.

本文转载自互联网,如果侵犯到你的权益,请联系我们,我们会予以删除。

你可能感兴趣的:(Zigbee无线解决方案网络层研究)