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

相关文章

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.

Nginx之upstream被动式重试机制的实现

《Nginx之upstream被动式重试机制的实现》本文主要介绍了Nginx之upstream被动式重试机制的实现,可以通过proxy_next_upstream来自定义配置,具有一定的参考价值,感兴... 目录默认错误选择定义错误指令配置proxy_next_upstreamproxy_next_upst

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查