[发明专利]基于簇型拓扑的水声传感器网络机会路由协议实现方法有效
申请号: | 201910704219.2 | 申请日: | 2019-07-31 |
公开(公告)号: | CN110519818B | 公开(公告)日: | 2022-07-12 |
发明(设计)人: | 赵瑞琴;李宁 | 申请(专利权)人: | 西北工业大学 |
主分类号: | H04W40/04 | 分类号: | H04W40/04;H04W40/20;H04W40/10;H04L45/02;H04L45/00 |
代理公司: | 西安凯多思知识产权代理事务所(普通合伙) 61290 | 代理人: | 刘新琼 |
地址: | 710072 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供了一种基于簇型拓扑的水声传感器网络机会路由协议实现方法,将机会路由协议与簇型拓扑相结合,转发节点根据邻簇位置与节点密度确定数据包流向方向,提高数据包一跳转发成功率并有效避开通信空区。同时利用簇型拓扑将网络稀疏化,进而明显减少路由控制开销,克服传统有状态机会路由控制开销大的弊端,提高网络能量利用率。建立簇间转发使用簇内节点辅助机制,在主节点转发失败后,簇内其它节点竞争转发,提高簇间转发成功率并减少数据包重传。节点在评估自身优先级时考虑节点剩余能量,因此网络能耗能够分散给每个节点,解决热点问题并有效延长网络寿命。 | ||
搜索关键词: | 基于 拓扑 传感器 网络 机会 路由 协议 实现 方法 | ||
【主权项】:
1.一种基于簇型拓扑的水声传感器网络机会路由协议实现方法,其特征在于包括下述步骤:/n步骤1:确定网络结构;/n三维水下水声传感器网络由两种节点组成:随机部署在水面二维平面的Sink节点和随机部署在水下三维空间内的传感器节点,Sink节点装配有GPS获取自身位置;传感器节点装配有不同类型的传感器采集水域信息;所有Sink节点和传感器节点都装配相同的声调制解调器,使用水声信号进行通信;传感器节点有生成和中继数据包的能力,数据包经多跳传输至任一Sink节点,即认为传递完成;/n步骤2:完成网络初始化;/n步骤2.1:所有Sink节点通过GPS得到自身位置坐标,所有传感器节点通过定位算法得到传感器节点的位置坐标,并进行周期性的更新;/n步骤2.2:所有传感器节点通过周期性的信标交互方式获取所有Sink节点位置坐标;/n步骤2.3:整个网络通过分簇算法划分成多个互不重叠的球型簇并进行维护,且分簇算法保证簇内节点在空间上均匀分布;所有簇的半径为声调制解调器通信半径的二分之一,因此簇内所有节点都在彼此的通信范围之内;/n步骤2.4:所有簇内传感器节点明确本传感器节点处在哪个簇中、所在簇坐标、所在簇中的传感器节点个数以及所在簇中是否包含Sink节点,而不需要知道簇内有哪些其它传感器节点以及其它传感器节点的位置坐标;其中簇坐标为簇内包含的所有传感器节点坐标的平均值;/n步骤2.5:如果一个簇内的一个或多个普通传感器节点能够与另一簇内的某一或某些传感器节点直接通信,认为这两个簇互为邻簇,不同簇间通过信标交互获得邻簇列表;/n当网络初始化完成后,每个传感器节点在本地具有以下信息:/n /n其中,传感器节点坐标和簇坐标用三维向量表示,簇坐标表示的是一个虚拟的、位于球型簇球心的点,任意节点到某一簇的距离是该节点到簇球心的距离;传感器节点的所在簇ID为不等于0的常数,作为区分网络中不同簇的标识,当簇ID为0时,表示数据包只在簇内传输;Sink标志位表示该传感器节点所在的簇内是否包含有Sink节点,如果没有Sink节点则将Λ置0,否则Λ置1;ρ表示簇内传感器节点个数;邻簇列表格式如下:/n
/nSink列表格式:/n
/n步骤3:机会路由过程/n步骤3.1:若网络中某传感器节点n0有数据包packet要发送,packet的包头格式如下:/n
/n其中,数据包ID作为区分不同数据包的唯一标识,由生成该数据包的传感器节点赋值,该ID通过传感器节点位置与时间唯一标识且在网络传输过程中保持不变;上一跳节点为将数据包一跳传输至本节点的传感器节点;上一簇为上一跳节点所在的簇;下一簇表示该数据包要发往的邻簇;/n首先传感器节点n0检查Sink标志位Λ,如果Λ为1,表示传感器节点n0所在簇c0中包含有Sink节点,此时传感器节点n0只在packet包头填入数据包ID并在“上一簇ID”中填入0值,然后将packet发送出去;如果标志位Λ为0,传感器节点n0查询本地Sink列表,找到距离传感器节点n0所在簇c0最近的Sink节点S(K),继续步骤3.2;/n步骤3.2:传感器节点n0从邻簇列表中找到比传感器节点n0所在簇c0更靠近Sink节点S(K)的邻簇集合{cl},使用公式(1)计算{cl}中各簇的满意因子a(l):/n /n其中e为传感器节点n0当前剩余能量;E为传感器节点n0初始能量;NADV(l)为邻簇cl的前进指数,计算公式如下:/n /n其中,R为声调制解调器通信半径,L为簇c0与簇cl之间的欧式距离,通过求簇坐标间的欧氏距离得到;Ll为簇cl与S(K)之间的欧式距离;L0为簇c0与sink节点S(K)之间的欧式距离;θ为向量 与 之间的夹角;/np(dcl,pk_len,ρl)为传感器节点n0向邻簇cl投递包长为pk_len(单位bit)的数据包时的成功概率,p(dcl,pk_len,ρl)计算公式如下:/n /n其中,ρl为邻簇cl的簇内节点数目; 为传感器节点n0到簇cl的欧式距离,计算公式如下:/n /n其中, 为水声信号在传输距离为 时声调制解调器接收端的平均信噪比:/n /n其中,Eb和N0为常数,Eb为每bit的平均发射能量;N0为非衰落加性高斯白噪声信道中的噪声功率谱密度; 表示载波频率为f的水声信号在传输距离为 时,计算公式如下:/n /n其中,k为传播因子,表示声信号传播的几何形式,a(f)为吸收系数,使用Throp 公式表示为:/n /n传感器节点n0得到{cl}内满意因子最小的邻簇coptimal作为下一簇,并将coptimal的簇ID写入packet包头的“下一簇ID”字段中;/n传感器节点n0继续补充packet包头其它字段:生成数据包ID并添加到“数据包ID”字段中;然后将传感器节点n0的节点坐标添加到“上一跳节点坐标”字段中;将本簇c0的簇ID添加到“上一簇ID”字段中;/n最后将数据包packet发送出去,并不再接收与packet有数据包ID相同的数据包;/n步骤3.3:当传感器节点nj接收到步骤3.2中n0发送的数据包packet后,首先解析packet包头信息;如果“上一簇ID”为0,则传感器节点n0直接将packet发送给S(K),传感器节点nj不必继续转发,直接丢弃packet,并不再接收与packet有相同“数据包ID”的数据包;如果“上一簇ID”不为0,则进入步骤3.4;/n步骤3.4:传感器节点nj继续解析packet包头字段“上一簇ID”,按不同情况进行如下操作:/n传感器节点n0为发送数据包packet的传感器节点,所在簇为c0,如果传感器节点nj解析packet发现包头字段“上一簇ID”与传感器节点nj所在簇cj的ID,即与CID(j)相同,此时传感器节点n0与nj在同一簇内,之后继续执行步骤3.5;/n如果传感器节点nj解析packet发现包头字段“上一簇ID”与传感器节点nj所在簇cj的ID,即与CID(j)不同,此时传感器节点n0与nj在不同簇内,之后继续执行步骤3.6;/n步骤3.5:此时传感器节点nj与传感器节点n0位于同一簇c0(簇ID为CID(0))中,分别比较传感器节点nj和传感器节点n0到packet包头所指示“下一簇”的距离;如果传感器节点n0离“下一簇”更近,传感器节点nj直接丢弃packet,并不再接收与packet有相同“数据包ID”的数据包;如果传感器节点nj离“下一簇”更近,传感器节点nj通过公式(8)计算等待时间Tdelay1并开始计时;/n如果传感器节点nj在Tdelay1内接收到与packet数据包ID相同的数据包,且包头“上一簇ID”不为CID(0),则认为packet成功传输到下一簇中,此时传感器节点nj丢弃packet并不再接收与packet有相同数据包ID的数据包;/n如果传感器节点nj在Tdelay1内接收到与packet数据包ID相同的数据包,且包头“上一簇ID”为CID(0),则簇c0内有其它节点已转发packet,此时传感器节点nj丢弃packet并不再接收与packet有相同数据包ID的数据包;/n如果Tdelay1超时,传感器节点nj将本节点位置坐标添加到packet包头“上一跳节点坐标”字段中,然后将packet发送出去并不再接收与packet有相同数据包ID的数据包;此时packet传输到下一跳,传感器节点nj变为n0,在下一跳接收到packet的普通传感器节点变为nj,之后继续执行步骤3.3;/n所述等待时间Tdelay1的计算公式为:/n /n其中,R为声调制解调器通信半径;v为声信号在水中的传播速度,T1为簇内辅助节点最大等待时间,为常量,d为上一跳节点n0与nj之间的距离,计算如下:/n /nβ表示簇内辅助节点满意因子,计算公式如下:/n /n其中Lj为节点nj与packet包头“下一簇ID”中的簇之间的距离,簇坐标通过查阅本地邻簇列表得到,L0为packet包头“上一跳节点坐标”与“下一簇”之间的距离;/n步骤3.6:此时传感器节点nj与传感器节点n0位于不同簇中,传感器节点nj继续解析packet包头字段“下一簇ID”,如果“下一簇ID”与传感器节点nj所在簇cj的簇ID不同,则继续执行步骤3.7;如果“下一簇ID”与传感器节点nj所在簇cj的簇ID相同,则继续执行步骤3.8;/n步骤3.7:此时传感器节点n0不准备将packet发给簇cj,传感器节点nj直接丢弃packet;/n步骤3.8:此时传感器节点nj首先检查本地sink标志位Λ,如果Λ为1,传感器节点nj只将packet的“上一簇ID”字段置0值,然后发送packet并不再接收与packet有相同数据包ID的数据包;如果sink标志位Λ为0,传感器节点nj查询本地Sink列表找到距离nj所在簇cj最近的Sink节点S(K)*节点,执行步骤3.9;/n步骤3.9:传感器节点nj从邻簇列表中找到比所在簇cj更靠近S(K)*的邻簇集合 将 内满意因子最小的邻簇 作为下一簇,并将 的簇ID写入packet包头的“下一簇ID”字段中;/n然后通过公式(11)计算等待时间Tdelay2并开始计时;/n /n其中,α为转发节点满意度因子,通过公式(1)计算得到;/n如果传感器节点nj在Tdelay2时间内接收到与packet的数据包ID和“上一簇ID”都相同的数据包,认为上一簇对packet重复转发,此时传感器节点nj直接丢弃该数据包;/n如果传感器节点nj在Tdelay2时间内接收到与packet数据包ID相同但“上一簇ID”不同的数据包,认为非最优邻簇对packet转发,此时传感器节点nj也直接丢弃该数据包;/n如果传感器节点nj在Tdelay2时间内接收到与packet数据包ID相同且数据包头“上一簇ID”与nj所在簇cj的簇ID相同,传感器节nj则直接丢弃packet;/n如果Tdelay2超时,此时传感器节点nj变为n0,然后将packet发送出去并不再接收与packet有相同数据包ID的数据包,下一跳接收到packet的传感器节点变为nj,跳转至步骤3.3,直至packet数据包传输到任一sink节点。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910704219.2/,转载请声明来源钻瓜专利网。