摘要:为了解决传统无线传感器网络基于特定任务导致资源利用率及能量效率低下,且无法适应网络拓扑动态变化的问题,提出了针对多任务并发场景的层次型软件定义无线传感器网络资源调度策略。将软件定义网络引入无线传感网实现控制层和数据层解耦,通过灵活的网络资源调度策略同时完成多个任务,在保证监测质量的前提下,最小化网络总能耗;此外,软件定义的主节点可及时获取网络拓扑变化,并通过簇头节点实现簇内资源调度,提高优化效率,并降低能量消耗。结果表明,所提出的全局网络资源调度策略提高了能量效率和资源利用率,簇内资源调度在高效解决网络动态事件的同时降低了主节点的控制开销。
关键词:无线传感器网络;软件定义网络;网络资源调度;节点激活;簇内优化
无线传感器网络(Wireless Sensor Networks,WSN)由一系列能够监测物理和环境因素的微型传感器节点组成,广泛应用于智能电网、目标跟踪和环境监测等领域[1]。但是,针对特定任务部署的传统无线传感网存在着网络资源利用不充分以及节点能耗不均衡的问题,其主要原因在于不同供应商的多个传感器网络独立部署在同一监测区域中,相互之间资源无法共享,使得有限的节点资源得不到有效复用,从而极大地降低了网络寿命。此外,传统无线传感器网络对专有服务过度依赖,缺乏实现即时更改的灵活性,面对网络拓扑的动态变化,无法及时响应,并采取有效措施。因此,如何在节点资源有限,且网络动态变化的情况下,通过灵活高效的节点及网络资源调度策略来优化网络性能具有重要研究意义。
上述问题在传统无线传感网架构下很难有效解决。但是,通过将软件定义网络(Software Defined Networking,SDN)[2]引入无线传感网,可实现高效的网络资源调度以及灵活的网络管理,成为上述问题行之有效的解决方案之一,并由此产生了软件定义无线传感器网络(Software-Defined Wireless Sensor Networks,SDWSN)[3]。SDWSN将控制逻辑从传感器节点转移到逻辑集中的主节点(控制服务器),实现了控制层和数据层的解耦,并使普通节点仅具有数据收集和转发功能,提高其工作效率,并降低能耗;而主节点则具备全局网络视图,可根据不同任务请求灵活调度网络资源,选择激活最少的底层节点来同时执行多个任务,解决传统无线传感器网络资源调度不合理、节点能量效率低下等问题。此外,当网络动态事件(节点加入、离开)发生时,主节点可依据全局网络视图及时获知拓扑变化,然后通过簇内资源调度激活或关闭节点,保证监测质量,并降低能耗。
目前,国内外研究人员针对SDWSN开展了一定程度的探索。文献[4]提出了一种基于软件定义网络的无线传感器网络框架(SDNSense),通过软件定义网络将网络控制从硬件中分离,以提高网络灵活性,并动态适应网络变化。在文献[5]中,作者通过软件定义网络实现无线传感网的自动重配置,并提出了一种基于自适应粒子群优化算法的绿色路由算法,以最大限度地延长网络寿命。文献[6]提出了一种用于物联网的软件定义无线传感器网络架构(Soft-WSN),通过软件定义的控制器实现设备管理和网络管理,以满足物联网应用需求。上述文献主要研究了SDWSN的架构设计及其实现,重点描述了如何通过软件定义网络实现无线传感器网络的解耦。而在SDWSN资源调度方面,文献[7]提出了一种基于软件定义网络的无线传感网睡眠调度机制,通过控制器执行资源调度算法来决定节点状态,消除了每个周期内两次广播过程以减少通信能耗。但是,该调度机制灵活性不足,因为控制器仅在每个周期开始时根据节点上传的信标信息来决定其休眠与否,无法根据网络变化实时修改节点状态。文献[8]在SDWSN中设计了一种节能的网络资源再调度策略,通过控制器向节点载入不同程序来对其功能进行动态重编程,以高效调度节点资源满足不同任务需求。但是,在资源调度过程中,仅考虑了再调度时的能量消耗,并没有考虑节点的可调度性和内存约束等问题。文献[9]将无线电力传输技术引入到SDWSN中,提出了优化的能量发射器放置机制,以及高能效的网络资源调度策略。但是,当节点能量过低或者网络拓扑发生变化时,需要频繁地在整个网络范围内执行能量发射器调度机制,不够灵活,且再调度时间过长。
针对传统无线传感器网络资源利用不合理、网络僵化不灵活以及现有SDWSN资源调度机制存在的问题,笔者提出了层次型软件定义无线传感网中的资源调度策略(Resource scheduling Strategy in Hierarchical Software Defined Wireless Sensor Networks,RS-HSDWSN)。首先,通过分簇建立层次型网络结构,并将软件定义网络中数据层扩展的思想引入,把主节点部分控制功能下放到位于数据层的簇头中以缓解其控制开销; 然后,主节点采用集中调度的方式,合理利用底层网络资源,解决基于特定任务的无线传感网因多任务在网络区域中重复部署的问题;最后,在联合考虑任务监测质量和节点监测能力的基础上,最小化激活节点数量以减小网络总能耗。此外,当网络拓扑发生变化时,选择在簇头节点处采用簇内资源调度以保证任务监测质量,并合理降低网络能耗。与全局资源调度相比,簇内调度仅需请求局部网络信息,可提高优化效率和网络灵活性。
1 系统模型
1.1 网络模型
将基于OpenFlow的软件定义网络架构引入无线传感器网络,结合分簇及数据层扩展的思想,形成层次型的软件定义无线传感网结构,其网络架构如图1所示。SDWSN中的主节点对应于OpenFlow中的控制服务器,具有充足的电量和较强的处理能力;还对应于数据层扩展中的根控制器,用以执行需要全局视图的任务,如分簇以及全局网络资源调度。SDWSN中的簇头节点对应于OpenFlow交换机,用于融合并转发簇内节点监测数据;簇头还对应于数据层扩展中的本地控制器,其作用是缓解主节点控制开销,并执行无需全局视图的任务,如簇内资源调度。SDWSN中的普通节点仅负责监测,并生成数据,然后将数据发送给簇头节点。
图1 SDWSN模型
图2 节点和任务映射关系(多对多)
笔者提出的层次型SDWSN由一个主节点和大量软件定义节点组成。每个软件定义节点都装备了具有不同监测能力的多个传感器,例如温度、湿度传感器等。其中每个子传感器均能监测某个特定任务中的监测目标。因此,一个软件定义节点能够同时执行多个任务,如图2(a)所示。针对监测任务而言,每个任务都有相应的监测目标集合,而每个目标可由一个或多个节点协同完成监测,如图2(b)所示。因此,笔者提出的SDWSN网络模型能够处理多任务并发问题,而无须在监测区域重复部署。
在SDWSN中,数据层的软件定义节点和控制层的控制器之间通过文献[10]提出的Sensor OpenFlow(SOF)协议进行通信。为适应无线传感器网络特性,需对OpenFlow作必要的修改。在数据平面,与以地址为中心的OpenFlow网络相反,无线传感器网络通常以数据为中心,并采用了不同的寻址方式。所以,在基于软件定义网络的无线传感器网络中,需要重新定义流表以满足传感网中特殊寻址方案。
无线传感器网络寻址方案可分为Class-1(紧凑型网络唯一寻址)和Class-2(级联属性值对(CAV))。针对Class-1,通过利用OpenFlow可扩展匹配(OXM)来解决,在SOF中引入两个新的oxm_type来表示Class-1地址:OXM_SOF_SRC(源)和OXM_SOF_DST(目的地),并在同一个OXM框架下构造Class-1流表匹配即可;针对Class-2,通过引入CAV格式来完成流表的重新定义,然后通过添加新的oxm_type,OXM_SOF_CAV,便可创建任意的Class-2流。
在控制平面,需要设计SOF信道,用于节点上传告警和网络状态信息或者由控制器下达控制指令。在数据层重新定义流表的基础上,SDWSN在控制层设计SOF信道的优势在于,可以通过直接在无线传感器网络上覆盖传输协议来提供SOF信道。传感网中传输协议的设计已经具有十分广泛的研究成果,在此不再赘述。
在SDWSN中通过SOF信道传输的控制数据包含两种类型,节点发送给控制器的拓扑变化和告警信息(packet-in),控制器发送给节点的激活/休眠指令和流表规则(packet-out)。这些控制数据会占用控制器和底层网络资源。为降低资源占用,笔者采取的策略包括:其一,针对packet-in数据,根据Sensor OpenFlow协议的思想,将目的地地址相同的packet-in数据捆绑到流中可有效减少传输数据量;其二,针对packet-out数据,笔者通过数据层扩展,由簇头解决网络动态事件,避免了控制器因网络动态频繁地产生控制信息。
1.2 能耗模型
以文献[11]中SDWSN能耗模型为基础,结合文献[12]提出的基于分簇的节点耗能模型,在层次型软件定义传感器网络框架下,给出符合本文网络模型的能量消耗模型如下:
基于分簇的SDWSN由三部分组成:主节点、簇头节点和普通节点。主节点由外部电网供电,因此笔者不讨论其能量消耗。簇头节点和普通节点的能耗由通信模块、处理模块和监测模块三部分组成。
普通节点发送k bit数据到距离为d处所消耗的能量由发射电路损耗和功率放大损耗两部分构成,即
(1)
对于簇头节点,融合并发送k bit数据所需的能量消耗为
(2)
其中,EDA表示融合1 bit数据的能耗,d代表节点之间的距离,Eelec表示发送或接收1 bit数据的能耗。εfs和εmp分别表示自由空间和多径模型中功率放大的能耗,k是发送数据的长度,d0是传输距离阈值。
传感器节点接收k bit数据所消耗的能量为
ERX(k)=kEelec 。
(3)
将软件定义网络引入无线传感器网络后,普通节点的总通信能耗仅包括发送数据部分(ETX),不再转发来自其它节点的数据,所以其通信能耗由以下公式表示:
(4)
而簇头节点需要负责接收其成员节点的数据,在完成数据融合之后以多跳方式发送给主节点。假定在基于分簇的软件定义无线传感网中,一个簇由m个节点组成,那么其通信能耗可表示为
(5)
在处理模块部分,节点处理数据所需的能量消耗为Ecpu;监测模块部分,传感器执行监测操作的能耗为Esen,而通信模块产生的能量消耗即为上述Ecom。
引入软件定义网络后,普通节点不再做任何路由决策和数据处理,移除了处理模块部分的能耗(Ecpu),因此,其总能耗由以下公式表示:
(6)
而簇头节点的总能耗则可表示为
(7)
综上所述,激活的节点总能量消耗为Etotal,而处于休眠状态的节点仅需维持传感器的基本能量消耗,定义为Esleep。
2 分簇算法
通过分簇使簇头节点保留部分控制功能,缓解主节点控制开销的同时保留了传统无线传感器网络分布式处理的优势。主节点拥有全局网络视图,因此,分簇操作在主节点中完成更为合理。选用该分簇算法的原因有三:其一,位于SDWSN控制层的主节点采用的是集中调度的方式,所以必须选用集中式分簇,而非分布式分簇算法;其二,算法设计时,将分簇和资源调度过程中考虑的因素相匹配,减少了重复的信息收集以及不必要的操作,从而提高整个网络的效率;其三,该算法实现简单,且考虑分簇因素更为全面。
该算法通过对剩余能量、相对位置和节点度的综合分析,选取最合适的节点充当簇头并建簇。首先引入以下几个定义:
邻居节点:在节点i广播半径Rb内的节点称为其邻居节点,用Ni表示。
节点度:节点i邻居节点的数量,用Mi表示,表征选取该节点作为簇头时的覆盖能力。
节点间相对距离:节点i接收其广播半径内的全部节点的广播消息,用Sj表示来自于节点j的广播信号强度。那么节点间相对距离Di可由以下公式表示:
(8)
Di越大,表示节点i与邻居节点之间的平均距离越短,意味着它们之间进行通信时具有更小的能耗。
分簇算法可分为消息广播阶段和节点角色确定阶段,详细过程如下:
消息广播阶段:所有节点广播一条HELLO_MSG消息,并根据接收到的广播消息计算Ni、Mi以及相对距离Di,然后将上述信息及自身剩余能量打包通过SOF信道发送给主节点。
节点角色确定阶段:主节点根据接收到的节点状态信息确定簇头及其成员节点。具体操作如下:
(1)根据式(9)计算每个节点的等待时间ti,然后主节点开启计时操作。如果计时到ti时节点i仍没有收到来自任何一个簇头的消息,那么该节点将作为簇头,并发送消息告知其邻居节点。ti由以下公式给出:
ti=ηe-wi ,
(9)
其中,η是决定网络延迟大小的比例因子。wi表征节点i成为簇头的概率大小,由节点度、剩余能量以及节点间距离决定,并由以下公式给出定义:
(10)
其中,表示节点i剩余能量,Einit表示节点初始能量,diM代表节点i到主节点的距离;α、β和γ是描述三个方面重要程度的影响因子,可根据实际任务情况而定。例如,某个任务希望簇头具有较强的覆盖能力,则选取较大的α值;某个任务要求节点间实现更小的通信能耗,则选取较大的γ值。如果将能量作为簇头选取的主要考虑因素,则需要增加β所占的权重。
(2)如果节点i在ti内接收到来自某个簇头的消息,那么该节点作为成员节点加入由此簇头形成的簇。
基于微信公众平台开发的学习平台,以便捷高效的二维码技术为链接钥匙,结合微型网站为载体,整合微课资源、课件资源等,实现学习资源共享,为学生提供一种按需、轻量、即时的学习体验,起到有效辅助课堂教学的作用。
式(9)和(10)表明,拥有更高节点度、更多剩余能量,与周围节点平均距离更短以及离主节点更近的节点,将会具有更短的等待时间ti以及更大的概率成为簇头。通过上述方式来确保簇头选择的合理性,使其具有更好的覆盖能力和生命周期,同时与周围节点和主节点具有更小的通信能耗。
3 资源调度策略
笔者提出的资源调度策略可分为两个阶段。第一阶段,分簇完成之后,主节点根据同时到达的多个任务,分析其监测质量要求,然后通过全局网络视图,获取节点当前监测能力(包括剩余能量、内存占用和监测速率等),最后完成整个网络范围内的资源调度,最小化激活节点数量来同时完成多个任务,达到全局最优;第二阶段,当网络动态事件发生时,通过簇头节点激活或关闭相应节点来实现簇内资源调度,保证监测质量,并提高优化效率,达到局部最优。
3.1 全局网络资源调度
实现全局网络资源调度需要考虑的因素有两方面,对任务的监测质量约束和对节点自身监测能力的约束。因为,只有满足任务监测质量要求,才表示该任务被有效执行,这是保证任务完成度必须考虑的因素之一;此外,SDWSN中的软件定义节点除了能量之外,内存和监测速率等资源都十分有限,所以主节点必须充分考虑节点当前监测能力,通过调度有限的资源来解决多任务并发问题。
3.1.1 任务监测质量约束
在无线传感网中,任务监测质量是用户最关心的问题,而良好的覆盖能够有效提高传感网的监测效果[13],因此,采用覆盖率对监测质量加以量化。一个任务中存在多个监测目标,只有传感器节点对目标的监测速率大于最小监测率ft,才表示该目标被覆盖。当任务中被覆盖的目标数达到最小覆盖率要求(定义为λt)时,表明该任务的监测质量得以满足。
假设所有节点以及任务中的监测目标随机分布在网络区域中,只有任务t(t∈T)中的目标g(g∈Gt)在软件定义节点s(s∈S)的监测范围内时,该目标才能够被节点s监测,两者关系如式(11)所示。
(11)
一个软件定义节点s能够监测任务t中的目标g,有且仅有满足:(1)目标g在传感器节点s的监测范围之内,即φs tg=1;(2)任务t能够调度传感器节点s。为此,定义了一个二进制变量αs t,表示任务t能否调度传感器节点s。
(12)
以βs tg表示传感器节点s能否监测任务t中的目标g,即
βs tg=αs tφs tg, ∀s∈S, t∈T, g∈Gt 。
(13)
对于任何一个满足监测质量要求的监测目标,必须达到最小监测率以保证其获得有用监测信息。传感器节点s对任务t中目标g的监测速率fs tg首先由βs tg决定:
0≤fs tg≤βs tgf, ∀s∈S, ∀t∈T, ∀g∈Gt 。
(14)
上式表明,只有当软件定义节点s能够监测目标g,fs tg才能被分配到一个大于0的值。
在笔者提出的SDWSN架构中,多个软件定义节点可能会协同监测同一个目标,如图2(b)所示。值得注意的是,对目标的有效监测速率并不是将相互协作的节点的监测速率简单地相加,因为任何一个监测事件遭遇正在进行着的监测同一目标的同类型事件时,该监测事件将被视为重复,并且应该被忽略。
每个节点将会独立地以泊松过程执行监测任务,那么整个监测活动便是一个复合泊松过程,其监测率为任务t中的某个监测事件正在进行的时候,在这段时间(监测持续时间dt)内任何新触发的同类型监测事件都将被视为重复。因此,对任务t中目标g的协同监测活动可以被建模为一个有损失的M/D/1/1排队序列。然后,推导出该序列的平稳概率分布函数如下:
(15)
其中,
一个监测事件仅在该队列系统中处于π0状态的时候被视为是有效的。因此,有效监测率可表示为
(16)
基于上述推导,定义了一个二进制变量δt g,表示对监测目标g的有效监测率是否超出了任务最小监测率(ft)的要求。即
(17)
为了保证任务监测质量,对于某个任务t,最小覆盖率要求λt必须被满足。因此,覆盖率约束,即对任务的监测质量约束可表示如下:
(18)
其中,δt g=1,表示监测目标g被覆盖,|Gt|表示任务t中的监测目标总数。
3.1.2 节点监测能力约束
一个软件定义节点可能需要同时监测多个目标。为获得有用监测数据,每个任务中的目标均要求节点能够为其提供一个确定的监测速率fs tg和监测持续时间dt。因此,所有节点均需要满足以下可调度性约束:
(19)
上式是为了保证节点对多任务的可调度性,只有该节点当前对目标的监测速率和监测持续时间满足任务要求,此节点才能够被该任务调度,用以监测这个任务中的目标。
一个软件定义节点能够同时执行多个任务,但只有将相应任务的程序载入到节点中,该节点才能够被激活,并执行监测操作。不同任务具有不同程序大小,考虑同构的传感器网络,即所有节点具有相同的存储能力,并将其归一化为1.0。因此,当一个软件定义节点被多个任务调度时,其总程序大小不得超过该节点存储容量,将其定义为存储约束,并表示如下:
(20)
其中,αs t表示节点s能否被任务t调度,pt表示执行任务t所需占用的归一化内存大小。
此外,执行任务过程中,必须考虑节点的剩余能量。能量过低的节点将不能被激活用以相应任务的执行。在部署节点时设置阈值,能量高于该阈值的节点能够正常执行监测、处理和通信任务。因此,节点的能量约束由以下公式给出:
(21)
其中,表示节点s当前剩余能量,Eth表示能量阈值,该阈值将在3.2.2节加以量化说明。
3.1.3 资源调度目标及求解
如果某个节点被至少一个任务调度,那么该节点将被激活以执行相应监测操作。用二进制变量as表示节点s是否被激活,即
(22)
对于节点s,如果存在任务t∈T,使得αs t=1,那么as≡1;对于任意t∈T,都有αs t=0时,则as≡0。
资源调度的目标是在多任务并发的情况下,满足不同任务的监测质量要求,并最小化网络总能耗,等价于激活最少的节点同时完成多个任务。其目标函数及约束条件可表示如下:
(23)
上述问题是一个典型的0-1整数规划问题,其中一个优化方案是枚举所有as可能的组合,通过比较目标函数值来求取最优解,这个方法的计算量非常巨大。因此,采用求解0-1整数规划问题最常用的方法——分支定界法来解决SDWSN中软件定义节点的激活调度问题。
算法1 运用分支定界法获得SDWSN中最佳激活调度方案。
①初始化
②While 活节点列表中存在一部分活节点 do
③选择一个活节点k并标记
④解决整数规划松弛后的线性规划(LP)问题:
定义激活方案为as(k),将ZLP(k)定义为问题(k)的LP松弛
⑤if ZLP(k)≥Z* then
⑥剪除节点k
⑦else if ZLP(k)<Z*并且as(k)对于整数规划问题是可行的 then
⑧
⑨剪除节点k
⑩else if ZLP(k)<Z*并且ψ(k)对于整数规划问题是不可行的 then
将活节点k的孩子节点标记为活节点
end if
end while
return 最佳激活调度方案以及最小网络能耗。
分支定界法是求解0-1规划问题最主要的方法之一,通过分支、定界和剪枝操作不断缩小解空间,剔除不可能产生最优解的子集,使得计算次数减少,从而极大地降低了优化过程中的计算复杂度,最终快速获得最优解。该算法可保证为传感器网络资源调度问题提供一个优化的解决方案,并且如文献[14]所分析,分支定界法的平均计算复杂度是特别低的,所以在具有充足处理和计算能力的主节点中执行,能够高效获得最优节点激活调度方案。
一旦主节点获得优化的激活调度方案,调度指令将会通过SOF信道发送至数据层的软件定义节点,部分被选中的节点将会被激活用于相应任务的执行。通过该方式激活节点,并调度网络资源,不仅能够满足不同任务的监测质量,还能合理利用节点剩余资源,最小化网络总能耗,有效延长网络寿命。
3.2 簇内资源调度
在实际无线传感器网络中,传感器节点大都由电池供电,并且电量有限。因此,新的节点将被部署以补偿一部分电量耗尽的节点。当节点加入或离开导致网络拓扑发生变化时,最简单的方法是向主节点请求全局网络资源调度。该方法可最小化激活节点的数量,并合理调度整个网络范围内的资源,但是却有以下不足之处:
(1)频繁地执行全局网络资源调度将会导致主节点负载过高,产生网络拥塞现象。
(2)主节点需要不断地收集信息用于全局优化,从而产生过多控制消息,导致高计算复杂度和能量消耗。
(3)主节点需要收集整个网络的信息,导致调度时间过长,优化效率较低。
因此,笔者提出了一种低复杂度的簇内资源调度算法,而不是采用全局优化来处理网络动态事件。簇内资源调度仅需请求局部网络信息,其计算复杂度更低,优化效率更高。此外,该算法在簇内执行,由簇头完成资源调度,将部分主节点控制功能下放到了簇头节点处,实现了数据层扩展以缓解主节点控制负载。
3.2.1 节点加入
首先考虑节点作为网络参与者被部署到网络中的情况。尽管让这些节点仍然保持休眠状态不会对当前网络监测质量产生影响,但实际上很少有减少网络中激活节点数量的机会。因此,当节点加入时,可以考虑在不降低监测质量的前提下,减少激活节点数量以降低能耗。
图3 节点加入示意图
如图3所示,两个目标a、b分别由两个激活的节点A和B监测,节点C作为新节点加入网络,当它的监测范围足以覆盖这两个目标并提供同等水平的监测质量时,便可以选择关闭节点A和B,而仅使节点C激活,从而减少激活节点数量,降低能量消耗,并优化资源部署。
当新节点部署时,为充分利用上述机会改善网络性能,笔者提出了一种灵活高效的簇内资源调度算法来解决传感器节点加入事件。具体过程如下:
步骤1 以图3为例,当新加入节点C部署到网络中时,它首先将自身信息(包括位置、内存容量、剩余电量)上传至主节点和簇内控制节点(簇头)处。
步骤2 利用节点位置信息,簇头能够发现节点C监测范围内潜在的监测目标,如图3中的目标a和b。以这些潜在目标为中心,簇头还能够发现可以覆盖这些目标的其他节点,例如图3中的节点A和B。
步骤3 基于上述信息,簇头节点可建立起一个子图,包括节点集合S′、任务t中目标集合G′t,以及相应在子图中应该满足的监测质量λ′t,即
(24)
步骤4 簇头节点只需解决子图上的簇内优化问题,便可以根据实际情况减少激活节点数量,在降低网络能耗的同时,保证每个任务的监测质量。
步骤5 完成簇内资源调度后,如果节点C需要切换为激活状态,以便使其它两个或更多节点被关闭,则激活该节点以降低能耗,并将优化结果广播到簇内节点以调整其监测策略。否则,节点C不需要被激活,集合S′中的节点仍然使用现有的监测策略。
簇内资源调度具有和全局网络资源调度相同的目标和约束,但是由于簇内优化中变量和约束条件的数量非常有限,所以即使是资源有限的簇头节点,也可以很容易地解决这个优化问题。并且由于变量和约束条件的减少,使得算法执行时间大大降低,从而提高了再调度的效率。
3.2.2 节点离开
考虑节点由于能量耗尽或人为破坏而从网络中消失的情况。同样采用簇内资源调度来补偿节点消失后任务监测质量的下降,同时最小化激活节点的数量。如果簇内资源调度无法保证监测质量,则在主节点处采用全局网络资源调度策略满足监测质量要求。相应过程详细描述如下:
步骤1 当节点x的剩余能量低于阈值时,便发送一个报警消息告知簇头。能量阈值由以下公式给出:
Eth=Eavg-Es td ,
(25)
其中,Eavg表示全部激活节点剩余能量的平均值,Es td是所有激活节点剩余能量的标准差。能量低于该阈值的节点,将无法完成正常的监测操作。
步骤2 簇头节点收到报警消息后,采用簇内资源调度算法,在子图上确定节点x消失后需要调度哪些节点以保证任务监测质量。
步骤3 如果簇内资源调度返回可行的解决方案,则通过簇头将优化结果广播给簇内成员节点,而节点x则继续工作,直至其电量耗尽。否则,簇头节点将通过安全信道发送消息来告知主节点簇内优化失败。主节点随即采用全局优化来调度网络资源,并激活节点以保证任务监测质量。
综上所述,当节点加入时,可通过簇内资源调度在不影响监测质量的情况下,减少激活节点数量以优化资源部署;当节点离开时,通过簇内资源调度激活节点,补偿因节点离开导致的监测质量下降。簇内资源调度算法不仅降低了主节点的控制开销,还提高了对网络动态事件的响应速度。
算法2 通过簇内资源调度解决网络动态事件。
①while 节点加入 do ①while 节点离开(Ei<Eth)do
② 上传新加入节点信息至簇头和主节点 ② 低能量节点上传告警信息至簇头
③ 簇头执行拓扑发现过程 ③ 簇头采用簇内资源调度获得优化方案
④ 创建子图,并保证子图监测质量,即 ④ if 簇内资源调度返回可行解决方案 then
⑤ 簇头广播优化结果
⑤ 解决子图上的簇内优化问题 ⑥ else if 簇内优化失败 then
⑦ 簇头发送消息给主节点
⑤ if 新加入节点需激活 then ⑧ 主节点通过全局优化保证监测质量
⑦ 激活节点并调整监测策略 ⑨ end if
⑧ else if 新加入节点无需激活 then end while
⑨ 在子图上保持现有监测策略
⑩ end if
end while
4 数值结果分析
采用数值仿真的方式评估算法性能,仿真工具为Matlab2016b,仿真参数如表1所示。在100 m×100 m的区域内,200个节点随机分布,节点包含一个状态数组,用于存储能量、内存、坐标和监测速率等信息;任务随机生成,每个任务包含多个目标,并随机分布于仿真区域中,每个任务带有一个属性数组,包括监测速率、监测持续时间和监测质量要求,以及任务所需内存大小。
表1 仿真参数设置
4.1 SDWSN控制开销分析
为评估RS-HSDWSN的控制开销,对比算法包括文献[7]提出的基于软件定义网络的睡眠调度机制(SDN based Energy Consumed uniformly-Connected K-Neighborhood, SDN-ECCKN)、文献[15]提出的基于软件定义网络的无线传感网非均匀分簇协议(SDN-based Unequal Clustering Routing protocol, SDUCR)和传统无线传感器网络,SDUCR同样是在软件定义传感网中采用了分簇结构,SDN-ECCKN为软件定义传感网中未分簇的睡眠调度策略,传统无线传感器网络作为分析网络控制开销的对比基准。从图4中可以看出,传统无线传感器网络的控制开销随时间快速增加,因为其采用分布式处理,节点之间需要交换大量的控制信息。笔者提出的RS-HSDWSN和SDUCR均在SDWSN中采用了分簇结构,其控制开销主要来自于拓扑发现和分簇建立过程,但是RS-HSDWSN的开销更低,因为笔者采用的分簇机制考虑因素更全面,能够更加合理地均衡簇头能耗。与SDUCR相比,出现簇头剩余能量低于阈值的情况更少,因此,减少了大量分簇结构重建时的控制开销。此外,RS-HSDWSN的控制开销更是远低于未分簇的SDN-ECCKN,因为簇头节点通过保留部分控制功能缓解了主节点的控制开销。
图4 控制开销对比
4.2 全局资源调度性能分析
本节验证RS-HSDWSN在能量效率和资源利用率方面的优越性。监测任务随机产生,每个任务包含多个需要传感器节点监测的目标,以及需要无线传感器网络为其提供的监测速率ft和持续时间dt等信息。图5描述了在500个时间单元上,四种算法的总能耗。网络总能耗定义为当前网络中所有参与监测操作的节点能耗总和,即其中n为执行任务的节点数量,e为节点初始能量,ei为节点当前剩余能量。
在该仿真中,对比算法包括SDN-ECCKN、文献[16]提出的分布式优化在线任务分配(Distributed Optimal On-line Task Allocation, DOOTA)算法,以及作为能耗对比基准的传统无线传感器网络。传统无线传感器网络基于特定任务展开,当同时执行多个任务时会导致大量冗余部署以及不必要的重复监测操作,使得n增加,ei减小,导致Esum急剧增加,所以传统无线传感器网络能耗最高,且增长最快。SDN-ECCKN将网络划分为固定时隙,每个时隙包括信标阶段和执行阶段,其总能耗可改写为其中m为总节点数量,n为执行阶段激活节点数量,为信标阶段节点能耗,为执行阶段激活的节点的能耗。SDN-ECCKN在信标阶段所有节点均需激活,然后发送自身消息给控制器以决定其状态,导致了大量能量消耗;而笔者提出的RS-HSDWSN可根据实际网络情况和不同任务请求动态调度节点,与基于固定时隙的SDN-ECCKN相比更加灵活,减少了能耗。DOOTA采用分布式任务调度,无法实现全局最优,并且节点之间频繁的信息交互增加了额外通信能耗(Ecom);而RS-HSDWSN通过主节点实现集中控制,以全局网络视图可最优化资源分配,并最小化网络总能耗,且普通节点通过移除控制功能和数据转发降低了能耗。在时间节点500处,RS-HSDWSN的总能耗比传统无线传感器网络降低了45.15%,比SDN-ECCKN降低了27.61%,比DOOTA降低了10.04%。
图5 全局网络资源调度能量效率
图6 资源利用率
如图6所示,当任务数增加时,传统无线传感器网络所需节点数量急剧增加,因为冗余部署导致其中很大一部分节点重复着相同的监测工作而通过建立有损失的M/D/1/1模型,消除了对同一事件的重复监测(有效监测率通过控制器可休眠部分节点,减少处于激活状态的节点数量。随着任务数的增加,可选择激活节点而不是重新部署节点来满足任务请求,达到提高资源利用率的目的。但是,SDN-ECCKN仅在信标阶段决定节点激活与否,当新任务在执行阶段到达时,为满足任务监测质量,同样需要重新部署较多节点;而RS-HSDWSN中主节点可根据任务到达情况,实时调度网络资源,激活节点满足任务监测质量。DOOTA通过在线任务分配来调度网络资源完成不同任务,但该算法是分布式的,虽然提高了灵活性,但只能实现局部最优的资源分配;而RS-HSDWSN在主节点处通过集中式资源调度,在整个网络范围内协调现有资源,弥补了DOOTA算法的不足。执行相同数量的任务时,RS-HSDWSN所需节点数量是四种算法中最少的,因为笔者提出的资源调度策略面对多任务并不需要大量部署传感器节点。将资源利用率定义为u=(ni-nrs)/ni,ni表示其他三种对比算法所需节点数,nrs表示RS-HSWSN所需节点数,同时执行5个任务时,RS-HSDWSN的资源利用率比DOOTA提高了35.3%,比SDN-ECCKN提高了42.8%,比传统无线传感器网络提高了56%。
4.3 簇内资源调度性能分析
图7 即时再调度时间变化曲线
簇内资源调度能够在节点加入或离开后快速完成资源优化,图7左图为全局和簇内资源调度的即时再调度时间变化曲线。为对比清晰,图7右图表示节点一跳邻居范围内的局部资源调度策略。再调度时间表示网络动态事件发生后,新优化方案的计算时间。在500个时间单元上,动态事件随机产生。从图7左图中可以看出,和全局网络资源调度相比,绝大多数情况下,簇内资源调度的再调度时间更短,因为簇内优化仅需请求局部网络信息,使得其优化效率更高。但是,极少数情况下,簇内资源调度的时间要略长于全局资源调度,比如时间节点270处,因为在这种情况下,簇内资源调度未能获得可行的优化方案,所以必须随即动用全局网络资源调度以保证任务监测质量。图7右图所示的局部资源调度表示某个节点消失后,在其一跳邻居范围内寻找替代方案。与全局优化相比,该方式能够提高优化效率,但大部分情况下其再调度时间要远高于簇内资源调度,因为在节点一跳邻居范围内并非总能获得最优方案。
5 结束语
为了提高网络资源利用率,并灵活响应网络动态事件,笔者提出了层次型软件定义无线传感器网络资源调度策略。以分簇的方式实现数据层扩展,缓解集中式控制器负载。RS-HSDWSN在保证监测质量的前提下同时执行多个任务,并最小化激活节点的数量,实现最佳的网络及节点资源调度。最后,通过簇内优化灵活高效地解决网络动态事件,保留了传统无线传感器网络分布式处理的优势。与传统基于特定任务的无线传感网相比,所提出的激活调度策略解决了冗余部署问题,能够实现更低的能量消耗,以及更加灵活的网络管理。