zoukankan      html  css  js  c++  java
  • ZigBee协议学习之网络层

    ZigBee的体系结构中,底层采用IEEE 802.15.4的物理层和媒介层,再次基础上,ZigBee联盟建立了自己的网络层(NWL)和应用层框架。

    ZigBee网络层的主要功能包括设备的连接和断开、在帧信息传递时采用的安全机制、路由发现和路由维护的交互,并且,网络层完成对一跳邻居设备的发现和相关节点信息的存储。

    ZigBee网络由所有节点都有两个地址:16位的网络地址和64位的IEEE扩展地址。其中,16位的网络地址仅仅在网络内部使用,用于路由机制和数据传输。这个地址实在节点加入网络时,有其父节点动态分配的。

    Technorati 标签:

    1. ZigBee组网功能

    ZigBee网络层的主要功能室路由,路由算法是它的核心。根据组网类型的不同,支持三种路由算法,星型路由、树形路由和网状路由。

    1.1 星型网络

    星型网络有一个中心节点,所有消息都经它传输。

    1.2 树型网络

    树型网络由一个顶端节点,下面有枝有叶,消息先上行再下传。

    树型路由把网络看成是以协调器为根的一棵树,因为整个网络是由协调器所建立的,而协调器的子节点可以是路由器或者末端节点。

    树型路由利用一种默认分布式地址分配算法,使用四个参数(由PAN协调器确定):PAN协调器的地址为0,深度为0,

    •     树状网络的最大深度(不包括PAN协调器本身) Lm
    •     网络路由器所能拥有的最大子节点数            Cm 
    •     网络路由器所能拥有的最大子路由器数         Rm
    •     设备在网络中的深度 d (0---Lm-1)
    • 来计算新节点的地址。在寻址时,根据地址就能计算出路径。路由只有两个方向--向子节点发送或者向父节点发送。无需路由表,节省存储资源。

    一个父设备通过Lm,Cm和Rm来完成Cskip(d)的计算。

     image

    如果一个设备Cskip值为0,则表明该设备为终端设备。

    如果设备的Cskip的值大于0,则表示其可以接受子设备,并且将

    1. 父设备首先为它的第一个路由器子设备分配一个比它自己更大(+1)的地址

    2. 给随后的路由器分配的地址将以Cskip(d)的数值为间隔,依次类推为所有的路由器分配地址

    第n个终端设备的网络地址按照如下公式来分配:

    image

     

    以下图作为实例说明:Lm=3,Cm=2,Rm=2,d取值为[0,3]

    image

     

    每个深度对于的Cski值都计算出来,在每层之间,首先加入的节点(X)比父节点地址(C)大1,其次加入的节点(Y)的地址值为上一个节点X的地址值加上父节点的Cskip值。依次类推。

    Cskip值为0的设备为终端设备,对于每个终端设备来说,其地址计算方式如下:image

     

    父设备直连的,第一(n)个终端设备的地址=它的父设备地址+该父设备的Cskip*Rm+1(n)

    当一个设备想要去路由信息时,Cskip的值很重要。路由设备需要知道将要传递的信息的目的设备是否为自身的子节点。

    如果路由设备在深度d,它自身的地址为A,需要传递的目的设备有一个目的地址D。如果满足A< D < Cskip(d-1)的话,那么设备D一定为设备A的子孙节点,进行下行路由(route down)。否则进行上行路由(route up)。

    一旦可以确定目的地址是自身地址的子节点,下一步就是计算下一跳的地址。如果目的地址为终端设备类型,下一跳地址就是为目的地址(l例如信息在设备Y,前往地址为9的设备)。

    如果目的地址为非直连子节点(例如信息在设备Y,前往地址为10的设备),则下一跳地址遵循如下的计算方式:

    image

     

    树族型拓扑的树簇算法是指消息沿着树形拓扑进行传输的算法,它是静态的,不需要存储路由表,适用于节点静止或者移动较少的场合

     

     

    网状路由AODVjr算法是对Ad Hoc按照距离矢量路由算法的改进,按需分配的路由协议,只有在路由节点收到网络数据包时,并且网络数据包不在节点的路由表中时才会进行路由发现过程。AODVjr的优点是,相对于有线网络的路由协议而言,它不需要周期性的路由信息广播,节省了一定的网络资源和网络功耗。缺点是在需要时才发起路由寻找过程,会增加数据到达目的地的时间。由于ZigBee网络中个,对数据的实时性要求不大,而更重视对网络能量的节省,因此AODVjr更适合在ZigBee网络中。

     

    依次路由的建立由以下三个步骤组成:

    1. 路由发现

    2. 反向路由建立

    3. 正向路由建立

    经过这三个步骤,即可建立起一条路由节点到目的节点的有效传输路径,在此过程中,AODVjr使用3种消息

    Route Request(路由请求,RREQ), Route Replies(路由回复,RREP),Route Error(路由错误,RERR)

    路由发现流程:

    image 

     

    路由建立:

     image

     

     

    这两种算法的结合使用确定了WSN路由的三种模式

    1. 禁止路由模式(SUPPRESS):   禁止对路径进行查找,只能使用树簇算法沿着树型拓扑进行路由。

       具体操作,如果发现网络路由器存在,则数据包指向该路由器,否则,数据包沿着树形推进。

     

    2. 使能路由模式(ENABLE): 将树簇算法和AODVjr算法相结合,视具体情况使用哪种算法。

    具体操作:

    如果发现网络路由器存在,则数据包指向该路由器

    如果网络路由器不存在,路由器可以启动路由发现能力的话,则发起路由发现,数据包沿着计算的路由传送。

    如果该路由器没有路由发现能力,数据包沿着树形推进。

    3. 强制路由模式(FORCE):完全使用AODVjr算法,。

    具体操作:只要设备具备路径查找能力,不管消息传输路径是否已经存在,都要启动路径查找过程,当查找完成后,数据包将沿着计算出来的路径传送,如果没有路由发现能力,数据包沿着树形推进。

    这三种方式具体怎么选择?在代码里面,目前没有找到,疑惑中…..

     

     

    1.3 mesh网络

    网状网络与树型类型,但它的某些枝叶可以直接连接。网状路由是AODV路由算法的一个简化版本,非常适合于低成本的无线自组织网络的路由,适用于较大规模的网络,需要节点维护一个路由表,使用灵活,路由效率高。使用路由发现和维护机制。

     

    除了以上两种路由方式外,PAN协调器或路由器本身还有邻接设备表,记录一定区域内与其具有邻接关系的设备。只需要一跳就可以发送到目的节点。

    对于网状拓扑结构来说,要使用路由表来进行路由。

    网状网络提供路径维护和网络自愈功能。

    每一个路由器(包含协调器)都包含一个路由表,设备在路由表中保存数据包参与路由所需的信息,每一条路由记录都包含目的地址、下一级节点和连接状态。

    路径发现表:保存路径发现过程中的临时信息,这些记录只在路径发现操作期间存在。

     image

     

    参考资料:http://blog.csdn.net/skyxfire/article/details/6698469

    http://blog.csdn.net/tanqiuwei/article/details/7641375

  • 相关阅读:
    这几天都是在公司慢待
    电脑没有关机可能出现发博文dns异常(write)
    DOS/VBS
    SourceInsight
    CevaEclipse
    C/C++
    Matlab
    Matlab
    C语言
    Matlab
  • 原文地址:https://www.cnblogs.com/cherishui/p/3664664.html
Copyright © 2011-2022 走看看