APP下载

一种基于树莓派的多ZigBee网关协作方案

2018-08-21沈苏彬

计算机技术与发展 2018年8期
关键词:关节点树莓吞吐量

肖 鹏,沈苏彬

(南京邮电大学 计算机学院,江苏 南京 210003)

1 概 述

ZigBee是一种新兴的短距离、低速率无线网络技术,具有低功耗、低成本、低复杂度等优点,在无线传感器网络应用中扮演着非常重要的角色[1-2]。ZigBee网关的主要功能是数据汇总和协议转换,能够将ZigBee网络的数据上传到以太网[3]。另一方面,能对以太网发送过来的命令通过数据转换和地址解析,发送给ZigBee网络节点,控制相关设备[4]。

ZigBee网络的传感节点和Internet之间的数据交互必须通过网关,因此网关成为传感节点和Internet交互的瓶颈。在单网关模式下的ZigBee网络结构中,数据集中汇聚在一个网关节点带来的问题如下:

(1)网关节点数据转换速率有限,在网络的上行模式下,当短时间有大量数据需要交互时,容易造成网关以及周围路由节点产生拥塞,导致整个网络的上行吞吐量降低;

(2)网络规模较大,单网关模式无法满足偏远终端节点的数据实时性要求,端到端的时延会随着网络规模的增加而增加,同时终端节点掉包率也会提高;

(3)网关周围部署的路由节点需要存储大量的路由信息,并且持续转发来自终端节点的数据,导致过早消耗能量。当某个路由节点因电量耗尽而宕机,势必加重其他路由节点的负担,造成连锁效应,从而影响网络的稳定性。

从图1中看出,终端节点D的数据若需要发送给网关节点,有三条路径可以选择。第一条路径为D→R1→R2→G1,第二条路径为D→R1→R3→R4→G2,第三条路径为D→R1→R5→R6→R7→G3,在只考虑路由跳数的情况下,显然第一条路径是最优的,G1网关是最优网关。假设整个网络中只存在一个G1网关节点,根据ZigBee网状网络路由算法,R2节点的工作量是巨大的,它需要不断转发来自其他节点的数据,使得节点过早地消耗能量,同时G1网关的数据转化能力是有限的,可造成数据拥塞。

图1 最优网关选择

目前针对Mesh型网络[5-6]的多网关选择问题研究较为广泛。文献[7]通过把Mesh节点划分成若干组,并且每一组中的节点与特定的网关进行通信,是一种负载均衡策略。该算法需要网关之间信息的交互,开销较大。文献[8]的潜在网关选择策略是基于路由跳数,网关广播网关发现消息,非网关节点根据消息计算与网关的距离,选择具有跳数最少的路径网关,用于将流量发送到基础设施网络。ZigBee网络可以组成Mesh网络,文献[9]针对ZigBee Mesh网络的特点提出一种多网关方案,但其只考虑了路由跳数作为网关的选择依据,没有考虑网关本身的性能。在上述研究的基础上,文中提出将ZigBee路由成本与网关负载相结合的方式作为网关的选择方案。

目前针对ZigBee网络的应用多以单网关模式运行,在节点数量少、数据量小的应用场景能够满足需求,但对于环境复杂,节点数量大,数据业务量大的场合,需要多个网关才能满足数据的转发和控制功能[10]。目前国内外针对Mesh网络的多网关系统的研究较多,而对ZigBee网络的多网关的研究较少,文中提出一种针对ZigBee Mesh网络的多网关协作方案,提高整个网络吞吐量,达到较小网络数据时延的目的。

2 多网关协作与最优网关发现

ZigBee设备不能直接连接到以太网,网关的目标是解决不同端点网络和互联网之间的异质性;加强端点网络的管理;将传统互联网与端点网络互联互通。在多网关系统中,最先启动的ZigBee网关负责建立和维护网络,随着网络规模的增大,新的网关节点加入到网络,分担数据的上行和下行工作。ZigBee网络的终端节点数据上行至最优网关后,网关将建立终端节点的地址映射表,以便Internet网络数据下行进入ZigBee网络时进行快速寻址,从而避免在单一网关下,数据需要通过多次路由才能达到终端节点,减少了下行数据的时延。多网关系统结构如图2所示,树莓派二代和CC2530节点通过串口连接在一起形成ZigBee网关节点。多个ZigBee节点和网关一起形成ZigBee Mesh型网络。

图2 多网关系统架构

ZigBee网络数据吞吐量提高可以通过增加网关的数量,但多网关的网络性能与网关配置有很大关系。增加网关负载约束是为了避免终端节点聚集到某一网关,造成一部分网关负载过重,另一部分网关没有发挥应有的作用,导致网络数据吞吐量下降。若只考虑网关的负载,终端节点会选择负载小的网关节点作为数据汇聚节点,但对于某些终端节点来说,与负载小的网关节点之间的路径质量并不是最优的,路由成本可能会很大,可能导致端到端时延增加,不能提高整体网络的性能。因此,文中结合网关负载和路由成本两个主要影响网络性能的因素,作为最优ZigBee网关的选择依据。

网关节点负载代表网关在单位时间内能转换的数据率,使用缓冲区当前队列长度Lcurrent与缓冲区中队列最大长度Lmax的比值来衡量:

(1)

其中,LoadRatei用来表示当前网关节点i的负载,文中定义当LoadRatei>LoadRatethreshold时,表示该网关节点已经达到了传输瓶颈。LoadRatethreshold取0.8。

在ZigBee路由算法中,路由发现和路由维护是以路由成本为依据选择最佳路径的。一条最佳路径由多个链路组成,每个链路都有相应的链路质量。链路质量越高,路由成本越低。链路质量表示相邻节点之间通信所传递的数据报的强度和质量。

如果定义一条长度为L的路径[D1,D2,…,Di],Di表示编号为i的节点,[Di,Di+1]表示Di和Di+1的链路,则该路径的路由成本之和表示为:

(2)

其中,PathCost{P}表示网关到终端节点的路径路由成本;C{[Di,Di+1]}表示相邻节点Di到Di+1的路由成本。

路由成本C是关于链路质量的函数,计算公式如下:

(3)

其中,C{l}的取值范围为[0,1,…,7],表示链路L上传输的可靠性;Pl的测量根据接收帧的链路质量指示平均值来估计。

IEEE802.15.4的物理层中添加链路质量指示(link quality indication,LQI)这个物理量,对LQI的测量是通过接收机ED、信噪比估计或者混合使用这两种方法来进行[11-12]。在ZigBee中每个接收的分组都要进行LQI测量,其结果值用8 bit整数表示,并将结果值传给MAC子层。

目前流行多网关选择策略中的决策因素是通过单一的路由跳数作为基准,路由跳数少,表明该节点到网关的路径是最优的。而路由跳数并不能保证选择的网关最优,随着网络通信量的增加,这种网关选择方式容易导致热点区域的形成,并出现网络瓶颈,最终导致网络拥塞。文中采用网关负载和路由成本的方式作为最优网关的判断标准,提出一个网关选择函数。终端节点通过网关选择函数计算出Optimali值,公式如下:

Optimali=α×PathCosti+(1-α)LoadRatei

(4)

其中,α表示权重,由终端节点决定;PathCosti表示终端节点到网关节点i的路由成本(在能到达的情况下);LoadRatei表示网关节点i的负载。PathCosti值越小,说明终端节点与网关节点的路径质量越高,路由成本越低;LoadRatei值越小,说明网关的负载越小,该网关能够承受更多的数据量。根据式4计算的Optimali值存储在终端节点中,终端节点依据Optimali最小者选取最优网关节点。

终端节点与Internet通信前,首先需要通过某种手段找到网关节点,即网关发现过程,文中采用主动发现机制。新的网关节点加入到网络后,向全网周期性广播网关通告消息,告知终端节点自身的信息,包括网关唯一标识符、网络中16位短地址和负载。

最优网关选择算法描述如下:

(1)ZigBee网络中的任意节点启动,加入网络后,判断自身是否为网关;

(2)若是网关节点,则以广播的形式周期性向全网发送Gateway_Status通告,网关通告字段如表1。

表1 网关通告字段

(3)若是终端节点,则初始网关短地址默认为协调器短地址,在未收到任何其他网关通告之前,终端节点以默认网关作为数据的汇聚节点。网络运行过程中收到任意网关通告后,获取网关节点的ID,并判断该网关是否已存在自己的网关设备表中,若存在则更新该网关信息条目,包括负载、路由成本;若不存在,则创建新的网关条目,并将该网关条目添加到网关设备表中。

(4)终端节点根据式4计算网关的Optimal值,更新到网关设备表中。

(5)终端节点遍历网关设备表,若当前的网关Optimal值大于新的网关,则更改终端节点的数据发送地址,将地址修改为新网关节点的地址;否则,不做变化。

(6)终端节点向新网关节点发送Optimal_Confirm消息,通知最优网关节点。网关节点收到Optimal_Confirm消息后,存储该终端节点的信息。外部网络可以根据网关存储终端节点地址信息自由的切换网关,以达到快速寻址、传输数据的目的。

3 多网关协作与最优网关选择的实现

3.1 网关的硬件设计

网关的硬件设计包括两部分,一个是负责运行ZigBee网络的CC2530,是德州仪器公司开发的真正片上系统解决方案。它结合了一个高性能2.4 GHz DSSS射频收发器核心和一颗工业级小巧高效的8051控制器,具有32/64/128 KB可编程闪存和8 KB的RAM,还包括A/D转换器、AES128协同处理器、看门狗定时器等[13]。

另一个是利用树莓派作为数据转换模块,是网关的核心组成。树莓派(Raspberry Pi)是一个小巧的、功能强大、价格便宜的小型卡片式电脑[14],这种信用卡大小的计算机具有众多性能并且经济实惠的价格,是许多设备接口的完美平台。网关节点使用树莓派2代,B型,RAM为1 GB,并配有一个无线传输WiFi模块,一个以太网接口模块和三个USB接口模块。ZigBee网络的汇聚节点以串口形式与树莓派相接,占用串口设备为ttyUSB0。

3.2 网关的软件设计

树莓派以Linux系统为基础,移植基于C++的QT库作为主要的开发语言[15]。QT库使用的版本为QT5.8,由于树莓派的性能有限,对于大型程序的开发工作仍然需要在PC机上完成。PC机对QT5.8源码包进行交叉编译成ARM版本的库,随后移植到树莓派上,同时本地也需要保存ARM版本的副本,作为网关程序编译时的链接库。网关应用程序涉及的主要模块有串口通信、协议转换、TCP数据传输服务和最优网关选择算法等。

(1)串口通信:利用串口通信模块可以对ZigBee网络数据汇聚节点进行读写。开辟串口读写线程,将来自串口的数据读入缓冲区。

(2)协议转换:将ZigBee网络数据格式转换为TCP/IP,涉及的工作是对ZigBee数据格式解码和重新封装。首先识别数据帧边界,将串行的数据格式根据边界标识符划分为单个数据帧;然后将单个数据帧根据数据转义恢复为初始数据,并对数据的合法性进行验证。验证方法是通过前后数据检验和对比,相同则数据合法,否则丢弃不合法数据帧;最后生成新的数据对象,以JSON的形式对数据重新打包,并添加时间戳。重新分装的数据送入网络接口,等待上传。

(3)TCP数据传输服务:树莓派以TF卡作为永久存储设备,容量有限,同时为了方便对网关性能进行综合分析,有必要将网关的数据上传至服务器。在PC上搭建服务器,监听来自网关的请求,监听端口为8080,并且服务器以多线程方式进行监听。网关与服务器通讯是建立在TCP协议下套接字接口的基础上进行数据的上传。

(4)最优网关选择算法实现:最优网关选择算法需要终端节点和网关节点相互配合才能达到最优网关选择的目的。

算法核心伪代码如下:

Begin

A nodeijoin the ZigBee network;

if(nodei==gateway) then

Gateway computes LoadRatei;

Gateway periodically sends gateway

status message: ID, Address, LoadRate;

end if

if(nodei==end) then

When nodeireceives gateway status message;

End node computes Optimali;

if(current_optimal=null or Optimali

current_optimal=Optimali;

end if

if(find(gateway.ID)) then

Update parameters Optimal in gateway

device table;

end if

if(!find(gateway.ID)) then

New gateway insert into the gateway device Table;

end if

Update destination address in nodeiby

current_optimal gateway address;

Send data to the optimal gateway;

end if

End

4 测试与分析

为验证多网关系统网络的连通性和网关性能,在实验环境中搭建多网关系统网络测试平台。网关节点由树莓派二代和CC2530组成,数据源节点为CC2530开发套件,通信协议为ZigBee协议。测试平台包括2个网关,若干个无线节点,以及1台用来作为服务器的PC机。每个ZigBee终端节点根据网关选择函数向网关发送数据,网关再通过套接字接口编程向服务器存入数据。服务器对网关与服务器的通信建立日志追踪,可以从日志获取的信息包括ZigBee节点的编号,节点网络短地址,数据量,端到端的通信时间等。文中通过Python编写脚本读取日志文件,对日志进行分析,比较网络在单网关模式和多网关模式下的网络性能,包括网关的连通性、网络的吞吐量和数据时延。实验中,每个ZigBee数据包大小为100个字节,运行时间60 s。

4.1 终端节点选择不同权重值的结果分析

为验证选取不同的权重值对网络吞吐量的影响,在多网关模式下,网络规模一定,节点发送速率为250 kbps时进行吞吐量的实验对比。从图3可以看出,在α接近0.5时,网络吞吐量最高,文中后续的权重值设置为0.5。

4.2 两种网关模式网络吞吐量对比

如图4所示,随着网络规模的增加,单网关模式处理大量数据的能力明显低于多网关模式,单网关的负载持续增加,最终会达到瓶颈。而多网关考虑到网关负载均衡,能够将数据分摊到其他网关,避免了单一网关能力有限的问题,提高了网络吞吐量。

图3 不同权重值下的吞吐量

图4 单网关模式和多网关模式吞吐量对比

4.3 两种网关模式数据时延对比

图5对比了网络业务量增大情况下两种模式的时延,从中可以看出节点数目少,网络数据量少,单网关能够快速转换,满足了要求。一旦业务量伴随网络规模增加,单网关的负载就会增加,等待转换的数据不能及时处理,导致数据的实时性降低。在多网关模式下,网关感知业务量增加这一变化,将自己的状态告知全网,使得网络的终端节点有机会重新选择那些负载小的网关节点,从而减少了数据时延。

图5 单网关模式与多网关模式数据时延对比

5 结束语

分析了单ZigBee网关模式在网状网络拓扑中带来的问题,提出一种多网关协作方案,并完成了硬件和软件的设计,完整搭建了基于ZigBee多网关无线传感器网络验证平台,能完成网络拓扑构建、多网关选择、数据传输等功能。对该方案进行了实验验证,结果表明,多网关协作方案提高了网络的吞吐量,减少了数据时延。

猜你喜欢

关节点树莓吞吐量
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
基于树莓派的骑行智能头盔设计
基于树莓派的远程家居控制系统的设计
搞好新形势下军营美术活动需把握的关节点
2016年10月长三角地区主要港口吞吐量
2016年11月长三角地区主要港口吞吐量
响应面法优化红树莓酒发酵工艺
2014年1月长三角地区主要港口吞吐量
上海港11月集装箱吞吐量同比增长4.25%