APP下载

基于SNMP的无线传感网网关的研究

2016-09-26杨立身张安伟

计算机应用与软件 2016年3期
关键词:网关传感报文

刘 康 杨立身 王 磊 张安伟

(河南理工大学计算机科学与技术学院 河南 焦作 454003)



基于SNMP的无线传感网网关的研究

刘康杨立身王磊张安伟

(河南理工大学计算机科学与技术学院河南 焦作 454003)

为了解决无线传感网与互联网异构通信以及实现无线节点的有效管理问题,考虑SNMP协议的简单、通用、安全等特性,设计一种基于SNMP的无线传感网网关。该网关实现无线传感网与互联网的数据通信,并基于SNMP协议实现对无线节点的管理。硬件部分,该网关以STM32F103VCT6为核心微处理器,使用SPI接口配合ENJ28C60以太网控制器实现以太网通信接口,使用USART串口配合无线传感芯片cc2530实现无线传感网通信接口;软件部分设计基于LwIP协议栈的私有SNMP代理。测试结果表明,该网关运行稳定可靠,具有一定的实用价值。

SNMPSTM32cc2530串口通信无线传感网

0 引 言

无线传感网是由大量传感器节点组成的自组织网络,现已广泛应用到智能家居、工业监控、车联网及环境监控等众多领域[1]。无线传感网网关实现了无线传感网与互联网的互联互通,使管理端可以远程监控无线传感网中的节点,并及时获取节点信息与应用层数据,实现了对无线传感网的远程监控和管理。

目前,部分学者设计了一些无线传感网网关,主要分为两类,一类是网络层网关,即对无线传感网与其他网络,如GPRS[2]、3G[3]、4G[4]及WIFI[5]等,进行网络层数据包格式转换,实现无线传感网与其之间的数据通信,此类网关缺点是未实现对无线传感网的远程监控及管理功能;另一类是应用层网关, 如文献[6]提出了基于嵌入式Web技术实现的物联网终端节点管理的方案,文献[7]设计了基于Modbus协议的无线传感网网关,该网关实现了无线传感网与ModbusTCP/IP网络的互联互通,并支持管理端对无线传感网的远程监控及管理功能,但此类网关的缺点是管理技术与传统互联网SNMP管理技术不兼容且安全性差。

本文考虑了SNMP协议的广泛应用、简单、安全等特征,设计了一种基于SNMP协议的无线传感网网关。不仅实现了无线传感网与互联网之间的数据通信,而且使管理端可以通过SNMP协议查询无线传感网的节点信息及传感器数据,设置无线传感网节点变量及获取无线传感网异常报警信息,实现了SNMP管理端对无线传感网的远程监控和管理。

1 总体设计

本文设计了一种基于SNMP的无线传感网网关,实现了互联网与无线传感网的数据通信功能。如图1所示,该网关共分为三层,包括硬件层、软件支持层及应用层。硬件层包括以太网接口、微处理器及ZigBee网络接口。以太网接口负责实现与互联网的通信功能;微处理器负责将互联网数据包与ZigBee网络数据包进行数据格式转换;ZigBee网络接口为协调器类型节点,负责组织建立ZigBee网络。软件支持层包括LwIP协议栈和Z-Stack协议栈,为实现上层数据通信提供支持。应用层包括私有SNMP代理和Z-Stack应用层任务。私有SNMP代理负责响应管理端发送的请求报文,将接收到的请求报文进行转换,然后传递给Z-stack应用层任务;Z-Sstack应用层任务实现该请求后将消息返回给私有SNMP代理,私有SNMP代理将其转换为SNMP协议消息后发送给管理端。

图1 无线传感网网关总体结构图

2 硬件设计

硬件部分采用模块化设计,如图2所示,由以太网接口模块、微控制器模块及ZigBee协调器模块组成。以太网接口模块选取使用ENC28J60控制器,该控制器提供10/100M的传输速率,采用SPI接口与微控制器通信;微控制器选择基于CORTEX-M3内核的STM32F103VCT6微控制器,该控制器具有高性能、低功耗及经济实惠的特点[8];ZigBee网络接口模块选取TI公司的cc2530芯片,该芯片集成高性能8051内核、USART接口及ZigBee射频前端等[9],支持Z-Stack协议栈中各种节点类型,采用USART接口与微控制器通信。

图2 硬件结构图

3 软件设计

3.1总体设计

软件部分采用组件化设计方法设计,如图3所示,主要包括LwIP协议栈、私有SNMP代理及Z-Stack协议栈。LwIP协议栈是由瑞典科学院实现的嵌入式网络协议栈,开放源代码且功能稳定[10];私有SNMP代理负责响应管理端数据及控制请求,将收到的数据请求报文或控制报文转换数据格式后,通过串口交由ZigBee网络协调器节点;Z-Stack协议栈是TI公司推出的遵从ZigBee2007规范的无线传感网络协议栈,本文基于Z-Stack协议栈[11]实现了ZigBee网络协调器节点,负责组织搭建无线传感网络。接收到私有SNMP代理的数据请求或控制报文后,从终端节点收集到数据后发送给私有SNMP代理,或执行控制报文内的操作,并向私有SNMP代理发送确认消息。ZigBee网络协调器节点发现网络异常后向私有SNMP发送报警消息,私有SNMP代理收到消息后,根据异常类型做相应转换后向SNMP管理端发送SNMPTrap报文。

3.2LwIP协议栈

为实现无线传感网网关的互联网接口,移植LwIP协议栈到STM32F103VCT6微控制器上,移植步骤如图4所示。STM32F103VCT6微处理器端USART串口使用中断方式接收数据,串口初始化过程如图5所示。

图4 LwIP协议栈移植流程图 图5 串口初始化流程图

LwIP协议栈移植步骤详细介绍如下:

Step1初始LwIP协议栈所用的基本数据类型

Step2初始化以太网SPI接口

调用微处理器的库文件,初始化SPI接口。

Step3初始化systick定时器

初始化微处理器的systick定时器,用于定时轮询输入或给LwIP协议栈提供定时。

Step4初始化协议栈

调用lwip_init()函数,初始化LwIP协议栈,为LwIP协议栈所使用的数据结构分配内存,如网卡结构体链表、内存池、pbuf数据结构。

设置netif结构体中各属性,如ip、netmask、gw等网络接口设置;再调用netif_add()函数完成LwIP协议栈对网卡结构体enc28j60属性的调用,如数据包发送函数和数据包接收函数。

使用底层网卡初始化low_level_init()函数完成MAC地址、最大传输单元等网卡基本属性的设置。

再使用netif_set_default()函数将enc28j60设置为默认网卡,然后使用netif_setup()函数使能enc28j60网卡接口。

Step5轮询

使用无限循环调用数据包接收函数完成对网络接口的监听,即采用轮询方式接收数据包。

3.3Z-Stack协议栈

Z-Stack协议栈中自带有实现串口通信的MT层,调用该层中相关API实现串口初始化,以实现Z-Stack协议栈与LwIP协议栈通信。Z-Stack协议栈轮询到串口中断后,调用相应的串口回调函数处理接收到的串口数据,根据接收到的串口数据包类型进行处理。若是查询信息类串口数据包,则根据数据包中变量信息进行查询,查询到该变量信息后封装成串口数据包发送给LwIP协议栈。若查询失败,发送查询错误串口消息。若是设置变量类串口数据包,串口回调函数根据串口数据包的变量信息向目标变量节点发送设置消息,设置成功后发送设置成功串口消息,否则发送设置失败消息。详细流程如图6所示。

图6 Z-Stack串口数据处理流程图

3.4私有SNMP代理

LwIP协议栈中已实现SNMP协议,但为实现对无线传感网网络管理的需求,如查询、设置、异常监控,需在LwIP协议栈实现私有SNMP代理,以响应管理端对无线传感网的上述管理需求。实现无线传感网网关私有SNMP代理共分为3个部分,即:

(1) 扩展私有MIB库,在私有MIB库中定义无线传感网中需要管理的变量,并实现相关数据结构;

(2) 实现对私有SNMP代理MIB库变量的查询、设置操作;

(3) 实现Trap变量异常报警程序。

3.4.1私有MIB库

限于嵌入式系统有限的存储资源,私有MIB库数据结构需要重新使用C语言编码实现,本网关采用树形结构定义私有MIB库,如图7所示。使用mib_array_node表示树节点,主要存储其子节点地址及其子节点数目;mib_scalar_node表示普通标量叶子节点,主要存储变量OID、读写权限及对该变量的get、set操作函数指针;mib_external_node表示外部节点,主要存储着表格叶子变量链表头节点指针、表格叶子变量读写权限及对该变量的get、set操作函数指针;mib_list_root_node用以表示表格叶子变量链表head节点,head节点包含表格叶子节点链表头指针、尾指针及链表长度等信息;mib_list_node表示表格叶子变量节点,其中包括变量OID及该节点前后指针等信息。

图7 私有MIB库数据结构图

3.4.2变量查询

如图8所示,当SNMP管理端需要查询无线传感网某变量信息时,发送封装有SNMPGet消息的IP数据包给网关。网关通过LwIP协议栈接收IP数据包,将SNMPGet消息交由上层私有SNMP代理进行处理,私有SNMP代理在私有MIB库中查找该变量。然后调用该变量的get函数向ZigBee协调器节点发送串口数据请求报文,ZigBee协调器依据报文中的节点ID和变量名对该报文中的操作进行处理,获取数据后封装成串口回应报文发送给私有SNMP代理,若获取失败,发送查询错误串口回应报文。私有SNMP代理收到串口响应报文后将其转换成SNMP协议回应消息通过LwIP协议栈返回给SNMP代理管理端。

图8 数据查询协作图

3.4.3变量设置

如图9所示,当SNMP管理端需要设置无线传感网中某变量信息时,发送封装有SNMPSet消息的IP数据包给网关。网关通过LwIP协议栈接收IP数据包,将SNMPSet消息交由上层私有SNMP代理进行处理,私有SNMP代理在私有MIB库中查找该变量。然后调用该变量的set函数向ZigBee协调器节点发送串口设置请求报文,ZigBee协调器依据报文中的节点ID、变量名及变量值对该变量执行设置操作,设置变量成功后封装成串口回应报文发送给私有SNMP代理,若失败,发送设置错误串口回应报文。私有SNMP代理收到串口响应报文后将其转换成SNMP协议回应消息通过LwIP协议栈返回给SNMP代理管理端。

图9 设置协作图

3.4.4异常报警

如图10所示,当ZigBee协调器发现ZigBee网络中异常时,发送串口异常报警报文给私有SNMP代理。私有SNMP代理根据串口异常报警报文中的异常信息查找MIB库中Trap变量。然后将变量名、异常信息封装到SNMPTrap消息中并向管理端发送该SNMPTrap报警消息。

图10 异常报警写作图

4 测 试

本网关在实验室中搭建网络进行测试,测试环境如图11所示。首先在实验室搭建测试环境,开发板使用双绞线与PC相连,开发板自带有使用cc2530的ZigBee模块。通过不定向天线与ZigBee网络中温湿度、灯开关节点进行通信,测试方案主要包括网络连通性测试和核心部件SNMP协议测试两个模块 。

图11 测试环境图

在命令终端上输入ping网关的IP地址的命令,网关及时返回icmpechoreply报文以确认收到ping报文。测试结果如图12所示。

图12 网络连通性测试

在上位机上运行监控软件,该软件基于VisualC++及SNMP++[12]开发,如图13所示。配置SNMP代理的IP地址及认证名,然后点击“刷新”按钮,即可通过无线传感网网关获得测试环境内的温度及湿度。通过点击“开灯”、“关灯”按钮即可实现对灯节点的开关控制。监控软件若收到SNMP代理发送的SNMPTrap报警消息,报警栏会显示报警信息。

网关测试结果表明,本文设计的网关能够稳定地实现现有互联网与无线传感网之间的数据通信,并稳定地实现了SNMP管理端对无线传感网的查询、设置、异常报警等管理需求。

5 结 语

本文设计了一种基于SNMP的无线传感网网关,该网关软硬件采用组件化设计方法设计。一方面,该网关实现了无线传感网与互联网的互联互通;另一方面,该网关使管理端可以通过SNMP协议直接监控和管理无线传感网,实现了基于SNMP协议的互联网及无线传感网的网络管理体系,减少了不必要的中间件的开发。测试结果表明该网关运行稳定可靠,具有实时性、低功耗、成本低、通用性强等特点,具有一定的实用价值。

[1] 钱志鸿.面向物联网的无线传感器网络综述[J].电子与信息学报,2013,35(1):215-227.

[2] 陈辉.基于ZigBee与GPRS的温室番茄远程智能灌溉系统的研究与实现[D].浙江大学,2013.

[3] 刘亮.基于3G的物联网网关设计[D].大连理工大学,2011.

[4] 王志超,刘波,花於锋.基于移动4G与ZigBee无线传感网的网关设计[J].计算机测量与控制,2014,22(3):863-865,878.

[5] 李宝森.医院智能空间网络搭建及其定位系统设计与应用[D].山东大学,2012.

[6] 胡亦万.基于Cortex-M3的LwIP移植以及嵌入式WEB的应用研究[D].南昌大学,2013.

[7] 叶欣,陈文艺,赵健.基于Matlab物联网网关的Modbus协议实现[J].测控技术,2013,32(2):77-80.

[8] 李冬霞,张雪庆.基于Cortex-M3的智能卡USB读卡器设计[J].计算机工程与设计,2010,31(12):2729-2732.

[9] 王威,李春杰,张圣,等.一种无线传感网与现场总线通信网关的设计与实现[J].测控技术,2014,33(1):109-111.

[10] 胡亦万.基于Cortex-M3的LwIP移植以及嵌入式WEB的应用研究[D].南昌大学,2013.

[11] 刘伟超.基于ZigBee无线传感网实验系统的设计与实现[D].华中科技大学,2012.

[12] 刘颖.基于SNMP技术的网络音频处理系统的设计[D].哈尔滨理工大学,2013.

STUDYONWIRELESSSENSORNETWORKGATEWAYBASEDONSNMP

LiuKangYangLishenWangLeiZhangAnwei

(School of Computer Science and Technology,Henan Polytechnic University,Jiaozuo 454003,Henan,China)

InordertosolvetheproblemofheterogeneouscommunicationbetweenwirelesssensornetworksandtheInternetandtheproblemofeffectivemanagementofwirelessnodes,consideringthefeaturesofSNMPprotocolsuchassimple,universalandsecure,etc.,wedesignedanSNMP-basedwirelesssensornetworkgateway.ThegatewayrealisesthedatacommunicationbetweenwirelesssensornetworksandtheInternet,andachievesthemanagementofwirelessnodesbasedonSNMP.Inhardwarepart,thegatewayusesSTM32F103VCT6ascoremicroprocessor,usesSPIinterfaceinconjunctionwithENJ28C60EthernetcontrollertoimplementEthernetcommunicationinterface,andusesUSARTserialportinconcertwithwirelesssensorchipcc2530toimplementwirelesssensornetworkcommunicationinterface.Insoftwarepart,wedesignanLwIPstack-basedprivateSNMPagent.Testresultsshowedthatthegatewayranstablyandreliably,andhadcertainpracticalvalue.

SNMPSTM32cc2530SerialportcommunicationWirelesssensornetwork

2014-08-16。刘康,硕士生,主研领域:网络管理。杨立身,教授。王磊,副教授。张安伟,硕士生。

TP3

ADOI:10.3969/j.issn.1000-386x.2016.03.036

猜你喜欢

网关传感报文
基于J1939 协议多包报文的时序研究及应用
《传感技术学报》期刊征订
新型无酶便携式传感平台 两秒内测出果蔬农药残留
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
IPv6与ZigBee无线传感网互联网关的研究
信号系统网关设备的优化
ATS与列车通信报文分析
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”