ZigBee的一种高效WSN网络层设计
2011-06-22李蔚童玲田雨
李蔚,童玲,田雨
(电子科技大学自动化工程学院,成都611731)
李蔚(硕士研究生),研究方向为测控技术与仪器;童玲(教授、博士生导师),研究方向为测试计量技术及仪器;田雨(讲师、博士),研究方向为微波与通信测试。
引 言
微机电系统、片上系统、无线通信和低功耗嵌入式技术的飞速发展孕育出无线传感器网络(wireless sensor networks,WSN),并以其低功耗、低成本、分布式和自组织的特点带来了信息感知的一场变革。无线传感器网络具有能量受限、多跳通信、拓扑结构频繁多变等特征[1]。ZigBee[2]规范是基于IEEE802.15.4[3]标准的,具有低传输速率、低功耗、协议简单、时延短、网络容量大、优良的网络拓扑能力等优点。这些优点极好地支持了无线传感器网络,因此许多研究机构把ZigBee作为事实上的无线传感器网络国际标准[4]。
1 无线传感器网络体系结构
如图1所示,无线传感器网络的体系结构类似于TCP/IP协议体系,由物理层、数据链路层(MAC)、网络层、传输层和应用层组成[5]。物理层负责数据的调制解调、信道编码、无线发送与接收;MAC层负责数据成帧、帧检测、媒体访问和差错控制;网络层负责路由生成与路由选择,维护等;传输层负责控制数据流的传输,保障数据通信质量。
2 网络层实现平台与实现方案
本文以TI公司推出的符合IEEE802.15.4标准芯片CC2531为核心的硬件平台。CC2531以8051微处理器为内核,自身携带的射频收发模块既满足无线通信需求,又满足了低功耗设计。
在无线传感器网络中,网络层是体系结构中的核心,主要功能:
①为上层提供网络管理接口,上层可通过接口有效监视、控制网络运行,查询路由表、邻居表等信息;
②负责路由生成与维护,路由选择及数据转发。
图2是ZigBee规范给出的网络层的参考模型。数据服务可以通过网络层数据服务访问点访问(NLDE_SAP),管理服务可以通过网络管理服务访问点(NLME_SAP)访问。
图1 无线传感器网络体系结构
图2 网络层参考模型
2.1 网络层数据服务实现
如图3所示,网络层的数据服务分为发送和接收服务。网络层接收到MAC数据帧,由函数 handle_mcps_data_ind()对其进行解析,交给网络层数据帧或命令帧处理函数处理。对于网络层数据帧,处理函数将判断自己是否是目的地或该帧是否是广播帧。如果是,则送上层处理;反之将数据帧交给转发函数 nwk_forward()处理,为该帧寻找路由,并通过发送函数nwk_tx()发送到MAC层。对于需要转发的命令帧,则同样交由转发函数处理。
图3 网络层数据服务实现
对于上层实体,可通过 nlde_data_request()发送数据,网络层同样将交由转发函数处理并发送出去。转发函数在发送和接收处理过程中,实现网络层一个重要功能,即数据帧选择路由,或选择性地把数据帧缓冲起来并发起路由发现。
2.2 网络管理服务实现
网络管理服务主要是为上层提供网络管理接口。
网络的建立进程由协调器上层通过调用nlme_network_formation_req()发起。首先通过调用MAC层的能量扫描服务,对指定的信道进行能量检测。扫描完成之后选择能量可接受范围的信道,接着调用MAC层的主动扫描服务对选择出来的信道进行网络发现。主动扫描完成之后,选择存在网络最少的信道,进行网络建立。
设备加入网络进程是设备的上层通过调用nlme_discovery_network_req()发起的。函数首先调用MAC层的主动扫描服务在指定信道上进行网络发现,旨在发现通信范围内的网络设备,并存储到自己的邻居表中。网络发现完成之后,选择一个网络深度最小设备作为父节点,并发出入网请求。父节点收到入网请求之后,给请求设备分配一个网络地址并附在请求响应中。请求设备接收到响应之后,设备成功的加入网络。
设备离开网络的进程是上层通过调用nlme_leave_req()发起的,函数将广播一个离开命令,其他设备收到离开命令后,将删除对应设备的路由表项和邻居表项,表示设备已经离开了网络。
3 路由算法实现
路由算法是网络层的核心和难点,无线传感器网络的应用特点要求路由算法简单高效。本文基于ZigBee规范,主要实现最小路由成本的多跳路由算法和多对一路由算法。最小路由成本算法是以最小路由成本选择最优路径,多对一路由算法是辅助算法。为了减轻汇聚节点附近的节点负载,本文把支持该算法的设备定义为集中器。为实现路由算法,本文制定了3个命令:路由请求命令、路由响应命令、路由记录命令。同时制定3种表:路由表(表1)、路由发现表(表2),路由记录表(表3)。路由器需要维护路由发现表和路由表,集中器需要维护3种表。
表1 路由表项
表2 路由发现表项
表3 路由记录表项
3.1 路由发现的发起
路由发现的发起一般在转发函数处理过程中,没有相应到目的设备的路由时,则调用nwk_init_discovery_route()发起路由发现。该函数将检查路由发现表,看其是否有与发起者和路由请求命令帧序列号相对应的表项。如果有,则认为已经发起了路由发现,这时就可以等待路由发现完成;反之,则广播一般的路由请求命令,同时向路由发现表添加新的表项,表项的路由请求命令帧序列号设为路由请求命令帧的序列号,发起者地址设为节点地址,发送者地址设为发送路由请求命令的地址,累积的前向成本设为0。网络层还需向路由表添加新的表项,表项的目的地址设置目的设备的地址,状态域设置为路由发现中其他标志域名都设置为FALSE。
对于支持多对一路由算法的集中器,路由发现的发起是周期性的,广播多对一路由请求命令帧,路由请求的目的地址为广播地址,这是为了让其他设备可以维持到集中器的路由。集中器不用添加新的路由表和路由发现表项。
3.2 处理路由请求命令
其他设备接收到广播的路由请求命令时,分为一般路由请求和多对一路由请求处理。处理一般的路由请求的处理流程如图4所示。
图4 处理一般路由请求流程
对于多对一路由请求,路由发现表项的处理和一般的路由请求的处理是一样的,区别在于路由表中是建立到集中器的路由。路由表项的Many-to-one域和路由记录发起域设为TRUE,同时还应转发该路由请求命令帧。
3.3 处理路由回复命令
路由回复命令是一般的路由请求发起的,设备的接收到路由回复命令时,处理流程如图5所示。
3.4 发起和处理路由记录命令
集中器周期性发起路由发现时,接收设备都建立了到集中器的路由,但集中器并没有到其他设备路由。多对一路由算法采取了一种策略:设备在向集中器发送数据之前,向集中器发送一个路由记录命令,目的是让集中器可以记录设备转发数据的路径,路径是由到集中器的路由确定。初始时,路由记录命令在载荷域记录当前设备的地址,中继计数记为1。
图5 处理路由回复流程
设备接收到路由记录命令时,把自己的网络地址附在命令帧的载荷中,并把中继计数加1,同时转发该路由记录命令到下一跳设备。如果是集中器接收到路由记录命令,则向路由记录表添加新的表项,表项的目的地址域设为路由记录命令的发起者,中继计数设为命令帧载荷中的中继计数,载荷中的地址集合则存储在路径域。
当集中器向设备发送数据时,则把相应的路由记录表项的路径域附在数据帧中,设备中继该数据帧时,则根据数据帧的路径域来转发到目的设备。
结 语
本文的实现方案在CC2531的硬件平台上进行了验证,实验表明,路由算法满足无线传感网络的多跳通信和低功耗要求,同时有效减轻了网络设备的负载。网络组网具有自组织性,网络管理接口扩展性强。
[1]Akyildiz IF,Su W,Sankarasubramaniam Y,et al.A Survey On Sensor Networks[J].IEEE Communications M agazine,2002,40(8):102-114.
[2]ZigBee Alliance.ZigBee Specification ZigBee Document 053474r17[S],2008-01-17.
[3]IEEE 802.15.4-2003.Wireless Medium Access Control(MAC)and Physical Layer(PHY)Specification for Low Rate Wireless Personal Area Networks[S],2003.
[4]孙利民,李建中,陈渝.无线传感器网络[M].北京:清华大学出版社,2005.
[5]王殊,等.无线传感器网络的理论及应用[M].北京:北京航空航天大学出版社,2007.