基于ZigBee技术的传感器无线信息采集
(3) 率先给网络分配一个唯一的PAN标识符。这个PAN标识符使得网络中的设备可以使用16位短地址来和网络中的其他设备通信。
3.2 网络层服务规范
3.2.1 网络层数据服务(MCPS)
NLDE-SAP的使命是在同一水平的应用实体间提供传输的应用协议数据单元(APDU)服务[22]。NLDE-SAP支持的原语包括nlde-data请求、证实和指示原语。
(1) NWK数据请求原语nlde-data.request
NWK数据请求原语nlde-data.request请求把一个APDU(NSDU)从本地APS子层传送到一个或多个节点的APS子层实体。当有APUD(即NSDU)需要传送到对等APS子层实体时,本地APS子层实体就产生该原语。
(2)NWK数据证实原语nlde-data.confirm
NWK数据证实原语nlde-data.confirm用来报告请求从本地APS子层实体向对等的APS子层实体发送NSDU结果。该原语由本地NLDE产生,作为接收到的nlde-data.request后的响应。
(3)NWK数据指示原语nlde-data.indication
NWK数据指示原语nlde-data.indication指示一个数据PDU(NSDU)从NWK传送到本地APS子层实体。NLDE收到来自MAC层实体的正确寻址数据帧后就像APS子层发送该指示原语。 3.2.2 网络层管理服务(MLME)
网络管理服务是由NLME提供,允许应用程序和堆栈作用[23]。NLME实体需提供以下服务:
(1) 配置新入网设备:设备应当由足够的堆栈用来确保正常工作,除此之外,在配置选项中包含初始化ZigBee协调器的操作和完成对现有网络的连接。 (2) 初始化一个网络:使之具有建立一个新网络的能力。
(3) 连接或离开网络:具备对网络的控制能力包括连接和离开,以及具备为组建一个ZigBee协调器或ZigBee路由器来控制设备连接断开网络的能力。
15
基于ZigBee技术的传感器无线信息采集
(4) 寻址:ZigBee协调器和ZigBee路由器能够为先加入网络的设备分配唯一网络地址。
(5) 相邻设备发现:具备发觉、记录和汇报有关一跳相邻设备信息的能力。 (6) 路由发现:具有发现和记录有效地传送信息的网络路由的能力。 (7) 接收控制:控制设备接收状态的能力,用于接收数据的接收时间接收时间,控制时间的长度,确保MAC层之间同步和数据正常接收等。 NLME-SAP允许在上层和NLME之间传送命令帧。NLME-SAP支持的管理原语有nlme-network-discovery请求和证实原语、nlme-network-formation请求和证实原语、nlme-permit-joining请求、证实和指示原语、nlme-start-router请求和证实原语、nlme-join请求、证实和指示原语、nlme-direct-join请求和证实原语、nlme-leave请求、证实和指示原语、nlme-reset请求和证实原语、nlme-sync请求和证实原语、nlme-get请求和证实原语、nlme-set请求和证实原语。
3.3 网络层帧格式
通用的网络层帧由图3.3所示,第一个域是帧控制域,帧类型决定这是一个网络层数据帧或者网络层命令帧。
图3.3 通用的网络帧格式
发现路由子域决定该帧的路由框架的选择。若设置为关闭或者打开,并且到
16
基于ZigBee技术的传感器无线信息采集
目的地的路由已经建立,该帧就会被发送到下一跳。倘若没有建立到目的地址的路由并且发现路由设置为关闭状态,设备不会开始新的路由发现。帧将被丢弃或者缓冲,一直到路由变为可用[24]。如果发现路由设置为启用,并且没有到目的地址的路由,那么就进行路由发现。最后,如果发现设置为强制路由发现,即便已经存在到目的地址的路由,为了传输此帧也会进行路由发现。
如果多播标志设置为1,该帧使用多播发送。如果网络层启用安全机制,那么安全子域设置为1。如果帧包含源路由域,然后帧控制域的源路由域设置为1。源路由技术中数据包的发送者可以指定该路由中可能用于转发帧的节点的16位短地址列表。源设备中转发索引设置为0,每次帧被路由器转发它就会增一。转发计数就是该帧被转发的次数。
如果IEEE地址子域设置为1,网络层可以选择性地在网络帧只能够包含64位的IEEE地址。源和目的设备的16位网络地址总是包含在帧中。半径域决定了帧允许的最大跳数。序列号帮助跟踪被设备发送的序列。发送每次新的帧,序列号就会增一。
只有帧被多播时,多播控制域才有存在的意义,多播模式子域决定了该帧被设备以非成员模式(多播模式为00)还是成员模式(多播模式为01)发送。非成员半径子域限制了多播帧被非成员设备转发的次数。非成员半径在每次帧被非成员设备转法时减一。当非成员半径域变成零时,该帧不再被非成员设备转发,如果非成员半径值设置为0x07,则次数无限制。
数据帧和命令帧的格式如图3.4所示,图中路由域组合了帧控制域和网络层有效载荷域。网络层命令在表中列出。每个命令都由一个叫做网络层命令标识符的8位数值确定。网络层命令标识符和命令有效载荷组成了网络层帧的有效载荷。网络层命令如表3.1。
17
基于ZigBee技术的传感器无线信息采集
图3.4 网络层(a)数据帧格式和(b)命令帧格式
表3.1 网络层命令
命令标识符 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000A
命令 路由请求 路由回复 回复错误(网络状态)
离开 路由记录 重新加入路由 重新加入响应 链路状态 网络报告 网络更新
3.4 网络层路由算法
路由是选择讲消息中继到目的设备的路径的过程。路由器的作用即为经过的数据帧寻找到达目的地址的最佳传输路径。常见的路由算法有Tree路由算法、AODV路由算法、T-AODV路由算法。
18
基于ZigBee技术的传感器无线信息采集
3.4.1 Tree路由算法
树形网络的结构如图3.4所示。在ZigBee网络中,每个节点将被分配一个16位短地址作为一个独有的网络地址。地址的分配采用的是分布式寻址方案,该分配方法提供一个有线的网络地址块为每一个与其他节点连接的潜在设备,设备的地址也就是地址块的实际地址,子节点们按照地址分配的原则分配其父节点留给它们的剩余的地址。Tree路由算法的本身的网络分布是注定的,设备只能从它的父设备获取网络地址。
协调器是ZigBee网络的核心,其网络深度为0,协调器子设备深度为1,网络协调器决定了最大深度,多跳网络结构中存在多个不同深度的协调器,所以最大深度一定是大于1。一个设备能连接Cm个子设备,Lm表示网络具有的最大深度,一个父设备有Rm个具有路由器功能的子设备,当网络深度为d时,通过函数Cskip(d)算出父设备分配给它具有路由转发能力的子节点设备的地址的长度,如式3.1[25]。
Cskip(d)?(式3.1)
?1?Cm*(Lm?d?1),Rm?1(1?Cm?Rm?Cm*(Rm)^(Lm?d?1)/(1?Rm),Rm?1
3.4.2 AODV路由算法
AODV是按需距离矢量路由,是通过计算路径的通信成本选择最佳路径的。路径的通信成本是指整个路径上所有连接的成本之和。在网络的源设备充足,AODV协议将定期向网络设备发送HELLO消息广播,目的是监测和维护路由。当发现某一节点设备不可用,导致网络断开时,节点就会通过发送error报文给因为路径断开无法达到的节点要求其删除相应的路由信息,完成对网路的修复。路径寻找是指寻找源地址和目的地址之间的所有可能路径。当源节点S向目标节点D发送数据包并发现D节点不可到达时,S节点会通过广播发起路由请求,即向网内设备发送广播帧RREQ[26]。RREQ帧格式中包含之前源节点到目标节点的序
19