共享传感器网络的系统性综述
1. 引言
无线传感器网络(WSN)是未来的一项关键技术,将改变人们与物理世界交互的方式。大量微型、廉价且智能的设备配备多种内置传感器,通过无线网络相互连接并接入互联网,将为家庭、办公室、建筑、城市和环境的监测与控制提供前所未有的机会。此外,它们将支持构建从简单到复杂的众多应用程序,为最终用户提供增值信息和服务,有助于全面实现诸如物联网 [Atzori et al. 2010] 和智能空间 [Bose 2009] 等新兴范式。
正如许多其他先进技术一样,无线传感器网络的出现得益于军事应用。第一个与现代无线传感器网络相似的网络是美国军方于20世纪50年代开发的声音监视系统(SOSUS),用于探测和追踪苏联潜艇。该网络在大西洋和太平洋部署了水下声学传感器——水听器 [SiliconLabs2013]。该系统至今仍在使用,尽管如今更多用于监控海底野生动物和火山活动等和平用途 [SiliconLabs 2013]。1980年,美国国防高级研究计划局(DARPA)启动了分布式传感器网络计划(DSN),以正式研究实现分布式传感器无线网络所面临的挑战。随着DSN的诞生及其通过卡内基梅隆大学和麻省理工学院林肯实验室等合作大学进入学术界,无线传感器网络技术很快进入了学术与民用科学研究领域。政府和大学最终开始将无线传感器网络应用于栖息地监测、森林火灾探测、自然灾害预防、气象站以及结构监测等方面。随着工程专业学生进入IBM和贝尔实验室等当时的主流科技公司,他们开始推动无线传感器网络在重工业应用中的使用,例如能源分配、废水处理和工厂自动化。
然而,大多数第一代无线传感器网络部署遵循特定应用方法{Tobgay et al.} 2011]。这是因为当时的研究重点在于提高无线传感器系统功能性和性能的解决方案,而成本、标准化、资源优化和可扩展性等因素由于对目标应用程序并非至关重要而被忽视。然而,市场对在更广泛的应用中使用无线传感器网络的兴趣开始推动相关研究,旨在如何最小化此类网络的部署与维护成本,以及如何减小传感器尺寸并降低其能耗。这些动机推动了过去几十年无线传感器网络领域的研究,寻求新材料、传输技术和通信协议。可以看出,无线传感器网络的研究是多学科的,需要多个知识领域的共同努力。半导体、电信和材料科学的进步最先推动了大规模无线传感器网络的部署,以满足新型应用的需求。基于这些领域的发展,网络相关研究的重点已转向设计算法和协议,以优化无线传感器网络节点的资源消耗,从而延长系统的运行寿命。因此,已有大量文献发表,提出了路由、定位、拓扑控制和介质访问控制算法,以及电源管理机制,它们的目标均为优化网络资源。这些方案使得无线传感器网络应用的范围得以扩展,并显著延长了网络运行寿命,极大地拓展了这些网络的潜在应用。
当时构建的无线传感器网络(WSN)是为单一目的、单一应用而设计的。具体而言,每个网络节点都被编程用于通过定制协议和数据格式来采集和处理特定类型的数据。因此,传统上无线传感器网络被视为专用应用系统。“专用应用”这一概念特指服务于单一应用且用户来自同一管理机构的系统,该机构通常也是基础设施的所有者[Yick et al. 2008]。在此类系统中,传感器节点的所有资源均专用于单一应用。有时,在节点部署过程中会刻意引入冗余,以确保应用程序能够成功执行足够长的时间,并满足所有服务质量(QoS)要求。事实上,专用应用设计对于短期和小规模部署是一种合理的方法,也符合在无线传感器网络应用开发中广泛使用的“按需设计”原则[Gomez et al. 2008],。然而,在许多商业和大规模无线传感器网络应用中,投资回报率(ROI)是最终决定这些部署成败的关键因素。一方面,正如在由资源受限设备组成的网络中通常情况一样,延长系统寿命是期望的目标,以减少硬件更换的频率。从这个意义上说,通过专用应用设计可以延长系统寿命,从而提高投资回报率。另一方面,传感器节点的利用在无线传感器网络部署中正扮演着越来越重要的角色。在专用应用设计中,默认情况下每个应用都部署到一个专用无线传感器网络中,即使某些无线传感器网络用于从同一区域监测相同的现象。换句话说,专用无线传感器网络的工作方式类似于紧耦合系统[Siberschatz and Galvin 1993],,其中系统的硬件和软件不仅相互关联,而且相互依赖。此外,无线传感器网络中传感器节点数量的增加(成千上万个)导致了高昂的部署与维护成本。显然,在这种情况下,传感器节点的低效使用会适得其反,从而导致较低的投资回报率。由于这些原因,并考虑到单个传感器节点可以为不同应用服务的可能性,无线传感器网络的设计趋势开始从专用应用设计转向一种有前景的新方法,即允许多个应用在同一底层基础设施上运行。在这种环境中,多个应用共享相同的感知与通信基础设施资源,以提高整个系统的利用率,从而显著降低系统成本并相应地提高投资回报率。这种类型的无线传感器网络通常被称为共享传感器网络(SSN)[Efstratiou et al. 2010]或多用途无线传感器网络[Steffan et al. 2005]。为了描述方便,本文其余部分将此类设计称为共享传感器网络。
SSN的提出为通过在同一系统上运行多个应用程序以更高效地利用节点资源,从而获得更好的投资回报率开辟了新的途径。一个应用程序可以在整个基础设施上执行,也可以在物理网络的选定子集上执行。理想情况下,在执行期间,每个应用程序的行为就像运行在自己专用的网络上一样,不会对其他应用程序造成任何干扰。此外,还可以设想新的操作模型,其中已部署的无线传感器网络作为公共基础设施,动态地为不同所有者上传的多个应用程序提供服务。在这种操作模型中,SSN设计明确区分了应用程序与底层传感器网络基础设施的所有权,而传统模式则没有表现出这种清晰的分离。专用应用设计。这种分离不仅解除了基础设施与应用程序之间的所有权耦合,还使得节点部署、硬件维护和应用开发可以由不同的管理机构来管理。通过这一特性,新的商业机会得以产生,例如将已部署的无线传感器网络视为开放系统,并在不影响现有应用运行的前提下,按需向第三方共享其服务。按需模型已在云和效用计算中得到广泛应用。云是一组大规模(理想情况下为无限)且用户友好的虚拟化计算资源,能够动态重新配置以应对可变负载,从而实现最优资源利用率 [Khan et al. 2015]。虚拟化是支持多个应用的成熟概念,因为它允许将实际的物理计算资源抽象为逻辑单元,使多个独立用户能够高效使用这些资源。从这个意义上说,SSN范式完全符合无线传感器网络虚拟化的理念 [Santos et al. 2015],,有望在服务(提供给应用程序)与底层基础设施之间实现清晰的解耦。
尽管共享传感器网络(SSN)提供了诸多优势,但它仍处于早期阶段,在该领域内的知名度不如专用应用设计。本文的主要目标是让读者了解SSN与专用无线传感器网络之间的差异,目前已取得的研究进展以及在SSN中尚未解决的问题,同时阐明SSN的关键因素,并探讨如何将SSN设计应用于新兴无线传感器网络应用。
我们的研究是基于Kitchenham等人先前提出的方法论框架进行的系统性文献综述 (SLR),该框架提供了一套明确定义的步骤,并按照预定义的协议执行。通过系统性文献综述(SLR),可以以可重复且公正的方式识别、评估和解释与特定研究问题、主题领域或感兴趣的现象相关的所有现有研究。因此,系统性综述能够为所提出的研究问题提供清晰一致的图景,而不是若干可能对同一问题给出矛盾答案的较小规模的研究。考虑到本文上述目标,我们提出以下假设来开展本研究:
假设1 :SSN设计提高了网络节点利用率,从而有助于提高已部署基础设施的投资回报率。
假设2 :SSN设计促进了应用程序的所有权与底层传感器网络基础设施的所有权之间的清晰分离。
假设3 :SSN设计通过利用共享基础设施的新应用程序,带来了新的商业机会。
这些假设不仅帮助我们大致了解共享传感器网络的价值,还有助于定义研究问题,以便从所调研的文献中检索关键发现(如第2节所述)。
本文的其余部分组织如下。第2节介绍了我们在研究中采用并修改的系统性综述程序的详细信息。第3节描述了一组SSN设计的内在属性,并结合特定应用的WSN设计对这些属性进行了比较讨论。第4节描述了我们提出的分类法,用于整理SSN中所需的各种层次的支持机制。该分类法是通过分析研究文献中的架构和实现得出的。在第5至第7节中,将深入探讨第4节中提出分类法的所有使能技术细节。第8节介绍了一些现有的应用程序和正在进行的项目,以说明SSN设计的优势和潜力。在本节末尾,讨论了安全问题还讨论了共享传感器网络系统中的一个重要应用需求。在第9节中,探讨了共享传感器网络(SSNs)的开放性问题。最后,第10节总结了我们的研究。
2. 系统评审程序
在本节中,我们将解释进行系统性综述所采用的流程,以及如何修改Kitchenham等人提出的[2009]方法,以探索无线传感器网络的研究领域,从而更好地契合本次综述的目标和目的。除了参考Kitchenham等人提出的指南[2009],外,我们还借鉴了Lillegraven和 Wolden[2010]开展的系统性综述,作为执行严格评审过程各个阶段的快速参考。
2.1. 研究问题
作为系统性文献综述(SLR)中所有步骤的第一步且最关键的一步,我们将本研究的重点放在以下研究问题上:
研究问题1 : 与特定应用的无线传感器网络相比,共享传感器网络(SSNs)在固有特性 上有哪些主要差异?
研究问题2 : 已采用哪些技术来实现在同一传感器网络基础设施上运行多个应用程序?
研究问题3 : 现有/正在进行/潜在的哪些应用可以从共享传感器网络(SSNs)的使用中受益?
2.2. 搜索过程
在第一阶段,我们检索了用于综述的论文、研究报告、书籍、学位论文和文档。为了确定检索来源,我们仅采用了在无线传感器网络领域具有重要出版物的相关数据库。为避免遗漏有价值的文献,还使用谷歌学术作为补充工具。检索所用的来源列表包含了无线传感器网络领域最著名的在线数字图书馆,如表I所示。
在完成来源的选择后,我们继续定义检索词以及在在线数字图书馆中检索论文的流程。为了创建检索式,我们首先从先前定义的研究问题中选取了多个关键词,然后形成了四组检索词,如表II所示。每组包含的检索词要么是同义词(同一词语的不同形式),要么是在该领域内具有相似或相关语义含义的术语。每组旨在检索不同的研究集合。
我们为每个在本次综述中定义的研究问题分别制定了一条检索字符串,以查找相关研究。为了检索与研究问题1、研究问题2和研究问题3相关的研究,我们将第1组与第2组、第1组与第3组以及第1组与第4组的术语分别组合。搜索字符串的作用是检索出所有至少包含第一组中的一个术语以及其余各组中至少一个术语的研究。每个研究问题(RQ)的搜索字符串的一般形式如下所示:
研究问题1 : (([G1,T1] OR [G1, T2] OR [G1,T3] OR [G1, T4] OR [G1, T5]) AND ([G2, T1] OR[G2, T2] OR [G2, T3]))
研究问题2 : (([G1,T1] OR [G1, T2] OR [G1, T3] OR [G1, T4] OR [G1, T5]) AND ([G3, T1]OR [G3, T2] OR [G3, T3] OR [G3, T4]))
研究问题3 : (([ G1,T1] OR [G1, T2] OR [G1, T3] OR [G1, T4] OR [G1, T5]) AND ([G4, T1]OR [G4, T2] OR [G4, T3] OR [G4, T4]))
针对每个研究问题的文献检索均通过手动方式进行,使用表II中列出的已定义检索字符串,在表I中列出的所有选定在线数字图书馆内进行。我们进一步设定了以下检索标准: (i)文献发表于可靠的计算机科学出版场所(同行评审会议、同行评审期刊或计算机科学/工程组织);(ii)文献以英语发表;(iii)文献发表时间为2000年1月–2013年5月。完成上述过程后,提取的数据在综述的综合阶段被处理,以提炼出关键主题。
在进行系统性文献综述的过程中,至少两名研究人员独立评估检索到的文章是否可能对我们的目标研究问题具有价值。如果认为该文献相关,则将其保存并在后续阶段进一步处理。
2.3. 纳入标准
此步骤的目的是逐步缩小检索阶段发现的文章数量,最终形成一组高质量且主题上与回答研究问题相关的文章集合。本节提出的筛选标准包括纳入标准(第一、第二和第三阶段)。随后,我们采用以下三个阶段来选择将在研究其余部分中分析的论文。
—在第一阶段,我们仅根据摘要中提供的信息,剔除了搜索阶段发现的文章。只有当摘要文本明确提到文章的主要关注点是共享传感器网络(SSNs)时,文章才会被保留以进行后续处理。对于摘要中信息较少的论文,我们暂时将其保留在列表中,留待下一阶段处理。需要注意的是,在此阶段我们并未考虑论文的质量。
—在第二阶段,我们重点关注了通过第一阶段标准的论文内容。对于摘要中包含检索词的论文,我们简要地检查了这些检索词是否是论文的主要研究重点。若检索词仅涉及论文工作的次要方面,则予以剔除。对于那些在摘要中未提供足够信息的论文,我们进一步分析其正文内容,以确定它们是否与我们的研究相关。
问题或不问题。内容符合我们研究问题的论文将在下一阶段进一步处理。
—在第三阶段,剩余的文献进行了质量筛选,我们剔除了不符合以下质量标准的研究:
QC1:研究目标是否有明确的陈述?
QC2:所提出的系统架构/算法/协议是否具有可行性(能否应用于实际场景)?
QC3:仿真/实验是否得到了充分的分析和解释,测试结果是否有力地支持了论文中提出的思想?
所有文章均由研究人员(李、法里亚斯和德利卡托)独立查阅,针对每个既定标准回答是/部分/否。评估完成后,针对每篇论文的每个标准所存在的分歧均得到解决。最后,我们通过为每个“是”计1分,每个“部分”计0.5分,每个“否”计0分,计算每篇论文的总分。所有得分达到PQC1+ PQC2+ PQC3 ≥ 2.0分的论文均被接受,并纳入本综述所采用的研究集合中。
SLR的下一步是数据收集与分析/综合。类似于Kitchenham等人[2009], ,从每项研究中提取的数据包括:(i) 作者信息,包括姓名、机构和国家;(ii) 来源(期刊或会议)和完整参考文献;(iii) 研究摘要,包括主要研究问题及提出的答案;(iv) 与共享传感器网络 (SSNs)相关的技术方面,包括建模、提出的解决方案和质量评估;以及 (v) 发现和结论。
为了简化并聚焦于本工作的主要目标,数据收集与综合的详细描述见附录。感兴趣的读者可参考附录以获取所进行的SLR的更多细节。在搜索和筛选过程结束后,共选出了57篇论文用于后续使用。在完成SLR后,在文章修订期间,又通过领域专家发现和/或推荐了31条相关参考文献,以补充SLR的发现,最终共纳入88篇论文,其中包括自2014年以来的参考文献。本文中呈现的所有结果和讨论均基于这88项研究。
3. 共享传感器网络(SSNs)的固有特性
在本节中,我们将讨论所开展的系统性文献综述(SLR)的发现,这些发现为已定义的研究问题1(RQ1)提供了答案。我们将使用Monares等人提出的耦合概念[Monares et al. 2014]来进行讨论。该概念为分析共享传感器网络(SSNs)与特定应用的无线传感器网络之间的属性差异提供了明确的视角。这一概念已被广泛应用于计算机科学不同领域的软件系统分析中,例如计算机编程[Stevens et al. 1974],、分布式计算[Culler et al. 1997],、网络化嵌入式系统[Hughes et al. 2009],、面向服务的架构(SOA)[Josuttis 2007],、Web服务[Pautasso and Wilde 2009],以及云计算[Zhang et al. 2010]。通常情况下,耦合指的是系统组件之间相互依赖的程度。在此背景下,紧耦合和松耦合是常用于描述计算机系统的两个属性[Yourdon and Constantine 1979]。紧耦合是指两个系统组件不仅相互连接,而且彼此依赖的一种属性。松耦合则是指两个系统组件可以相互交互,但各自能够独立正常工作的属性。确定一个系统的耦合程度需要从多个层面探索多种属性。接下来,我们将从系统性文献综述(SLR)检索到的论文中选取共享传感器网络(SSNs)和特定应用的无线传感器网络的一些属性进行讨论。
并进行比较,以帮助理解这两种设计中可能存在的耦合类型。通过这样做,我们可以更好地了解共享传感器网络(SSN)与专用无线传感器网络设计之间的具体差异,从而回答已定义的研究问题1(RQ1)。请注意,在下文中,我们在列举这些属性时力求实现高度的独立性,但我们并不声称每个属性彼此之间完全独立。
3.1. 所有权
所有权属性涉及硬件所有者与硬件用户之间的关系。如果这两方属于同一管理机构,或在硬件部署之前双方利益相关者已达成协议,则认为该所有权具有紧耦合。这是因为系统部署后不允许第三方参与系统运行。否则,该所有权被视为具有松耦合。
如前所述,专用无线传感器网络(WSN)旨在整个系统寿命期间在其基础设施上运行单一应用。在这种设计中,所有资源都专用于该单一应用。此外,应用目标以及应用构成很少发生变化,且在运行时不太可能响应来自其他应用的请求。这些设计原则使得专用无线传感器网络表现为一个封闭系统。因此,显然专用无线传感器网络在所有权方面表现出紧耦合特性。这种方法限制了将硬件所有权外包给外部机构的可能性,同时也阻止了第三方用户调用系统提供的服务。相反,共享传感器网络(SSN)必须被构建为能够在同一基础设施上运行多个应用,并共享底层硬件资源。更重要的是,应用程序可以在运行时动态提交到系统中,而无需事先建立任何安排 [李等人,2014a,2014b]。基于此类设计原则,部署的系统表现得如同一个开放系统,在硬件管理 [Hughes 等人 2009],系统维护[Efstratiou 等人 2010],以及应用处理 [Raicu 等人 2008]方面提供了高度的灵活性。因此,共享传感器网络(SSN)在所有权属性方面可被视为具有松耦合特性。
3.2. 平台依赖性
平台依赖性这一属性涉及应用对底层基础设施的依赖程度。如果应用组件的设计与实现基于必须使用相同节点硬件、操作系统(OS)和编程语言的前提,则该系统被认为紧密耦合于特定技术平台;否则,该系统被视为与底层平台松散耦合。
在专用无线传感器网络中,为了降低应用程序开发的复杂性,所支持的硬件通常选自同一制造商;所有节点 preferably 采用相同型号,运行相同的操作系统和通信协议,并具有相同的感知能力。这一设计原则意味着特定应用的无线传感器网络通常是同构的。从这个意义上讲,当两个系统组件相互通信时,不需要复杂的高成本桥接解决方案。因此,专用无线传感器网络在这方面可被视为紧密耦合的。然而,这类系统通常受限于其部署平台所提出的具体要求和限制,例如数据速率、无线电规格和无线电频率 [Efstratiou 2010]。此外,构建在感知能力上同构的无线传感器网络会限制可使用此类网络的应用程序类型。最后,应用程序与底层传感器平台之间的强耦合阻碍了软件构件的任何复用。
构成该应用。如果需要在不同类型的节点硬件上运行相同的应用,则必须完全重写所有代码,以适应新的编程语言以及新平台操作系统[Rodrigues et al. 2013]提供的基本功能。
另一方面,共享传感器网络(SSNs)通常具有异构性,这意味着系统由不同厂商制造的多种类型的传感器硬件组成,甚至使用不同的操作系统(OSs)和编程语言。为了应对这种异构性,共享传感器网络必须提供适当的机制[Flores‐Cort´es等 2007],以向最终用户屏蔽硬件相关的细节,并使共享传感器网络对每个正在运行的应用而言表现为一个同质化的平台[Jayasumana等 2007]。从这个意义上讲,共享传感器网络在平台依赖性方面具有松耦合特性,即(i)应用不依赖于底层的传感器平台,且(ii)同一基础设施可容纳具有不同硬件/软件的节点。这种松耦合特性以及共享传感器网络在传感器平台方面的异构性促进了软件构件的重用,但同时也带来了难以解决的互操作性问题。在SSN设计中,需要实现基于不同技术与协议栈构建的不同平台节点之间、甚至多个网络之间的交互。此类互操作性问题通常通过引入中间件软件层来解决,该软件层可依据不同的方法实现,我们将在后文对此进行讨论。
3.3. 代码模块化
代码模块化属性涉及应用层代码与底层代码(通信协议和操作系统)之间的关系。当属于不同层次的这些代码被封装在部署于传感器节点中的单一镜像中时,就会产生紧密耦合。松耦合则指以模块化方式开发代码的系统,其中表示应用逻辑代码的模块与实现底层功能的模块相互分离。
通常,特定应用的无线传感器网络的开发基于以下假设:该特定应用拥有物理网络,并且是唯一使用该硬件基础设施的应用。因此,所有应用需求都是预先已知的,无线传感器网络应用程序在部署到目标区域之前,以单体代码的形式开发并安装在节点上,从而导致代码模块化方面存在紧耦合。这种强耦合充分利用了网络协议栈中各软件层的定制化优势,主要目的是在能耗方面实现高效。然而,构建特定应用无线传感器网络代码的设计策略通常是临时性的,要求应用程序直接与底层嵌入式操作系统甚至传感器节点的硬件组件进行交互。尽管这种方法具有较高的能效,但会产生僵化系统,难以维护、更新和修改,且无法促进软件构件的任何类型复用。
在共享传感器网络中,通常考虑两种用户角色[Leontiadis 等,2012;Farias 等 2014],即基础设施所有者和应用所有者。假设基础设施所有者对硬件基础设施具有完全控制权,而应用所有者则被认为对监测区域的地理环境以及网络提供的功能具备基本了解。SSN设计的一个主要要求[Delicato 等 等 2013]是在不影响先前运行的应用程序的前提下,使新到达的应用能够在共享硬件基础设施上执行。为了满足此类要求,首先需要提供在开发阶段即可实现应用程序代码与底层代码层清晰分离的解决方案。因此,可将安装在传感器节点上的代码构建成一组内聚模块/组件。
具有明确定义的功能,而不是将属于不同抽象层次的多个功能集成在一个单一的代码块中。其次,有必要打破在编译和部署时建立的二进制代码与物理硬件之间的紧耦合。然而,在专用无线传感器网络中,为了实现能量效率,采用了这两种类型的耦合(软件各层之间的耦合以及代码与底层硬件之间的耦合)。因此,用于打破此类耦合的技术将以降低能量效率为代价,提供所需的灵活性和关注点分离。这种灵活性/可重用性/可扩展性与能量效率之间的权衡,是SSN设计中需要应对的挑战。最后,重要的是在传感器节点内部的运行时环境方面实现不同应用程序的隔离。最终,共享传感器网络中的代码模块化旨在为每个独立构建的应用程序提供独立的执行环境,并使其运行方式与在专用无线传感器网络中的运行方式相同。
3.4. 资源共享
资源共享的属性[Yu等 2006]指出,节点资源可被不同应用程序使用,从而无需复制基础设施来支持多个应用。我们在此讨论的属性是:在系统寿命期间,可用的节点资源是否完全专用于单一应用。从基础设施所有者的角度来看,当节点资源全部专用于单一应用时,该系统被视为紧密耦合,因为资源与应用密不可分;反之,若系统资源预期服务于多个应用的需求,则该系统在资源使用上被视为松散耦合。
在特定应用的无线传感器网络中,单一应用利用整个系统的理念意味着节点与应用之间的绑定是固定的,即所有可用资源都被保留以满足单一应用的需求。因此,资源分配可以在网络运行生命周期的早期就确定下来。除非底层硬件在运行时发生变化(例如,由于节点移动或节点更换),并且确实需要实时资源查找,否则资源分配可以在编译时或部署时静态完成[巴塔查里亚等人 2010;Wu 等人 2012]。具有这些特性,特定应用的无线传感器网络在资源共享属性方面表现出紧耦合。
在共享传感器网络(SSNs)中,资源分配发生在运行时,有时甚至在最晚可能的时间进行。这种方法解决了静态资源分配在共享传感器网络中效率低下的问题。该问题的根源在于,当多个应用程序在同一系统中同时运行时,可能会发生资源争用。共享传感器网络允许多个应用程序共用同一基础设施,所有可用资源向应用程序的动态到达开放,因此需要在运行时决定在每个时刻执行哪个应用程序。当应用程序进入共享传感器网络时,将根据不同的因素(如最新的节点状态、用户需求以及应用程序的优先级 [巴塔查里亚等人 2010;吴等人 2012;Li 等人 2013])动态地将其分配给一组选定的传感器节点以进行进一步处理。节点资源(感知、计算和通信)的分配不仅必须满足多个同时运行的应用程序的需求而不造成中断,还必须符合不同利益相关者指定的策略。这进一步表明,所有节点都有可能被任何新到达的应用程序使用。这是一种松耦合形式,因为应用程序与节点之间的资源分配不再固定,而是在所需资源可用时才在运行时确定。因此,动态资源分配成为共享传感器网络的重要需求,并使此类网络设计在资源共享属性方面表现出松耦合 [Leontiadis et al.2012]。
3.5. 应用信息共享
此属性涉及网络设计是否假定传感器产生的中间数据可以在同一系统内运行的不同应用程序之间共享。如果在给定的无线传感器网络中,各应用程序之间不发生信息共享,则该系统可被视为紧密耦合的,因为每次信息交换的参与者均来自同一管理机构,并作为同一应用程序的联盟成员。
专用无线传感器网络的主要任务是以连续、周期性或基于事件的方式,将收集到的数据传输回具有足够计算和存储资源的设备,以进行进一步处理。数据传输被广泛认为是无线传感器网络中的主要能耗之一。因此,通常采用网络内处理(例如数据压缩、数据聚合)来减小传输数据的大小,从而延长系统寿命。这就要求从源节点到目的节点之间的所有节点必须使用相同的方法或工具对中间数据进行处理,以实现数据的编码和解码。通过这种方式,消息在系统中被视为同一种网络内处理技术的串行化,并由相同的方法进行处理。
共享传感器网络(SSNs)默认允许多个应用程序在同一系统上同时运行。共享应用信息 [Le et al. 2009]在共享传感器网络中具有巨大的节能潜力,因为不同应用程序的任务可能同时需要由单个传感器提供的相同数据(并且以相同的速率)。受这一需求的推动,信息共享技术被应用于共享传感器网络以实现更好的节能效果。在共享传感器网络中使用的信息共享机制通常被设计为一种跨层方法 [Vijay et al. 2011],,旨在通过在单个消息中包含更多可用信息来克服分层协议架构的局限性。然而,不同应用程序的中间数据可能采用不同的格式,因此信息共享依赖于应用程序的格式,从而引发互操作性问题。为了使不同格式的信息能够被应用程序共享,必须采用一种通用接受格式,并将所有其他格式转换为此格式。这种额外的格式转换步骤被视为一项主要开销,在紧耦合系统中并不需要。然而,此步骤对于松散耦合系统至关重要,因为它不仅为应用程序开发者提供了设计灵活性,还允许应用程序在运行时轻松地与其他应用程序协作。
4. 共享传感器网络的分类
在本节中,我们开始探讨研究问题2(RQ2),其目标是探索共享传感器网络(SSN)中采用的支持机制,以提供一个可容纳多个应用程序在同一基础设施上运行的环境。这些机制的主要目标是提供一个执行环境,向正在运行的应用程序隐藏它们运行于共享基础设施这一事实。这使得应用程序开发者能够以传统方式构建自己的应用程序,假设他们可以完全访问节点资源,并向他们屏蔽节点固有的异构性。为了对所调研文献中识别出的共享传感器网络支持机制的多个层次进行组织,我们在本节中提出了一种分类法。
在详细介绍有关研究问题2的所选文献之前,我们首先探讨与SSN设计相关的新兴挑战。这些挑战可分为两个层次:(i)低层网络设计和(ii)高层网络设计。低层网络设计侧重于硬件抽象并实现
图1. 共享传感器网络的分类法。
对传感器节点的灵活控制,而高层网络设计则侧重于实现传感器节点间的高效协作,以完成不同应用程序的任务,同时不对应用程序开发者施加额外的工作负载。低层网络设计中采用的机制主要是虚拟机和中间件。两者都旨在为每个传感器提供一个硬件抽象层,使得多个应用程序能够在不直接与操作系统原语交互的情况下调用节点提供的功能。高层网络设计可进一步细分为两个子层次:网络级支持和系统级支持。在网络层采用的主要机制包括传感器网络虚拟化、信息共享和路由。这些机制主要目的是为应对不同应用程序波动且动态的资源需求提供基础支持,并通过应用程序间共享公共信息来实现更好的节能效果。在系统层采用的显著机制是任务分配和任务调度。它们均建立在网络级支持之上,并更进一步将可能由不同管理机构控制的节点资源无缝集成为一个单一的逻辑网络。它们还负责在运行时决定使用哪些节点来执行特定应用程序,避免与现有应用程序产生资源冲突,同时仍能满足各个应用程序不同的服务质量要求。此外,无线传感器网络联合为我们提供了从系统层视角运行多个应用程序的另一种方法。
图1展示了我们提出的共享传感器网络(SSN)分类法,该分类法是通过对系统性文献综述(SLR)中检索到的研究中的架构和实现进行充分分析而得出的。节点级支持的详细信息在第5节中讨论。详细信息高层网络设计,特别是网络级和系统级支持,分别在第6节和第7节中进行讨论。这三个部分旨在提供第2.1节中列出的研究问题2的答案,并讨论每种提出的使能机制如何支持第3节中描述的一个或多个SSN属性。
5. 节点级支持
在节点级别上构建共享传感器网络(SSN)所引发的研究问题主要集中在两个方面:(i) 如何处理节点异构性,以及(ii)如何在单个传感器节点内为多个应用创建灵活的执行环境。在接下来的小节中,我们将讨论不同的方法(即虚拟机和中间件)是如何应对这两个方面的。
5.1. 虚拟机方法
在共享传感器网络(SSN)中,异构节点可以部署在目标区域并被多个应用程序使用。如前所述,节点级别的一项挑战是如何隐藏传感器节点的异构性,使得应用程序开发者能够在SSN上使用相同的控制接口/算法,而无需了解特定节点的操作系统(OSs)、硬件平台或网络协议。为应对这一挑战,节点内虚拟化 [Ertin 等,2006;Leontiadis 等 2012] 被提出作为一种可行的方法,用于抽象配备不同操作系统的各种类型节点,并将节点的功能作为服务暴露出来,将感知数据传递到上层,同时为应用程序开发者提供通用接口。在 SSN中使用虚拟机的另一个重要原因是,与原生代码相比,以虚拟机字节码表示的程序具有更小的尺寸。
当前无线传感器网络中的节点内虚拟化实现主要依赖于基于解释器的虚拟机[Sugihara 和 Gupta,2008;Mottola 和 Picco2011],,这些虚拟机为异构传感器节点提供了统一的硬件抽象。此类虚拟机依靠驻留在每个传感器节点内的轻量级字节码解释器,从而实现对应用程序执行的细粒度控制。然而,大多数设计采用专用应用设计,不适合直接应用于共享传感器网络(SSN)场景。这些实现被设计为专用应用虚拟机的动机在于,在早期阶段普遍认为无线传感器网络主要是为运行特定应用而设计的(专事专用)。这一点也体现在诸如TinyOS[Hill 等人 2000],等开发环境的设计中,其中生成的应用程序是一个单一的二进制文件,用于控制传感器节点的所有硬件组件并直接在节点上运行。
节点级别的另一个挑战是如何在传感器节点上支持并发应用。为此,需要存储应用程序的代码,为每个应用程序创建并维护独立的执行空间,并分别编译每个应用程序的代码,以避免应用程序之间的变量共享。为传感器节点提供动态重新编程能力是实现共享传感器网络(SSN)中此类目标的可能解决方案之一。在每个传感器节点上多个应用的协同执行取决于操作系统(OSs)是否允许在运行时动态加载和执行应用程序。一些操作系统,包括Contiki [Xu等 2011],、Mantis [Rubio等2007],、SOS [Costa等 2009],以及 MoteRunner [Caracas等 2009],支持模块和线程处理等功能,以更高效地应对动态应用程序。然而,许多其他无线传感器网络(WSN)操作系统,包括流行的操作系统 TinyOS,未能完全支持此类需求。作为在共享传感器网络(SSN)中支持TinyOS应用程序执行的替代方案,一种可能性是在节点内部部署一个能够在运行时动态加载TinyOS应用程序二进制代码的组件,从而实现多个应用的按需部署。该节点内组件在每个传感器节点内作为一个独立进程运行,以完全控制访问
到节点的硬件资源。换句话说,该组件通过驻留在每个传感器节点上的跨应用程序硬件抽象层来共享对硬件的访问。实际的硬件访问是通过使用连接到不同应用程序的虚拟硬件组件透明地完成的。
Yu等人提出了一种对Mat´e [Levis和Culler 2002],的重大扩展,称为Melete [Yu等人 2006],以支持多个并发应用。该系统能够实现可靠的存储,为每个应用程序创建并维护独立的执行空间,并分别编译每个应用程序的代码,避免应用程序之间的变量共享,从而在单个传感器内构建多个特定于应用的执行环境。考虑到在资源高度受限的硬件上,多个应用程序的执行是交错进行的,且可能存在较高的切换频率,Melete选择将应用程序代码镜像存储在随机存取存储器(RAM)中,而非只读存储器(ROM)或外部闪存,因为目标硬件(TelosB节点)具备足够大的RAM空间,可支持最多五个并发应用。为了防止节点资源(例如RAM)被过度使用,Melete引入了一种称为组密钥的方法,限制代码镜像仅发送至感兴趣区域内的节点,而不是激活网络中所有可用节点。类似于代码镜像, Melete还在RAM中为每个应用程序预留了足够的执行空间。为保护执行空间,Melete禁止运行中的应用程序之间进行变量共享,从而确保单个应用程序的中断不会影响其他应用程序的执行。通过上述机制,Melete在单
个传感器节点内部为多个应用程序的同时执行创建了一个灵活的执行环境。然而,该方案并未明确解决节点异构性问题。
在无线传感器网络中,时间关键型应用必须根据实时的网络状况及时完成,而不是在设计时静态地将一组任务映射到特定的物理节点。Melete 在其解决方案中未考虑实时性要求。为解决此类问题,提出了一种在节点级别的新方法,称为嵌入式虚拟机(EVM)[Pajic 等人 2013]。与早期文献采用不同的方法,EVM 将多个相连的物理节点抽象为一个虚拟组件,并将该虚拟组件向用户表示为单个逻辑实体。通过这种方式,EVM 允许用户使用相同的网络控制算法,而无需了解底层硬件细节和拓扑变化。与一对一映射(一个虚拟传感器对应一个物理传感器)的方案不同,EVM 的目标是在物理网络发生时空变化的情况下,在一组控制器上维持一系列功能不变性(如控制律)以及诸如时效性约束、容错性和安全标准等非功能性不变性。
为进一步解决节点级别的共享传感器网络(SSN)异构性问题,与其他语言(如 C/C++)相比,Java 因其独特的平台独立性特征,成为在传感器节点上实现虚拟机的一个颇具吸引力的选择。为了使 Java 虚拟机能够在资源严重受限的设备而非传统计算机上运行, Simon 等人 [2006] 提出了一种分离式虚拟机架构,该架构允许在功能更强的主机上对代码进行预处理和验证,然后仅将执行程序所需的代码发送到设备。这有助于加快测试和调试阶段,并真正实现代码的可重用性,因为所开发的代码只需在每个目标节点上(重新)编译,而无需考虑其底层硬件细节。
大吉岭 [Brouwers 等人 2009]或许是首个广为人知的、适用于内存资源有限(小于 10KB 随机存取存储器)的无线传感器网络中大多数传感器节点的开源 Java 兼容虚拟机。通过一种称为注入器的离线工具,将 Java 字节码转换为自定义字节码,并对类组进行静态链接,从而显著减小了字节码的大小。通过这种方式,不同注入器中的多个应用可以同时运行。由于它是被设计为一个虚拟机,大吉岭无法用于更新任何原生代码,例如设备驱动程序或核心操作系统内核。相反,它作为操作系统进程运行,并与实现网络协议栈通信协议的操作系统原型线程协同工作。大吉岭调度器采用轮转调度策略,每个线程允许执行最多固定数量的字节码,然后释放中央处理器。每当一个线程被挂起时,大吉岭会等待下一个定时器中断(可能在此期间让出资源),然后再恢复下一个运行线程的执行。
SimpleRTJ [Haghighi 2013]是一个针对小型嵌入式和消费类设备设计的、内存占用小的简单实时Java虚拟机实现。它包含两个主要组件:SimpleRTJ虚拟机,负责解释 Java字节码;以及JavaOS,用于支持多任务Java应用程序并提供其他Java特性。这是必要的,因为SimpleRTJ虚拟机在运行时仅支持单任务Java应用程序。通过JavaOS提供的多线程功能,任务可以在节点上通过线程切换并发执行,并采用选定的调度算法(例如轮转法)来控制切换操作。此外,每个SimpleRTJ实例都可以独立构建,并配置不同的启动选项,使得应用程序能够在异构环境中统一部署,而无需每次重新加载虚拟机。
5.2. 中间件方法
如前所述,SSN设计需要有机制来应对节点的异构性,包括由不同厂商制造的多种类型硬件设备,并支持不同的操作系统和编程语言。在这种情况下,异构的传感器节点将不得不在同一基础设施中共存,并最终协作以满足多个应用的需求。因此,互操作性成为一个问题。
除了互操作性和异构设备集成的问题之外,无线传感器网络应用的开发一直是一项挑战。首先,传统的无线传感器网络编程一直是一项易出错的任务,因为它需要对单个节点进行编程,使用传感器操作系统提供的低级抽象,并与硬件和网络协议进行交互 [Rubio et al. 2007]。其次,无线传感器网络应用的开发者通常是其专业领域(如土木工程、生物学、地质学等)的专家,而非网络专家。因此,在无线传感器网络应用的高层需求(应用层知识)与底层网络基础设施操作的复杂性(网络层知识)之间存在差距。为弥合这一差距并应对共享传感器网络应用开发与执行过程中存在的互操作性问题及其他挑战,一种潜在的解决方案是采用中间件平台。近年来,无线传感器网络中间件被用于提供节点级抽象,隐藏传感器节点在节点架构、操作系统和编程语言方面的异构性。共享传感器网络中间件还可以设计成允许采用不同类型传感器、射频识别(RFID)和执行器制造的各种设备之间实现无缝互操作,从而支持快速应用开发和可靠运行。在本小节中,我们总结了一些现有中间件在节点级别为共享传感器网络提供此类支持的实例。
Impala [Liu和Martonosi 2003],作为斑马网项目 [Juang等 2002],的中间件层,是该领域早期具有启发性的文献之一,它在资源受限的斑马网硬件节点上实现,可高效处理调度操作,并确保长期运行应用程序的可靠性及升级便利性。与上述虚拟机解决方案相比, Impala采用模块化方法。在这种方法中,正在运行的应用程序被划分为多个小程序模块,通过允许简单且轻量级的软件更新来节省能量。该方法使用注入到传感器网络中的移动代理或代码来收集本地数据。这些代理还可以从一个节点移动到另一个节点。因此,Impala 的一个重要特性是提供动态可编程性和对传感器节点操作的快速更新,即能够在不造成服务中断的情况下动态地更新在节点上运行的应用程序代码。这一特性在共享传感器网络(SSN)背景下非常重要,因为它能够通过为不同新到达的应用程序加载代码,使多个应用并发执行(这些应用程序在设计时未知,而是在网络部署后以动态方式执行)。然而,该方法未解决硬件异构性和服务质量(QoS)相关的问题。
Agilla [Fok 等人 2009]提出了一种基于移动代理的模块化中间件,专门用于应对无线传感器网络中自适应应用程序的需求。作者强调了为传感器网络提供自主行为的必要性,并认为基于软件代理的方法特别适合实现这一目标。在移动代理范式中,特定任务的可执行代码会遍历相关数据来源以获取感知数据。通过将处理功能移动到数据所在位置,而不是将数据传输到中心节点,移动代理可以降低网络中的通信开销。Agilla 允许代理通过两种指令在节点之间移动:克隆和移动。如果代理被克隆,则其副本到达目标节点并开始执行,而原始代理继续在原节点上运行;如果代理被移动,则其到达目标节点后将不再存在于原节点。单个传感器节点上最多可同时运行四个代理,从而支持网络中多个应用的同时执行。每个节点内部还维护一个元组空间和一个邻居列表。元组空间是本地的,并由驻留在该节点上的代理共享。系统提供了特殊指令,允许代理远程访问其他节点的元组空间。节点的邻居列表包含与其处于一跳距离的所有节点的地址。这种机制实现了松耦合的通信方式,发送方和接收方无需事先约定共享内存地址,甚至无需同时存在即可完成通信。借助元组空间,代理能够在不同设备间自由迁移并保持自主运行,同时仍能相互通信。通过利用代理的移动性,应用程序相关的代码仅需部署在相关节点上,并且当环境发生变化时,能够自主迁移到最符合应用需求的节点。
TinyLime [Curino 等人 2005] 是一种无线传感器网络中间件,作为 Lime 中间件 [Murphy 等人 2001] 在移动临时性网络中的扩展而构建。它利用依赖位置的数据采集和传感器节点的数据聚合能力,提高了与集中式方法相比的无线传感器网络操作效率。TinyLime 基于元组空间方法,这是用于分布式计算的共享内存范式的实现。它通过元组空间接口提供传感器数据,从而在多个应用和传感器之间营造出共享内存的假象。元组空间模型具备若干特性,使其普遍适用于无线网络环境,尤其适用于共享传感器网络(SS N)。首先,仅需少量操作即可操作元组空间,从而实现分布式组件交互 [Costa 等人 2009]。其次,在此类模型中,进程间的协调在时间和空间上均实现了去耦合,即生产者和消费者可以在彼此不同时在线、且无需知晓对方身份或位置的情况下交换元组。如前所述,这种去耦合在 SSN 设计中至关重要。TinyLime 完全基于原始的 Lime 实现,并以 Crossbow MICA2 节点作为目标平台进行部署。
另一种逐渐扩展到共享传感器网络(SSN)领域的无线传感器网络中间件方法是面向服务的中间件[Papazoglou et al. 2007;Delicato 等 2003]。面向服务的中间件将异构的传感器节点视为一个分布式系统,并提供一种框架,将节点提供的资源(主要是感知,也包括处理和存储)表示为服务,向最终用户和应用程序提供清晰、统一且可访问的接口。TinySOA [Avil´es‐L´opez 和 Garc´ıa‐Mac´ıas2009]就是此类方法的一个示例,它直接在节点的操作系统之上部署轻量级代码单元,使程序员能够通过所选编程语言,利用简单的面向服务的应用程序编程接口(API)从其应用程序中访问节点。该方法提供了无线传感器网络基础设施注册和节点发现的机制。其架构包含一个网关组件,作为无线传感器网络与外部互联网应用之间的桥梁。通过使用TinySOA提供的抽象和组件,可以方便地采用 Web服务技术,使应用程序能够访问无线传感器网络。类似的功能也在Delicato等[2003, 2005, 2010]描述的文献中出现。在Delicato等[2005],的研究中,尽管在该文献发表时,无线传感器网络设计的主流趋势仍采用特定应用方法,但作者已预见到未来的传感器网络需要由异构设备组成,并支持面向不同用户群体的多种应用程序。为实现这一目标,他们认为需要一种新的体系结构方法,其中各组件松散耦合,具有明确定义的接口,并将特定应用的需求与数据分发功能分离。为了实现能量效率,应用程序应能够动态改变网络行为,而这些变化应通过一种通用协议以强大且灵活的方式表达,最好该协议被广泛接受为普遍标准。他们提出了一种用于无线传感器网络中间件设计的服务方法,其中服务根据传感器节点提供的数据以及需对这些数据执行的处理功能(例如,过滤程序)来定义。客户端应通过向这些服务提交查询来访问传感器网络。服务通过Web服务技术[Coyle 2002]进行发布和访问。他们的最终目标是使网络的设计独立于使用它们的应用程序,从而完全符合SSN范式。
Servilla [Seeger 等人 2014]是面向服务的无线传感器网络中间件的另一个示例,其目标是利用面向服务的计算,使应用程序在多样且动态的设备集上运行时仍具备平台独立性和高效性。在 Servilla 中,应用程序被分解为任务,这些任务充当服务消费者。任务调用服务,并执行诸如感知、执行和计算等平台特定功能。通过在所有平台上提供统一指令集,从而实现平台独立性。该方案还减轻了应用程序开发者为其应用程序针对每个潜在的无线传感器网络平台进行定制的需求。
Delicato等人[2013]的研究描述了MARINE(面向资源和任务的传感器网络中间件),这是一种基于组件模型的无线传感器网络中间件,构建于两种架构模式之上,即微内核[Schmidt等人 2000]和REST。MARINE的构想基于一个基本前提:无线传感器网络基础设施可以在不同时刻被不同的应用共享,因此致力于解决在优化网络能量效率的同时满足多个应用需求这一固有的权衡问题。MARINE采用组件模型和微内核模式,促进了系统功能在明确定义的组件中的解耦和模块化,并有利于中间件的内置功能管理。软件的高度模块化使得能够识别每个应用所需的特定功能,并仅在每个节点上加载实现这些功能的组件。其理念是尽可能多地共享代码先前存储在节点内存中,但在节点初始化时仅加载最少的核心代码组件;其余组件则在执行上下文和/或应用需求需要时动态加载。通过该方法,MARINE 除了支持按需执行新应用程序外,还通过仅为每个执行上下文加载绝对必要的代码来提升能量效率。其他相关工作见 Hughes 等人[2009]。LooCI(松散耦合组件基础设施)[Hughes 等人 2009]采用了一种松散耦合的事件驱动绑定模型,该模型受到事件驱动编程模型、面向服务的架构、发布‐订阅交互模型以及可插拔网络支持的启发。所形成的架构促进了软件组件之间的松耦合,同时有助于实现网络化嵌入式系统中的高级功能。
在del Cid等人[2010],的研究中,作者考虑将无线传感器网络(WSN)纳入业务流程,利用传感器收集的环境数据集成来满足组织的多种目的。在这种场景下,网络基础设施成为一个为多个并发分布式应用程序提供(感知)服务的平台。作者指出,在此类场景中,资源共享是降低部署和管理成本的关键问题。为解决这一问题,他们在中间件方案中定义并探讨了网络节点资源上的连带竞争概念。该概念指的是,在无线传感器网络中,某项服务的使用(例如温度传感)通过服务请求来指定,不仅仅涉及访问传感器单元,还需要对感知数据进行处理、存储以及最终的传输。因此,除了对节点感知资源的直接竞争外,还存在一组为完成感知任务所必需的间接资源的连带竞争。在此背景下,作者提出了一组可共享、可配置的组件,以最小化所需的连带资源,并设计了一个能够有效预留这些资源的资源规划器。作者探讨的另一个关键概念是应用程序所需的数据质量(QoD)。QoD指应用程序特定的数据质量属性[Basaran和Kang 2009],,如可靠性(表示数据准确性)和分辨率(表示数据的粒度及其时间和空间特性)。这组可配置组件构成了所提出的分布式无线传感器网络管理中间件的核心,可在多个不同QoD参数的组合中并发使用。通过将组件与其配置(代表不同的应用需求)解耦,中间件能够在考虑这些资源上连带竞争的前提下,实现对网络资源的最佳利用。该中间件在SunSPOT平台上基于Java ME CLDC1.1配置实现。
5.3. 节点级别解决的SSN属性
通过分析前述共享传感器网络(SSN)固有属性的相关提案,我们注意到中间件和虚拟机方法有助于促进其中多个属性的实现,从而推动了SSN领域的发展。所有权是SSN中的一个属性,表示硬件所有者和硬件用户可能隶属于不同的机构。中间件方法为在SSN中部署和服务执行提供了运行时支持。底层的传感器节点被视为一组功能(或在面向服务的中间件中称为服务),用于支持客户端应用。通过适当的机制来部署、加载和执行这些服务,不同的用户可以以松散耦合的方式使用硬件所有者提供的功能。
平台依赖性是共享传感器网络的另一个重要特性,因为不同的硬件所有者可能在其基础设施实现中使用不同的传感器平台,从而导致网络构成的高度异构性。中间件和虚拟机方法可被视为解决共享传感器网络(SSN)中平台依赖性的关键技术。中间件平台为最终用户提供统一的接口,例如前述的面向服务的中间件解决方案[Avil´es‐L´opez 和 Garc´ıa‐Mac´ıas 2009年;Delicato等,2010;Seeger等 2014]。中间件解决方案通常不仅对节点的功能进行建模,并通过高级接口向用户暴露这些功能,同时还解决了 一些与平台相关的其他挑战,以满足SSN及其用户的需求。其中一项挑战是以统一的方式,从底层异构节点中为不同的应用程序提供所需的QoS支持。通过隐藏传感器节点之间的硬件层和操作系统层差异,可以高效地从系统内不同厂商制造的最佳候选节点中采集数据,以满足应用程序定义的参数,如数据质量要求、最大延迟等。另一方面,虚拟机(VM)方案,例如基于Java的实现Darjeeling [Brouwers等2009]和MoteRunner [Caracas等 2009],为SSN提供了平台无关的解决方案,使得应用程序能够在运行时自由地从一个节点迁移到另一个节点。这些平台中的虚拟机通过为每个应用程序提供执行环境,使其脱离底层异构硬件的束缚,应用程序无需直接处理硬件。此类特性确保了应用程序与任何硬件需求或特定性相隔离。
代码模块化特性通过中间件和虚拟机(VM)方法的固有机制得以实现。基于组件的中间件平台,如Delicato等人[2013]和Hughes等人[2009],允许将软件构建为一组具有明确定义且通过契约规定接口的组件。组件的粒度可以变化,应用程序可由任意细粒度的组件集合构成。此外,此类中间件平台提供了高级代码模块化功能,例如支持动态重构,能够在运行时支持应用程序内单个组件的替换。基于代理的中间件方案在开发和执行时间两个方面均实现了SSN设计所期望的高度代码模块化。例如,Agilla [Fok等人 2009]通过允许开发者创建并注入可在节点间迁移以执行特定于应用的任务的移动代理,促进了自适应无线传感器网络应用的快速开发。在此类方法中,应用程序代码被实现为专用代理,而代理执行环境则在运行时提供了不同应用程序代码之间的所需隔离。Squawk [Simon等人 2006]等虚拟机(VM)方法通过将操作系统(OS)功能与应用程序功能分离,并允许在运行时替换完整的应用程序镜像而不影响底层代码层,从而有利于代码模块化。
关于资源共享属性,要在共享基础设施中支持资源共享,一个基本要求是将应用程序与网络解耦,并将网络资源以可重用的功能或服务集形式暴露出来。中间件方法自然地为满足此类需求提供了软件基础。通过将无线传感器网络节点提供的所有基本功能表示为可配置和可组合单元,这些单元可以被发现、选择并组合在一起,中间件平台促进了不同应用程序对这些功能的共享,应用程序可通过组合这些功能单元来构建。基于组件和面向服务的中间件在开发/部署阶段以及执行时提供了用于组合应用程序的抽象和机制。移动代理中间件也提供了共享节点资源的机制,它将应用程序表示为可迁移并在最合适节点上执行的代码片段,而节点的适宜性会根据网络和环境的动态变化而变化。最后,中间件平台还可以提供在节点级别,通过并发访问共享资源来优化其使用,延长整体网络生命周期并提高潜在收益。
最后,基于代理的中间件可以促进共享传感器网络中的应用信息共享。除了通常与软件代理相关的控制任务外,软件代理还可用于传感器网络中的信息处理任务。这些任务包括数据融合、推理和预测。传感器网络中的传感器通常收集原始数据,并对其进行处理以响应用户查询,构建对被监测环境的一致、准确和实时的视图。为了完成这些任务,采用集中式方法(即由单个节点聚合原始数据并执行所有处理)在通信开销方面被认为是低效的。因此,文献中探索了在基于代理的中间件支持下运行的分布式算法作为有前景的方法。在此背景下,多智能体系统(MAS)领域的研究提出了信息代理[Rogers等 2008]的概念。信息代理负责本地自主获取实时传感器数据,对其进行处理,并获得操作决策所需的有关信息。此类代理执行的处理范围从基于规则的简单推理到复杂的分布式数据融合操作。尽管本次文献综述未检索到此特定情境下的相关文章,但该方法在节点级别解决共享传感器网络应用程序信息共享属性方面具有广阔前景。
6. 网络级支持
在网络层构建共享传感器网络(SSN)的研究问题主要涉及三个方面:(i)如何使新开发的应用程序能够在共享网络基础设施中像在专用平台上一样运行,且不会对已部署的应用程序造成任何干扰;(ii)如何在应用程序之间共享公共信息以实现更好的节能;(iii) 如何通过跨多个网络的路由路径以最小成本成功地将数据传输到目标目的地。
6.1. 虚拟传感器网络
当新开发的应用程序部署在共享传感器网络(SSN)上时,它们可以在网络中的任意节点子集上执行。对于某些应用而言,有可能将其分配到物理相邻的节点上,从而能够直接与其他节点通信。然而,在一般情况下,应用程序的部署可能导致形成多个相互分离的簇。中间数据必须通过多跳方式而非单跳方式在这些不连通的分区之间传输。此外,一个应用程序的通信可能受到其他现有应用程序通信的不利影响。为应对这些挑战,需要一种覆盖机制为每个应用程序构建专用网络。受Kabadayi等人[2006],工作的启发,一些现有文献采用虚拟传感器网络(VSN)作为每个应用程序的覆盖机制,以更好地支持在共享传感器网络(SSN)上并发应用程序的执行。虚拟传感器网络(VSN)的概念源于网络虚拟化[Chowdhury和Boutaba 2009],,其主要关注如何使一组虚拟网络共同共享同一物理网络的资源,并像传统ISP一样实现基础设施与服务的解耦。这是一种通过在同一底层基础设施上构建多个逻辑无线传感器网络来实现虚拟传感器网络(VSN)的常见方法。此外,还可以在属于不同管理实体的多个无线传感器网络(WSNs)之上构建单个虚拟传感器网络 (VSN)。虚拟传感器网络(VSN)的主要目标是为每个应用程序动态建立一个覆盖传感器网络,使其能够将该覆盖传感器网络的拓扑视作其实际的网络拓扑。因此,可为每个应用程序提供一个专用平台在网络层建立了虚拟传感器网络(VSN),应用程序开发者在设计和执行时均无需考虑来自其他应用程序的潜在干扰。此外,根据共享传感器网络(SSN)的整体状态和新进入的应用程序,虚拟传感器网络(VSN)的成员可以随时间变化。
在Jayasumana等人[2007],的研究中,选择了两个真实世界的应用作为示例来支持在无线传感器网络上运行多个应用的观点:(i)地理区域重叠的感知应用和(ii)地下污染物羽流追踪。作者并未提供实际的实现方案,而是识别了虚拟传感器网络(VSN)实现过程中的主要问题,并详细阐述了其提出设计中应提供的可能功能。他们将虚拟传感器网络(VSN)的主要功能分为两个密切相关类别:VSN维护和节点成员资格维护。基本的节点成员资格维护功能包括加入虚拟传感器网络(VSN)和离开虚拟传感器网络(VSN),这两个功能均以分布式方式实现,并由节点自身做出决策。在加入虚拟传感器网络(VSN)后,物理传感器节点被识别为当前成员,并能够处理特定应用程序分配的任务。VSN维护不仅涉及虚拟传感器网络(VSN)的现有成员,还包括非现有成员。这些非现有成员作为支持节点,用于成功实现虚拟传感器网络(VSN)的维护功能,包括在虚拟传感器网络(VSN)内广播、合并两个虚拟传感器网络 (VSNs)、分割虚拟传感器网络(VSNs)以及生成边界轮廓。此外,这些支持节点还在虚拟传感器网络(VSN)的成员之间或不同虚拟传感器网络(VSNs)之间充当中继。
Yu 等人[2006]提出了前述虚拟传感器网络(VSN)原则的参考实现。在他们的研究中,选定的传感器节点组成一个称为关联组的逻辑组,该组专用于单一应用执行。当 VSN 初始化时,所有传感器节点在其整个生命周期内都被设置为默认关联组的成员。该默认组代码始终存储在每个节点上,以便能够在不同应用的多种上下文中执行。然而,这些节点在运行时也可作为其他构建组的成员。每个传感器节点根据分组标准(例如感知数据、节点属性以及节点从其邻居获取的信息)加入或离开动态形成的关联组。一旦 VSN 形成,任务将按需分发给关联组成员进行进一步处理。
FRESNEL [Efstratiou 2010]是一个新启动的共享传感器网络项目,旨在构建一个大规模联邦式传感器网络,支持不同应用程序共享同一底层硬件基础设施的资源。作为 FRESNEL项目的一部分,SenShare [Leontiadis等 2012],提出了一种构建覆盖传感器网络的方法,该方法不仅负责为应用程序提供最合适的成员节点,还能将该应用程序的网络流量与其它应用程序或用于维护网络覆盖的支持机制所产生的流量隔离开来。为了实现流量隔离的目标,SenShare特意在每个应用程序数据包中添加了一个6字节长的应用路由头,但整个网络消息仍遵循IEEE 802.15.4标准进行格式化。如前所述,虚拟传感器网络( VSN)的一个成员可以是网络中的任意传感器节点。这些成员节点形成多个簇,并且通常彼此隔离。为了从这些分离的簇中构建一个单一连通的逻辑网络即虚拟传感器网络( VSN),需要借助那些不执行目标应用程序任务的节点,在簇之间建立虚拟链路。簇之间的虚拟链路通过三个连续步骤逐步生成:(1)识别出连接簇边缘的节点;(2)发现从前一步所选节点出发、将本地簇连接到其他簇的最优路径;(3)确保所有簇都相互连接并能够访问网络的汇聚节点。虚拟链路的生成利用了底层的收集树路由协议(CTP)[Coyle 2002]用于发现簇之间虚拟连接的路由。还有一些其他相关项目,例如WebDust [Webdust],,它们也在网络层提出了类似的解决方案来解决相同的问题。我们注意到,虚拟传感器网络(VSN)是一个快速发展的领域,旨在为用户提供对底层基础设施的透明访问,该基础设施通常由多个独立管理实体下的异构资源组成。我们相信,在不久的将来,共享传感器网络(SSN)必将从更先进的虚拟传感器网络(VSN)发展中受益。
6.2. 信息共享
在网络层,与共享传感器网络(SSNs)相关的下一个关键问题是通过应用程序之间的信息共享来实现更高的能量效率。能量效率几乎是所有无线传感器网络(WSN)实现中最常见且最重要的需求。为了延长网络生命周期,已在无线传感器网络中成功开发并应用了多种节能机制和技术。然而,几乎所有现有解决方案都针对专用无线传感器网络设计,在应用于共享传感器网络时,并不能为节能带来额外优势。为了进一步延长共享传感器网络的网络生命周期,需要新的节能技术和解决方案,以充分利用共享基础设施的内在特性,实现良好的能量效率,同时不对应用程序开发者造成过重负担。
任务共享是一种信息共享机制,被用作一种针对共享传感器网络(SSN)的节能技术,其基于一个关键观察:在多个应用程序之间最大化公共信息的共享可以显著降低能耗。Nirmalya 等人提出了一种称为 MATS 的多应用任务共享方法 [2010],作为 SSN 中的一个原型实现。该解决方案的基本思想是在执行期间,通过使用特定应用程序中的一组子任务来构建关联集,同时满足最低质量要求。关联集表示为满足应用程序最低质量要求所请求的最大资源(此处的资源指内存、处理、能量、通信能力及其他节点特性)。通过对不同应用程序应用此过程,可生成多个关联集。对于每个关联集,由于它们在同一时间请求相同的资源,因此可能与其他关联集存在依赖关系。每个关联集的依赖关系总量反映了跨应用程序的任务共享程度。关联度越高,意味着其执行优先级越高,因为它因公共任务的重叠范围更大而能够满足更多的并发应用。
Farias等人[2013]提出了一种基于动态图的方法,以解决共享传感器网络(SSN)中的任务共享问题,防止属于不同应用程序的公共任务被多次执行。例如,如果两个目标应用程序具有一个公共任务,则该任务仅由相应的节点执行一次,生成的数据将供这两个应用程序共享。与MATS不同,该研究中的公共任务识别基于应用程序,而非关联集。此外,该识别在运行时进行,以便高效应对不同应用程序带来的易变且动态的资源需求。在此方案中,任务分配主要依赖于传感器节点的剩余能量。与MATS类似,应用程序间共享效果更强的公共任务集被赋予更高的执行优先级。Li等人在Li等人[2012]中提出了一种实用的任务共享解决方案,综合考虑了应用程序到达时间、数据准确性以及数据新鲜度等多个因素。该任务共享方案受到会话保持思想的启发,会话保持是一种广泛使用的作业调度策略,用于确保在同一会话期间同一用户连接到同一服务器。与前述两种方案不同,该方法定义了一个用户可配置的多目标函数,用于确定公共任务的优先级,用户可根据自身需求动态调整各参数的权重。该方法有助于在确保所有任务最低数据准确性的前提下,最大化具有相同资源需求的不同应用程序中任务执行时间的交集。
最后,我们注意到信息融合可以通过适当的修改扩展到共享传感器网络(SSN),以实现相同的目标。当一个传感器节点从其他节点接收到有用的信息时,这些信息可以与本地可用的信息有效融合,从而减少数据传输量。因此,传感器节点的无线通信模块的能耗可以显著降低,因为多项研究[Xiong and Svensson 2002; Nakamura et al. 2007; Li et al. 2013]已确认这些模块是主要的能耗来源。信息融合方法涵盖从基于简单规则到基于模型的技术,其在性能和鲁棒性方面有不同的目标。简单的融合规则在鲁棒性方面表现更优但次优,而复杂的融合规则可能对底层基础设施较为敏感。更重要的是,几乎所有提出的信息融合算法都是为特定应用的无线传感器网络设计的,未考虑不同应用程序之间的潜在信息融合。直到最近,在开展本次系统性综述之时,Farias 等人[2012, 2014]才首次提出解决这一关键问题的工作。在 Farias 等人[2012],的研究中,作者提出了一种名为 EMAF 的首个基于简单规则的信息融合算法,专为共享传感器网络(SSNs)定制。EMAF 为运行在共享传感器网络(SSNs)上的应用程序分配不同的权重,并提供用户可配置参数以指示数据对某个应用程序的重要性。然而,受限于基于简单规则的信息融合算法的特性,预计更复杂的基于模型的信息算法将被迁移至共享传感器网络(SSNs),并进一步提高信息融合的准确性。在 Farias 等人[2014],的研究中,作者通过探索应用程序在数据阈值上的相似性,提出了三种适用于共享传感器网络(SSNs)的增强型基于模型的融合算法。这些方法建立在 de Aquino 等人[2007]提出的区间与概率方法基础之上,分别命名为增强型贝叶斯推理(EBI)、增强型Dempster‐Shafer(EDS)和增强型容错区间( EFTI)。作者证明了数据范围(即特定应用程序在其测量中所考虑的数值范围)以及应用程序的权重(为每个应用程序分配的相对优先级)对于多个应用程序的信息融合过程至关重要。由于应用程序可能具有不同的重要程度,合理假设它们的数据也具有不同的重要程度。如果一个相关性较低但数据范围较大的应用程序与其他现有应用程序具有相同的重要程度,则可能导致错误结果,即不能真实反映被监测环境的实际状况。通过进一步考虑数据语义(所谓数据语义,是指描述应用程序的一种模式,能够实现应用程序之间的互操作性和集成)以及每个应用程序的权重,这些增强型融合算法相比传统融合算法能够在共享传感器网络(SSN)中返回更接近现实的结果。
6.3. 路由
在网络层构建共享传感器网络(SSNs)的最后一个但同样关键的问题是路由。为特定应用的无线传感器网络开发的传统路由协议通常试图通过利用应用层语义[Rocha等 2012],提出一种将路由问题与其他应用层问题(如以数据为中心和以服务为中心的路由)相结合的一体化解决方案,来实现路由效率。它们还倾向于针对由某一类无线传感器网络应用所启发的特定通信模式优化路由性能。在共享传感器网络中,多个应用程序在同一网络基础设施上运行,每个应用程序都有其自身的一组必须由路由协议处理和利用的要求,以在转发数据的同时保证能量效率。
Eltarras和Eltoweissy[2010]的文献中描述了一种解决共享传感器网络(SSNs)中路由问题的可能方法。该文献提出了一种面向大规模共享传感器‐执行器网络(SANETs)的新型路由方法——自适应多准则路由(AMCR)。所提出的路由策略考虑了多个应用的不同流量模式、通信需求以及服务质量(QoS)。此外,AMCR能够适应这些需求以及应用执行环境中的动态变化。AMCR设计的主要创新贡献在于,它提供了一种真正通用的路由协议,能够利用消息语义并根据观测到的应用特性进行自适应调整,以支持共享平台的高效运行。
AMCR 采用一种描述性方法来对网络节点进行寻址,从而能够探索与应用程序相关的信息。作者认为,在无线传感器网络中,基于节点唯一标识符的寻址方案在规模和资源管理方面并不高效。许多研究人员自无线传感器网络领域研究初期便提出了此类观点[Krishnamachari 等人,2002a;Heidemann 等人 2001] ,主张使用以数据为中心或基于属性的命名方案。这类方案根据节点的特性(如地理位置、感知能力以及当前上下文 (例如剩余能量))来识别网络中的节点。根据多项研究[Krishnamachari 等人, 2002a,2002b;Heidemann 等人 2001],,以数据为中心的寻址对于促进数据聚合功能和网络内处理至关重要,从而提高系统效率。
基于这些假设,AMCR 的支持者提供了基于描述性标准的资源寻址方式,并允许应用程序发布自身的资源标准。AMCR 允许将目标地址指定为对节点能力、管理设置和/或应用程序发布的标准的定性引用。它还无缝支持单播/多播/任播/广播通信模式。应用程序只需为目标指定一个描述性谓词,该谓词可能匹配一个、部分或全部节点。
另一项利用应用层信息共享来优化路由网络的有趣工作是Hefeida等人提出的研究 [2011]。作者认为,对感知信息的解释在很大程度上依赖于上下文,而为了实现高效的处理和通信,上下文感知在无线传感器网络(WSN)中起着重要作用。他们指出,在大多数现有的WSN协议中,上下文感知仅在单一维度上被利用,并且通常仅通过应用层或路由层的单个上下文参数进行捕获。因此,他们的研究更进一步,提出了一种新的WSN上下文模型,以高效地在多个维度上捕获多个上下文参数(即来自/到达网络协议栈不同层的上下文)。他们还提出了根据当前上下文自适应调整网络行为的同时平衡网络负载的机制。所提出的模型考虑了反映节点运行时应用需求的上下文参数、节点的当前状态,以及邻近节点的状态和需求(从而利用节点间上下文共享)。本文还以案例研究的形式展示了所提上下文模型的应用,即上下文感知路由‐MAC方案(CARMS)。CARMS能够在单个工作周期内执行多跳、多流和多包传输。该方案考虑了流量负载和路由信息这两个上下文参数,并利用相似数据包的路由层上下文,在需要时建立多跳流。
除了利用应用层信息来配置高效路由外,我们在系统性综述中检索到的一些文献还考虑了不同的运行应用程序的优先级,允许高优先级应用程序使用更快速的路由,同时促进应用感知负载均衡。Shah 和 Szymanski [2012]中描述的研究提出了一种动态多路径路由协议,其中来自不同应用程序的数据包根据选择每条路径所需支付的代价以及其支付能力,动态选择通往汇聚节点或其他节点的路径。该机制中,价格反映了路由器(路径上的节点)的拥塞情况,从而体现数据包通过路由器时的等待时间。支付能力由应用程序优先级和数据包等待时间决定。随着短路径使用频率的增加,这些价格也随之上升。因此,低优先级应用程序倾向于避开高价格路径,转而选择价格较低的路由,这些路径可能较长,但由于避免了拥塞路由器的等待时间,实际通过速度更快。这一特性使得高优先级流量能够凭借其优先级(通常代表其在支持其他节点与网络连接中的重要性)快速通过
1374

被折叠的 条评论
为什么被折叠?



