异构WSNs通信系统设计与实现
2014-12-24张溢斐李小龙
张溢斐 李小龙
(重庆邮电大学工业物联网与网络化控制教育部重点实验室,中国 重庆400065)
0 引言
近年来,物联网发展迅速,在工业现场、智能电网、仓储物流等领域得到了广泛应用。作为物联网的重要组成部分,无线传感器网络(Wireless Sensor Networks,WSNs)是信息通信领域的一个热点。无线传感器网络包含诸多协议标准,如ZigBee、6LoWPAN、ISA 100.11a、RFID等,随着各种技术的发展,采用不同传感网协议的网络在现实生活中相互通信成为一个亟待解决的问题。
IEEE 802.15.4[1]是一种低功耗、低速率、短距离无线传输协议,描述了低速率无线个人局域网的物理层和媒体接入控制协议,具有可扩展性,且只规定了底层,即单一的媒体访问控制(MAC)层和多样的物理层,至于MAC以上的协议,可以采用不同的方案。由此就产生了多种不同的技术,比如ZigBee、6LoWPAN、ISA100.11a等。基于ZigBee协议[2]的应用已经遍布于工业控制、智能测绘、医疗、家居等各行各业,在技术的成熟度和产品的市场化方面都要比6LoWPAN更有优势,但是6LoWPAN也有其特有的优势,即6LoWPAN[3]网络层采用IPv6协议,使得6LoWPAN设备能够拥有IPv6地址,并在网络层面上通信,甚至可以接入互联网,使互联网的应用扩展到物理世界的任意角落。
本文研究了ZigBee网络和6LoWPAN网络,设计实现了ZigBee和6LoWPAN这两种不同传感器网络之间相互通信的异构WSNs网关系统,在不改变ZigBee与6LoWPAN协议的基础上,成功解决了两种无线传感器网络间不同协议互通的问题,对促进异构网络之间的无缝融合有积极意义。
1 异构传感网通信系统体系结构
图1 异构WSNs节点通信应用场景Fig.1 Heterogeneous WSNs communication scenario
1.1 网关通信应用场景
图1所示为本文所实现的ZigBee与6LoWPAN传感器网络中异构节点互通的场景。ZigBee网络与6LoWPAN网络通过本文设计的一个网关实现异构传感网节点间的互通,并可接入IP网络与互联网上的节点实现互通。
1.2 网关协议转换模型
图2 协议转换模型Fig.2 Protocol conversion model
图2所示是在图1的具体应用场景中网关的协议转换图。ZigBee网络接入模块与6LoWPAN接入模块分别通过串口与ARM处理器相连,一起构成网关的整体。ZigBee节点采集到的数据通过无线发送给ZigBee协调器,即ZigBee网络接入模块,解析出数据的有效载荷,通过SLIP协议发给ARM处理器,转换成IPv6数据,再通过SLIP协议发送给6LoWPAN边界路由器,即6LoWPAN网络接入模块,继而转发给6LoWPAN节点。
1.3 网关功能描述
网关由ARM处理器、ZigBee模块、6LoWPAN模块组成,ZigBee模块与6LoWPAN模块还分别作为ZigBee网络的协调器与6LoWPAN网络的边界路由器。
网关功能主要有:
(1)基本协议解析功能,包括ZigBee协议、6LoWPAN协议以及IPv6协议。
(2)服务查询功能,主要通过在网关建立起一个存储传感网节点EUI-64地址与所提供服务的服务表实现,节点向网关发送服务查询请求命令,网关向节点返回服务查询响应。
(3)协议转换功能。EUI-64地址要转换成IPv6地址,ZigBee数据包转换成IPv6数据包。
2 关键技术
2.1 服务注册及服务查询
2.1.1 服务注册
服务注册是将两个传感网中所有节点的EUI-64地址与其所提供的服务建立映射关系,将这些服务和提供服务的节点信息存储在服务表中,从而使网关具有服务查询功能[5]。
首先是网关初始化。ZigBee网络和6LoWPAN网络采用动态组网方式自动组网,之后ZigBee节点上传自身信息给ZigBee协调器,包括EUI-64地址、提供的服务类型(温湿度检测、设备控制等),6LoWPAN节点同样上传信息给边界路由器,最后ARM处理器汇总信息,建立映射并生成服务表。服务表如表1所示。
表1 服务表Tab.1 Service table
2.1.2 服务查询
服务查询是传感网节点向网关提出服务查询请求,网关向节点返回服务查询响应。
为了传感器节点能查询到服务提供者的EUI-64地址,设立了服务代码表,如表2所示,定义了服务查询请求以及服务查询响应的数据包格式,如图3和图4所示:
(1)服务代码表
把温度、湿度、一氧化碳浓度等服务类型分别用以下代码表示,如表2所示:
表2 服务代码表Tab.2 Service code table
(2)服务查询请求
图3 服务查询请求数据包格式Fig.3 Service query request frame format
其中,字符“?”为数据包的标志位,字符“P”为数据包的识别符,字符“1”为要查询的服务——湿度。
(3)服务查询响应
图4 服务查询响应数据包格式Fig.4 Service query response frame format
其中,字符“!”为数据包的标志位,字符“P”为数据包的识别符,字符“1”为要查询的服务——湿度,EUI-64为湿度服务提供者的EUI-64地址。
节点查询到服务提供者的EUI-64地址后,就可以构造报文发送到相应节点了。
2.2 应用层通信协议设计
ZigBee节点与6LoWPAN节点发送数据的时候要把自身的EUI-64地址、查询得到的6LoWPAN的EUI-64地址以及真正要发送的数据打包放在应用层负载中,因此,应用层数据通信协议就需要包含这些必要信息数据。在传输过程中统一的数据报文格式[6]如图5所示。
图5 应用层数据格式Fig.5 Application layer data format
2.3 SLIP封装与解封装
ZigBee无线模块与6LoWPAN无线模块都通过串口与ARM处理器相连,数据的传输通过串口进行。为了增加Linux主控单元和WSN子网接入模块之间通信的安全性,在报文传输过程中采用SLIP协议封装[7],接收数据时可以通过SLIP的标志位判断数据是否完整来决定接收或者丢弃,SLIP作为链路层协议直接承载IP数据包。SLIP协议封装具体格式如图6所示,将原报文中的字符0xC0替换为0XDB、0xDC,将字符0xDB替换为0xDB、0xDD,解封装是反之即可,这里不再赘述。
图6 SLIP的封装过程Fig.6 Encapsulation process of SLIP
2.4 UDP/IPv6数据包的封装与解封装
ZigBee数据需要转换成IPv6数据来与6LoWPAN网络通信,且6LoWPAN传输层采用UDP协议,因此UDP/IPv6数据包封装与解封装必不可少。
当应用层的数据产生后,首先要在传输层添加UDP首部,然后在网络层添加IPv6首部,最后在数据链路层添加SLIP首部,生成UDP/IPv6数据包的过程如图7所示。
ARM板串口接收到ZigBee模块发送来的数据包,SLIP解封装后得到应用层数据,依次取出报文中的各个变量,即ZigBee节点EUI-64地址、6LoWPAN节点的EUI-64地址、数据包长度、纯数据。按照IPv6首部、UDP首部、UDP伪首部、UDP校验和的规定依次填充各个变量,最终构造出UDP/IPv6数据包[8]。然后添加SLIP首部后通过串口发送给6LoWPAN边界路由器,边界路由器将IPv6报文压缩到只含必要内容,且能在以IEEE 802.15.4标准为底层协议的WSN内传输的小数据包,之后发送给目的6LoWPAN节点。
6LoWPAN节点发送数据到ZigBee节点时,要进行UDP/IPv6数据包的解封装,过程与前面所述相反。
图7 UDP/IPv6数据包封装过程Fig.7 Encapsulation process of UDP/IPv6 data packets
2.5 网关节点交互流程
节点交互过程主要分为3个阶段:网关初始化阶段、服务查询阶段以及数据传输阶段。图8所示为ZigBee节点(A)、异构WSNs网关(B)、6LoWPAN节点(C)之间的交互流程[9]。主要描述了3个阶段中网关初始化生成服务表后,由ZigBee节点发起服务查询请求,网关返回服务查询响应,ZigBee节点得到目的6LoWPAN节点地址后,发送数据到6LoWPAN节点,6LoWPAN节点接收数据的整个过程。
(1)网关初始化
网关初始化包括网络初始化和服务注册。网关启动后,ZigBee节点和6LoWPAN节点分别自动组网,建立ZigBee网络和6LoWPAN网络,之后节点向网关上传自己的EUI-64地址和所提供的服务,完成服务注册,由此网关建立起节点EUI-64地址与所提供服务的一一映射,存储ZigBee节点和6LoWPAN节点的EUI-64地址及节点提供的服务。
图8 网关节点交互流程Fig.8 Interaction flow of gateway nodes
图9 网关测试系统示意图Fig.9 Gateway test system schematic diagram
(2)服务查询
节点A向网关B发起服务查询请求,B收到请求后在服务表中查询此服务由哪个6LoWPAN节点提供,查询到是节点C后,把节点C的EUI-64地址回复给节点A,于是节点A就知道了节点C的EUI-64地址。
(3)数据传输
经过上面两步网络初始化和服务查询之后,节点A知道了提供所需服务的节点的EUI-64地址,然后构造这样的报文,即把ZigBee的EUI-64地址、6LoWPAN的EUI-64地址加上要发送的数据打包按照ZigBee协议发给网关,在网关处进行如下处理:ARM处理器接收到数据包后依次取出ZigBee的EUI-64地址、6LoWPAN的EUI-64地址以及数据,再调用UDP/IPv6封装程序封装成一个IPv6数据包。然后通过串口发到6LoWPAN边界路由器的网络层,再往下传送到适配层进行分片、压缩等处理,传给MAC层及物理层,通过无线发送到目的6LoWPAN节点,至此完成了数据从ZigBee节点到6LoWPAN节点的全过程。
3 网关测试系统搭建
网关测试系统示意图如图9所示:包括ARM处理器、ZigBee无线通信模块、6LoWPAN无线通信模块、ZigBee与6LoWPAN网络节点。ARM处理器采用三星公司的ARM9处理器芯片S3C2440,ZigBee模块采用CC2530芯片,6LoWPAN模块也采用CC2530芯片。ARM处理器与两个无线通信模块都采用串口相连。ZigBee模块同时作为ZigBee网络的协调器,6LoWPAN模块也同时作为6LoWPAN网络的边界路由器。两个传感网节点通过无线方式发送数据给ZigBee模块和6LoWPAN模块。
3.1 ZigBee网络软件设计
本文的ZigBee网络软件设计采用TI免费协议栈ZStack-CC2530-2.3.0-1.4.0,工具软件采用IAR Embedded Workbench for 80517.60。在TI免费协议栈的基础上,通过修改其应用层来实现不同的功能。
3.2 6LoWPAN网络软件设计
在本文的6LoWPAN传感网中,我们采用本实验室独立开发的6LoWPAN协议栈6lowsn_stack_v0.55,本协议栈已经实现了6LoWPAN的基本功能如报头压缩、分片等。工具软件采用IAR Embedded Workbench for 80517.60。用于6LoWPAN协议栈的芯片解决方案采用单芯片方案,即此协议栈可以单独运行在一块CC2530芯片上,成本和复杂性都比较低。
图10 服务查询抓包结果Fig.10 Capture package results of service query
图11 数据传输抓包结果Fig.11 Capture package results of data transmission
4 测试结果与分析
网关启动后,ZigBee节点与6LoWPAN节点分别各自组网,并在网关处建立起服务表。ZigBee节点向网关发送服务查询请求,网关向ZigBee节点返回服务查询响应。之后ZigBee节点向网关发送数据,网关经过处理后发送给目的6LoWPAN节点,完成了服务查询与数据传输的全过程,使用Chipcon Packet sniffer软件对整个过程进行抓包,抓包结果如下:
图10是服务查询抓包结果。可以看出网关启动后,ZigBee节点与6LoWPAN节点分别各自组网,之后ZigBee节点发送服务查询请求命令“?P1”,网关查询服务表后得到服务“1”提供者6LoWPAN节点的EUI-64地址,于是向ZigBee节点返回服务查询响应 “!P1”加上6LoWPAN节点的EUI-64地址,服务查询阶段结束。
图11是数据传输抓包结果。ZigBee节点把自身EUI-64地址、查询到的6LoWPAN的EUI-64地址和要发送的数据“am”打包作为应用层数据发送给网关。网关接收到数据包后经过解析、封装IPv6包,发送给6LoWPAN边界路由器,最后转发给目的6LoWPAN节点,抓包显示收到ZigBee节点发来的数据包“am”。
5 结束语
本文对ZigBee和6LoWPAN这两种不同协议类型的传感网之间的通信进行了研究,并给出了实现方案,详细阐述了实现异构传感网通信的关键技术,并搭建了测试平台进行软硬件结合的测试,达到了设计的初衷,满足了异构传感网通信的需求,实现了两者之间的点对点通信。在不更改协议栈的基础上进行的网关设计具有较强的实用性和可扩展性,方便接入IPv6网络以及更多不同协议的传感网进行自由通信。
[1]蒋挺,赵成林.紫蜂技术及其应用[M].北京:北京邮电大学出版社,2006.
[2]ZigBee Specification.Version 1.0[R].ZigBee Alliance,2004.
[3]Shelby z,Bormann c.6LoWPAN:The wireless embedded Internet[M].New York,NY,USA:John Wiley&Sons Ltd.,2009.
[4]戚剑超.基于IPv6的无线传感器网络应用研究[D].合肥:合肥工业大学,2009.
[5]孙纪敏,沈玉龙,孙玉,张思东.传感器网络接入Internet体系结构和服务提供方法[J].通信学报,2008,29(4):84-89.
[6]吴功宜,董大凡,王珺,刘乾.计算机网络高级软件编程技术[M].北京:清华大学出版社,2007.
[7]Andrew S.Tanenbaum.Computer Networks[M].3rd edition.北京:清华大学出版社,2002.
[8]Qing Li,Tatuya Jinmei,Keiichi Shima.IPv6 详解,卷 1:核心协议实现[M].北京:人民邮电出版社,2009.
[9]Wang r c,Chang r s,Chao h c.Internetworking between ZigBee/802.15.4 and IPv6/802.3 network[R].Taipei,China:NICI IPv6 Steering Committee,2007.