在介绍本发明之前先定义几个概念:
定义1:邻居时间,它表示从当前时刻(t)开始,节点ni和nj之间的邻居关系还能维持多久,用符号
定义2:发送成功率pi,j,它表示邻居节点ni和nj之间一次通信成功的概率。
定义3:节点层高level,表示当前节点和sink节点之间的欧式距离与节点通信半径的比值。
定义4:内层邻居,层高小于当前节点且和当前节点是一跳邻居关系。
本发明涉及无线传感网技术领域,尤其涉及传感网中的数据收集,具体是一种基于邻居时间和信誉模型的移动无线传感器网络数据采集方法。
背景技术:
由于无线传感器网络所具有的低成本、易于部署、可以实时监测目标的一些物理信息、并且具有可以代替人类长时间工作在恶劣环境中的优点,其得到了广泛的应用。无线传感器网络最初起源于军队,通过将大量无线传感器节点部署到敌人阵地使军方可以实时监视敌人的行动以及敌人军火分布等重要信息,有利于军方采取及时有效的行动措施。但是将无线传感器网络部署到敌人阵地等恶劣环境中使其面临着众多的安全问题。从安全的角度来说,需要格外注意的就是安全的数据采集协议。以下几个因素增加了数据采集协议设计的难度:1)由于无线传感器网络使用的是无线信道,而该信道直接暴露在外界环境中,且传感器节点之间使用广播的方式进行通信,这就增加了通信信息被窃听和伪造的风险。2)由于传感器节点受到存储空间、计算能力等各种资源限制,使得现有的一些安全技术如非对称密钥技术不能直接应用到无线传感器网络中。3)在移动无线传感网络中节点一直在移动,网络的拓扑结构一直在变,传统的基于路由表的路由方式,无法实时响应网络拓扑结构的变化。4)开放的部署环境,在组网之前节点之间相互不确定身份,因此容易混入恶意节点,这些恶意节点可以通过伪造信息、发布虚假层高、选择性转发等攻击手段攻击网络。因此,如何保证安全可靠的数据收集是设计移动无线传感器网络面临的一项重要的挑战。
移动无线传感器网络也是以数据为中心的网络,因此用于数据收集和转发的路由协议在移动无线传感器网络中极其重要。为此,相关领域的科研工作者进行了大量的研究和探索,提出了大量的协议。这些协议按照节点的移动模型可以分为支持sink移动的协议,支持感知节点移动的协议,同时支持感知节点和sink节点移动的协议。其中支持sink节点移动的路由协议,通过合理规划sink节点的数目和移动路径来收集数据,典型的有dd协议和madd(estrind.chalermekintanagonwiwat,rameshgovindan,“directeddiffusion:ascalableandrobustcommunicationparadigmforsensornetworks[c].inproceedingsofthe6thannualinternationalconferenceonmobilecomputingandnetworking.2010:56-67)。这类路由协议的数据延迟较大,能够满足大部分周期性数据采集任务的需要,但是无法用在对数据实时性具有一定要求的监控网络和搜救网络中。此外,该协议在设计时没有考虑网络和节点的安全问题。在支持节点移动的协议中,sink节点的位置固定且通常由现有的基础设施充当。因为节点一直在快速地移动,因此网络的拓扑结构会频繁地变化,基于路由表的路由方式无法实时响应网络拓扑结构的变化,为此引入了分层的方式。phaser(khanaw,abdullahah,anisimh,etal,acomprehensivestudyofdatacollectionschemesusingmobilesinksinwirelesssensornetworks[j]sensors,2014,14(2):2510-2548.)该协议使用gtdmamac来解决拓扑快速变化场景中的梯度维护问题(类似于本发明的层高)。这个协议的问题在于,它是为那些节点以固定周期生成数据的应用场景设计的。这导致了在数据包结构中使用封(将多个数据包封装成一个更大的数据包),使得数据包可以包含来自多个节点的数据。这意味着,在每个时隙中,节点将传输一个包含尽可能多的新数据的数据包。这些较大的数据包需要较长的时隙,这可能会导致较长的延迟,并且还会降低网络更新梯度度量的频率。由于节点在能够传输之前必须等待一个周期,并且结合一次发送的数据包大小有限的事实,可能会出现某些数据必然被丢失的情况。为此,phaser使用排队算法,它简单地覆盖从同一节点接收到的旧数据,以便传送优先于较旧数据的较新数据.raser(hayest,alifh.robustad-hocsensorrouting(raser)protocolformobilewirelesssensornetworks[m].elseviersciencepublishersb.v.2016)是一种新颖的高性能路由协议。它的设计能够以最小的数据包丢失率促进数据的低延迟传输。与phaser类似,raser还使用mwsn中的盲转发技术(广播)将分组转发到接收器,并且还利用gtdmamac技术来解决在变化的拓扑中的梯度维护问题。但是,数据包不再使用数据封装,而仅限于单个数据,这极大地改变了协议的结构。其优势在于减少时隙的长度,缩短数据等待发送的平均等待时间。这样做的后果是数据传输速度更快,协议能够应对最高级别的移动性。raser还可以实施先到先得的排队方式并减少数据包丢失。这种方法开销较低,即使在要求最苛刻的环境下也能很好地工作,这使得它非常适合于mwsn并适用于各种各样的应用。mrdr(刘唐,彭舰,杨进.多监控任务移动传感器网络高效数据路由协议[j],工程科学与技术,2017,49(2):177-185.)一个基于分层网络模型的多任务数据收集协议,利用优先级队列和数据分类发送机制实现了对多任务的支持。此外为了绕过路由空洞mrdr提出了消息回传机制,当遇到路由空洞时数据回传重新选择转发路径。
ser家族(phaser、raser)通过gtdmamac技术有效地避免了网络内部的信道冲突,同时实现了节点梯度值的同步更新。ser家族通过将网络模型划分成层级结构实现了不需要路由表的路由协议,不需要路由表使得协议能够快速响应网络拓扑结构的变化。但ser家族仍然存在如下问题:(1)ser家族在设计时没有考虑网络的安全问题,导致网络容易受到内部恶意节点的攻击。(2)数据的传输成功率偏低,但是重传的代价却十分高昂。(3)gtdmamac技术虽然有效地解决了网络内部的冲突问题,但也导致了较大的消息延迟,因此ser家族只能用在对数据实时性要求不高的场景中。(4)网络的吞吐量偏低,因为gtdmamac技术在同一个时刻只允许一个节点发送数据。
mrdr通过网络分层和优先级队列实现了对多任务的支持。但mrdr的设计仍然存在如下问题:(1)mrdr在设计时没有考虑到网络本身的安全问题,因此mrdr无法保证传感器网络的数据安全和节点安全。(2)mrdr协议的下一跳选择规则会导致数据在网络上转圈(数据没有朝着sink传输,而是在同层节点之间传输),当有大量的数据在网络上转圈时会导致消息内爆。(3)mrdr中提出的消息回传机制并不能解决路由空洞问题。因为在mwsn网络中传感器节点之间的邻居关系一直在变化,当遇到路由空洞需要回传消息时,当前节点和上一跳节点可能已经不再是邻居了,因此消息回传机制并不能解决路由空洞问题。
技术实现要素:
本发明的目的在于解决移动无线传感网络中的数据收集问题。针对现有技术发送成功率不高消息延迟大的问题提出了邻居时间概念和多路转发和消息补偿机制。针对现有协议在设计时没有考虑网络和数据安全对传统的信誉模型进了改进,实现了移动无线传感器网络中的安全数据采集。
本发明的目的是这样达到的:
通过邻居时间、多路转发和消息补偿机制提高数据的发送成功率,利用改进的信誉模型来平衡节点的能量消耗延长网络的寿命,同时实现网络和数据的安全传输。
具体做法是:
当源节点有数据需要发送时,源节点先计算它和各个邻居节点的通信成功率,然后选择通信成功率最大的k个节点作为下一跳节点,同时将待发送的数据通过这k个下一跳节点转发出去。当节点收到数据时先判断上一跳节点是否可信,如果上一跳节点可信则转发收到的数据,否则丢弃收到的数据,并将上一跳节点加入黑名单中,同时在网络内广播上一跳节点是恶意节点的相关信息。当有新的节点要加入网络时就启动邻居身份认证算法,只有通过认证的节点才能加入网络。
在实施中具体步骤是:
源节点发送消息的过程如下:
第一步,源节点有数据需要发送时先判断数据的类型和节点的运动方向。如果是非紧急数据且节点朝着sink运动,则先不发送数据,等节点运动到距离sink更近的地方时再发送(随着时间流逝,消息的失效时间会减小,消息的优先级会提高)。如果待发送的数据是紧急数据或者节点朝着远离sink的方向运动,则计算源节点的层高。如图1所示,在层次网络模型中网络被划分成以sink为中心,节点通信半径为层高的同心圆。处于网络中心的sink周期性地广播,节点通过接收信号强度来确定自己的层高。假设sink节点发送的信号强度是esink,节点ni收到的信号强度是ei_rec,则节点ni的层高为:
第二步,计算得到节点的层高后,结合网络的当前状态估算成功地将数据从当前节点路由到sink需要的重传次数。(假设需要k次重传,当前节点是信息源时有k≥1,当前节点是转发节点时有k≡1)。假设两个节点之间的发送成功率pij的值为p,且源节点的层高为level,则其转发成功率为plevel,因为将数据从源节点转发到sink节点需要的最小转发次数是level。理论上成功地将数据从源点发送到sink最多需要
第三步,从邻居节点中按如下规则选出下一跳节点的候选集合。第一条,从它的内层邻居中选出其内层邻居个数较多的节点作为下一跳节点的候选。第二条,如果通过第一条规则找到的候选节点个数不足k个,则从它的内层邻居中选出同层邻居个数较多的节点作为下一跳的候选。第三条,如果通过前两步还是找不到合适的候选节点则从它的同层邻居中选出内层邻居较多的节点作为下一跳。
第四步,结合节点的运动状态计算候选节点和当前节点之间的邻居时间,并计算出其邻居时间信誉
第五步,从候选集合中挑出邻居时间信誉大于1的节点(邻居时间信誉大于1,说明候选节点和当前节点之间的最大通信时间足够长),构成新的候选集合,并计算候选集合中各节点和当前节点之间的直接信誉
第六步,利用评价相似度si,j来计算当前节点对每个候选节点的间接信誉,通过评价相似度可以过滤掉来自恶意节点的诽谤攻击。评价相似度通过对比当前节点和推荐节点对其公有邻居的信任值来判断推荐节点推荐给当前节点的信息是否可信,评价相似度的计算公式为:
第七步,计算每个候选节点的能量信誉ei,j,更新候选节点集合。只有剩余能量足够完成对待发送数据的数据的接收和转发时,节点才能被选作下一跳节点。节点的能量信誉计算公式为:
第八步,为候选节点集合中的每个候选节点分别计算,当前节点对它的综合信誉值
第九步,当前节点从候选节点集中选出信誉值最高的k个节点作为下一跳节点并将数据通过这k个节点转发出去。转发的同时需要启动定时器,如果定时器超时还没有收到来自sink的确认就启动重传机制。因为每个中间转发节点离sink的距离不一样,超时时间需要结合节点离sink的距离来确定。超时时间和层高之间的关系为:
中间节点的转发过程如下:
第一步,判断消息的类型,如果消息是恶意节点的身份判定广播消息,则将恶意节点的相关消息加入黑名单,结束。否则继续。
第二步,判断上一跳节点是否在黑名单中,如果在则丢弃数据包,结束。否则计算上一跳节点的转发信誉
第三步,判断第一步计算得到的转发信誉是否高于阈值,如果高于阈值则跳转到源节点发送过程(k=1)。如果第一步得到的转发信誉低于阈值,则把上一跳节点加入黑名单,并在网络内广播上一跳节点是恶意节点的身份判定广播。
邻居身份认证算法:
如果一个节点的综合信誉值低于某个阈值,就可以把该节点视为恶意节点。对于检测出来的恶意节点必须追踪其行为,以防止其伪装后再次对网络发起攻击。为了实现对恶意节点的追踪,当一个节点发现自己的邻居中存在恶意节点时需要广播该恶意节点的相关信息(节点的当前的大概位置、运动速度、id等)。此外,当一个节点突然出现在一个新位置上时,需要对其身份进行验证,只有通过身份验证的节点才能入网。
节点身份的认证过程如图5所示,详细如下:第一步,当节点ni检测到自己的附近突然多了一个节点nj时,向自己的邻居节点询问节点nj的身份信息。第二步,当邻居节点收到ni关于nj身份认证的请求时,将自己对nj身份的了解作为请求响应发送给ni。第三步,ni根据收集到的信息判断节点nj的身份是否可信,并将结果告诉自己的邻居。第四步,判定节点nj能否入网。
之所以采用这种认证方式,主要是因为运动具有连续性,因此节点不可能凭空消失或者出现。节点移动位置就像我们换工作一样,当我们打算去一家新公司工作时,新东家能通过我们的老东家打听我们的个人能力,因为老东家记录了我们日常工作的点滴,可以对我们的能力做一个综合的评价(当然评价也可能不客观)。节点发生位置移动之前的邻居节点(老东家)肯定知道节点的身份信息,因此当节点位置改变时(换工作),新位置的邻居节点(新东家)可以从其他节点(老东家)那里打听到该节点的相关信息。
本发明的积极效果是:
1、利用节点的运动关系估算两个节点之间的最大通信时间,通过节点之间的最大通信时间来优化下一跳节点的选取。
2、利用多路转发来绕过路由过程中遇到的路由空洞,减少路由空洞导致的延迟。相较于其他方法,该方法有更高的发送成功率和更小的平均消息延迟。
3、利用优先级队列实现非紧急数据的最优能耗发送,同时保证紧急数据的实时性。
4、利用改进的信誉模型来检测网络内部的恶意节点,净化网络。因为部署环境特殊、用开放的信道通信等原因,使得传感器节点容易遭受攻击。改进的信誉模型能够有效地识别并跟踪网络内部的恶意节点,因此使用该方法可以平衡节点能量的消耗延长网络的寿命,同时实现网络和数据的安全。
附图说明
图1以sink为中心的层级网络。
图2多路转发示意图。
图3邻居时间和节点运动关系图。
图4邻居时间和节点运动关系图简化图。
图5节点身份认证过程图。
图6本发明的总流程图。
具体实施方式
本发明采用邻居时间、多路发送和消息补偿来提高数据的发送成功率,采用信誉模型来保证网络和数据的安全,同时平衡节点能量消耗延长网络寿命。下面结合附图对本发明的具体实施方式作进一步的详细说明。
在本发明中源点和中间转发节点所完成的工作不一样,因此下面将分别从源点和中间转发节点2个视角说明本发明的具体实施过程。
源点视角:
当源节点有数据需要发送时,先判断是否需要立刻发送数据,如果需要采用延迟发送则将数据压入优先级队列,等到更合适的时机再发送数据。如果需要立刻发送则计算节点的层高,评估网络的状态确定需要采用几路转发(假设为k)。确定需要k路转发之后利用下一跳选择规则(层高小于自己且邻居多的优选)选出可以作为下一跳节点的候选集合。得到候选集合后为候选集合中的每个节点计算其下一跳节点的选择信誉,选出k个信誉最高的节点作为下一跳。下一跳节点确定后将数据转发给下一跳节点,同时启动定时器,如果定时器超时还没有收到来自sink的确定则认为数据在传输的发送过程中遇到了空洞或者恶意节点,需要启动消息重传。
中间转发节点:
当节点收到数据时,先判断数据是否为恶意节点身份判定广播,如果是则将恶意节点加入黑名单,否则判断上一跳节点是否在黑名单中,如果在黑名单中则丢弃收到的数据,如果节点不在黑名单中则计算上一跳节点的转发信誉,如果转发信誉高于阈值,则启动转发过程,否则广播上一跳节点是恶意节点的恶意节点身份判定广播。转发过程和源点的发送过程类似,唯一的区别在转发过程中k恒等于1。
本发明的用户使用场景举例:
场景一:在医院中,医院让患者带上具有生命体征数据采集作用的可穿戴设备(采集患者的心率、血压、体温、位置、运动信息等),这些可穿戴设备收集患者的生命体征数据,并通过多跳转发的方式将数据路由到后台服务器。后台服务器对数据进行存储分析和可视化,医生结合采集到的患者生命体征数据为患者制定个性化的康养方案。
在上述场景中,本发明的方法取得了好的效果。