摘 要: 物联网开放环境下有更加面向服务的趋势,应用层对于感知层的灵活控制需求日益凸显,传统的上传下达的网关已经很难适应。着眼于一种基于SDN-OpenFlow理念的传感网关的设计,根据开放环境及OpenFlow的不足进行适当的改进,并提出针对数据信息的封装格式,以适应网关的流表处理机制。进而物联网应用层可以通过控制通道对数据通道进行配置,实现网关对传感网的开放环境的适应和对物联网业务层的各种服务进行更好的支撑。此外设计主要还包括对网关结构分析、软硬件实现等。最后分别从功能性和稳定性两个方面验证了系统的有益特性。
关键词: 传感网关;OpenFlow;数据封装
0 引言
物联网,也即万物互联技术,而物联网的开放环境则是指网络体系更加面向服务,包括整个网络的资源整合,提供给用户公共的资源公开的信息、多元和个性化的业务等[1]。本文主要着眼于传感网所在的感知层的网关设备展开设计的论述。在物联网开放环境中,面向服务的应用层对于底层数据平面的控制需求愈加强烈,网关的角色不再是上传下达的邮差[2-3]。而且传感网的应用囊括各种日常和恶劣场景:大面积信息感知、传感节点动态组网、传感网拓扑多变等,在这些情况下传统的网关已经很难适应了。而目前在对网关设备的研究上主要分为如下几个方向:(1)对网关的硬件设计;(2)对网关的工作协议和软件的研究[4];(3)对网关设备的功能和属性的研究;(4)具体场景型网关的研究。物联网开放环境对网关提出了更高的要求[5]:(1)对物联网应用层的控制开放和对感知层的感知开放;(2)对网络的适应性;(3)丰富的业务的开展,对于控制管理的要求也更加突出。
本文将在计算机网络领域的软件定义网络技术引入网关设备,参考OpenFlow协议,并将其引入网关设备与平台之间的通信过程[6];设计一种对感知层传感网信息的封装和通信协议来实现对各种传感网协议的统一适配,并给出了网关的实力实现方式。
1 网关关键技术
传统的传感网网关往往接口单一、逻辑固化、数据操作简单、缺乏面向上层后台部分的接口和支撑,已经很难满足物联网技术对底层的信息感知的需求。将在软件定义网络技术引入网关设备,参考OpenFlow协议,并将其引入网关设备与平台之间的通信过程,实现平台层直接处理原生的感知信息。设计一种对感知层传感网信息的封装和通信协议来实现对各种传感网协议的统一适配。
1.1 SDN-OpenFlow的引入
将物联网环境应用层的数据平台类比SDN网络控制器,将网关设备类比SDN网络数据设备,从而参考OpenFlow来实现数据平台和网关之间的通信。
OpenFlow协议针对的计算机网络设备往往配有多个以太网口[7-8],为了将OpenFlow协议的理念融入传感网网关中,就需要针对网关设备的特点对协议进行一些改良。
(1)根据地理位置和平台的信息分割区域进行流表瘦身。传感网节点之间的通信主要是传感网节点与上层数据平台的通信,不同部署区的传感网节点之间很少会有通信需求。这个特点为数据流区域的划分提供了可能。将整个物联网开放环境下的感知层的传感网进行数据流区域切割,不同区域之间的网关设备没有直接通信的需求,流表几乎没有关联,可以很好地达到流表瘦身的效果。当不同区域的网关或者传感网节点出现通信需求时,则要借助上层的数据平台。
(2)将流水线结构的流表改良为索引式结构。OpenFlow协议中的流水线式的流表匹配操作往往需要经历多个流表才能查询到。网关设备的数据流往往是固定的几个类别,比如上行和下行数据流,因此可以按照这个特点改变原有的流水线式的流表组织,使用索引式流表组织使得每种数据流使用单独的流表。每个索引对应的流表可以是异构的,可以将最常用的表项放在一张表,将支持扩展功能的拥有更细颗粒度的表项放在另外一张索引对应的流表中。流表组织结构如图1所示,图中按照数据流的类型(诸如版本号、上下行数据等)来作为区分的种类,只作为示例。
在N张表中,每张表有a个表项的情况下,级联的流表查找效率是:平均查找深度为(N+1)/2,存储单元为N*a个,而索引式结构流表在同等存储损耗的情况下,查找深度为2。在嵌入式备中索引式无疑是较好的选择。
1.2 数据适配与协议封装
为使流表的适配高效,数据流的格式越统一越简单越好,但网关需要适配的协议种类是繁多的。比较常用的协议有TCP/IP、ZigBee、6LoWPAN、蓝牙等[9],这给流表的适配带来了很大难度。
为了解决上述问题,使用32位/128位虚拟地址封装数据载荷。因为很多处理器位宽都是32位,可以一次寻址读取32位数据,128是32的整数倍,将所有的协议分为32位封装和128位封装两种,32位封装面向IPv4和ZigBee等,128位封装面向IPv6和未压缩6LoWPAN地址等。对于IPv4协议,不用任何处理即可;对于ZigBee地址,这里使用16位的网络号和16位的节点地址作为标识符;对于IPv6协议和6LoWPAN协议不需要处理。版本号用以区分虚拟地址的长度是32位还是128位,还可以做流表选择的索引功能。
2 网关系统设计
2.1 结构设计
本文提出一种针对上述若干关键技术的网关结构,如图2所示,模块之间的3条黑色虚线表示逻辑的控制通道。
设备结构上分为若干模块,感知信息数据从各种底层物理接口进入网关设备,进行统一适配或协议封装,交由交换/路由单元模块进行流表的匹配操作(流表就在交换/路由模块),或交由通信适配模块进入互联网或转发给其他网关等,同样从互联网或者数据平台的数据信息也是类似逻辑机制;管理员可以通过近端控制单元对设备进行现场配置、管理,也可以通过控制通道与控制管理单元通信,配置底层通信适配模块和交换/路由模块以改变设备的工作方式或者转发策略协同工作等。
2.2 硬件设计
网关的硬件平台选择了ARM平台,它拥有更丰富的接口和软件支持性[10]。
核心部分主要包括处理器和存储器,在这里存储器分为Flash和RAM,分别用来数据存储和运行内存。外围接口部分主要负责为核心部分扩展接口,丰富接入属性,主要包括电源、串口、USB和网卡等模块。串口模块主要是面向低速率的近距离的通信,USB(通用串行总线)模块的主要作用就是通信组件的扩展,比如无线网卡等[11]。以太网卡模块,一颗DM9000的百兆网络适配芯片以实现网关稳定的网络接入。
2.3 软件设计
选择了嵌入式Linux作为软件环境[12]。下面给出网关的核心部分的软件实现。
(1)流表的实现
流表主要存在于交换/路由模块。在索引式结构流表中,分为索引表和每个索引对应的页流表,在本次实现中使用版本号作为索引表,页表中每个表项包括包头域、计数域和操作域。表项的操作域由枚举类型组成,每个参数对应一个函数指针,其指向的函数正进行相关的操作。每个流表设置8个表项,多个流表通过树状链表呈索引形式缔结起来。而且索引式的流表可以实现异构的流表,比如最常用的数据流的操作放在某一张流表的最前面,而且包头域十分简洁以保证匹配速度,另外一个索引对应的流表可能较少用到,但是支持扩展的功能,比如端口号、用户ID和优先级等,这种索引式的流表更好地权衡了效率和多样性。
实现流表的代码如下:
(2)数据封装的实现
在实现过程中需要针对地址格式的不同提供至少两种封装的头部,结构体中包含一个指针指向数据净负荷,使用指针的方式避免了数据的复制操作,使得处理过程更加高效。而且在不考虑字节对齐的情况下只占用了10 B。
实现数据封装的代码如下:
3 系统验证与分析
这里通过一个应用场景来对网关进行分析评价:一个多任务动态感知的情景,如图3所示,每个虚线圆圈内部的加点表示一个物理上的节点网络。
实验中构建了一个简单的类似图3的环境,网关G2、G3直接连接6LoWPAN传感网(N1、N2、N3分别为3个传感网的协调节点),G1通过Wi-Fi与G2、G3连接并作为其上层网关提供互联网接入。这里仅通过整个系统对流量的控制和时延两个方面来验证网关系统的功能性和稳定性。从网关G1通过G2向N1发送PING包,原路返回,其间附上节点的时间。实验5次,时间曲线绘制如图4(a)所示。可见在网关与传感网之间的通信时延较大,但是总体时延控制在500 ms以内且时延抖动小。G2网关采集N1和N3的数据,G3网关采集N2的数据,N1和N3数据量很大,所以G2网关的下行接口随时都有可能堵塞,这时G2向数据平台反馈,数据平台反馈N3改道G3网关,从而避免了G2的堵塞,流量监测如图4(b)所示。
4 结论
网关具有以下特点:重量体积轻巧,低功耗;电路板采用DC 5V-2A供电,发热量少;常温下主芯片最高43℃。在测试的一周内,各个模块都无异常。
上述的网关设计具有如下有益效果:(1)为物联网开放环境的数据平台的资源整合及控制传感网提供了有效的支撑;(2)从传统网关中提炼出控制面,能够在运行中根据数据平台的调度或者不同的需求更改网络通信特性和适配特性;(3)流表及其控制机制的引入易于实现资源的调度。
参考文献
[1] 张光河.物联网概论[M].北京:人民邮电出版社,2014.
[2] MARA K, ABDEEN M, HASHEM M. A gateway-based framework for transparent interconnection between WSN and IP network[J]. EUROCON 2009, EUROCON′09, IEEE, 2009:1775-1780.
[3] Wu Lili, RIIHIJARVI J, MAHONEN P. A modular wireless sensor network gateway design[J]. Second International Conference on Communications and Networking in China, 2007 (CHINACOM 07), IEEE Press, 2007:882-886.
[4] 陈国峰.多网关协同下的无线网络规划优化研究[J].信息通信,2013(10):243.
[5] Zhu Qian, Wang Ruicong, Chen Qi, et al. IOT gateway: bridging wireless sensor networks into Internet of Things[J]. 2010 IEEE/IFIP 8th International Conference on Embedded and Ubiquitous Computing (EUC), IEEE, 2010:347-352.
[6] 龚向阳,王文东.一种面向多样化网络业务融合的SDN网络结构[J].中兴通讯技术,2013,19(5):16-21.
[7] 刘诚明.软件定义网络技术及应用[M].北京:人民邮电出版社,2013.
[8] NADEAU T D, GRAY K.软件定义网络:SDN与OpenFlow解析[M].毕军主,译.北京:人民邮电出版社,2014.
[9] 李文仲,段朝玉.ZigBee无线网络技术入门与实战[M].北京:北京航空航天大学出版社,2007.
[10] 黄志伟,邓月明,王彦.ARM9嵌入式系统设计基础教程[M].北京:北京航空航天大学出版社,2008.
[11] 杨斌.嵌入式系统应用开发实践教程[M].北京:科学出版社,2014.
[12] 文全刚.嵌入式Linux操作系统原理与应用[M].北京:北京航空航天大学出版社,2014.