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

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

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

Technorati 标签: ZigBee 网络层

1. ZigBee组网功能

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

1.1 星型网络

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

1.2 树型网络

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

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

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

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

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

 

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

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

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

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

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

 

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

 

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

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

 

父设备直连的,第一(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的设备),则下一跳地址遵循如下的计算方式:

 

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

 

 

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

 

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

1. 路由发现

2. 反向路由建立

3. 正向路由建立

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

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

路由发现流程:

 

 

路由建立:

 

 

 

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

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

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

 

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

具体操作:

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

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

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

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

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

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

 

 

1.3 mesh网络

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

 

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

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

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

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

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

 

 

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

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

ZigBee协议学习之网络层的更多相关文章

  1. zigbee学习之路(十二):zigbee协议原理介绍

    一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...

  2. ZigBee协议基本介绍

    ZigBee是一种短距离(10~100米).低速率(20~250Kbps).底成本.低功耗的无线网络技术,主要用于近离无线通讯.能够做到在数千个微小的传感器之间相互协调实现通讯,这些传感器只需要很少的 ...

  3. TCP/IP协议学习之实例ping命令学习笔记

    TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...

  4. TCP/IP协议学习(五) 基于C# Socket的C/S模型

    TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...

  5. http协议学习系列

    深入理解HTTP协议(转)  http://www.blogjava.net/zjusuyong/articles/304788.html http协议学习系列   1. 基础概念篇 1.1 介绍 H ...

  6. BGP协议学习总结

    BGP学习总结 BGP是目前使用的唯一的自治系统间的路由协议,它是一种矢量路由协议,基于TCP的179号端口,它采用单播增量更新的方式更新路由,与其他的路由协议不同的是,BGP只要TCP可达,就可以建 ...

  7. TCP/IP协议学习和理解

    TCP:Transmission Control Protocol-传输控制协议 IP:Internet Protocol-网络协议 TCP/IP 不是一个协议,而是一个协议族的统称,里面包括了 IP ...

  8. HTTP协议学习笔记(四)

    HTTP协议学习笔记(四) 与 HTTP 协作的 Web 服务器 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟主机实现多个域名 ...

  9. HTTP协议学习笔记(三)

    HTTP协议学习笔记(三) 1.状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务端向服务端发送请求时,描述返回的请求结果.借助状态码,用户可以知道服务端是正常处理了请求,还是出现了错误 ...

随机推荐

  1. URAL 1776 C - Anniversary Firework DP

    C - Anniversary FireworkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

  2. delphi HTML代码

    ################################属性 设置################################################字体设置{//-------- ...

  3. Android自己定义DataTimePicker(日期选择器)

    Android自己定义DataTimePicker(日期选择器)  笔者有一段时间没有发表关于Android的文章了,关于Android自己定义组件笔者有好几篇想跟大家分享的,后期会记录在博客中.本篇 ...

  4. sqoop的安装与使用

    1.什么是Sqoop Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具.充分利用MapReduce并行特点以批处理的方式加快传输数据.发展至今 ...

  5. [原]生产环境下的nginx.conf配置文件(多虚拟主机)

    [原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在 ...

  6. sql操作事务SqlTransHelper类实现

    具体实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  7. 源码分析shiro认证授权流程

    1. shiro介绍 Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”: 授权 - 访问控制: 密码加密 ...

  8. The Romantic Hero

    Problem Description There is an old country and the king fell in love with a devil. The devil always ...

  9. Server Tomcat v7.0 Server at localhost failed to start.错误可能原因之一

    故事由来: 学Servlet中,突然发现启动Tomcat时出现这个问题 故事梗概: 学习servlet尽然能碰到服务器起不来的,百思不得其解,然后我百度,我FQgoogle,找stackoverflo ...

  10. 用java 删除mongodb的数据

    import java.net.UnknownHostException; import com.mongodb.BasicDBObject;import com.mongodb.DB;import ...