发明内容
本发明提供的无线传感网络负载均衡路由方法将链路质量、能量均衡、流量均衡预测纳入考虑的分层模型改进算法,可以有效缓解无线传感网络负载震荡的情况,提高传感器网络寿命。
方法包括:
步骤1、控制器根据全网拓扑生成层次化网络拓扑图;
步骤2、控制器计算链路质量和能级均衡度归一化指标,形成一个带权有向图;
步骤3、若网络层数为n,进行n次Floyd最短路径算法,每一次进行最短路径算法后,形成第n层各传感器节点的路由表,并根据路由表计算该层各链路流量预测归一化指标,计入有向图权重;
步骤4、控制器对各传感器节点的路由表进行编辑更新,并向传感器节点下发编辑更新后的路由表。
进一步需要说明的是,方法中,还基于传感器节点在邻居节点维护阶段,获取链路质量指标;
传感器节点通过握手形式获得邻居节点信息,增加邻居节点维护阶段的传感器节点发送邻居发现报文的次数,将邻居节点的响应成功率作为丢包率,即:
响应成功率=邻居节点回复次数/邻居发现报文次数(1)。
进一步需要说明的是,步骤1中:各个传感器节点通过拓扑链路筛选,将响应成功率大于阈值的邻居节点信息上报给控制器,控制器采用广度优先搜索算法建立层次化网络拓扑图。
进一步需要说明的是,步骤2中,计算带权有向图包括:设全网节点数为n,定义一个n*n的数字矩阵DistanceMatrix;矩阵第x行、第y列代表节点x到节点y的权重;
能量均衡指标按式(2)计算:
能量均衡指标EB=节点总能量/当前能量(2)
带权有向图权重按(3)或(4)计算:
其中,x,y分别代表源节点和目的节点,
代表由节点x到节点y的链路质量指标,/>
、/>
、/>
分别为链路指标权重和能量均衡指标权重;
当x节点与y节点为邻居节点时,按式(3)计算权重,否则按式(4)将权重记为正无穷。
进一步需要说明的是,步骤3中,基于多次运行Floyd最短路径算法对网络层数进行处理,逐一确定每层传感器节点路由;
每个网络层在运行Floyd最短路径算法之后,将所述网络层的传感器节点传输数据量计入全局流量矩阵中,并统计出以往流量的最大值和最小值,将以往流量归一化后计入下一层级的路径权重矩阵中,达到均衡全网流量的目的。
本发明还提供一种无线传感网络负载均衡路由系统,系统包括相互通信的传感器节点以及控制器。
本发明还提供一种传感器节点运行方法,方法包括:
传感器节点开机后进入邻居发现阶段;
传感器节点周期性的发出目的地址,作为广播地址的邻居发现消息;
其中某个传感器节点接收到邻居发现消息后,向源传感器节点发送邻居回复消息,源节点接收到邻居回复消息后,则将邻居节点加入邻居列表;
源传感器节点启动邻居维护计时器,周期性的进行邻居维护工作,并等待拓扑请求消息;
源传感器节点接收到拓扑请求消息后,周期性的进行邻居维护,当邻居节点列表发生变化时,将拓扑修复消息上报给控制器,以通知控制器进行动态路由的计算;
传感器节点接收控制器下发的路由表,并按照自身配置文件,周期性的按照路由表上传采集信息。
本发明还提供一种控制器运行方法,方法包括:启动控制器;
控制器根据收到的拓扑修复消息组织网络信息,按照预设的路由策略计算全网路由,并根据路由矩阵,由近及远的逐次下发路由;
控制器在收到拓扑维护消息时,采用无线传感网络负载均衡路由方法编辑更新路由表,并下发路由表。
从以上技术方案可以看出,本发明具有以下优点:
本发明的无线传感网络负载均衡路由方法是将链路质量、能量均衡、流量均衡预测纳入考虑的分层模型改进算法,可以有效缓解无线传感网络负载震荡的情况,在中小规模网络中可以有效的提高网络寿命。及时发现无线传感网络负载隐患并进行预警,以提高无线管理水平和效率,控制无线通信过程风险,从而实现无线传感网络负载全过程监督、管理和控制的及时性和科学性。根据仿真测试,相比仅考虑链路质量和能量均衡的路由策略,能将网络寿命提高约3%-5%。
具体实施方式
本发明提供的无线传感网络负载均衡路由方法是为了避免基于历史数据的负载均衡路由生成策略导致规避热点路径过度的情况,而本发明提出的方法通过分层流量均衡预测提高负载均衡效果。本发明包括了多个传感器节点以及控制器。多个传感器节点以及控制器基于无线机芯通信,具体来讲,可以采用2.4G无线信道进行通信。为了实现软件定义无线传感器网络。
其中,本发明的传感器节点具备TCP\IP协议栈和SDWSN协议栈。TCP\IP协议栈用于邻居节点的发现与维护,SDWSN协议栈则用于根据控制器下发的流表规则进行操作。
在SDWSN协议栈中,将数据链路层(Data Link Layer)、网络层(Network Layer)和传输层(Transport Layer)合并成为网络操作系统层(Network OS Layer)。网络操作系统层主要功能是向控制器上报邻居列表、接收执行控制器控制消息和按流表规则对处理自身数据包或接收到的数据包。
传感器节点通过横跨TCP\IP协议栈和SDWSN协议栈的网络拓扑发现模块实现协议栈不同功能的切换,从而将软件定义网络和无线传感器网络相融合。
控制器部分则在传感器节点SDWSN协议栈基础上,在网络操作系统层之上增加了适配层(Adaptation Layer)。这一适配层的主要功能是维护全网拓扑信息并执行路由决策,转换生成控制信息和路由表等。
本发明的传感器节点实时监测自身能量,当其能量经离散化处理下降一个等级时,向控制器发送能级变化消息,并且,当控制器接收到能级变化消息时,启动定时器,待定时器到时后,进行路由优化。控制器启动能级变化定时器的目的避免短时间内多个节点发送能级变化消息而产生多次下发路由的情况。此外,本发明增加了对链路质量的考虑,链路质量指标的获取和链路的筛选在各传感器节点的邻居维护阶段进行。这样,本发明提供的无线传感网络负载均衡路由方法基于传感器节点以及控制器利用数字计算机或者数字计算机控制传感器节点,传感器节点可以感知环境、获取温湿度以及视频流并进行无线传输。本发明方法在路由算法中引入分层流量均衡预测策略,通过分层进行图最短路径计算,有效缓解无线传感网络负载震荡的情况,提高传感器网络寿命。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1所示是一具体实施例中无线传感网络负载均衡路由方法的流程图,方法包括:
S1、控制器根据全网拓扑生成层次化网络拓扑图;
S2、控制器计算链路质量和能级均衡度归一化指标,形成一个带权有向图;
S3、若网络层数为n,进行n次Floyd最短路径算法,每一次进行最短路径算法后,形成第n层各传感器节点的路由表,并根据路由表计算该层各链路流量预测归一化指标,计入有向图权重;
S4、控制器对各传感器节点的路由表进行编辑更新,并向传感器节点下发编辑更新后的路由表。
进一步的,如图2所示,作为上述无线传感网络负载均衡路由方法,本发明提供了传感器节点运行方法,方法包括:
传感器节点开机后首先进入邻居发现阶段。传感器节点周期性的向外发送目的地址为广播地址的邻居发现消息。每一节点接收到邻居发现消息后对源节点发送邻居回复消息,源节点接收到邻居回复消息后,则将该邻居节点加入邻居列表。邻居发现消息不会被转发,因此邻居列表中存在的邻居节点是双向确认的“单跳”节点。
之后,传感器节点启动邻居维护计时器,周期性的进行邻居维护工作,并等待拓扑请求消息。
拓扑请求消息是由控制器发出的。传感器节点在收到拓扑请求消息时主要需要完成3项工作。
(1)首次获得拓扑请求消息时,传感器节点尚无路由表,无法获得向控制器传送邻居节点列表的路径。此时,传感器节点需要记录消息的源节点,作为拓扑回复消息的初始路由。
(2)传感器节点继续广播拓扑请求消息,以使得网络节点均能参与组网。
(3)节点将本地重要属性如IP地址、邻居节点列表、数据类型等信息组织成拓扑回复消息,根据初始路由向控制器上报。为了避免这一阶段产生广播风暴的风险,可对广播的时限、次数等进行限制。
接收到拓扑请求消息后,节点周期性的进行邻居维护,当邻居节点列表发生变化时,需要组织拓扑修复消息上报给控制器,以通知控制器进行动态路由的计算。之后,传感器节点需要等待下发的路由表。控制器在接收到全网各节点路由信息后,即可按路由策略计算路由表,并下发给各节点。收到路由表后,传感器节点即可按照自身配置文件,周期性的按照路由表上传采集信息。
本发明还涉及控制器运行方法,如图3所示,方法包括:启动控制器;
控制器根据收到的拓扑修复消息组织网络信息,按照预设的路由策略计算全网路由,并根据路由矩阵,由近及远的逐次下发路由;
控制器在收到拓扑维护消息时,采用无线传感网络负载均衡路由方法编辑更新路由表,并下发路由表。这样,将链路质量、能量均衡、流量均衡预测纳入考虑的分层模型改进算法,可以有效缓解无线传感网络负载震荡的情况,提高传感器网络寿命。
在一个示例性实施例中,本发明还基于传感器节点在邻居节点维护阶段,获取链路质量指标;其中,链路质量指标(Link Quality,简称LQ)可由传感器节点在邻居节点维护阶段获得。传感器节点通过握手形式获得邻居节点信息,可增加邻居节点维护阶段的传感器节点发送邻居发现报文的次数,将邻居节点的响应成功率近似作为丢包率,即
响应成功率=邻居节点回复次数/邻居发现报文次数(1)
为此,在邻居发现报文和回复报文中加入序号,并以10次发现报文为周期计算响应成功率。
本发明为了保证网络拓扑仅保留质量较高的链路,避免低质量的不可靠链路造成网络拓扑的频繁变化,引入阈值限制,只有当响应成功率超过阈值限制的链路才进入邻居节点,并将响应成功率记为链路质量指标。
作为本发明的实施例来讲,各个传感器节点通过拓扑链路筛选,将响应成功率大于阈值的邻居节点信息上报给控制器,控制器根据各节点邻居信息进行层次化网络拓扑图的建立。
本发明的层次化网络拓扑图建立的主要目的是用于生成全局路由时将流量预测计入在内。
本发明采用广度优先搜索算法(Breadth First Search,简称BFS)建立层次化网络拓扑图,具体算法如下
对于本发明的层次化网络拓扑图建立算法来讲,具体实施方式如下所述:
1、生成临时数组Layers,数据每一项为列表结构,用于缓存每一层级的传感器节点ID
2、遍历所有节点,初始化其层数为-1
3、设置控制器层级为0,定义CurrentLayer变量用于记录当前层级,并初始化为0,Layers[0]列表加入控制器节点
4、While (CurrentLayer
节点总数且Layers[CurrentLayer]列表节点数/>
0)
5、遍历Layers[CurrentLayer]列表中每一节点CurrentNode
6、遍历CurrentNode的邻居节点NeighborNode
7、If NeighborNode层数为-1 或其层数
CurrentNode层数+1
8、NeighborNode层数置为CurrentNode层数+1
9、Layers[CurrentLayer+1]列表加入NeighborNode ID
10、End If
11、遍历结束
12、遍历结束
13、CurrentLayer++
14、nd while
本发明的步骤S2中,计算带权有向图方式包括如下方式:带权有向图的首次计算仅考虑归一化链路指标和能量均衡指标。设全网节点数为n,定义一个n*n的数字矩阵DistanceMatrix。矩阵第x行、第y列代表节点x到节点y的权重。
其中,链路质量指标LQ为传感器节点在邻居维护阶段获得的响应成功数。能量均衡指标(Energy Balance,以下简称EB)按式(2)计算
能量均衡指标EB=节点总能量/当前能量(2)
带权有向图权重按(3)或(4)计算
其中,x,y分别代表源节点和目的节点,
代表由节点x到节点y的链路质量指标,由于x节点发送数据时,其消耗量不变,因此能量均衡指标EB只计算目的节点即可,即
、/>
、/>
分别为链路指标权重和能量均衡指标权重。
当x节点与y节点为邻居节点时,按式3-3计算权重,否则按式3-4将权重记为正无穷。
在无线传感器路由计算领域,主要有两种常用的最短路径算法,即迪杰特斯拉最短路径算法(Dijkstra)和弗洛伊德最短路径算法(Floyd-Warshall,以下简称Floyd算法)。
Dijkstra算法适用于单源最短路径,本发明算法目标是在多源网络中应用,因此本发明采用Floyd算法。Floyd算法是一种经典的动态规划算法,其原理相关资料介绍已很多,这里不再赘述,本发明的具体算法如下:
1、给定带权有向图DistanceMatrix,大小为n*n,n为传感器节点总数;2、定义路径矩阵PathMatrix,大小为n*n;3、遍历矩阵PathMatrix;4、PathMatrix[row,column]=column;5、遍历结束;6、for int k=0; k
n; k++;7、forinti=0; i/>
n; i++;8、forint j=0; j/>
n; j++;9、定义临时变量w;
10、if DistanceMatrix[i,k]或DistanceMatrix[k,j]为正无穷;11、
;12、Endif;13、if DistanceMatrix[i,j]/>
w;14、DistanceMatrix[i,j]=w;15、PathMatrix[i,j]=PathMatrix[i,k];16、End If;17、for结束;
运行完Floyd算法后,DistanceMatrix为节点间的最短路径权重,PathMatrix则为路由图。如想取得节点x到节点y的路由,可按如下算法进行计算,获取最短路由:
1、给定路由矩阵PathMatrix和最短路径矩阵DistanceMatix,大小均为n*n;2、定义起始点ID StartID=x节点ID,终止点ID EndID=y节点ID,定义路径列表PathNodes;3、IfDistanceMatrix[StartID,EndID]!=∞;
4、whilePathMatrix[StartID,EndID]!=EndID;5、PathNodes列表加入PathMatrix[StartID,EndID];6、StartID=PathMatrix[StartID,EndID];6、end while;7、PathNodes列表加入EndID;8、End If;
上述执行完成后,PathNodes列表中即保存着由x节点到y节点最短路由包含的所有节点ID,并按顺序排列。
本发明的实施例中,通过分层计算流量预测指标及路由表。目前的能量均衡算法和流量预测算法均有一定的缺陷。这两种算法均完全基于历史负载情况制定路由策略,因此会尽力规避历史情况下的低能量节点或高流量节点,这将导致传感器网络频繁更新路由表,使网络出现较大的振荡,造成可观的控制开销。造成这一现象的原因主要是因为各种算法将历史情况数值化之后,一次性应用最短路径算法获得路由表,所有的节点地位平等,并不清楚互相之间的路径选择,因此这种算法忽视了引入和采用使各节点流量尽可能的均匀化分布的技术手段和过程。分析无线传感器网络的特点,所有的节点需要将数据送往汇聚节点。汇聚节点的邻居节点,可以直接将数据发送给汇聚节点,而远端的节点只能通过多跳的方式由近及远的传送数据,所以在网络规模略大的情况下,无线传感器网络即成为一种中心向外发散的网络。无线传感器网络这种特点也使得离汇聚节点越近的节点,需要承担更多的为远端节点提供数据转发的功能。并且,距离汇聚节点越近的节点,其路由可选择性越少。针对无线传感网络的这种特点,本发明提出基于分层的多次最短路径算法。分层计算使无线传感器节点的地位得以区分,因此可以有机会得到更接近于汇聚节点的传感器节点新的路由信息,从而使将流量均衡化计入路由计算的思想成为可能。分层流量均衡具体算法如下。
对于分层流量均衡算法来讲,通过如下方式来实现:
1、给定3.3.3节计算的首次路径权重矩阵DistanceMatixRaw,大小均为n*n
2、定义流量均衡最大值FlowPredictMax为double.Min, 流量均衡最小值FlowPredictMin为0,定义流量均衡矩阵FlowPredictMatric,大小为n*n,元素均初始化为0
3、定义缓存矩阵DistanceMatrix,将DistanceMatrixRaw内容拷贝至DistanceMatrix
4、for index=1,index
网络层数,index++
5、对DistranceMatrix运行一次Floyd算法
6、遍历层数为index和传感器节点
设定每一传感器节点路由,并定义StartID=当前节点ID
7、遍历每一节点的路由,定义RouteID=当前路由节点ID
8、FlowPredictMatrix[StartID,RouteID]+=起始节点数据传输量
9、ifFlowPredictMatrix[StartID,RouteID]
FlowPredictMin
10、FlowPredictMin=FlowPredictMatrix[StartID,RouteID]
11、end if
12、ifFlowPredictMatrix[StartID,RouteID]
FlowPredictMax
13、FlowPredictMax=FlowPredictMatrix[StartID,RouteID]
14、end if
15、startID=routeID
16、遍历结束
17、遍历结束
18、缓存DistanceMatrixRaw至DistanceMatrix
19、for int rowIndex=0;rowIndex
n;rowIndex++
20、for int columnIndex=0;columnIndex
n;columnIndex++
21、DistanceMatrix[rowIndex,columnIndex]
=DistanceMatrix[rowIndex,columnIndex]+
(FlowPredictMatrix[rowIndex,columnIndex]-
FlowPredictMin)/(FlowPredictMax-FlowPredictMin)*γ
22、end for
23、end for
24、end for
算法4第21行中的γ为流量预测权值。且有
本发明通过进行与无线传感器网络层级数相同的多次Floyd最短路径算法,可以由内而外的逐一确定每层传感器节点路由。在运行该层的Floyd算法之后,将该层传感器传输数据量计入全局流量矩阵FlowPredictMatrix,并统计出以往流量的最大值和最小值,将以往流量归一化后计入下一层级的路径权重矩阵中。这样逐层计算后,每一层已提取到之前各层在未来的流量负载情况,继而能够智能的选择路由,达到均衡全网流量的目的。
这样,本发明的无线传感网络负载均衡路由方法是将链路质量、能量均衡、流量均衡预测纳入考虑的分层模型改进算法,可以有效缓解无线传感网络负载震荡的情况,在中小规模网络中可以有效的提高网络寿命。及时发现无线传感网络负载隐患并进行预警,以提高无线管理水平和效率,控制无线通信过程风险,从而实现无线传感网络负载全过程监督、管理和控制的及时性和科学性。
根据仿真测试,相比仅考虑链路质量和能量均衡的路由策略,能将网络寿命提高约3%-5%。
以下是本公开实施例提供的无线传感网络负载均衡路由系统的实施例,该系统与上述各实施例的无线传感网络负载均衡路由方法属于同一个发明构思,在无线传感网络负载均衡路由系统的实施例中未详尽描述的细节内容,可以参考上述无线传感网络负载均衡路由方法的实施例。
系统包括:传感器节点以及控制器;控制器采用配备无线网卡的戴尔笔记本电脑作为控制器。笔记本电脑采用Intel Core i7-6600U CPU,主频2.6GHz,具有4GB 内存。控制器搭载Debian操作系统。Debian操作系统基于Linux内核,具有很好的稳定性和安全性,Debian操作系统上超过51000个自由软件包及其软件包管理器(Advanced Package Tool,简称APT)也简化了本平台系统的开发流程。
传感器节点基于树莓派3代(RaspBerry Pi 3)开发板,根据不同节点类型配备有温湿度传感器、摄像头、移动电源、LED信号灯和触摸屏等组件。
传感器节点采用树莓派3开发板。树莓派开发板由树莓派基金会研发,是基于ARM处理器的微型卡片式电脑,尺寸只有85*56*17 mm。树莓派3采用4核1.2GHz ARM 64位CPU,1GB RAM,板载集成了802.11n系列无线网卡和蓝牙芯片,以SD卡或MicroSD卡为内存硬盘。此外,还可以通过CSI接口搭载树莓派摄像头、通过DSI接口连接树莓派触摸屏,并支持C、Python等多种编程语言。
树莓派3的高性能和低功耗特点使得其非常适用于本系统架构的研究,可以有效减少在传感器节点硬件上的开发投入。
传感器节点的主板操作系统采用Raspbian操作系统,该系统由基于Linux内核的Debian系统简化定制而成,具有更低的能耗。
传感器节点的主板通过树莓派开发板GPIO(General PurposeInput/Output,通用输入输出接口)接口连接温湿度传感器,温湿度传感器采用DHT11温湿度传感器。温湿度传感器分别通过电阻式感湿元件和NTC感温元件进行湿度和温度的测量。
传感器节点的主板通过树莓派开发板CSI(Camera SerialInterface,相机串行接口)连接树莓派摄像头,进行视频信号的采集和传输。视频流采用H264编码。
传感器节点通过移动电源供电。移动电源容量为10000mAh。
本发明提供的无线传感网络负载均衡路由方法中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。