基于深度路由的水下传感器网络(翻译、整理)

2023-11-18

基于深度路由的水下传感器网络(翻译、整理)

背景与意义

无线传感器网络引起了研究人员的广泛关注,并在该领域取得了很大进展。

起初,这些网络仅涵盖地面的实用程序。但后来,由于在地球被 70% 水覆盖,所以大家开始研究传感器网络的水下应用,也就是我们的水下无线传感器网络(UWSNs)。

路由协议在网络模型中扮演着重要的角色。主要问题是在源和目标之间找到一条有效的路由,以便以较低的能耗向目标发送更多的数据包。

由于水下网络具有一些独特的特性,现有瓶颈:

  • 水声通信代替无线电。但是水声具有低带宽和长距离传播延迟的特点。不适合端到端有长延迟或高宽带要求的网络。
  • 网络节点随水流移动,网络的动态拓扑结构具有动态性。
  • 水下传感器节点由电池供电,但电池难以充电或更换。

为UWSNs设计的路由协议应该考虑所有这些因素:长传播延迟、低通信带宽、动态拓扑和能量效率

一些路由协议已经被提出来解决这些问题,,如VBF和HH VBF。都属于基于地理的路由协议,需要通过定位来得到所有传感器节点的全维位置信息。它们因为UWSNs中的本地化是另一个有待解决的具有挑战性的研究问题,所以不能满足这些要求。

本文提出一种基于深度的路由协议,不需要节点的位置信息,只需要通过在每个水下传感器节点上安装一个深度传感器得到局部的深度信息。

DBR的主要优点如下:

  1. 不需要全维度位置信息。
  2. 能处理动态网络,具有良好的能源效率。
  3. 它利用了多接收器的网络架构,而不引入额外成本。

我们进行了广泛的模拟,结果表明,对于密集网络,DBR可以在通信成本很低的情况下实现每一个高的数据交付率(至少95%)。

研究现状

几种现有的用于无线传感器网络和水下传感器网络的路由协议,它们大致分为两类:

  • 陆基传感器网络的路由协议

针对陆基传感器网络提出了许多路由协议,然而这些协议大多是针对静态或低动态网络提出的。

显然,在具有动态拓扑的UWSNs中直接应用这些针对静态传感器网络提出的路由协议需要频繁更新路由信息,这会导致显著的通信开销、低能量效率和端到端长延迟。

  • 基于地理的路由协议。

基于地理位置的路由协议利用传感器节点的位置信息将数据包从源节点转发到目标节点,如VBF。

VBF在水下传感器网络中工作良好。但是,它假设每个传感器节点的位置信息都可以通过定位服务获得,这是UWSNs的另一个难点。

我们提出的DBR和基于地理的路由协议之间的主要区别在于DBR不需要全维位置信息。相反,在分组转发中只需要每个节点的深度信息。

DBR介绍

网络结构

DBR可以自然地利用多接收器水下传感器网络架构。这种网络的一个示例如图1所示。

在该网络中,同时配备了射频(RF)和声学调制解调器的多个接收器,部署在水面上。

带声调制解调器的水下传感器节点分布在3D区域,每个节点都可能是个数据源。它们可以收集数据,也可以悟转发数据。

由于所有的接收器都有射频调制解调器,所以它们可以通过无线电信道有效地通信。

因此,数据包到达任何接收器,它可以有效地传递到其他接收器或远程数据中心。

为了更加集中,我们在本义巾不考虑表面汇之间的通信。相反,我们假设贝要成功地将包传递到其巾一个接收器,它就到达了目的地。
本文假设每个水下节点都知道其深度信息,即从自身到水面的垂直距离。因为,深度传感器可以很容易地获得深度信息。相比之下,获取全维位置信息的难度要大得多。

协议概述

DBR是一种贪婪算法,它试图将数据包从源节点传递到目的节点。

在此过程中,当数据包接近目的地时,转发节点的深度会减小。如果我们在路由的每一步中减少转发节点的深度,则可以将数据包传递到水面。

在DBR中,传感器节点根据自己的深度和前一个发送方的深度,做出分组转发决策。这是DBR的关键思想。

当接收到数据包时,节点首先检索前一跳数据包的深度dp,然后,将接收节点自身的深度dc与dp进行比较。

如果该节点更靠近水面,即dc<dp,它将认为自己是转发数据包的合格候选者。否则,它只是简单地丢弃数据包。

转发节点的多个相邻节点都可能是在下一跳的合格候选节点,如果所有这些节点都尝试广播数据包,将导致高冲突和高能耗。因此,需要控制转发节点的数量。理想情况下,可以多次发送分组,节点只需发送一次相同的数据包。

协议设计

  • 数据包格式

    数据包头由三个字段组成:Sender ID, Packet Sequence Number, and Depth. (发送者ID、数据包序列号和深度。)

“发件者ID”是源节点的标识符,包的序列号是唯一序列号。数据包序列号与发送者ID一起用于区分数据包。“深度”是最近转发器的深度信息,在转发数据包时逐跳更新。

  • 冗余包控制

产生冗余数据包有两个主要原因。

  1. 转发数据包时使用了多条路径
  2. 节点可以多次发送数据包

为了解决上述问题,每个节点维护一个优先级队列Q1和一个历史数据包缓冲区Q2。虽然DBR中的多条路径不能完全消除,但我们使用优先级队列来减少转发节点的数量,从而控制转发路径的数量。而数据历史缓冲区保存节点发送数据包的最新历史记录,以确保一个节点在一定时间间隔内只转发同一数据包一次。

  • 保持时间的计算

节点使用保持时间来调度分组转发。在节点处,分组的保持时间基于d计算,d是前一跳的深度与当前节点的深度差值。

不同深度的节点也将具有不同的保持时间。为了减少跳数,DBR尝试选择深度最小的相邻节点作为第一个转发数据包的节点。同时阻止其他相邻节点转发相同的数据包,以减少能耗。

例如:节点S是发送方,节点n1、n2和n3都是其单跳相邻节点。实线圆圈表示节点S的传输范围。当节点S广播一个数据包时,所有相邻节点都将接收该数据包。节点n3的深度低于S,因此它丢弃数据包。尽管节点n1和n2都是合格的转发节点,但节点n1优选转发分组。同时,阻止节点n2的转发。

基于以上分析,我们可以看到,保持时间必须满足两个条件:

  1. 保持时间应随d的增加而减少;
  2. 两个相邻节点的保持时间之间的差异应足够长。在较低节点开始其自身的分组转发之前,以便能听到深度较小的节点的转发。

以上图为例,使用d的线性函数f (d) = α · d + β表示保持时间,其中d是当前节点和前一个节点的深度差,具体的计算如下:

d1和d2分别为节点n1和n2处的深度差,假设n1在时间t1从S接收数据包,n2在时间t2接收数据包,t12是n1和n2之间的传播延迟。那么这两个条件可以用以下不等式表示:

  1. f(d1)<f(d2)
  2. t1+f(d1)+t12≤t2+f(d2)

将f(d)线性表达式带入得到:

即只要a满足上述条件,则所有条件成立。

考虑N1和N2的最差位置,取在这里插入图片描述,其中τ=R/v0,R是节点的最大传输范围,v0是声音在水中的传播速度。

α的值取决于节点n1和n2的深度差,对于节点的单跳邻居,α可以在0到R之间变化,R是传感器节点的最大传输距离。当(d1−d2)→ 0,α→−∞。它表明我们不能找到一个常数α满足条件2。

相反,我们使用全局参数δ来代替(d1−d2)计算保持时间,即α=−2τ/δ. 如果d1−d2≥δ,节点n1先转发一个数据包,阻止节点n2转发。

让具有最小深度的节点保持时间为0。我们可以通过求解以下方程来计算β:

带入f(d)线性表达式,得到:

  • 深度阈值

为了进一 步控制参与数据包转发的节点数量,我们引入了另一个全局参数:深度阈值dth。

只有当前一跳节点深度和当前节点深度之间的差值大于阈值Dth时,节点才会转发数据包。

d 可以是正的,0,或者负的。

如果d 设置为0时,表示深度小于当前节点的所有节点都是合格的转发候选节点。如果d 设置为-R,R为传感器节点的最大传输范围,则DBR变为泛洪协议。
显然,深度阈值表示了数据包投递率和能量消耗之间的权衡。阈值越大, 参与转发的节点就越少,消耗的能量也就越少;但是数据包投递率会降低。另一 方面,阈值越小,参与转发的节点越多,转发率越高;但能源消耗会更高。

算法伪代码:
在这里插入图片描述

节点在接收到数据包时,首先基于深度信息和深度阈值dth检查其是否是符合转发条件。如果不符合,它将搜索该节点数据包的优先级队列Q1,并删除具有相同数据包ID的数据包,因为另一个更好的节点已经转发了该数据包。如果节点是合格的转发器,它将在数据包的历史数据包缓冲器Q2中搜索,如果在Q2中找到该数据包,则会因为最近转发了该数据包而将其丢弃。否则,节点基于当前系统时间和保持时间计算分组的发送时间,并将分组插入优先级队列Q1。如果数据包已经在Q1中,则将发送时间更新为较早的时间。之后,Q1中排队的数据包将根据其计划的发送时间发送出去。

评估

评估DBR的性能,并将其与基于向量的转发(VBF)协议进行比较

我们使用以下指标来评估路由协议的性能。

  1. 数据包投递率。定义为在汇聚处成功接收到的不同数据包的数量与源节点产生的数据包总数的比值。
  2. 端到端的平均延迟。表示数据包从源节点到任何接收点所花费的平均时间。
  3. 总能耗。表示网络中所有节点在发送、 接收和空转数据包过程中消耗的总能耗。

研究算法参数和网络设置对DBR性能的影响。

参数影响

Parameter δ

参数δ决定数据包在每个节点的保持时间。

δ越大,每个节点的保持时间越短,因此端到端的平均延迟将减少;但是更多的节点将转发相同的数据包,这将导致更多的能量消耗。

δ越小,节点的保持时间越长,因此平均端到端延迟增加;但转发同一数据包的节点较少,这有助于降低能耗。

能量消耗和端到端平均延迟如何随δ的三个不同值变化:

δ=R/4时的端到端延迟约为δ=R时延迟的三倍,同时随着δ的升高,能耗确实会增加,但不会显著增加(小于5%)。所以在后面的模拟实验中选择δ=R。

深度阈值dth

深度阈值dth如何影响分组交付率和能量消耗。


在这里插入图片描述
当深度阈值增加时,分组交付率和总能量消耗都会减少。这是因为增加深度阈值就会减少网络中可用节点的数量。

节点移动性

为了评估节点移动性如何影响DBR的性能,我们在1m/s、5m/s和10m/s的不同固定节点速度下模拟了DBR。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
分组交付率、总能量消耗和平均延迟不会随节点速度发生很大变化。

原因是DBR中的所有路由决策都是基于自身节点的深度信息,无需相邻区域之间交换路由信息。因此,DBR可以很好地处理动态拓扑网络。

接收器数量

探究数据交付率如何随着接收器数量变化而变化。

具有多个接收器的DBR比只有一个接收器的DBR具有更好的数据包传递率。

由于DBR是一种贪婪算法,试图将数据包传送到水面,因此增加水面上的接收器数量将增加接收器接收数据包的机会。
在这里插入图片描述

不同数量的接收器的能耗几乎相同。原因是在DBR中,接收器的数量不会影响转发过程。
在这里插入图片描述

具有多个接收器的DBR比具有一个接收器的DBR具有略好的端到端平均延迟。

这是因为在多个接收点的情况下,只要数据包到达任何一个接收点,它就被视为成功交付。

DBP VS VBF

考虑DBR的两种设置:一个接收器和多个接收器。

比较了DBR和VBF的三个指标。
在这里插入图片描述

对于单接收器设置,DBR与VBF的分组交付率相差不大。然而,通过设置多接收器,DBR可以实现更好的传输率,尤其是对于稀疏网络。
在这里插入图片描述

与VBF相比,DBR具有更好的能效。在所有情况下,DBR的总能耗都约为VBF的一半。这主要是由于DBR采用了冗余包抑制技术。DBR中的双队列机制大大减少了网络中的冗余数据包传输。
在这里插入图片描述

在有多个接收器的DBR中产生最少的端到端延迟,但VBF比具有一个接收器DBR有更好的端到端延迟表现。

仿真结果表明,DBR协议适用于密集网络。然而,稀疏网络中的传输率相对较低。原因是DBR采用贪婪模式。在稀疏网络中,单纯的贪婪方法无法实现高的传输率。

总结和展望

本文提出了一种基于深度的水下传感器网络路由协议DBR。DBR使用贪婪算法将数据包传递到离水面更近的接收器。

与其他需要节点全维位置信息的基于地理的路由协议不同,DBR只需要深度信息,而深度信息可以在每个传感器节点本地轻松获取。

此外,DBR可以自然地利用多接收器水下传感器网络体系结构的优势,而不会引入额外的成本。我们的仿真结果表明,对于密集网络,DBR可以在合理的能耗下实现较高的数据包传输率(至少95%)。

为了实现在稀疏网络的更好性能,需要进一步探究恢复算法,以解决贪婪策略失败的“空洞”区域,以提高能效和输送率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于深度路由的水下传感器网络(翻译、整理) 的相关文章

  • 人脸重建环境配置时的坑

    ERROR Could not install packages due to an EnvironmentError Errno 28 No space left on device 由于是docker环境 所以把 tmp目录下的文件清理
  • 《Apache MINA 2.0 用户指南》第一章:入门

    最近准备将Apache MINA 2 0 用户指南英文文档翻译给大家 但是我偶然一次百度 发现 Defonds 这位大牛已经翻译大部分文档 原文链接 http mina apache org mina project userguide c
  • [C#] 汉字转拼音,支持多音字

    这份代码大概不是严格意义上正确的 但是一般场景用用应该没问题 而且支持dotnet core public static class Pinyin region 拼音对照表 private static string py 一 yi 丁 d
  • Unity 调用系统键盘

    using System Diagnostics using UnityEngine public class KeyboardEvent MonoBehaviour private Process keyboard
  • 第十章 内部类(下)

    第十章 内部类 下 随着后面所讲的内容越来越深入 所以可能理解得比较慢了 同时这里边的文字描述和示例也越来越多 希望大家能够坚持下去 慢慢看完 相信会有所收获 当然如果像我一样一个字一个字的敲一遍 印象会更深的 不骗你 因为有的东西开始真的
  • SpringCloud Alibaba 框架背后的故事

    前言 Spring Cloud Alibaba是Spring Cloud的一个子项目 它是由阿里巴巴公司推出的 用于构建基于微服务架构的分布式应用程序的开源框架 它与Spring Cloud的其他组件 如Netflix OSS 相结合 为开

随机推荐

  • sqli-labs Less5-6(布尔盲注)

    目录 前言 一 Less 5 1 布尔型的注入相比前四关 思路上最大的不同就是通过对错来获取对你来说有用的信息 1 先找到注入点 2 先判断数据库长度 3 判断数据库名中的每一个字母是什么 4 同样得方法测试表名 5 根据第四步得出表名 推
  • 人性的弱点

    附 本作品来自互联网 本人不做任何负责 内容版权归作者所有 人性的弱点 by Dale Carnegie雷吟译 目录 这本书对你有十二种功用 译者序 前言 原著序 如何从这本书里获得最大效益 第一篇 待人的基本技巧 第一章 如欲采蜜 勿蹴蜂
  • QT槽函数的使用

    QT槽函数的使用 例如 在头文件中设置槽函数 public slots void OnClickedButtonEnsure void OnClickedButtonExit cpp文件 构造函数中写入 connect ui pushBut
  • STM32F103ZET6【标准库函数开发】------配置定时器参数的几个常用函数

    TIM TimeBaseInitTypeDef 基本初始化 TIM OCInitTypeDef 比较输出初始化 TIM ICInitTypeDef 输入捕获初始化 TIM BDTRInitTypeDef 断路和死区初始化 TIM TimeB
  • pycharm创建的虚拟环境为什么用conda env list命令查询不到?

    问题描述 pycharm创建的虚拟环境为什么用conda env list命令查询不到 pycharm开发环境可以创建虚拟环境 目的是为隔绝其他环境种库带来的版本干扰 但是发现一个问题 无论是在windows终端 anaconda终端 Py
  • Java课程设计-学籍信息管理系统

    一 系统分析 学生的学籍信息是记录学生的重要信息档案 如何以电子文档形式记录下学生的学籍信息是每个学校必须做的事情 该学生学籍信息管理系统就是为了方便学校记录下每一个学生的基本信息 生成电子数据库 并且能够做到查询 更改 删除 浏览等功能操
  • Unity 移动端触摸屏操作

    Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时 桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作 但如多点触屏等操作却是无法利用鼠标操作进行的 Unity的Input类中不仅包含桌面系统的各种输入功能 也包含
  • 关于类和对象

    1 面向对象是一种技术的开发模式 但是最早的时候所使用的模式是面向过程 面向对象就是一种组件化的设计思想 面向过程 指的是针对于某一问题单独提出解决方案及代码开发 面向对象 以一种组件化的形势进行代码的设计 这样开发出来的代码有一个最大的好
  • Python Tkinter实现简单文本编辑器

    下面看看如何利用Tkinter实现一个文本编辑器 语言 python 运行效果 在 Python 代码中使用 Tkinter 的简单文本编辑器应用程序 这 使用Tkinter的简单文本编辑器应用程序 是编码在 python 程序设计语言 该
  • [编写高质量代码:改善java程序的151个建议]建议103 反射访问属性或方法时将Accessible设置为true...

    转载于 https www cnblogs com akingseu p 3506576 html
  • canvas小练习之鼠标粒子特效

  • Qt 笔记5--Qt 拉伸窗体

    Qt 笔记5 Qt 拉伸窗体 正常情况下 Qt主窗体拉伸 但内部子窗体大小及位置并未发生该表 导致出现一部分空白区域 因此实际中为了美观需要实现其动态拉伸和调整效果 以下为笔者通过重新resizeEvent方法实现的一个简单拉伸案例 相应学
  • 小程序如何进行分包详细介绍

    微信小程序开发过程中 随着业务不断迭代 程序包的体积越来越大 使用分包加载是开发者必须面对的问题 正常情况下 小程序首次启动时 会将整个代码包下载下来 所以如果代码包过大 会影响小程序首次启动时间 因此微信官方对小程序代码包做了大小限制 官
  • JetBrains Resharper 2019.1.3的安装、破解、使用

    最近在浏览GitHub时 看到好多项目下面会有如下图标 几经折腾之后 发现这个一个非常好用的VS插件 称为神级也不为过 可以进行编写提示 代码重构 文件搜索等许多操作 当然目前最新版的VS中已经具有很多类似的功能 但是这个插件从实用性上来说
  • 2014年2月7日星期五(7-3,消除了背面的3D线框立方体)

    好久没进行了 看看吧 与DEMO7 2的区别 只看不同的地方 相机类型不同 归一化平面改为2 2 ar 视口为640 480 执行了背面消除 就是判断面元向量与面元到视点向量的点乘 gt 0 则可见 否则 消除 这一步是在物体剔除后和世界坐
  • 百度飞浆零基础实践深度学习入门课,通过PaddlePaddle实现波士顿房价预测

    百度架构师手把手带你零基础实践深度学习 课程已加入学习 对深度学习有了深入浅出对理解 并通过两种方式实现波士顿房价预测的算法 包括Python和Numpy构建深度学习框架 以及使用paddlepaddle快速搭建 快速实现预测 A 使用Py
  • 使用pl.droidsonroids.gif.GifImageView在安卓中显示动图遇到的问题

    在做一款聊天软件 其中聊天界面需要发送表情 而表情都是动图 在安卓中想要显示动图 就要借助第三方框架 我选的是pl droidsonroids gif GifImageView 使用方法如下 你在github上下载了android gif
  • Webpack5 处理图片资源、图标资源、修改输出目录、清空上一次打包的所有文件

    1 处理图片资源 Webpack5 已经将两个 Loader file loader 和 url loader 功能内置到 Webpack 里了 我们只需要简单配置即可处理图片资源 优化 gt 小图片转化为base64 小图片可以转换为ba
  • android分析monkey的anr

    1 根据anr信息和traces txt判断anr是发生在那个进程中 2 在文件夹logs4android x中搜索 ANR 或者在monkeylog中搜索 anr in 找到发生anr的时间 3 在文件夹logs4android x中搜索
  • 基于深度路由的水下传感器网络(翻译、整理)

    基于深度路由的水下传感器网络 翻译 整理 背景与意义 无线传感器网络引起了研究人员的广泛关注 并在该领域取得了很大进展 起初 这些网络仅涵盖地面的实用程序 但后来 由于在地球被 70 水覆盖 所以大家开始研究传感器网络的水下应用 也就是我们