DTN中基于两跳ACK 确认机制的备用副本转发算法

2024-02-02 22:40

本文主要是介绍DTN中基于两跳ACK 确认机制的备用副本转发算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

DTN中基于两跳ACK 确认机制的备用副本转发算法

摘要

针对DTN在遇到路由空洞问题(由于某些原因,没有合适的下一跳节点)时缺乏有效回避路由空洞的方法导致信息端到端传输时延较大的问题,提出了DTN中基于两跳ACK (ACK1 ACK2)确认机制的备用副本转发算法。消息在空洞区域内无法传播时由上一跳节点寻找其他符合条件的节点,另选路径转发消息,从而避免路由空洞区域。通过与epidemic等算法比较,在车载自组网中有很强的应用性。

1 引言

从报文副本数量角度可以分为单报文副本路由算法(Random Routing,SimBet)和多报文副本路由算法(epidemic,prophet);从下一跳节点寻找方式分为基于节点位置信息的路由算法(Geo,LASR)和基于节点效用值的路由算法。

2 问题描述

在这里插入图片描述

路由空洞常发生在节点密度分布不均,部分节点移动至通信区域范围之外,下一跳节点发生故障等情况下
在这里插入图片描述在这里插入图片描述

3 算法描述

单报文副本位置路由算法不必考虑洪范给网络开销带来的压力,本文提出一种基于两跳ACK确认机制的备用副本转发路由算法(2HAR),对单报文副本算法面对路由空洞问题时的行为进行了改进。当节点寻找不到比自己更合适的下一跳转发节点时,由它的上一跳节点负责寻找其他节点转发消息,从而完成消息回退行为,避开路由空洞。

3.1 算法描述

在这里插入图片描述
本算法设有两个反馈消息ACK1和ACK2,它们都是节点成功接收到转发消息时给上一跳反馈的信息,不同之处在于发送时机不同,产生效果也不同。

在这里插入图片描述

3.2 路由过程

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
Util是utiliy的缩写,是一个多功能、基于工具的包(我也不知道)

4 仿真与分析

4.1 仿真场景设置

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
Sumo交通仿真器
NS2网络仿真平台

4.2 仿真结果与分析

(1)递交率
在这里插入图片描述在这里插入图片描述
(2)传输时延
在这里插入图片描述
(3)网络开销
在这里插入图片描述
在这里插入图片描述

结束语

在这里插入图片描述
临近开学–日常焦虑–突然觉得自己寒假什么也没做–文献没看多少—真的不知道自己一天天在干什么–
离开学倒数第5天–
在这里插入图片描述
过了追星的年纪了
放张战哥的图片安慰自己吧~

这篇关于DTN中基于两跳ACK 确认机制的备用副本转发算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/672198

相关文章

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

SpringKafka错误处理(重试机制与死信队列)

《SpringKafka错误处理(重试机制与死信队列)》SpringKafka提供了全面的错误处理机制,通过灵活的重试策略和死信队列处理,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、Spring Kafka错误处理基础二、配置重试机制三、死信队列实现四、特定异常的处理策略五

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.