一种基于最短跳距的水下节点分层方法与流程

文档序号:22753611发布日期:2020-10-31 09:49阅读:215来源:国知局
一种基于最短跳距的水下节点分层方法与流程

本发明涉及水声传感网络技术领域,尤其涉及一种基于最短跳距的水下节点分层方法。



背景技术:

水声网络(underwateracousticnetworks,uans)作为人类认识、探索、开发和利用海洋资源的重要手段,成为越来越多的科研工作者研究的热点。在科研方面,uans在海洋资源勘探、海洋科学研究、海洋灾难探测、环境污染监测等方面有着广泛的应用前景;在军事方面,未来的作战中,海陆空一体化信息网络将发挥重大作用,海洋战场占据重要地位。uans具有目标追踪、导航定位、信息传输等功能,uans的研究、发展与应用协同陆空作战实时通信,可以有效提升作战效率;在经济与社会方面,海洋因其鱼和贝类能够为人类提供滋味鲜美、营养丰富的蛋白食物,而被称为未来的“粮仓”,而我国的海洋面积占国土面积的31.22%,因此,研究uans对资源勘探和能源开发有重要的使用价值。

目前水声网络(underwateracousticnetworks,uans)中提出的部分路由协议(如:dbr、vbf等)在建立路由的过程中易形成“空旷区域”,导致数据不能成功送达至上一次更新层级的发送节点,降低了网络的包交付率;数据重传和长距离传输会带来额外的能耗,增加网络开销,降低网络效率。如图1所示,以dbr协议为例,根据dbr协议源节点将数据发送出去后,转发节点f和节点n1将会收到数据包,但是n1的深度大于源节点s,不能作为转发节点;只有节点f深度小于源节点s可以转发数据,但是节点f的传输范围内没有比节点f深度小的节点,所以本次数据将无法传输到sink节点,就形成了“空旷区域”的问题,进而影响整个网络的数据传输通信。

为解决“空旷区域”的问题,目前多采用节点分层算法,每个传感器节点根据收到的hello消息和分层算法获得自身的层级,越靠近sink的节点其层级越小,数据传输时,数据由层级大的节点传输至层级小的节点,最终传输至sink节点。现有的节点分层方案主要有基于超级节点广播传输功率探测包的分层方法、基于sink节点与普通节点距离的分层方法和基于最小跳数的分层方法。

然而基于超级节点广播传输功率探测包的分层方法、基于sink节点与普通节点距离的分层方法中均需要频繁的更改传感器节点的发送功率,在真实环境中测试时更改发送功率是一项比较繁琐的工作,且过大的发送功率也会带来较大的能量消耗,增加整体网络的开销;在基于最小跳数的分层方法中,易形成单跳之间的长距离传输,导致能耗增加。

因此,如何设计出合适的水下节点分层方案以解决上述问题,是现阶段急需考虑的。



技术实现要素:

本发明的目的在于克服现有技术的缺点,提供了一种基于最短跳距的水下节点分层方法,解决了目前采用的节点分层算法存在的不足。

本发明的目的通过以下技术方案来实现:一种基于最短跳距的水下节点分层方法,它包括以下内容:

s1、当前节点收到控制报文,判断自身层级与当前发送节点的层级的大小关系,如果自身层级小于当前发送节点的层级,则自身层级保持不变;

s2、判断当前节点的层级是否为初始值0xff,如果是,则将当前发送节点的层级加1后作为自身的层级;

s3、计算当前发送节点到当前节点的距离和上一次更新层级的发送节点到当前节点的距离;

s4、判断当前发送节点到当前节点的距离与上一次更新层级的发送节点到当前节点距离的关系,如果当前发送节点到当前节点的距离大于上一次更新层级的发送节点到当前节点的距离,则当前节点层级保持不变;

s5、将当前发送节点的层级加1后作为自身的层级;

s6、节点每次收到控制报文后,重复步骤s1-s5完成自身的层级更新。

进一步地,步骤s1中如果自身层级小于当前发送节点的层级,则自身层级保持不变,否则进行如下步骤:

判断当前节点的层级是否为初始值0xff,如果是,则将当前发送节点的层级加1后作为自身的层级;层级更新完毕,否则计算当前发送节点到当前节点的距离和上一次更新层级的发送节点到当前节点的距离;判断当前发送节点到当前节点的距离与上一次更新层级的发送节点到当前节点距离的关系,如果当前发送节点到当前节点的距离大于上一次更新层级的发送节点到当前节点的距离,则当前节点层级保持不变;否则,将当前发送节点的层级加1后作为自身的层级,层级更新完毕;任意节点收到控制报文后重复步骤s1-s5。

进一步地,当前发送节点到当前节点的距离小于上一次更新层级的发送节点到当前节点的距离,则将当前发送节点的层级加1后作为自身的层级。

进一步地,所述当前发送节点根据最短跳距的传输方式将数据传输到上一次更新层级的发送节点包括:

当前发送节点将数据传输给层级比自身小且与自身距离最近的当前转发节点,实现一跳传输;

当前转发节点再将数据传输至下一跳转发节点或目标节点,实现两跳传输。

进一步地,所述方法还包括对网络中的所有节点进行节点层级配置的步骤,所述节点层级配置的步骤设置于所述步骤s1之前。

进一步地,所述节点层级配置步骤包括:

网络初始化后,目标节点广播控制报文到传输半径内的第一层级节点;

第一层级节点收到控制报文后提取控制报文头部的目标节点的层级数,将自身的层级更新为目标节点层级数加1,并将控制报文转发到下一层级节点;

下一层节点提取控制报文头部的层级,与自身的层级进行比较,若自身层级小于控制报文头部的层级,则自身层级保持不变;否则判断自身层级是否为0xff,若是,则将层级更新为报文头部的层级加1,否则,计算当前发送节点到当前节点的距离和上一次更新层级的发送节点到当前节点的距离;判断当前发送节点到当前节点的距离与上一次更新层级的发送节点到当前节点距离的关系,如果当前发送节点到当前节点的距离大于上一次更新层级的发送节点到当前节点的距离,则当前节点层级保持不变;否则,将当前发送节点的层级加1后作为自身的层级,层级更新完毕;

重复第三步骤的内容,直到所有节点的层级都配置更新完毕。

本发明的有益效果为:一种基于最短跳距的水下节点分层方法,通过计算节点间的传输距离实现两跳传输,降低了数据传输的能耗,有效节省了能量且对交付率和平均延时的影响很小。

附图说明

图1为本发明方法的流程示意图;

图2为基于最短跳距的分层局部拓扑图;

图3为θ=0°,d=10时,d1与相对能耗的关系图;

图4为θ=0°,d、d1与相对能耗的关系图;

图5为θ=30°,d、d1与相对能耗的关系图;

图6为θ=45°,d、d1与相对能耗的关系图;

图7为θ=60°,d、d1与相对能耗的关系图;

图8为θ=90°,d、d1与相对能耗的关系图;

图9为节点个数与交付率对比图;

图10为节点个数与交付率对比图;

图11为节点个数与延时对比图。

具体实施方式

为使本申请实施例的目的、技术方案和有点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的保护范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本发明做进一步的描述。

如图1所示,本发明涉及一种基于最短跳距的水下节点分层方法,它包括以下内容:

s1、当前节点收到控制报文,判断自身层级与当前发送节点的层级的大小关系,如果自身层级小于当前发送节点的层级,则自身层级保持不变;

s2、判断当前节点的层级是否为初始值0xff,如果是,则将当前发送节点的层级加1后作为自身的层级;

s3、计算当前发送节点到当前节点的距离和上一次更新层级的发送节点到当前节点的距离;

s4、判断当前发送节点到当前节点的距离与上一次更新层级的发送节点到当前节点距离的关系,如果当前发送节点到当前节点的距离大于上一次更新层级的发送节点到当前节点的距离,则当前节点层级保持不变;

s5、将当前发送节点的层级加1后作为自身的层级;

s6、节点每次收到控制报文后,重复步骤s1-s5完成自身的层级更新。

进一步地,步骤s1中如果自身层级小于当前发送节点的层级,则自身层级保持不变,否则进行如下步骤:

判断当前节点的层级是否为初始值0xff,如果是,则将当前发送节点的层级加1后作为自身的层级;层级更新完毕,否则计算当前发送节点到当前节点的距离和上一次更新层级的发送节点到当前节点的距离;判断当前发送节点到当前节点的距离与上一次更新层级的发送节点到当前节点距离的关系,如果当前发送节点到当前节点的距离大于上一次更新层级的发送节点到当前节点的距离,则当前节点层级保持不变;否则,将当前发送节点的层级加1后作为自身的层级,层级更新完毕;任意节点收到控制报文后重复步骤s1-s5。

进一步地,当前发送节点到当前节点的距离小于上一次更新层级的发送节点到当前节点的距离,则将当前发送节点的层级加1后作为自身的层级。

进一步地,所述当前发送节点根据最短跳距的传输方式将数据传输到上一次更新层级的发送节点包括:

当前发送节点将数据传输给层级比自身小且与自身距离最近的当前转发节点,实现一跳传输;

当前转发节点再将数据传输至下一跳转发节点或目标节点,实现两跳传输。

进一步地,所述方法还包括对网络中的所有节点进行节点层级配置的步骤,所述节点层级配置的步骤设置于所述步骤s1之前。

进一步地,所述节点层级配置步骤包括:

网络初始化后,目标节点广播控制报文到传输半径内的第一层级节点;

第一层级节点收到控制报文后提取控制报文头部的目标节点的层级数,将自身的层级更新为目标节点层级数加1,并将控制报文转发到下一层级节点;

下一层节点提取控制报文头部的层级,与自身的层级进行比较,若自身层级小于控制报文头部的层级,则自身层级保持不变;否则判断自身层级是否为0xff,若是,则将层级更新为报文头部的层级加1,否则,计算当前发送节点到当前节点的距离和上一次更新层级的发送节点到当前节点的距离;判断当前发送节点到当前节点的距离与上一次更新层级的发送节点到当前节点距离的关系,如果当前发送节点到当前节点的距离大于上一次更新层级的发送节点到当前节点的距离,则当前节点层级保持不变;否则,将当前发送节点的层级加1后作为自身的层级,层级更新完毕;

重复第三步骤的内容,直到所有节点的层级都配置更新完毕。

具体地,假设网络中所有节点均已知自身的位置信息并将其携带在控制报文中,网络初始化时,sink节点(目的节点)广播控制报文,其它非sink节点接收到控制报文后,按照以下步骤更新层级:

步骤1、判断当前发送节点层级lp是否为层级初始值0xff,若是,则提取发送控制报文的节点的层级l,将其自身的层级更新为l+1;否则,执行步骤2。

步骤2:判断发送控制报文的节点的层级l是否大于当前发送节点层级lp,若l>lp,则层级保持不变;否则,执行步骤3。

步骤3:计算当前发送节点与当前接收节点的距离dsrc,并计算当前发送节点与上一次更新层级的发送节点的距离dsrp,若dsrc>dsrp,则当前发送节点的层级保持不变,将当前发送节点的信息添加至邻居表;否则,执行步骤4;

步骤4:提取层级字段,当前接收节点的层级l,将其自身的层级更新为l+1,更新邻居表。

如图2所示,网络初始化后sink节点(目的节点)广播控制报文后,转发节点f1、f2、f将首次收到控制报文,将报文头部sink节点的层级0提取出来,将自身的层级更新为1,并将控制报文转发出去;然后转发节点f会收到f1、f2的控制报文(由于f1、f2的层级均为1,下面将不再区分收到由f1、f2转发控制报文的先后顺序),由于f、f1和f2的层级均为1,发送者层级大于当前节点层级的条件不成立,因此,f将计算自身到sink节点的距离和自身到f1、f2的距离,从图中可以看出,f到sink节点的距离较远,因此,f提取报文头部f1、f2的层级1,加1后将自身的层级更新为2。

利用能耗模型对基于最小跳数的分层方法与本发明的方法进行分析对比;假设f至sink节点的距离为d,f至f1、f1至sink节点的距离分别为d1、d2;数据由f直接传输至sink节点的能耗为e,由f发送至f1或f2再转发至sink节点的能耗为e',则根据能耗模型得到:

e=pstp=prtpa(d)

e'=pstp=prtpa(d1)+prtpna(d2)

其中,ps=pra(d),k=1.5。由于传输时延tp相同、所有节点的发送功率ps均一致,因此,e和e'计算公式如下:

假设d1与d之间的夹角为θ,则根据余弦定理可得:

当θ=0°时,则:

用matlab仿真分析比较了e和e'的关系,将e和e'称为相对能耗,仿真中假设d的取值范围为(0,5),单位:km,d1的取值在d的取值范围内变化,取值分别为:θ的角度在(0°,90°)范围内变化,信道的中心频率为10khz。

如图3所示,θ=0°,d=10时,一跳传输至sink节点的相对能耗保持不变,但随着d1的增大,两跳传输至sink节点的相对能耗逐渐减小,当时,两跳传输至sink节点的相对能耗达到最低;由于θ=0°,d=10且d1的值始终小于d,一跳传输至sink节点的相对能耗总大于两跳传输至sink节点的相对能耗。

如图4所示,当θ=0°,d、d1分别在其范围内变化时,当时,两跳传输至sink节点的相对能耗小于一跳传输至sink节点能耗,且能耗达到最小值。

如图4-图8所示,随着θ逐渐增大,两跳传输至sink节点的相对能耗逐渐大于一跳传输至sink节点的相对能耗,当θ=90°时,d1的长度大于d,因此,两跳传输至sink节点的相对能耗完全大于一跳传输至sink节点的相对能耗。综合图3、4、5、6、7、8,当d1>d时,两跳传输至sink节点的相对能耗大于一跳传输至sink节点的相对能耗;当d1<d时,两跳传输至sink节点的相对能耗小于一跳传输至sink节点的相对能耗;且当时,两跳传输至sink节点的相对能耗达到最小值。

综合数学分析和matlab仿真分析的结果,d1<d且θ=<90°时,两跳传输至sink节点的相对能耗小于一跳传输至sink节点的相对能耗,因此,数据转发时采用分层多跳传输,可以有效节省能量。

本发明用ns-3仿真工具对分层方案进行性能评估。在仿真中,用基于最短跳距的分层方案替换了lb-agr路由协议中基于最小跳数分层的方案,从数据包交付率、节点平均能耗和端到端的平均延时三个方面进行了对比分析。实验场景设置如下:将15-45个节点随机部署在6000m×6000m×3000m的三维环境中,仿真参数如下表:

包交付率(packetdeliveryratio,pdr):是指sink节点成功接收的包数与源节点发送的包数之比,pdr计算公式如下:

式中n为仿真实验的数量,psend为源节点发送的数据包的数量,prece为sink节点接收的数据包的数量。

节点平均能耗(nodeenergyconsumption,naec):指一次仿真实验中节点发送数据包、接收数据包和处于空闲状态的能量之和与网络中节点数量的比值,计算公式如下:

式中nnumber表示节点的数量,esend、erece、eidle分别表示节点发送数据、接收数据和处于空闲状态消耗的能量。

平均端到端的延时(averageend-to-enddelay,aeed):指一次仿真实验中,sink节点接收数据的时间与源节点发送数据时间的差的总和数据传输次数的比值,计算公式如下:

式中,ntrans表示一次仿真实验中数据传输的次数,tsink和tsource分别表示sink节点接收数据的时间和源节点发送数据的时间。

本发明仿真测试了节点个数与交付率、节点平均能耗和网络端到端的平均延时的关系;如图9所示,随着节点数量的增多,两种分层方案的交付率均保持在90%以上。基于最短跳距的分层方案的交付率略低于基于最小跳数的分层方案,但差值均保持在1%-3%之间。

如图10所示,随着节点数量的增多,由于基于最短跳距的分层方案可以实现短距离多跳传输,因此其平均能耗小于基于最小跳数的分层方案的平均能耗。

如图11所示,随着节点数量的增多,两种分层方案的平均延时基本保持不变,但由于基于最短跳距的分层方案中,传输跳数的增加,其平均延时大于基于最小跳数的分层方案的平均延时。

本发明为了均衡sink附近节点的能耗,其附近节点的层级增加,实现了多跳传输且其单跳之间的距离较短,通信时,可以使用较小的发送功率,因此附近节点的能量有效减少。同时,其他节点根据距离确定层级,层与层之间的距离缩短,也可以实现短距离多跳传输。虽然基于最短跳距的分层方案的延时增加,但是其交付率基本与基于最小跳数的分层方案的交付率保持一致且其能耗有效减少,因此,基于最短跳距的分层方案的性能优于基于最小跳数的分层方案。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1