APP下载

基于CoAP协议的无线传感网架构设计

2018-10-24付康为孙玲任密林施佺张晨沈乐威王宏彬

现代电子技术 2018年20期
关键词:路由器客户端边界

付康为 孙玲 任密林 施佺 张晨 沈乐威 王宏彬

摘 要: 基于REST架构的CoAP协议是6LowPAN协议栈中的应用层协议,可运行在内存受限和计算能力有限的嵌入式设备中,并具有请求响应工作模式和可靠的数据传输性能,在物联网领域中具有极大的发展潜力。然而,现有基于CoAP协议设计实现的客户端较为复杂,影响了它在该领域的应用和推广。针对这一现状,提出一种新型CoAP应用架构,该架构通过在CoAP协议基础上增加一个链接服务器,实现CoAP客户端和CoAP服务器之间的通信,简化了基于CoAP架构的客户端设计,为推广CoAP架构在物联网领域的应用提供了参考模型。

关键词: CoAP协议; 6LowPAN协议栈; IPv6; 无线传感器网络; 物联网; 数据传输; 嵌入式设备

中图分类号: TN929.5?34 文献标识码: A 文章编号: 1004?373X(2018)20?0049?04

Abstract: The CoAP protocol based on REST architecture is the application layer protocol in the 6LowPAN protocol stack, can run on embedded devices with limited memory and computing capability, and has the request?respond work mode, reliable data transmission performance, and great development potential in the IoT field. However, the current client designed and implemented on the basis of the CoAP protocol is relatively complex, and its application and popularization in the IoT field are affected. In view of this situation, a new CoAP application architecture is proposed. In this architecture, a link server is added on the basis of the CoAP protocol, so as to realize communication between the CoAP client and CoAP server, simplify the design of the client based on the CoAP architecture, and provide a reference model for the promotion of CoAP architecture application in the IoT field.

Keyword: CoAP protocol; 6LowPAN protocol stack; IPv6; wireless sensor network; IoT; data transmission; embedded device

0 引 言

随着互联网的普及和物联网技术的深入研究与广泛应用,网络地址资源有限的问题日益突出。为解决IPv4协议存在的不足,下一代互联网协议IPv6正被越来越多的推广和应用[1]。6LowPAN作为一种新型的无线传感器网络技术,基于和ZigBee技术相同的IEEE 802.15.4标准,具有和IPv6互联网兼容的特点,成为人们研究和关注的热点之一。6LowPAN技术可以让每个传感器节点拥有独一无二的IPv6地址,便于无线传感器网络与IPv6互联网的融合,从而实现无线传感器网络和互联网络的无缝连接,方便用户远程对传感器节点进行访问和控制。

在6LowPAN协议栈中,基于REST架构的CoAP协议是其应用层协议,其架构如图1所示。

为了利用UDP协议占用硬件资源少、支持多播等优点,克服其数据传输不可靠的缺点,CoAP采用双层架构:Transaction层负责处理节点间的信息交换,同时增加了对多播的支持;Request/Response层用来传输对资源进行操作的请求和响应信息,其REST架构也是基于该层。这种双层方式使得CoAP协议在没有采用TCP协议的情況下也可以实现数据的可靠传输。

目前,Contiki和Tiny OS这两大开源的物联网操作系统实现了CoAP服务器部分,可以将代码移植到嵌入式硬件设备中。很多大学也在搭建基于CoAP的实验平台,例如哈尔滨工程大学使用Contiki系统的CoAP服务器实现了一个物联网监测平台[2]。

1 CoAP应用协议架构

1.1 CoAP协议一般架构分析

CoAP应用的一般架构如图2所示。图中,每个传感器节点实际就是一个CoAP服务器,传感器上的每一个硬件资源被描述为一个URL,例如“CoAP://[aaaa::1]/led”表示IPv6地址为aaaa::1的传感器节点上的LED硬件资源。用户可以通过get,put,post和delete四种方式对传感器节点上的硬件资源进行访问或控制。

图2中的RPL是低功耗有损网络IPv6路由协议,该协议能够让众多的传感器节点实现点对点通信,从而组成无线传感器网络[3]。边界路由器是6LowPAN无线传感器网络与IPv6互联网络的桥梁,其作用是实现无线传感器网络的数据包和IP数据包之间的相互转换。

图2中的上位机软件用于访问CoAP服务器。目前,可以访问CoAP服务器的客户端软件主要有两种实现版本,一种是基于C语言的libCoAP,另一种是基于Java的Californium。然而,libCoAP源码只能在Linux系统上运行,Californium则不支持手持设备(例如IOS)。由于现有这两种版本的源码较为复杂,移植到Windows或其他平台上的步骤较为繁琐,十分不利于CoAP客户端的进一步开发,从而影响了CoAP协议在物联网领域的推广和应用。

1.2 改进的CoAP架构

为了方便客户端软件的开发,并使得任意客户端都可以方便地对CoAP服务器进行访问和控制。本文针对图2所示架构的不足,提出一种如图3所示的改进CoAP架构。由图3可见,该架构中的边界路由器不仅仅起到一个数据转换的功能,还具有实现CoAP协议的功能,从而使系统能够适应不同的客户端。

图3所示架构中,客户端访问特定CoAP服务器的流程如图4所示。客户端通过TCP协议连接到链接服务器,向服务器发送CoAP指令字符串;链接服务器解析CoAP指令字符串,然后组成libCoAP程序的参数并调用libCoAP程序;libCoAP程序通过无线传感器网络向客户端需要访问的CoAP服务器发送请求Request。CoAP服务器接收到该Request后生成相应的Response,发送至libCoAP程序。libCoAP程序再将该response信息重定向至边界路由器中的一个File(文件)中,链接服务器读取该文件,然后将文件中的内容传输给客户端。至此,客户端完成了访问特定CoAP服务器的流程。

2 改进型CoAP架构设计

2.1 CoAP服务器设计

2.1.1 CoAP服务器硬件设计

本文设计的CoAP服务器硬件原理图如图5所示,其中,选用CC2530微处理器作为硬件运行平台[4];DS18B20数字式温度传感器用于获取当前传感器节点的环境温度。继电器的作用是控制传感器节点周围的设备,可以实现用户对远程设备的开关控制。该CoAP服务器主要实现如下功能:

1) 传感器采集到环境信息后发送至微处理器,微处理器通过天线将数据发送给边界路由器。

2) 微处理器接收边界路由器传输的数据包,对数据包进行处理后发送控制命令至继电器。

图5 CoAP服务器硬件原理图

Fig. 5 Schematic diagram for hardware of CoAP server

2.1.2 CoAP服务器软件设计

CoAP服务器的软件架构如图6所示,该软件架构移植了Contiki操作系统[5]。图中,uip6是一个简易的IPv6网络协议栈,为嵌入式设备融入IPv6互联网提供了条件。由于最大MTU,MAC层路由等原因,IPv6不能直接运行在IEEE 802.15.4 MAC层之上,图中的6LowPAN作为适配层同时提供对上下两层的支持。该层一方面将上层的IPv6数据包进行头部压缩和分片,传输至IEEE 802.15.4协议栈中,另一方面将从IEEE 802.15.4协议栈中接收到的数据包进行重组,传输至IPv6的网络层[6]。

2.2 边界路由器的设计

2.2.1 边界路由器硬件设计

边界路由器的硬件设计如图7所示。

串口用于微处理器和openWRT路由器之间的数据交互。微处理器中移植了Contiki操作系统,并在该操作系统下完成了边界路由器和6LowPAN协议栈相关程序设计。openWRT是一种嵌入式Linux系统[7],该系统移植了libCoAP和链接服务器的代码,负责串口数据和IPv6互聯网数据的交换和路由。

边界路由器中的微处理器和openWRT路由器之间的通信采用了SLIP协议[8]。SLIP协议实现了在串行通信线路上运行TCP/IP协议及其应用服务的功能。

2.2.2 链接服务器的程序设计

链接服务器是本文设计的改进型CoAP架构的核心部分,其程序设计使用了Linux操作系统下的Socket网络编程以及多线程技术[9],工作流程图如图8所示。

由图8可见,该链接服务器首先监听一个特定的端口,该端口需要和客户端发送/接收网络数据的端口一致。当某个客户端和链接服务器建立连接时,该链接服务器会建立一个线程来处理该客户端的请求,即读取客户端的指令字符串。随后,链接服务器会对指令字符串进行解析,并组成libCoAP程序的参数,调用libCoAP程序。最后读取libCoAP程序返回的File内容,并将该内容发送至客户端。

这里,客户端指令字符串的格式为“CoAP服务器硬件资源URL 访问方式”,下面给出一个实际示例。例如,客户端发送的指令字符串为“CoAP://[aaaa::1]/temp get”,其含义是访问IPv6地址为aaaa::1的CoAP服务器的温度传感器,获取该温度传感器的具体数值。链接服务器会将该字符串进行解析,解析的结果是客户端需要访问URL地址为“CoAP://[aaaa::1]/temp”的硬件资源,访问该资源的方法是“get”。然后根据这些信息组成libCoAP程序的参数,即“libCoAP?m get CoAP://[aaaa::1]/temp”,其中“?m get”表示libCoAP程序使用get方法对硬件资源进行访问。

2.3 客户端软件设计

软件设计基于跨平台的图形界面设计框架Qt[10],其流程如图9所示。由于采用了改进型的边界路由器方案,客户端的设计较为简单。客户端首先和链接服务器建立连接,再向其发送指令字符串,等待接收链接服务器返回的信息。当客户端接收到信息时,它会对信息进行分类:如果客户端发送的是获取传感器数据的指令,则会接收该传感器返回的数据,并将数据用折线图进行显示;如果发送的是获取设备当前状态的指令,则会接收到设备的当前状态,并在界面上进行显示;如果发送的是控制设备的指令,则会接收到设备控制反馈信息,结束整个流程,否则需要继续发送控制设备的指令或者检查当前设备是否正常工作。由此可以得出,改进后的架构简化了客户端设计,有利于推广CoAP协议在物联网领域的应用。

3 改进型CoAP架构系统测试

改进型CoAP架构的测试过程如下:首先,设置一个IPv6地址为“aaaa::212:4b00:ef3:418c”的传感器节点,并将Contiki操作系统和DS18B20设备驱动移植到该传感器节点上,该传感器即是图3所示的任意一个CoAP服务器;然后,设置边界路由器,在边界路由器中运行Contiki系统中的tunslip6程序,该程序用于为边界路由器分配网络地址前缀;随后在计算机上进行Ping实验,命令结果见图10。可见,计算机可以访问该CoAP服务器。

最后,在计算机上运行设计的客户端软件。图11给出了该客户端获取CoAP服务器采集的环境温度参数的折线图。图12为该客户端上显示的CoAP服务器控制的设备当前状态。

4 结 语

为了简化基于CoAP协议客户端的设计,本文着重提出了一种改进的边界路由器设计方案,构建了系统架构,完成了系统硬件电路和软件程序的设计。系统测试结果表明,本文设计方案有效可行,为推广CoAP架构在物联网领域上的应用提供了设计参考。

注:本文通讯作者为孙玲。

参考文献

[1] 王晓喃,殷旭东.基于6LoWPAN无线传感器网络的农业环境实时监控系统[J].农业工程学报,2010,26(10):224?228.

WANG Xiaonan, YIN Xudong. Agricultural environment real?time monitor and control system based on 6LoWPAN sensor networks [J]. Transactions of the CSAE, 2010, 26(10): 224?228.

[2] 汤春明,张荧,吴宇平.无线物联网中CoAP协议的研究与实现[J].现代电子技术,2013,36(1):40?44.

TANG Chunming, ZHANG Ying, WU Yuping. Study and implementation of CoAP protocol in wireless Internet of Things [J]. Modern electronics technique, 2013, 36(1): 40?44.

[3] 董文超,江凌云.基于SNMP的6LoWPAN网络的分层管理方案[J].南京邮电大学学报(自然科学版),2015,35(6):89?94.

DONG Wenchao, JIANG Lingyun. SNMP?based layered management scheme for 6LoWPAN networks [J]. Journal of Nanjing University of Posts and Telecommunications (Natural science edition), 2015, 35(6): 89?94.

[4] 张京,杨启良,戈振扬,等.温室环境参数无线传感器网络监测系统构建与CC2530传输特性分析[J].农业工程学报,2013,29(7):139?147.

ZHANG Jing, YANG Qiliang, GE Zhenyang, et al. WSN monitoring system for greenhouse environmental parameters and CC2530 transmission characteristics [J]. Transactions of the CSAE, 2013, 29(7): 139?147.

(上接第52页)

[5] 张效奎,白恩健.基于6LoWPAN传感器网关设计[J].电子科技,2012,25(12):11?14.

ZHANG Xiaokui, BAI Enjian. Research on and design of wireless sensor network gateway based on 6LoWPAN [J]. Electronic science and technology, 2012, 25(12): 11?14.

[6] 吴德伦,张宏科.ZigBee和6LowPan:基于IEEE 802.15.4的两种新技术[J].现代电信科技,2006(4):43?46.

WU Delun, ZHANG Hongke. Research of ZigBee and 6LowPan based on IEEE 802.15.4 [J]. Modern science & technology of telecommunications, 2006(4): 43?46.

[7] 苗敬利,李腾.基于openwrt的智能家居服务器的设计[J].网络安全技术与应用,2014(11):197?198.

MIAO Jingli, LI Teng. The design of openwrt based smart home server [J]. Network security technology & application, 2014(11): 197?198.

[8] 刘湛.底层数据通信技术比较与选择[J].科技信息,2011(13):464?465.

LIU Zhan. Comparison and selection of underlying data communication technology [J]. Science & technology information, 2011(13): 464?465.

[9] 眭俊华,刘慧娜,王建鑫,等.多核多线程技术综述[J].计算机应用,2013,33(z1):239?242.

SUI Junhua, LIU Huina, WANG Jianxin, et al. Overview of multicore multithread technologies [J]. Journal of computer applications, 2013, 33(S1): 239?242.

[10] 李文帆,刘志刚,伍文城,等.基于Qt的电力系统地理接线图绘制软件设计[J].电力系统自动化,2013,37(7):72?76.

LI Wenfan, LIU Zhigang, WU Wencheng, et al. Design of power system geographical wiring diagram drawing software based on Qt [J]. Automation of electric power systems, 2013, 37(7): 72?76.

猜你喜欢

路由器客户端边界
买千兆路由器看接口参数
拓展阅读的边界
路由器每天都要关
论中立的帮助行为之可罚边界
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
无线路由器的保养方法
“伪翻译”:“翻译”之边界行走者
无线路由器辐射可忽略