谭 劲,张曼曼
(中国计量学院信息工程学院,杭州310018)
无线传感器网络(WSN)是由大量通信能力、处理能力和能量供应都十分受限的微型传感器节点,以自组织和多跳的方式构成的无线通信网络,通过协作感知、采集和处理监测区域的数据,以实现环境监测的目的。一旦部署成功,WSN通常要长期工作在无人协助的环境中,在此期间为了适应环境和网络拓扑的动态变化,需要相应的改变用户的部分需求,并随之调整软件的功能,这都需要对传感节点上的应用程序进行再编程。同时,由于网络部署的随机性、规模性和工作环境的特定性,使得传统的手工再编程已经不切实际,甚至是不可行的。这就需要网络再编程,即通过无线通信的方式远程对节点进行软件更新。
网络再编程主要包含两部分内容:第一部分是传感节点上已装入更新代码的安装机制,属于操作系统与硬件结构研究的范畴;第二部分是分布更新软件到传感节点的传播机制,属于网络协议的范畴,是目前研究的重点和热点[1]。已有的网络再编程协议,根据传感节点资源受限的特点,通过无线信道,采用单跳或多跳的空中加载技术,将软件影像传输到整个网络。然而,这些协议大多假定网络是同构的,即将同一软件影像传输到网络中的所有节点,不具有范围选择功能。实际上,为了增强网络的可靠性和延长整个网络的生命周期,传感节点在传感对象、通信能力、硬件资源(CPU处理能力、带宽、能量)等方面都是异构的[2-3]。不同的节点或者节点集会运行不同功能的应用程序,以完成不同的传感任务。由于传感节点的异构性、传感任务的多样性和软件对地点的可能的依赖性,使得将软件影像传输到整个网络是不合适的[4],这就需要在软件传输过程中对网络中的节点进行动态的选择,即对运行某种特定应用程序的所有节点进行再编程。
本文提出了一种能量有效的基于虚拟骨干网的WSN范围选择再编程协议。该协议首先根据要更新的应用程序、节点的剩余能量、有效度数和节点间的链路质量,选出合适的核心节点,创建虚拟骨干网,然后分两个阶段实现数据传输。在第一阶段软件影像由Sink节点通过流水线的方式,先可靠传输给核心节点;在第二阶段由核心节点并行传输到需要的普通节点。有效地减少了参与再编程的节点数,节省了能量,实现了范围选择。另外,采用协调调度并引进睡眠机制,使得不参与数据传输的节点关闭无线通信装置,进一步减少能量消耗。性能分析和仿真实验表明:与已有的协议ThreeStages和Aqueduct相比,本协议节省了大约5.6% ~24.8%的平均延时和5.1% ~27.7%的能量消耗。
文献[5-6]对现有的网络再编程协议给出了很好的总结。这些协议大多假定网络中的所有节点都需要同一版本的软件影像。Trickle[7]通过周期性的广播软件影像的元数据(Meta-Data)来检测邻域内的节点是否需要进行软件更新。动态的调整广播率对控制消息起到了抑制作用,减少了由广播风暴引起的数据冗余。Deluge[8]对Trickle进行了扩展,将较大的软件影像分割成固定大小的数据页,引进流水线操作,实现了空间的多路复用。循环冗余码校验CRC的引入,保证了软件更新的可靠性。MNP[9-10]引进发送者选择机制,选择邻域内接收到请求最多的节点为本次的发送者。支持流水线操作,实现了数据的快速传播。同时,MNP引进了睡眠机制,通过减少节点无线通信活跃的时间来节省能量的消耗。Sprinkler[11]和 CORD[12]采用层次结构的方式分发软件影像,即将网络再编程分成两个不同的阶段。第一阶段:由Sink节点将软件影像可靠的传播到网络中的核心节点(Core Node);第二阶段:核心节点并行的将软件影像传播给自己邻域内的非核心(Non-Core Node)节点。这种类型的协议可以有效的减少能量的消耗,而关键是在网络中创建有效的虚拟骨干网,也就是连通支配集(CDS)。
近期的文献开始着重研究异构WSN的具有范围选择的再编程协议。Melete[13]根据传感节点任务的不同,分成不同的分组。分组内部使用Trickle算法传输数据,分组间通过构造“转发区域”进行数据传输,并采用TTL(Time To Live)的方式限制传输的范围。Aqueduct[14]对 Deluge 进行了扩展,使其具有范围选择功能。通过创建成员节点间的最短路径,建立起成员节点间的中间桥梁,从而进行软件的分发。文献[15]引进了一个准备阶段,在这个阶段中每个节点获得自己的角色分配。角色分为3种,分别是需要更新的节点,转发节点和完全不参与的节点。再编程的范围选择,通过每个需要更新的节点,以树形方式向Sink节点发送消息实现。作者的前期工作,ThreeStages协议[16]变传统的 ADV-REQDATA三次握手协议为路由形成、代码传送、请求丢失包三个阶段协议;中间转发节点通过获取一跳范围内希望接收更新代码数据的节点序列,采取单播或组播方式有针对性传送更新代码,而不是泛洪式的广播,减少了REQ确认信息包。但该协议并未考虑节点的剩余能量问题,路由上的节点可能由于能量不足,而无法实现软件影像的可靠传输。另外,可以通过引进适当的睡眠机制,进一步节省能耗。Pasztor[17]等人将无线传感器网络应用到野生动物的监测上,根据动物或人类都是社会群体,具有明显的社会模式和群体交互,提出了针对动态网络的具有范围选择的再编程协议。
然而,目前在具有范围选择的网络再编程协议的研究方面,还存在一些问题:协议一般是基于3次握手机制的,众多的REQ会带来确认爆炸问题;不能做出正确、有效的范围选择;很少考虑节点的剩余能量问题,导致可能由于节点的能量不足,而不能实现软件影像的可靠传输。
本文的系统模型如下:
(1)整个网络有一个基站Sink,节点随机分布在一个二维区域中,每个节点拥有唯一的ID,并都能以单跳或多跳的方式,将自己感知的数据传输到Sink。如图1所示,图中有矩形、圆形、菱形三类节点,对菱形节点进行软件更新,即菱形节点为本次的成员节点。
(2)用一个连通图G=(V,E),来表示WSN。其中,V是节点的集合即WSN中的所有传感节点的集合,E是节点间边的集合。用R(si)表示节点si的通信半径,d(si,sj)表示节点si和sj之间的欧式距离,每条边 e=(si,sj)∈E(其中,si,sj∈V)都有 d(si,sj)<R(si)[18]。
(3)研究的WSN是静态的,且无线通信是双向的,并且是在网络运行一定时间的基础上对网络进行再编程。根据之前数据交换时数据包的丢失率,统计得到节点间的链路质量 Quv,且 Quv=min(Qu->v,Qv->u)[12]。每个节点中都保存有自己的邻居列表,邻居列表包括该节点的所有邻居节点和邻居节点与该节点间的链路质量。
(4)再编程开始时,Sink节点会将软件影像分割成数据页,每页包含K个数据包(最后一页包含的数据包的数量可以小于K)。同时,记录下起始时间,并将时间分成长度为L的时间片。时间片相对较长,长到可以完整可靠的传输完一个数据页的K个数据包。
图1 再编程网络结构(对菱形节点进行再编程)
本文使用到的新的定义:
定义1 核心节点:是将WSN看作是一个连通图而构造的虚拟骨干网上的节点,Sink节点默认为虚拟骨干网上的核心节点。
定义2 非核心节点:在创建虚拟骨干网时,上层核心节点在自己的邻居节点中选择符合条件的节点为下层核心节点,并发送通知消息给所有邻居节点,收到通知消息而未被选为核心节点的邻居节点为下层非核心节点。
定义3 剩余节点:虚拟骨干网创建完成之后,网络中除核心节点与非核心节点之外,可能还有剩余的节点,这些节点为剩余节点。
定义4 普通节点:网络中除虚拟骨干网上的核心节点之外的节点,包括非核心节点和剩余节点。
定义5 父节点:一个节点的父节点,是能够与该节点直接通信的上游核心节点。如图1中Sink节点是节点2、节点4和节点12的父节点。
定义6 有效度数d(si):一个节点的有效度数,是从自己的所有邻居节点中减去自己的邻居节点与父节点的邻居节点的交集后,该节点所剩的邻居节点数,如图1中节点4的有效度数是2。
定义7 权重w(si):一个节点的权重,是将该节点的剩余能量和有效度数综合考虑的结果。w(si)=Er(si)>Es&&d(si)>Ds,其中 Es表示核心节点剩余能量的阈值,Er(si)为节点si的剩余能量,Ds为核心节点有效度数的阈值,&&表示逻辑且。如果节点的剩余能量和有效度数都分别超过对应的阈值,则w(si)为1,否则为0。
本文协议设计分为两个部分:
(1)根据要更新的应用程序、节点的剩余能量、有效度数和节点间的链路质量,选出合适的核心节点,创建虚拟骨干网。
(2)传输软件更新:分两个阶段实现软件更新的传输,在第一阶段软件影像由Sink节点通过流水线的方式,先传输给核心节点;在第二阶段由核心节点并行传输到需要软件更新的普通节点。
本协议中使用了以下7种消息,消息格式见图2。
图2 协议中使用的消息
CLAIM:核心节点的声明消息,消息中的“应用程序的版本号Vi”包含两层意思,需要更新的是什么类型的软件和该软件更新到什么程度。“时间偏移O”是第一个时间片开始的时间到现在的时间偏移。“节点在网络中的层数”是节点距离Sink节点的具体跳数。
COMPETE:同属于一个父节点,并与父节点具有良好链路质量,且权重为1的节点竞争成为核心节点时发送的消息。成员节点具有竞争优先权。
ANNOUNCE:通知消息,父节点从参与竞争的节点中选择出核心节点,通过ANNOUNCE消息通知自己的邻居节点。
ADV:传输数据的广告消息,整个软件影像分割成了固定大小的数据页,并对数据页进行编号,按照编号由小到大的顺序,以数据页为单位进行传输。每个数据页内部同样对包含的数据包进行了编号。
REQ:数据请求消息,如果由于某种原因(如:数据包在传输过程中丢失),需要重传某些数据包,或者普通节点需要核心节点ADV广告的数据,则请求节点需要发送REQ消息。
DATA:数据发送消息,分为两种情况,如果是REQ请求的数据,则根据收到的REQ中的相关字段,发送对应的某个数据页的某些数据包;否则,则根据之前发送的ADV的相关字段,发送对应的某个数据页的所有数据包。
TEST:测试消息,在虚拟骨干网创建完成之后,网络中可能存在一些剩余节点。这些节点可能不知道自己是否需要更新,则在数据传输阶段,发送TEST消息给与自己链接质量最好的邻居节点,查看是否需要软件更新,并做出相应处理。
协议的关键是虚拟骨干网的创建,在创建虚拟骨干网选择核心节点时,协议充分考虑了节点的剩余能量问题,以保证核心节点有充足的能量,来实现软件影像的可靠传输。由于一般的传感节点不具备直接测量其剩余能量的功能,本协议采用一种间接的方法计算节点的剩余能量。传感节点的耗能模块分别是传感模块、通信模块和处理模块,则节点的剩余能量为初始能量减去这3个耗能模块消耗的能量的总和(假定在网络开始运行时,传感节点都具有相同的初始能量)。用E0表示初始能量,Er表示剩余能量,Esen表示传感模块消耗的能量,Ecom表示通信模块消耗的能量,Ecpu表示处理模块消耗的能量,可得:
然而传感节点的通信模块的功耗,远比传感模块和通信模块大得多,且通信模块在节点的生命周期内一般都是开启的,进而得到传感节点的通信模块,远比传感模块和处理模块消耗的能量多。因此,传感节点的剩余能量约等于初始能量减去通信模块消耗的能量,可得:
再编程开始时,Sink节点会根据要传输的软件影像的大小,计算出虚拟骨干网上的核心节点完成整个再编程任务时,需要消耗的能量,继而给出核心节点剩余能量的阈值Es。传感节点根据式(2)计算出自己的剩余能量Er,只有Er大于Es时才可以成为核心节点。
节点的有效度数与节点间的链路质量,与WSN的部署环境和网络的分布密度有关,根据实际经验选取对应的有效度数的阈值Ds和链路质量的阈值Qs。
本文对文献[18-19]提出的虚拟骨干网的算法进行了改进,使得需要更新的成员节点具有成为核心节点的优先权,对异构的WSN的再编程做出了范围选择的处理。以下是虚拟骨干网创建的过程:
(1)核心节点(最初是Sink节点)根据邻居列表,将CLAIM消息组播给所有邻居节点。
(2)节点收到CLAIM消息后,如果已知自己在网络中的分层,且分层小于或等于CLAIM消息中“节点在网络中的层数”则丢弃不做处理。否则,复制CLAIM内容,选择发送CLAIM消息的源节点为父节点,与其保持同步,存储父节点的ID,计算自己在网络中的分层为父节点的网络层数加1(Sink节点在网络中的分层为0)。如果收到上层多个核心节点发送来的CLAIM消息,则选择ID最小的源节点为父节点,将其他CLAIM消息丢弃不做处理。
图3 虚拟骨干网创建的主要流程图
(3)与父节点具有良好链路质量(与父节点之间的链路质量达到阈值Qs),且权重为1的节点,在收到CLAIM消息后,单播COMPETE消息给父节点,父节点从中选择核心节点。在这些节点中:(a)如果有成员节点,则选择所有的成员节点为核心节点,且不再选择同层的非成员节点为核心节点;(b)如果没有成员节点,则选择有效度数最大的节点为核心节点(如果有效度数相同,则选择ID最小的节点)。父节点做出决定后,组播ANNOUNCE消息给所有邻居节点。
(4)回到步骤(1),并循环执行步骤(1)~步骤(3),直到找到网络中最后一个核心节点为止。
这时网络中可能存在一些剩余节点,这些节点可能不知道自己是否需要软件更新,在数据传输阶段将会对其进行处理。
虚拟骨干网创建完成之后,进入到数据传输阶段,并分为两个阶段进行数据的分发。由于在第一阶段将软件影像由Sink节点分发给核心节点时,使用了流水线操作,导致同时发送数据的两个节点间至少有3跳的距离,才能避免数据干扰,如图4所示。因此采用与 CORD[12]类似的时间调度方案。调度由重复的长度为L的时间片组成,在数据传输时每个核心节点轮流进入发送、接收和睡眠状态。我们将这些在时间调度中连续的时间片,分别用SSlot、R-Slot和Q-Slot来表示。核心节点的时间调度即是重复S-R-Q。图5阐明了处于3个网络分层的邻接的核心节点u、v、w的时间调度情况。
图4 流水线传输
图5 3个邻接核心节点的协调调度
数据传输的两个阶段:
(1)由Sink节点开始,将软件影像以数据页为单位传输给虚拟骨干网中的核心节点。传输采用流水线操作,伴随着时间调度,以单播或者组播的方式进行。主要算法见图6。
图6 数据传输第一阶段
(2)核心节点并行的将软件影像传输给需要更新的普通节点。传输以单播或者组播的方式进行。主要算法见图7。
图7 数据传输第二阶段
在虚拟骨干网创建完成之后,网络中可能存在一些剩余节点。这些节点可能不知道自己是否需要更新,则在数据传输的第一阶段,以单播的方式发送TEST消息给与自己链路质量最好的邻居,这个邻居节点收到消息后根据保存的CLAIM消息,判断TEST的发送节点是否需要软件更新。(这个邻居可能是核心节点,也可能是紧邻核心节点的非核心节点)如果不需要更新,则不做处理;如果需要更新则在数据传输的第二阶段做以下操作:(a)如果这个邻居是核心节点,则该核心节点在组播了ADV消息,并收到非核心的成员节点发送的REQ消息后,将软件影像一起组播给需要的成员节点和这个发送TEST消息的节点;(b)如果这个邻居是非核心节点,则在这个邻居的父节点组播了ADV消息后,这个邻居节点向其父节点单播REQ请求软件更新。获得完整软件后,再转发给需要的邻居节点。
在不同软件更新大小传输下,我们利用OMNet++4.0网络仿真环境,比较Aqueduct和作者前期提出的ThreeStages协议,与本协议在平均时间延迟和能量消耗方面的性能。仿真的网络模型和参数与ThreeStages协议相同。实验假定传感节点随机分布于7*7的网格内,节点的总数是49,再编程的成员节点(菱形节点)为20个,非成员节点(圆形节点)为29个。如图8所示。
模拟参数见表1,模拟结果见图9~图11。
表1 模拟参数
图9 不同软件更新大小下的平均延时
图10 不同软件更新大小下的消息总数
图11 不同软件更新大小下是否采用休眠机制的能量消耗
图8中菱形表示再编程节点即本次的成员节点,圆形为非成员节点。如图8(1)所示,本实验根据上文提出的虚拟骨干网创建算法,选出了20个核心节点,构成整个虚拟骨干网(如图中实线连接的部分),将网络分成了9层(核心节点中的数字表示该核心节点在网络中的层数)。网络中剩余的29个节点中,包含24个非核心节点,与5个剩余节点。
图8(1)是在假定节点都有充足的剩余能量,来实现软件影像可靠传输的理想情况下形成的。实际上,由于再编程是网络运行一段时间之后开始的,耗能模块主要是通信模块对传感节点有限的能量进行了消耗。再编程进行时,传感节点的剩余能量可能不足以完成对应的再编程任务。尤其是虚拟骨干网上的核心节点,由于需要参与数据传输的两个阶段,对剩余能量要求较高。因此,在创建虚拟骨干网选择核心节点时,要充分考虑节点的剩余能量。图8的(2)是在(1)的实验基础上设定节点15的剩余能量不足,因而不能参与竞争成为核心节点,则其父节点8选择节点16为下一层的核心节点,继而逐层选择核心节点形成新的虚拟骨干网。
本协议总的时间延迟,包括虚拟骨干网的创建时间和数据传输时间两部分。而数据传输部分又包含两个阶段。用T表示总的传输时间,Tcds表示虚拟骨干网的创建时间,Ttf表示数据传输第一阶段的时间,Tts表示数据传输第二阶段的时间,可得:
虚拟骨干网创建时间,是由选取网络中每一层的核心节点的时间构成的。用L表示将网络分成的最大层数,用Ncom表示每一层中向自己的父节点,发送COMPETE消息的节点数,可得:
数据传输的第一阶段,是由Sink节点将软件影像通过流水线的方式,先传输给核心节点。结合流水线传输和协调调度,可得:
数据传输的第二阶段,是由核心节点将软件影像并行传输到需要的普通节点。由于传输时最多只有两跳,所以无法使用流水线操作,可得:
图9显示了本协议与ThreeStages和Aqueduct,在平均延时方面的对比。可以得到本协议在平均延时方面优于ThreeStages和Aqueduct,降低了大约5.6% ~24.8%的平均延时。原因是Aqueduct的中间节点在转发每一个数据页后,都要等待一个时间片,延长了再编程的时间。ThreeStages在数据传输时没有使用流水线操作。而本协议在创建完虚拟骨干网之后,在数据传输的第一阶段,上层核心节点只需根据自己存储的下层核心节点的ID,以流水线的方式单播或者组播发送ADV和数据。在第二阶段,核心节点并行的将软件更新传输给需要的节点,而需要软件更新的节点距离自己的核心节点最多只有2跳,可以实现数据的快速传输。
因为通信模块远比处理模块和传感模块消耗的能量多,对于网络的耗能问题,我们没有直接测试每个节点的能量消耗,而是转化为统计出所有节点收发的消息总数。本协议的总消息数,包含创建虚拟骨干网时收发的消息数和数据传输时收发的消息数两部分。其中,创建虚拟骨干网时的消息为CLAIM、COMPETE和ANNOUNCE消息,都是控制消息,而在数据传输时的消息为ADV、REQ、TEST和DATA消息,前3者是控制消息,而DATA消息为数据消息。用N表示消息总数,Ncds表示创建虚拟骨干网的消息数,Nt表示传输数据时的消息数,可得:
由图10可以看出与ThreeStages和Aqueduct相比,本协议在能量消耗方面优势明显,降低了大约5.1% ~27.7%的能量消耗。原因是在Aqueduct中所有的节点都广播ADV消息,并且每个节点都有可能成为数据的发送者。ThreeStages在路由形成时,采用泛洪的广播方式转发了比较多的消息,在代码传送阶段采用组播或单播的形式传送。在本协议中,虚拟骨干网创建时就采用组播或单播的方式转发消息,在数据传送阶段只有核心节点才会发送ADV和数据,并且遵循固定的调度,有效减少了收发的消息总数。
结合传感器节点在发送消息、接收消息、空闲监听和休眠这4种状态下的功耗情况,即节点在发送消息时,功耗最多;接收消息和空闲监听的功耗相当,且比发送消息功耗略小;休眠状态下远比前3者的功耗小。根据数据传输第一阶段的传输时间和协调调度,得到在数据传输第一阶段的能量消耗情况。
图11对比了在数据传输第一阶段不引进睡眠机制和引进睡眠机制时,网络消耗的能量,且容易得到后者明显优于前者。原因是引进睡眠机制后,节点将原来的空闲监听状态改为了睡眠状态,有效降低了能耗。
针对异构的无线传感器网络,本文提出了一种能量有效的基于虚拟骨干网的WSN范围选择再编程协议。协议的关键是建立层次路由,即在软件更新的数据传输之前,综合考虑更新的应用程序、剩余能量、有效度数和节点间的链路质量,选出合适的核心节点,创建虚拟骨干网。减少了参与再编程的节点数,降低了能量消耗,实现了范围选择。在虚拟骨干网的创建过程中,同时完成节点与其父节点之间的同步设置,以便于数据传输时协调调度并引进睡眠机制,从而进一步节省能量的消耗。数据传输分为两个阶段,在第一阶段软件影像首先由Sink节点通过流水线的方式,可靠的传输给核心节点;在第二阶段由核心节点并行传输到需要的普通节点,有效减少了时间的延迟。协议中假定了,再编程时只负责转发的非成员节点,不考虑自身的能耗问题,“无私”的完成转发软件影像的任务。再编程结束后,这些节点可能由于能量所剩无几,而无法继续正常的传感工作。将来主要研究,非成员节点如何根据要传输的软件影像的大小和节点的剩余能量,在保证后续工作能够正常进行的情况下参与再编程,完成软件影像的可靠转发。
[1]谭劲,陈晓竹,刘砚秋.无线传感网络再编程研究[J].电子器件,2008,31(3):1049-1053.
[2]Shilpa M,Jyoteesh M.Energy Efficient Control Strategies in Heterogeneous Wireless Sensor Networks:A Survey[J].International Journal of Computer Application,2011,14(6):31-37.
[3]潘巨龙,李善平,吴震东,等.一种基于无线传感器网络安全的社区卫生保健监护系统设计[J].传感技术学报,2009,22(6):838-843.
[4]Nils Aschenbruck,Jan Bauer,Jakob Bieling,et al.Selective and Secure Over-the-air Programming for Wireless Sensor Networks[C]//2012 21st International Conference on Computer Communications and Networks,ICCCN 2012.
[5]Wang Qiang,Zhu Yaoyao,Cheng Liang.Reprogramming Wireless Sensor Networks:Challenges and Approaches[C]//IEEE Network,2006,20(3):48-55.
[6]Sun Junzhao.Dissemination Protocols for Reprogramming Wireless Sensor Networks:A Literature Survey[C]//4th International Conference on Sensor Technologies ans Applications,Sensorcomm,2010:151-156.
[7]Levis P,Patel N,Shenker S,et al.Trickle:A Self-regulating Algorithm for Code Propagation and Maintenance in Wireless Sensor Networks[C]//Proceedings of the First USENIX/ACM Symposium on Networked Systems Design and Implementation(NSDI),2004,15-28.
[8]Jonathan W Hui,David Culler.The Dynamic Behavior of a Data Dissemination Protocol for Network Programming at Scale.[C]//Proc.SenSys’04,Baltimore,Maryland,USA,November 2004.
[9]Sanded S.Kulkarni,Limin Wang.MNP:Multihop Network Programming for Sensor Networks[C]//Proc 25th IEEE International Conference on Distributed Computing Systems(ICDCS 2005),Columbus OH,June 2005,7-16.
[10]Sandeep S.Kulkarni,Limin Wang,Energy-Efficient Multi-hop Reprogramming For Sensor Networks[J].ACM Transactions on Sensor Networks(TOSN),2009,5(2): - .
[11]Nail V,Arora A,Sinha P,et al.Sprinkler:a Reliable and Energy Efficient Data Dissemination Service forWireless Embedded devices[C]//Proc.of the 26th IEEE International Real-Time Systems Symposium(RTSS 2005),Miami,FL,USA,December 2005.
[12]Leijun Huang,Sanjeev Setia.CORD:Energy-efficient Reliable Bulk Data Dissemination in Sensor Networks[C]//27th IEEE Communications Society Conference on Computer Communications,INFOCOM,2008,1247-1255.
[13]Yu Y,Rittle L J.Supporting Concurrent Application in Wireless Sensor Networks[C]//Conference On Embeded Networked Sensor Systems,.ACM Press,2006,139-152.
[14]Phillips L A.Aqueduct:Robust and Efficient Code Progagation in Heterogeneous Wireless Sensor Networks[D].Master’s thesis,University of Colorado,2005.
[15]Lee K,Kim J,Thuy D D,et al.Multi-hop Network Re-programming Model for Wireless Sensor Networks[C]//5th IEEE Conference on Sensor,2006,884-887.
[16]谭劲,张曼曼.具有范围选择的传感网络再编程协议算法研究[J].传感技术学报,2012,25(2):251-257.
[17]Pasztor B,Mottola L,Mascolo C,et al.Selective Reprogramming of Mobile Sensor Network through Social Community Detection[C]//Proc.of the European Conference on Wireless Sensor Networks,Coimbra,Portugal,February 2010.
[18]赵仕俊,陈琳,李晓东.能量高效的传感器网络虚拟骨干网构造算法[J].计算机应用,2007,27(8):1839-1845.
[19]Cheng X,Ding M,Du D,et al.Virtual Backbone Construction in Multichip Ad Hoc Wireless Networks[J].Wireless Communications and Mobile Computing,2006,6:183-190.