初稿

标题

0

标题

1

标题

2

3 基于深度路由协议Depth-Based Routing Protocol

在这一章节中,我们详细介绍了DBR路由协议。
3.1 网络架构
如前所述,DBR是可以有效利用多接收器的水下传感器网络架构。图1展示了DBR的示例。在DBR网络中,水面部署多个同时配备射频(radio frequency,RF)和声学调制解调器(acoustic modems)的接收器(Sink node)。带有声学调制解调器(acoustic modems)的水下传感器节点分布在重点关注的水下三维空间中。同时,每个节点都可能是一个数据源(data source)。这些水下传感器节点可以收集数据,还可以将数据中继到接收器。因为所有的接收器(sinks)都有RF调制解调器,所以它们可以通过无线电信道高效地相互通信。因此,如果数据包到达任何接收器(sinks),我们假设它可以高效地传送到其他接收器(sinks)或远程数据中心。这一假设很容易被下事实得到验证:声速(在水中的速度为1.5×103m/s)比电磁波传播速度慢五个数量级(在空气中的传播速度为3×108 m/s)。为了关注重点,我们在这篇论文中不考虑水面sink节点的通信。相反,我们假设一个数据包只要成功地传送到水面的某个sink节点,那么这个数据包就被认为到达目的地。

此外,我们假设每个水下节点都知道自身的水下深度信息(即从其自身到水面的垂直距离)。实际上,使用深度传感器可以很容易地获得深度信息。与深度信息相比,水下节点想要获取水下3D空间位置信息就要困难得多。

3.2 协议概述
DBR是一种试图将数据包从源节点(source node)传递到sink节点的贪婪算法。在该过程中,当数据包接近sink节点时,转发节点的深度在减小。如果我们在每个步骤中减少转发节点的深度,则可以将数据包发送到水面(假设不存在“空”区)。在DBR中,传感器节点(sensor node)根据自己的深度和前一个发送方的深度,分布式地做出数据包转发的决策。上述内容是DBR的关键思想

在DBR中,当接收到数据包时,节点首先检索数据包的前一跳的深度dp,该跳dp嵌入到数据包中。然后,接收节点将其自身的深度dc与dp进行比较。如果当前节点更靠近水面,即dc<dp,当前节点将认为自己是转发分组的合格候选。否则,当前节点只会直接丢弃数据包,丢弃的原因是收到的数据包来自更靠近水面的(更好的)节点。接收节点不希望转发该分组。

转发节点的多个相邻节点很可能是在下一跳转发数据包的合格候选节点。如果所有这些合格的节点都尝试广播数据包,将导致高冲突和高能耗。因此,为了减少冲突和能量消耗,需要控制转发节点的数量。此外,由于DBR的继承多路径特性(inherited multiple-path feature)(其中,每个传感器节点以广播的方式使用当前节点所有方向的声学信道(using an omnidirectional acoustic channel)来转发分组),节点可能多次接收相同一个分组。因此,同一个分组可能多次被转发。为了提高能量效率,理想情况下,节点只需发送一次相同的数据包。我们将在下一节讨论抑制冗余数据包的技术。

3.3 路由协议设计

分组格式:
图2展示了DBR的数据包的格式。分组的头部包含三个部分:

  1. 发送方的ID(Sender ID):源节点的标识符,
  2. 数据包的序列号:源节点分配给包的唯一序列号,
  3. 深度:前一个转发节点的深度信息。每个节点在转发数据包时,都要更新深度信息。

抑制冗余数据包:
冗余数据包有两个主要原因:
1.多跳路径(multiple paths)很自然地被选择用于转发数据包;
2.一个节点可能转发同一个数据包多次。
为了节约水下节点的能量和减少数据冲突,需要抑制冗余数据包。虽然在DBR中多跳路径(multiple paths)无法完全消除,但我们使用 优先级队列(priority queue) 来减少转发节点的数量,从而控制转发路径的数量。为了解决第二个问题,DBR使用 数据包历史缓冲区 (packet history buffer) 来保证某个节点在一段时间内只转发同一个数据包一次。

在 DBR 中,每个节点维护一个 优先级队列(priority queue) Q1 和一个 数据包历史缓冲区 (packet history buffer) Q2Q2 中的每一项都是唯一的,且被叫做数据包ID,由Sender ID和Packet Sequence Number组成。当一个节点成功发出数据包时,节点将数据包ID插入到Q2中。 当 Q2队满时,新的数据包ID将替换最近最少访问 (Least Recently Accessed,LRA) 项目。 换个说法,Q2 维护节点已经发送的数据包的最少访问历史。

优先级队列(priority queue) Q1 中的每一项由两个组成部分:1.数据包( a packet ),2.数据包的预定发送时间 (the scheduled sending time for the packet)。 Q1 中某项的优先级由预定的发送时间表示。 更具体地说,具有较早发送时间的项目具有较高的优先级。 当一个节点收到一个数据包时,它不是立即发送数据包,而是先将数据包保留一段时间,称为***保持时间 (holding time)*** 。 数据包的预定发送时间 (the scheduled sending time for the packet)是根据节点收到数据包的时间和数据包的保持时间计算得出的。

在一个节点,如果一个传入的数据包之前没有被该节点发送过(即Q2 中没有这个数据包的ID)并且它是从较低的节点传来(即是从深度更大的节点传来,dp > dc)。 如果在***保持时间 (holding time)***内再次收到这个数据包,或者新的数据包副本来自更浅深度或相似深度(dp ≤ dc)的节点,则该数据包将从 Q1 中删除,或者其计划发送时间将被更新,如果数据包新副本来自较低的节点(dp > dc)。 节点按计划发出数据包后,将该数据包从 Q1 中删除,并将其唯一 ID 插入 Q2

计算保持时间 (Holding Time Calculation)
如前所述,节点使用保持时间来调度数据包的转发。 在节点上,数据包的保持时间是根据d计算的,d 是数据包前一跳的深度与当前节点的深度之间的差值。即使对于相同的数据包,不同深度的节点也会有不同的保持时间。 为了减少数据包传到水面的转发路径的跳数,DBR 尝试选择深度最小的相邻节点作为第一个转发数据包的节点。 同时,节点还试图阻止其他相邻节点转发相同的数据包以减少能量消耗。

图 3 展示了一个例子。


节点S(Node S)是数据发送方,节点n1、n2、n3都是它的一跳邻居节点。 实线圆圈代表节点S的传输范围。当节点S广播一个数据包时,所有相邻的节点都会收到这个数据包。 节点 n3 深度大于节点 S,因此n3丢弃数据包。 虽然节点 nn1和 nn2 都是合格的转发节点,但节点 n1 更适合转发数据包。 如果节点 n2 在它自己计划的数据包发送时间之前收到来自 n1 的数据包,则节点 n2会被阻止转发数据包。

根据上述分析,保持时间必须同时满足两个条件:
1.保持时间应随着深度d的增加而减少;
2.相邻两个节点的保持时间的长短的差别要足够大,使得深度更浅的节点的转发能被对方及时听到(在更深的下层节点开始自己的数据包转发之前监听到)。

以图3为例来展示如何计算保持时间。 使用公式1中线性函数d来表达保持时间,公式中d表示当前节点与前一个节点的深度差。

f(d)=α×d+βf(d)=\alpha \times d +\beta f(d)=α×d+β (1)

d1d2 分别为节点 n1n2 处的深度差。假设 n1 在时间 t1 收到来自 S 的数据包,n2 在时间 t2 收到数据包,t12n1n2 之间的传播延迟。之后,这两个条件可以用以下不等式表示:

f(d1)<f(d2)f(d_{1}) < f(d_{2}) f(d1​)<f(d2​) (2)

t1+f(d1)+t12≤t2+f(d2)t_{1}+f(d_{1}) +t_{12}\le t_{2}+f(d_{2})t1​+f(d1​)+t12​≤t2​+f(d2​) (3)

将公式(1)带入公式(3)得:
α≤(t2−t1)−t12d1−d2,(α<0)\alpha \le \frac{(t_{2}-t_{1})-t_{12}}{d_{1}-d_{2}}, (\alpha <0) α≤d1​−d2​(t2​−t1​)−t12​​,(α<0)
上述不等式中的α是负数。只有当∣α∣≥(t2−t1)−t12d1−d2| \alpha | \ge \frac{(t_{2}-t_{1})-t_{12}}{d_{1}-d_{2}} ∣α∣≥d1​−d2​(t2​−t1​)−t12​​时,公式(2)和公式(3)才能被满足。 考虑到n1和n2可能处于最不佳的位置,我们设定α=2τd1−d2\alpha =\frac{2\tau }{d_{1}-d_{2}}α=d1​−d2​2τ​ τ=Rv0\tau =\frac{R}{v_{0}} τ=v0​R​
上述公式中,τ是一跳的最大传播时延,R是一个声呐节点的最大传输距离,v0是水中的声速。

α的数值取决于两个节点n1和n2的深度差(d1-d2)。对于一个节点的下一跳邻居,α的数值在[0,R]范围内变化,R是一个节点的最大传输距离。

当(d1−d2)⟶0时,α⟶−∞。当(d_{1} - d_{2}) \longrightarrow 0 时, \alpha \longrightarrow - \infty 。当(d1​−d2​)⟶0时,α⟶−∞。 (a)

公式(a)表明我们无法找到一个常数α来让公式(2)总是成立。因此,我们使用一个全局常量δ来替代(d1-d2)进行保持时间的计算。因此,
α=−2τδ\alpha = - \frac{2\tau}{\delta}α=−δ2τ​
如果(d1-d2)≥δ,那么节点n1将先发送一个抑制节点n2发送数据的控制包。
假设最小深度的节点的保持时间是0. β可以通过下列公式计算:

−2τδR+β=0-\frac{2\tau}{\delta}R+\beta =0−δ2τ​R+β=0
{自己的理解:假设图3中S坐标(0,0),n1的坐标是(0,R),且n1位于最小深度,随后将{d=R,f(d)=0}带入公式(1)中。β=2τδR\beta = \frac{2\tau}{\delta}Rβ=δ2τ​R }

将计算出来的α和β带入公式(1)中,得到f(d)的定义:
f(d)=2τδ×(R−d),δ∈(0,R]f(d) =\frac{2\tau}{\delta}\times(R-d),\delta \in (0,R] f(d)=δ2τ​×(R−d),δ∈(0,R]

使用不同的δ,网络将有不同的性能。当δ较小时,节点的保持时间将较长(如何它们和前一个节点的的深度差不完全等于R),这也许会导致较长的端到端时延。同时,这些节点的转发更有可能被更靠近水面的相邻节点的转发所抑制,从而导致更低的能耗。

深度阈值
为了更好地控制参与数据包转发的节点数量,我们在DBR中引入了另一个全局参数Depth Threshold dth。 只有当数据包的前一跳深度 dp 与当前节点的深度 dc 之间的差值大于阈值 dth 时,节点才会转发数据包。 dth 可以是正数、0 或负数。 如果 dth 设置为 0,则所有深度小于当前节点的节点都是合格的转发候选。 如果 dth 设置为 -R(R 是传感器节点的最大传输范围),则 DBR 成为泛洪协议。

总结
DBR算法如下所示:

算法解释:
节点接收到数据包后,首先根据深度信息和深度阈值dth检查自己是否是该数据包的合格转发者。
如果它不是合格的转发节点,它会在 Q1 中搜索数据包并删除具有相同数据包 ID 的数据包,因为另一个(更好的)节点已经转发了该数据包。
如果节点是合格的转发器,它会在包历史缓冲区 Q2 中搜索包。 如果在 Q2 中找到该数据包,则将其丢弃,因为它最近已被转发。
否则,节点根据当前系统时间和保持时间计算数据包的发送时间,并将数据包插入优先级队列Q1。 注意如果数据包已经在Q1,发送时间会更新到最小的时间。
稍后,Q1 中排队的数据包将根据其预定的发送时间发送出去。

4 算法评估

在这一章节,我们将评估DBR的表现,并把它与Vector Based forwarding(VBF) protocol进行比较。

4.1 模拟环境设置

路由协议—基于深度路由协议DBR: Depth-Based Routing for Underwater Sensor Networks相关推荐

  1. Highly-Resilient, Energy-Effificient Multipath Routing in Wireless Sensor Networks阅读报告

    Ganesan D, Govindan R, Shenker S, et al. Highly-resilient, energy-efficient multipath routing in wir ...

  2. (全文翻译)基于深度残差收缩网络的故障诊断Deep Residual Shrinkage Networks for Fault Diagnosis

    M. Zhao, S. Zhong, X. Fu, B. Tang, M. Pecht, Deep residual shrinkage networks for fault diagnosis, I ...

  3. 论文翻译-基于深度残差收缩网络的故障诊断 Deep Residual Shrinkage Networks for Fault Diagnosis

    深度残差收缩网络是深度残差网络的一种改进,针对的是数据中含有噪声或冗余信息的情况,将软阈值化引入深度残差网络的内部,通过消除冗余特征,增强高层特征的判别性.以下对部分论文原文进行了翻译,仅以学习为目的 ...

  4. 基于深度残差收缩网络的故障诊断 Deep Residual Shrinkage Networks for Fault Diagnosis

    深度残差收缩网络针对的是数据中含有噪声或冗余信息的情况,是深度残差网络的一种改进,将软阈值化引入深度残差网络的内部,通过消除冗余特征,增强高层特征的判别性.以下对部分论文原文进行了翻译,仅以学习为目的 ...

  5. An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中基于蚁群算法的能量有效路由)2

    牙说:接着上一篇继续写. 论文标题:An Energy-Efficient Ant-Based Routing Algorithm forWireless Sensor Networks 作者:Tia ...

  6. 基于深度强化学习的车道线检测和定位(Deep reinforcement learning based lane detection and localization) 论文解读+代码复现

    之前读过这篇论文,导师说要复现,这里记录一下.废话不多说,再重读一下论文. 注:非一字一句翻译.个人理解,一定偏颇. 基于深度强化学习的车道检测和定位 官方源码下载:https://github.co ...

  7. python数据库开发 dga_DGA detection based on Deep Learning (CNN and GRU) (基于深度学习的DGA检测)...

    DGA-detection DGA detection based on Deep Learning (CNN and GRU) (基于深度学习的DGA检测) This project impleme ...

  8. 综述:基于深度学习的文本分类 --《Deep Learning Based Text Classification: A Comprehensive Review》总结(一)

    文章目录 综述:基于深度学习的文本分类 <Deep Learning Based Text Classification: A Comprehensive Review>论文总结(一) 总 ...

  9. 基于深度学习的目标检测研究综述

    基于深度学习的目标检测研究综述 摘要:深度学习是机器学习的一个研究领域,近年来受到越来越多的关注.最近几年,深度学习在目标检测领域取得了不少突破性的进展,已经运用到具体的目标检测任务上.本文首先详细介 ...

最新文章

  1. Python之DataFrame将列作为索引
  2. linux网络批量安装上限,linux基于网络的批量安装
  3. Spark DataFrame 添加自增id
  4. 前端学习(1284):node开发概述
  5. jinja2模板用法详解
  6. 经典SQL回顾之晋级篇
  7. 前端html+css+javascript
  8. DRF之认证组件源码解析
  9. unity3d自己写角色移动脚本
  10. python房价预测_Python实战:使用线性回归预测房价
  11. C语言编程题:(C语言)分糖果 通俗易懂
  12. 信息化分析:集团企业信息化规划和实施研究
  13. 数据仓库建设之总线矩阵/总线架构
  14. 资产设备管理系统方案,什么是智能设备管理系统?
  15. CollectionView的HeaderView头视图悬停
  16. 基于51单片机直流电机PWM调速设计
  17. 微信小程序showToast在真机中显示时间不可控制,显示时间短
  18. 如何把Pod本地化(Localize)
  19. MATLAB 棋盘格图片校准
  20. chrome 未连接到互联网 代理服务器出现问题,或者地址有误

热门文章

  1. 能源消耗监测管理系统_能源消耗监测系统管理平台
  2. 华为防火墙基础自学系列 | Hub Spoke IPsec VdPdNd
  3. 天翼云盘目录索引php,如何设置天翼云盘同步目录与文件?天翼云盘同步目录与文件的方法...
  4. Eclipse背景图片的设置
  5. 东南大学 计算机 保研,2020年东南大学保研率是多少
  6. 一种可以使人体吸收宇宙全息能量的电脑
  7. 仿微信做的一个群组聊天头像的功能
  8. xshell怎么连接服务器公钥_配置xshell生成公钥和私钥,使用密钥认证方式登录服务器...
  9. three.js 在手机端移动转向 可做场景漫游
  10. 实现图像特效之浮雕与雕刻