CN110493841B - 一种水声传感网络路由实现方法 - Google Patents
一种水声传感网络路由实现方法 Download PDFInfo
- Publication number
- CN110493841B CN110493841B CN201910702803.4A CN201910702803A CN110493841B CN 110493841 B CN110493841 B CN 110493841B CN 201910702803 A CN201910702803 A CN 201910702803A CN 110493841 B CN110493841 B CN 110493841B
- Authority
- CN
- China
- Prior art keywords
- node
- sink
- sensor
- nodes
- sensor node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/46—Cluster building
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/04—Communication route or path selection, e.g. power-based or shortest path routing based on wireless node resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/04—Communication route or path selection, e.g. power-based or shortest path routing based on wireless node resources
- H04W40/10—Communication route or path selection, e.g. power-based or shortest path routing based on wireless node resources based on available power or energy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/20—Communication route or path selection, e.g. power-based or shortest path routing based on geographic position or location
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供了一种水声传感网络路由实现方法,传感器节点利用信标获取sink节点和邻居传感器节点信息,建立sink列表和邻居列表,实现空区避免和路由功能,网络中的节点通过某种自定位算法获得自己的位置信息,节点间不要求时钟同步。本发明相较于传统空区避免机制,不要求调整无效节点位置,也不要求局部泛洪,因此具有更小的控制开销。在选择中继节点时考虑了传感器节点的剩余电量,避免了优先级高的节点能量消耗过多,延长了网络寿命。在选择中继节点时考虑了传感器节点的邻节点数目,避免数据包流向节点密度低的区域,提升了一跳转发成功的概率。
Description
技术领域
本发明涉及水下信息技术领域,涉及水声通信和水声网络两个领域,尤其是一种适合水声传感器网络的路由实现方法。
背景技术
海洋水声信道的传输条件十分恶劣,声信号在水中传输时误码率较高,数据包的重发次数多,导致传感器节点能量消耗大。但通常传感器节点在部署后更换电池非常困难,因此节省水声传感器网络的能量开销就显得非常必要。此外,由于传感器节点随着洋流具有移动性,使得水声传感器网络拓扑结构呈现动态变化的特点。针对这些特点,为了能够实时获取海洋环境数据,需要对水声传感器网络设计适用的路由协议。
在水声传感器网络路由协议中,机会路由利用了无线通信的广播特性,摒弃传统路由协议只选择一个节点作为下一跳的思路,而是选择一组节点作为下一跳候选节点集,然后在候选节点集内部协调选出优先级最高的节点作为下一跳转发节点。机会路由提高了一跳传输的可靠性和网络的吞吐量,减少了数据包的重传,并提升了网络能量利用率进而延长了网络寿命。机会路由协议总体可分为三类:基于地理位置的协议、基于压力信息的协议和分层协议。
基于地理位置的机会路由协议利用的是节点的地理位置来选取下一跳候选节点集。此类协议中的矢量转发路由(VBF)利用源节点和目的节点的位置信息在二者之间建立一个矢量,预设一个半径值,然后围绕此矢量形成一个虚拟的管道,位于管道内的节点都可作为数据包的候选节点。由于在VBF中是由多个候选节点通过不同的路径对数据包进行转发的,因此该协议的鲁棒性好,但网络的能量消耗较大,且VBF没有解决通信空区的问题。逐跳矢量转发路由(HH-VBF)在每一跳的转发节点与目的节点间形成一个虚拟管道,它的提出是为了解决在稀疏网络中VBF对数据包投递率低的问题,但它存在与VBF同样的不足。与VBF和HH-VBF不同,GEDAR协议包含机会路由和空区恢复两个方面。在机会路由中,每个节点选择比自己更靠近浮标的邻节点形成下一跳候选集,在该集合中选择彼此都在通信范围内的节点组成一簇,然后节点依据优先级顺序转发数据包。若数据包被传递到到一个无效节点,即该节点没有邻节点比自己更靠近浮标,则该节点会通过两跳邻居信息计算并调整自己的深度,实现通信空区的恢复。然而在GEDAR中,信标消息会占用大量信道带宽与能量资源,且优先级高的节点耗电较快。
基于压力信息的机会路由协议是通过节点的深度信息进行路由决策的。在DBR协议中,已接收到数据包且比上一跳节点的深度小于一定门限值的节点成为候选节点。因此在DBR中,深度差门限值的选取很关键。若门限值过大,则候选节点的数量会减少,降低了包投递率。若门限值过小,则有太多节点成为候选节点,包的重传次数增加。HydroCast的提出是为了解决DBR中存在的通信空区问题,在候选节点的选择算法上它与DBR是不同的。在HydroCast中会选择比自己深度小且彼此都在通信范围内的一簇节点依据优先级顺序将数据包进行转发。为了解决通信空区的问题,HydroCast采用在二维表面节点间泛洪的方法,找到去往逃逸节点的路径,并维护该路径。但是在时变空变的水声环境中进行路由发现和路径维护都是非常耗能的。与HydroCast一样,VAPR协议也是基于节点压力信息的任播路由方案,其基本思想是传感器节点根据周期性的信标消息,得到到达浮标节点的方向信息,且利用该信息,VARP避免了选择无效节点作为下一跳候选节点,解决了通信空区的问题。VARP的缺点在于选择中继节点时没有考虑节点的能量水平,且信标消息会占用信道带宽。
分层路由协议是以sink节点为中心,将传感器节点分为不同层。当传递数据包时,动态地在每一层选取候选节点,直至数据包到达sink节点,如E-PULRP协议。但是E-PULRP在选择下一跳中继节点时存在隐藏终端的问题,且由于水声传感器网络中节点的移动性,E-PULRP中的分层需要不断更新,这会产生大量的控制开销。
相比于传统的路由协议,机会路由改进了网络的性能,但是现有的针对水声传感器网络的机会路由协议仍存在一些问题。
发明内容
为了克服现有技术的不足,本发明提供一种基于节点地理位置信息的空区避免水声传感器网络路由协议实现方法。为了获得机会路由在水声传感器网络中的鲁棒性,同时克服现有水声传感器网络中机会路由协议存在的优先级高的节点因频繁被用而电量消耗快和通信空区的问题。
本发明解决其技术问题所采用的技术方案的具体步骤如下:
步骤1:所有传感器节点在本地建立sink列表和邻居列表;
sink列表格式如下:
sink节点ID | sink1 | sink2 | … |
sink节点X坐标 | S_x_pos(1) | S_x_pos(2) | … |
sink节点Y坐标 | S_y_pos(1) | S_y_pos(2) | … |
信标序列号 | B_seq_rec(1) | B_seq_rec(2) | … |
Λ标志位 | 0 | 1 | … |
其中,Λ标志位表示当前传感器节点是否应该转发来自该sink的信标;若Λ标志位为0,传感器节点转发来自该sink的信标;若Λ标志位为1,不进行转发;
邻居列表格式如下:
其中,若两个传感器节点能经过一跳成功接收到来自对方的数据包,则认为这两个传感器节点互为邻节点,如果传感器节点没有比自己更靠近sink节点的邻节点,则该传感器节点处于无效状态,称其为无效节点;如果传感器节点有比自己更靠近sink节点的邻节点,则该传感器节点处于正常状态,称其为正常节点;
步骤2:所有传感器节点基于本地sink列表和邻居列表,步骤如下:
步骤2.1:信标交互
网络中的所有sink节点和传感器节点周期性地产生信标并广播出去,所有sink节点产生信标的周期为TB_sink,所有传感器节点产生信标的周期为TB_sensor,sink节点和传感器节点在发送信标前,会分别在TB_sink和TB_sensor的基础上再随机添加一个0秒到1秒的时间抖动;
sink节点发送的信标格式如下:
信标序列号B-seq | sink节点ID | sink节点的X坐标 | sink节点的Y坐标 |
sink节点的信标包含该信标的序列号B-seq、该sink节点的ID、该sink节点的X坐标和Y坐标;其中B-seq为整数,表示信标的新旧程度,sink节点每产生一个信标B-seq加1;
传感器节点发送的信标格式如下:
其中,邻居节点个数通过统计邻居列表中的正常节点得到;sink节点集合为该传感器节点sink列表中标志位Λ为0的所有sink节点,sink节点集合中的数据包括sink节点ID与坐标、信标序列号B-seq;信标发送成功后,传感器节点将信标中包含的sink节点在sink列表的标志位Λ置为1;
若传感器节点n0在某一时刻接收到来自sink节点s(k)的信标beacon,传感器节点n0首先检查本地sink列表,如果sink列表中不包含s(k),则将beacon中s(k)的ID、位置坐标以及信标序列号B-seq添加到sink列表项中,同时将sink节点s(k)对应的标志位Λ置0;如果列表中包含s(k),比较beacon的序列号B-seq和列表中s(k)对应序列号B-seq-rec,若B-seq-rec≥B-seq,对列表不作任何修改,若B-seq-rec<B-seq,用B-seq替换B-seq-rec,再将beacon中sink位置坐标填入列表同时将对应标志位Λ置0;
若传感器节点n0在某一时刻接收到来自另一传感器节点nn的信标beacon*,即nn为n0的邻节点,同理n0首先检查本地邻居列表,如果本地邻居列表中不包含nn,将beacon*中nn的ID、坐标、剩余电量、邻居节点个数以及信标序列号B-seq-s添加到本地邻居列表项中;如果本地邻居列表包含nn,将beacon*中nn的坐标、剩余电量、邻居节点个数和信标序列号填入邻居列表nn对应的项中,然后n0读取beacon*中的sink节点集合,对集合中的所有sink节点做以下处理:
传感器节点n0首先检查本地sink列表,如果列表中不包含s(k)*,则将beacon*中s(k)*的ID、位置坐标以及信标序列号B-seq*添加到sink列表项中,同时将sink节点s(k)*对应的标志位Λ置0;如果sink列表中包含s(k)*,比较beacon*中sink节点s(k)*对应的序列号B-seq*和列表中s(k)*对应的序列号B-seq*-rec*,若B-seq*-rec*≥B-seq*,对sink列表不作任何修改;若B-seq*-rec*<B-seq*,用B-seq*替换sink列表中的B-seq*-rec*,将beacon*中sink节点s(k)*的坐标填入sink列表同时将s(k)*对应标志位Λ置0;
步骤2.2:空区处理
传感器节点在发送信标后,首先判断传感器节点当前是否处于正常状态;
如果传感器节点处于正常状态,则根据邻居列表和sink列表判断是否有比本传感器节点更靠近任一sink节点的传感器节点的邻节点,若没有,则将该传感器节点状态置为无效,并广播一个包含该传感器节点ID的无效通知包;若有,则不改变传感器节点的状态;
如果传感器节点处于无效状态,且传感器节点发现有比该传感器节点更靠近任一sink节点的邻节点,则广播一个包含该传感器节点ID的无效恢复包,并将该传感器节点的状态置为正常;若没有发现比该传感器节点更靠近任一sink节点的邻节点,则传感器节点不改变自己的状态;
如传感器节点接收到无效通知包,则将该无效通知包中包含的邻节点在传感器节点的邻居列表中的状态置为无效;如传感器节点接收到无效恢复包,则将该无效恢复包中包含的邻节点在传感器节点的邻居列表中的状态置为正常;
步骤2.3:机会路由协议;
步骤2.3.1:若传感器节点ni需要转发数据包,传感器节点ni首先在本地sink列表中选出距离最近的sink节点然后在邻居列表中选择比传感器节点ni更靠近的邻节点形成下一跳候选节点集合ci,集合ci中的所有节点为下一跳候选节点,之后继续步骤2.3.2:
步骤2.3.2:传感器节点ni依据式(1)计算ci中各节点的NADV(NormalizedADVancement,归一化前进指数),即候选节点的优先级,并按从大到小的顺序排序,设nc为某候选节点,nc的NADV为:
其中代表传感器节点ni到距离传感器节点ni最近的sink节点的欧式距离;为候选中继节点nc与sink节点之间的欧式距离;为ni到nc的欧式距离,代表信号传输距离为时成功传输m比特数据包的概率,E(nc)为候选节点nc的剩余电量,N(nc)为候选节点nc的邻节点个数,α、β和γ为平滑系数,且α+β+γ=1;
p(d,m)的计算公式如下:
其中d为信号传输距离;m为数据包大小;Γ(d)为声信号在传输距离为d时声调制解调器接收端的平均信噪比;
步骤2.3.3:传感器节点ni从NADV值最大的候选节点开始,以该节点为圆心以二分之一的通信距离为半径分一个簇,集合ci中所有被包含在簇中的节点组成一簇,找到集合ci中没有被分簇的节点中NADV最大的节点,以该节点为圆心以二分之一的通信距离为半径再分一个簇,该簇所包含的节点组成另一簇;依此重复分簇过程,直到ci中所有节点都被分到簇中;
步骤2.3.4:分簇完成后,依据式(3)计算每簇的EPA(Expected PacketAdvance,数据包前进指数),即每簇的优先级;选择EPA值最高的簇所包含的节点作为下一跳中继节点,假设簇F共有k个节点,将k个节点按NADV由大到小排序,则F的EPA为;
其中,l为簇F中某节点的优先级排序;为排序为l的候选中继节点nl与sink节点的欧式距离;为排序为l的候选中继节点nl与传感器节点ni之间的欧氏距离;为排序为j的候选中继节点与传感器节点ni之间的欧氏距离;
步骤2.3.5:传感器节点ni将EPA值最高的簇中所有节点的ID按照优先级从高到低包含在数据包的包头中,然后将数据包发送出去;
步骤2.3.6:若传感器节点nj接收到数据包,传感器节点nj首先判断自己的ID是否被包含在数据包头中;如果节点ID不在包头中,传感器节点nj直接丢弃数据包;若节点ID在包头中,继续步骤2.3.7;
步骤2.3.7:传感器节点nj读取数据包头各传感器节点ID,若nj排序为J,通过公式(4)计算等待时间:
其中J代表传感器节点ni的排序,R为所有传感器节点的通信距离,s为海洋环境中的声速,D(ni,nj)为传感器节点ni和传感器节点nj间的欧式距离,D(nk,nk+1)为排序为k的传感器节点与排序为的k+1的传感器节点间的欧氏距离;Tproc为传感器节点处理数据包所需的时间,为常数;
步骤2.3.8:若簇中传感器节点在等待时间Tl内接收到其它传感器节点对该数据包的转发,则取消转发该包;若到达等待时间Tl,则传感器节点nj准备转发该数据包,此时nj变为ni,下一跳接收到数据包的节点变为nj,跳转至步骤2.3.1,并重复执行步骤2.3.1至步骤2.3.8,直到数据包传递到任一sink节点。
本发明的有益效果在于具有以下优势:
1)相较于传统空区避免机制,本发明不要求调整无效节点位置(如GEDAR),也不要求局部泛洪(如HydroCast),因此具有更小的控制开销。
2)在选择中继节点时考虑了传感器节点的剩余电量,避免了优先级高的节点能量消耗过多,延长了网络寿命。
3)在选择中继节点时考虑了传感器节点的邻节点数目,避免数据包流向节点密度低的区域,提升了一跳转发成功的概率。
附图说明
图1是本发明的网络模型示意图。
图2是本发明仿真时的网络分布图。
图3是本发明的仿真结果图,其中图3(a)为节点数量与数据包的投递率的关系示意图,图3(b)为节点数量与数据包的端到端时延值的关系示意图,图3(c)为节点数量与能量开销的关系示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
如图1所示,水声传感器网络通常由传感器节点和sink节点组成。多个sink节点布放在海面,每个sink节点配置GPS获取自己的位置;传感器节点随机部署在指定海域采集信息,每个传感器节点配置有各种传感器设备和声调制解调器。数据包由传感器节点传递到任一sink节点,即认为传递成功。本发明中,传感器节点利用信标获取sink节点和邻居传感器节点信息,建立sink列表和邻居列表,实现空区避免和路由功能。网络中的节点可以通过某种自定位算法(例如三角测量法)获得自己的位置信息,节点间不要求时钟同步。
步骤1:所有传感器节点在本地建立sink列表和邻居列表;
sink列表格式如下:
sink节点ID | sink1 | sink2 | … |
sink节点X坐标 | S_x_pos(1) | S_x_pos(2) | … |
sink节点Y坐标 | S_y_pos(1) | S_y_pos(2) | … |
信标序列号 | B_seq_rec(1) | B_seq_rec(2) | … |
Λ标志位 | 0 | 1 | … |
其中,Λ标志位表示当前传感器节点是否应该转发来自该sink的信标;若Λ标志位为0,传感器节点转发来自该sink的信标;若Λ标志位为1,不进行转发;
邻居列表格式如下:
其中,若两个传感器节点能经过一跳成功接收到来自对方的数据包,则认为这两个传感器节点互为邻节点,传感器节点的状态与该传感器节点的邻节点有关,如果传感器节点没有比自己更靠近sink节点的邻节点,则该传感器节点处于无效状态,称其为无效节点;如果传感器节点有比自己更靠近sink节点的邻节点,则该传感器节点处于正常状态,称其为正常节点;
步骤2:所有传感器节点基于本地sink列表和邻居列表,步骤如下:
1)信标交互。用来更新sink列表和邻居列表,为路由提供参考;
2)空区处理。通信空区由无效节点引起,本发明使用控制包交互的方式,以最小控制开销解决空区问题。
3)机会路由协议。考虑节点剩余能量,以临时分簇的方式实现用户对数据包的低转发、高投递、低能耗的要求。
步骤2.1:信标交互
网络中的所有sink节点和传感器节点周期性地产生信标并广播出去,所有sink节点产生信标的周期为TB_sink,所有传感器节点产生信标的周期为TB_sensor,为减少包的冲突碰撞,sink节点和传感器节点在发送信标前,会分别在TB_sink和TB_sensor的基础上再随机添加一个0秒到1秒的时间抖动;
sink节点发送的信标格式如下:
信标序列号B-seq | sink节点ID | sink节点的X坐标 | sink节点的Y坐标 |
sink节点的信标包含该信标的序列号B-seq、该sink节点的ID、该sink节点的X坐标和Y坐标;其中B-seq为整数,表示信标的新旧程度,sink节点每产生一个信标B-seq加1;
传感器节点发送的信标格式如下:
其中,邻居节点个数通过统计邻居列表中的正常节点得到;sink节点集合为该传感器节点sink列表中标志位Λ为0的所有sink节点,sink节点集合中的数据包括sink节点ID与坐标、信标序列号B-seq;信标发送成功后,传感器节点将信标中包含的sink节点在sink列表的标志位Λ置为1;
若传感器节点n0在某一时刻接收到来自sink节点s(k)的信标beacon,传感器节点n0首先检查本地sink列表,如果sink列表中不包含s(k),则将beacon中s(k)的ID、位置坐标以及信标序列号B-seq添加到sink列表项中,同时将sink节点s(k)对应的标志位Λ置0;如果列表中包含s(k),比较beacon的序列号B-seq和列表中s(k)对应序列号B-seq-rec,若B-seq-rec≥B-seq,对列表不作任何修改,若B-seq-rec<B-seq,用B-seq替换B-seq-rec,再将beacon中sink位置坐标填入列表同时将对应标志位Λ置0;
若传感器节点n0在某一时刻接收到来自另一传感器节点nn的信标beacon*,即nn为n0的邻节点,同理n0首先检查本地邻居列表,如果本地邻居列表中不包含nn,将beacon*中nn的ID、坐标、剩余电量、邻居节点个数以及信标序列号B-seq-s添加到本地邻居列表项中;如果本地邻居列表包含nn,将beacon*中nn的坐标、剩余电量、邻居节点个数和信标序列号填入邻居列表nn对应的项中。然后n0读取beacon*中的sink节点集合,对集合中的所有sink节点做以下处理:
以beacon*中的sink节点集合中的任一sink节点s(k)*为例,传感器节点n0首先检查本地sink列表,如果列表中不包含s(k)*,则将beacon*中s(k)*的ID、位置坐标以及信标序列号B-seq*添加到sink列表项中,同时将sink节点s(k)*对应的标志位Λ置0;如果sink列表中包含s(k)*,比较beacon*中sink节点s(k)*对应的序列号B-seq*和列表中s(k)*对应的序列号B-seq*-rec*,若B-seq*-rec*≥B-seq*,对sink列表不作任何修改;若B-seq*-rec*<B-seq*,用B-seq*替换sink列表中的B-seq*-rec*,将beacon*中sink节点s(k)*的坐标填入sink列表同时将s(k)*对应标志位Λ置0;
步骤2.2:空区处理
传感器节点在发送信标后,首先判断传感器节点当前是否处于正常状态;
如果传感器节点处于正常状态,则根据邻居列表和sink列表判断是否有比本传感器节点更靠近任一sink节点的传感器节点的邻节点,若没有,则将该传感器节点状态置为无效,并广播一个包含该传感器节点ID的无效通知包;若有,则不改变传感器节点的状态;
如果传感器节点处于无效状态,且传感器节点发现有比该传感器节点更靠近任一sink节点的邻节点,则广播一个包含该传感器节点ID的无效恢复包,并将该传感器节点的状态置为正常;若没有发现比该传感器节点更靠近任一sink节点的邻节点,则传感器节点不改变自己的状态;
如传感器节点接收到无效通知包,则将该无效通知包中包含的邻节点在传感器节点的邻居列表中的状态置为无效;如传感器节点接收到无效恢复包,则将该无效恢复包中包含的邻节点在传感器节点的邻居列表中的状态置为正常;
步骤2.3:机会路由协议;
步骤2.3.1:若传感器节点ni需要转发数据包,传感器节点ni首先在本地sink列表中选出距离最近的sink节点然后在邻居列表中选择比传感器节点ni更靠近的邻节点形成下一跳候选节点集合ci,集合ci中的所有节点为下一跳候选节点,之后继续步骤2.3.2;
步骤2.3.2:传感器节点ni依据式(1)计算ci中各节点的NADV(NormalizedADVancement,归一化前进指数),即候选节点的优先级,并按从大到小的顺序排序,设nc为某候选节点,nc的NADV为:
其中代表传感器节点ni到距离传感器节点ni最近的sink节点的欧式距离;为候选中继节点nc与sink节点之间的欧式距离;为ni到nc的欧式距离,代表信号传输距离为时成功传输m比特数据包的概率,E(nc)为候选节点nc的剩余电量,N(nc)为候选节点nc的邻节点个数,α、β和γ为平滑系数,且α+β+γ=1;
p(d,m)的计算公式如下:
其中d为信号传输距离;m为数据包大小(单位:bit);Γ(d)为声信号在传输距离为d时声调制解调器接收端的平均信噪比;
步骤2.3.3:传感器节点ni从NADV值最大的候选节点开始,以该节点为圆心以二分之一的通信距离为半径分一个簇,集合ci中所有被包含在簇中的节点组成一簇,找到集合ci中没有被分簇的节点中NADV最大的节点,以该节点为圆心以二分之一的通信距离为半径再分一个簇,该簇所包含的节点组成另一簇;依此重复分簇过程,直到ci中所有节点都被分到簇中;
步骤2.3.4:分簇完成后,依据式(3)计算每簇的EPA(Expected PacketAdvance,数据包前进指数),即每簇的优先级;选择EPA值最高的簇所包含的节点作为下一跳中继节点,假设簇F共有k个节点,将k个节点按NADV由大到小排序,则F的EPA为;
其中,l为簇F中某节点的优先级排序;为排序为l的候选中继节点nl与sink节点的欧式距离;为排序为l的候选中继节点nl与传感器节点ni之间的欧氏距离;为排序为j的候选中继节点与传感器节点ni之间的欧氏距离;与的定义见公式(2);
步骤2.3.5:传感器节点ni将EPA值最高的簇中所有节点的ID按照优先级从高到低包含在数据包的包头中,然后将数据包发送出去;
步骤2.3.6:若传感器节点nj接收到数据包,传感器节点nj首先判断自己的ID是否被包含在数据包头中;如果节点ID不在包头中,传感器节点nj直接丢弃数据包;若节点ID在包头中,继续步骤2.3.7;
步骤2.3.7:传感器节点nj读取数据包头各传感器节点ID,若nj排序为J,通过公式(4)计算等待时间:
其中J代表传感器节点nj的排序,R为所有传感器节点的通信距离,s为海洋环境中的声速,D(ni,nj)为传感器节点ni和传感器节点nj间的欧式距离,D(nk,nk+1)为排序为k的传感器节点与排序为的k+1的传感器节点间的欧氏距离;Tproc为传感器节点处理数据包所需的时间,为常数;
步骤2.3.8:若簇中传感器节点在等待时间Tl内接收到其它传感器节点对该数据包的转发,则取消转发该包;若到达等待时间Tl,则传感器节点nj准备转发该数据包,此时nj变为ni,下一跳接收到数据包的节点变为nj,跳转至步骤2.3.1,并重复执行步骤2.3.1至步骤2.3.8,直到数据包传递到任一sink节点。
本发明采用OPNET对本发明的性能进行仿真。图2为网络仿真分布图,图中“RxGroup Config”为管道阶段配置模块。网络大小为3km×3km,两个sink节点随机部署在网络上层,一个源节点随机部署在网络下层。传感器节点的个数为10~50个,在网络域中随机部署。节点的最大通信距离为1km,最大发射功率为15W,接收功率为1W,空闲时的能量消耗为0.05W。源节点以每1.5s的时间间隔生成256Byte的数据包。物理层采用BPSK调制,MAC层采用CSMA协议,数据传输速率为1024bps。
所有传感器节点按照技术方案执行信标交互过程,在本地建立sink列表和邻居列表;执行空区处理过程检测通信空区;执行机会路由算法将源节点所产生的数据包多跳中继到任一sink节点。所有sink节点在仿真结束后统计数据包平均端到端时延和投递率,所有传感器节点统计信息传输过程的能量消耗。最终得到本发明的仿真性能曲线图。
图3为本发明的仿真结果图。从图3(a)可以看出,随着网络中节点数量的增加,数据包的投递率逐渐增大。这是因为候选节点数目的增加减少通信空区,提高了一跳转发成功的概率。在相同的仿真条件下,相较于大部分的传统机会路由(例如HydroCast,投递率约为70%),本发明具有更大的优势。
如图3(b)所示,数据包的端到端时延值随着节点个数的增加而减小,仿真结果显示本发明与已有机会路由在端到端时延上性能相近。
如图3(c)所示,能量开销随着节点密度的增加而减少。这是因为网络中数据传输失败的概率随着节点密度的增加而变小,从而减少了无效传输的能量消耗。与已有的有状态机会路由相比(能耗分布大约在50-80J之间),本发明明显降低能耗,因此有效延长网络寿命。
Claims (1)
1.一种水声传感网络路由实现方法,其特征在于包括下述步骤:
步骤1:所有传感器节点在本地建立sink列表和邻居列表;
sink列表格式如下:
其中,Λ标志位表示当前传感器节点是否应该转发来自该sink的信标;若Λ标志位为0,传感器节点转发来自该sink的信标;若Λ标志位为1,不进行转发;
邻居列表格式如下:
其中,若两个传感器节点能经过一跳成功接收到来自对方的数据包,则认为这两个传感器节点互为邻节点,如果传感器节点没有比自己更靠近sink节点的邻节点,则该传感器节点处于无效状态,称其为无效节点;如果传感器节点有比自己更靠近sink节点的邻节点,则该传感器节点处于正常状态,称其为正常节点;
步骤2:所有传感器节点基于本地sink列表和邻居列表,步骤如下:
步骤2.1:信标交互
网络中的所有sink节点和传感器节点周期性地产生信标并广播出去,所有sink节点产生信标的周期为TB_sink,所有传感器节点产生信标的周期为TB_sensor,sink节点和传感器节点在发送信标前,会分别在TB_sink和TB_sensor的基础上再随机添加一个0秒到1秒的时间抖动;
sink节点发送的信标格式如下:
sink节点的信标包含该信标的序列号B-seq、该sink节点的ID、该sink节点的X坐标和Y坐标;其中B-seq为整数,表示信标的新旧程度,sink节点每产生一个信标B-seq加1;
传感器节点发送的信标格式如下:
其中,邻居节点个数通过统计邻居列表中的正常节点得到;sink节点集合为该传感器节点sink列表中标志位Λ为0的所有sink节点,sink节点集合中的数据包括sink节点ID与坐标、信标序列号B-seq;信标发送成功后,传感器节点将信标中包含的sink节点在sink列表的标志位Λ置为1;
若传感器节点n0在某一时刻接收到来自sink节点s(k)的信标beacon,传感器节点n0首先检查本地sink列表,如果sink列表中不包含s(k),则将beacon中s(k)的ID、位置坐标以及信标序列号B-seq添加到sink列表项中,同时将sink节点s(k)对应的标志位Λ置0;如果列表中包含s(k),比较beacon的序列号B-seq和列表中s(k)对应序列号B-seq-rec,若B-seq-rec≥B-seq,对列表不作任何修改,若B-seq-rec<B-seq,用B-seq替换B-seq-rec,再将beacon中sink位置坐标填入列表同时将对应标志位Λ置0;
若传感器节点n0在某一时刻接收到来自另一传感器节点nn的信标beacon*,即nn为n0的邻节点,同理n0首先检查本地邻居列表,如果本地邻居列表中不包含nn,将beacon*中nn的ID、坐标、剩余电量、邻居节点个数以及信标序列号B-seq-s添加到本地邻居列表项中;如果本地邻居列表包含nn,将beacon*中nn的坐标、剩余电量、邻居节点个数和信标序列号填入邻居列表nn对应的项中,然后n0读取beacon*中的sink节点集合,对集合中的所有sink节点做以下处理:
传感器节点n0首先检查本地sink列表,如果列表中不包含s(k)*,则将beacon*中s(k)*的ID、位置坐标以及信标序列号B-seq*添加到sink列表项中,同时将sink节点s(k)*对应的标志位Λ置0;如果sink列表中包含s(k)*,比较beacon*中sink节点s(k)*对应的序列号B-seq*和列表中s(k)*对应的序列号B-seq*-rec*,若B-seq*-rec*≥B-seq*,对sink列表不作任何修改;若B-seq*-rec*<B-seq*,用B-seq*替换sink列表中的B-seq*-rec*,将beacon*中sink节点s(k)*的坐标填入sink列表同时将s(k)*对应标志位Λ置0;
步骤2.2:空区处理
传感器节点在发送信标后,首先判断传感器节点当前是否处于正常状态;
如果传感器节点处于正常状态,则根据邻居列表和sink列表判断是否有比本传感器节点更靠近任一sink节点的传感器节点的邻节点,若没有,则将该传感器节点状态置为无效,并广播一个包含该传感器节点ID的无效通知包;若有,则不改变传感器节点的状态;
如果传感器节点处于无效状态,且传感器节点发现有比该传感器节点更靠近任一sink节点的邻节点,则广播一个包含该传感器节点ID的无效恢复包,并将该传感器节点的状态置为正常;若没有发现比该传感器节点更靠近任一sink节点的邻节点,则传感器节点不改变自己的状态;
如传感器节点接收到无效通知包,则将该无效通知包中包含的邻节点在传感器节点的邻居列表中的状态置为无效;如传感器节点接收到无效恢复包,则将该无效恢复包中包含的邻节点在传感器节点的邻居列表中的状态置为正常;
步骤2.3:机会路由协议;
步骤2.3.1:若传感器节点ni需要转发数据包,传感器节点ni首先在本地sink列表中选出距离最近的sink节点然后在邻居列表中选择比传感器节点ni更靠近的邻节点形成下一跳候选节点集合ci,集合ci中的所有节点为下一跳候选节点,之后继续步骤2.3.2;
步骤2.3.2:传感器节点ni依据式(1)计算ci中各节点的NADV(NormalizedADVancement,归一化前进指数),即候选节点的优先级,并按从大到小的顺序排序,设nc为某候选节点,nc的NADV为:
其中代表传感器节点ni到距离传感器节点ni最近的sink节点的欧式距离;为候选中继节点nc与sink节点之间的欧式距离;为ni到nc的欧式距离,代表信号传输距离为时成功传输m比特数据包的概率,E(nc)为候选节点nc的剩余电量,N(nc)为候选节点nc的邻节点个数,α、β和γ为平滑系数,且α+β+γ=1;
p(d,m)的计算公式如下:
其中d为信号传输距离;m为数据包大小;Γ(d)为声信号在传输距离为d时声调制解调器接收端的平均信噪比;
步骤2.3.3:传感器节点ni从NADV值最大的候选节点开始,以该节点为圆心以二分之一的通信距离为半径分一个簇,集合ci中所有被包含在簇中的节点组成一簇,找到集合ci中没有被分簇的节点中NADV最大的节点,以该节点为圆心以二分之一的通信距离为半径再分一个簇,该簇所包含的节点组成另一簇;依此重复分簇过程,直到ci中所有节点都被分到簇中;
步骤2.3.4:分簇完成后,依据式(3)计算每簇的EPA(Expected Packet Advance,数据包前进指数),即每簇的优先级;选择EPA值最高的簇所包含的节点作为下一跳中继节点,假设簇F共有k个节点,将k个节点按NADV由大到小排序,则F的EPA为;
其中,l为簇F中某节点的优先级排序;为排序为l的候选中继节点nl与sink节点的欧式距离;为排序为l的候选中继节点nl与传感器节点ni之间的欧氏距离;为排序为j的候选中继节点与传感器节点ni之间的欧氏距离;
步骤2.3.5:传感器节点ni将EPA值最高的簇中所有节点的ID按照优先级从高到低包含在数据包的包头中,然后将数据包发送出去;
步骤2.3.6:若传感器节点nj接收到数据包,传感器节点nj首先判断自己的ID是否被包含在数据包头中;如果节点ID不在包头中,传感器节点nj直接丢弃数据包;若节点ID在包头中,继续步骤2.3.7;
步骤2.3.7:传感器节点nj读取数据包头各传感器节点ID,若nj排序为J,通过公式(4)计算等待时间:
其中J代表传感器节点nj的排序,R为所有传感器节点的通信距离,s为海洋环境中的声速,D(ni,nj)为传感器节点ni和传感器节点nj间的欧式距离,D(nk,nk+1)为排序为k的传感器节点与排序为的k+1的传感器节点间的欧氏距离;Tproc为传感器节点处理数据包所需的时间,为常数;
步骤2.3.8:若簇中传感器节点在等待时间Tl内接收到其它传感器节点对该数据包的转发,则取消转发该包;若到达等待时间Tl,则传感器节点nj准备转发该数据包,此时nj变为ni,下一跳接收到数据包的节点变为nj,跳转至步骤2.3.1,并重复执行步骤2.3.1至步骤2.3.8,直到数据包传递到任一sink节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702803.4A CN110493841B (zh) | 2019-07-31 | 2019-07-31 | 一种水声传感网络路由实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702803.4A CN110493841B (zh) | 2019-07-31 | 2019-07-31 | 一种水声传感网络路由实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110493841A CN110493841A (zh) | 2019-11-22 |
CN110493841B true CN110493841B (zh) | 2022-09-30 |
Family
ID=68549147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910702803.4A Active CN110493841B (zh) | 2019-07-31 | 2019-07-31 | 一种水声传感网络路由实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110493841B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111278078B (zh) * | 2020-01-21 | 2022-06-10 | 桂林电子科技大学 | 一种移动稀疏水声传感器网络自适应路由协议的实现方法 |
CN111641990B (zh) * | 2020-04-03 | 2022-08-02 | 西北工业大学 | 高数据包投递率与能量有效性的水声传感器网络传输方法 |
CN112073939A (zh) * | 2020-08-19 | 2020-12-11 | 青岛杰瑞自动化有限公司 | 一种基于海洋浮动平台的通信方法及系统 |
CN113079092B (zh) * | 2021-03-29 | 2022-04-15 | 河海大学 | 一种水声网络机会路由抑制数据重复转发的方法 |
CN113810974B (zh) * | 2021-09-23 | 2023-11-07 | 大连理工大学 | 一种水下光传感器的路由方法 |
CN113766597B (zh) * | 2021-09-27 | 2023-07-28 | 河海大学 | 水声传感网中基于定向传输的机会路由方法 |
CN115379526A (zh) * | 2022-07-27 | 2022-11-22 | 西北工业大学 | 一种免于定位的高效水声传感器网络传输方法 |
CN116506844B (zh) * | 2023-03-20 | 2024-01-26 | 青海师范大学 | 一种基于分层和源位置隐私的水声传感器网络路由协议方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012165938A1 (en) * | 2011-05-27 | 2012-12-06 | Mimos Berhad | Neighbour discovery-based routing method for wireless networks |
CN103945413A (zh) * | 2014-04-17 | 2014-07-23 | 苏州大学 | 空洞避免的多跳数据传输方法、装置及系统 |
CN109246790A (zh) * | 2018-10-15 | 2019-01-18 | 西北工业大学 | 一种水下无线多跳网络拓扑发现方法 |
-
2019
- 2019-07-31 CN CN201910702803.4A patent/CN110493841B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012165938A1 (en) * | 2011-05-27 | 2012-12-06 | Mimos Berhad | Neighbour discovery-based routing method for wireless networks |
CN103945413A (zh) * | 2014-04-17 | 2014-07-23 | 苏州大学 | 空洞避免的多跳数据传输方法、装置及系统 |
CN109246790A (zh) * | 2018-10-15 | 2019-01-18 | 西北工业大学 | 一种水下无线多跳网络拓扑发现方法 |
Non-Patent Citations (2)
Title |
---|
基于水压的水下传感网络的选播路由协议;刘文博等;《传感技术学报》;20161215;第26卷(第12期);第119-124页 * |
水下无线传感网中基于深度调整的空洞避免路由;黄海军等;《仪表技术与传感器》;20170415(第04期);第117-121页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110493841A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110493841B (zh) | 一种水声传感网络路由实现方法 | |
Khan et al. | A multi-layer cluster based energy efficient routing scheme for UWSNs | |
Wei et al. | Reliable data collection techniques in underwater wireless sensor networks: A survey | |
Coutinho et al. | DCR: Depth-Controlled routing protocol for underwater sensor networks | |
Stojmenovic et al. | Broadcasting and activity scheduling in ad hoc networks | |
Wahid et al. | An energy-efficient routing protocol for UWSNs using physical distance and residual energy | |
CN111434150A (zh) | 针对移动自组织网络的多层级的、密度感知的、基于位置的信道指定和自适应功率控制方法 | |
Coutinho et al. | Movement assisted-topology control and geographic routing protocol for underwater sensor networks | |
Coutinho et al. | A novel opportunistic power controlled routing protocol for internet of underwater things | |
Chao et al. | DRP: An energy‐efficient routing protocol for underwater sensor networks | |
CN110519818B (zh) | 基于簇型拓扑的水声传感器网络机会路由协议实现方法 | |
Bharamagoudra et al. | Event driven energy depth and channel aware routing for underwater acoustic sensor networks: Agent oriented clustering based approach | |
CN110519819B (zh) | 一种基于分层的水声传感器网络路由协议的通信方法 | |
Coutinho et al. | PCR: A power control-based opportunistic routing for underwater sensor networks | |
CN111641990B (zh) | 高数据包投递率与能量有效性的水声传感器网络传输方法 | |
Baranidharan et al. | Clustered geographic-opportunistic routing protocol for underwater wireless sensor networks | |
Transier et al. | A hierarchical approach to position-based multicast for mobile ad-hoc networks | |
CN115022228B (zh) | 基于蚁群算法的声电协同网络的自适应路由系统及方法 | |
CN106686680B (zh) | 一种用于车联网的路由优化系统及方法 | |
Wannawilai et al. | AOMDV with sufficient bandwidth aware | |
KR101286736B1 (ko) | Aodv 기반 라우팅 방법 | |
Sun et al. | MOR: Multi-objective routing for underwater acoustic wireless sensor networks | |
Ismail et al. | A novel routing protocol for underwater wireless sensor networks based on shifted energy efficiency and priority | |
Menon | Opportunistic routing protocols in underwater acoustic sensor networks: issues, challenges, and future directions | |
CN111866984B (zh) | 一种基于距离和能量的分层单径路由协议方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |