ADOV路由和DSR路由matlab对比仿真

2024-01-12 00:12

本文主要是介绍ADOV路由和DSR路由matlab对比仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1 ADOV路由(Ad hoc On-demand Distance Vector Routing)

4.2 DSR路由(Dynamic Source Routing)

5.完整程序


1.程序功能描述

        ADOV路由和DSR路由的仿真,仿真输出网络的路由路径,跳数,路由长度,并对比ADOV和DSR的性能。

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

3.核心程序

......................................................
Nodes    = 30; 
Radius   = 10; %节点通信距离 
Sp       = 10;  %开始点
Ep       = 6; %目标点
X      = 20*rand(1,Nodes);
Y      = 20*rand(1,Nodes);
Z      = 1*rand(1,Nodes);%节点的信任值figure(1); 
clf; 
hold on; 
%画拓扑结构
for i = 1:Nodes plot(X(i), Y(i), '.'); text(X(i), Y(i), num2str(i)); for j = 1:Nodes dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2); if dist <= Radius   Fmat(i,j)  = 1;   Tmat(i,j)  = 1-((Z(i)+Z(j))/2); dmat(i,j)  = dist; else Fmat(i,j)  = inf; Tmat(i,j)  = inf; dmat(i,j)  = inf; end  end  
end 
%路由  
[path, cost] = func_dijkstra(Sp,Ep,Tmat);dist_all=0; 
for j=2:length(path) dist_all= dist_all + dmat(path(j-1),path(j)); 
end for p =1:(length(path)-1) line([X(Sp) X(path(1))],[Y(Sp) Y(path(1))],'Color','r','LineWidth', 1, 'LineStyle', '-') line([X(path(p)) X(path(p+1))], [Y(path(p)) Y(path(p+1))], 'Color','r','LineWidth', 2, 'LineStyle','-')  
end 
grid disp('路由:');
path
disp('跳数:');
length(path)-1 
disp('路由长度:');
dist_allsave R1.mat 
18

4.本算法原理

4.1 ADOV路由(Ad hoc On-demand Distance Vector Routing)


      ADOV是一种反应式的路由协议,它仅在需要时才建立路由。这种路由协议主要包括三个过程:路由发现、路由维护和路由表更新。

路由发现:
       当源节点需要向目的节点发送数据,但路由表中没有有效路由时,源节点会发起路由发现过程。它广播一个路由请求(RREQ)消息,该消息包含源节点和目的节点的地址、请求的序列号等信息。

路由维护:
       每个节点都维护一个路由表,其中包含到达已知目的地的下一跳地址和跳数。当节点的路由表发生变化时(例如,链路中断),它会更新其路由表,并可能向邻居节点发送路由错误(RERR)消息。

路由表更新:
        当节点收到RREQ或RERR消息时,它会根据这些消息更新其路由表。如果RREQ消息提供了一个更好的路由(即跳数更少),则节点会更新其路由表,并可能将RREQ消息转发给其邻居节点。
       在ADOV路由中,一个重要的概念是路由度量。路由度量通常基于跳数,但也可以考虑其他因素,如链路质量。假设(d(i, j))表示从节点(i)到节点(j)的距离(以跳数计),则路由发现过程可以表示为寻找从源节点(s)到目的节点(d)的最短路径,即最小化(d(s, d))。

4.2 DSR路由(Dynamic Source Routing)


        DSR是一种源路由协议,意味着路由是由源节点确定的,并且路由信息包含在数据包头中。DSR同样是反应式的,它使用路由缓存来存储先前发现的路由。

路由发现:
        与ADOV类似,当源节点需要向目的节点发送数据但没有有效路由时,它会发起路由发现过程。不同的是,DSR会在RREQ消息中包含一个路由记录,该记录用于记录从源节点到目的节点的路径。

路由维护:
       DSR使用路由缓存来存储先前发现的路由。当节点收到数据包时,它会检查数据包头中的路由信息,并根据该信息转发数据包。如果路由缓存中的路由不再有效(例如,由于节点移动导致链路中断),则节点会丢弃数据包,并可能向源节点发送路由错误消息。

        在DSR中,路由发现过程可以表示为寻找从源节点(s)到目的节点(d)的有效路径(P)。路径(P)可以表示为一系列节点的序列:(P = \langle s, n_1, n_2, ..., n_k, d \rangle),其中(n_1, n_2, ..., n_k)是路径上的中间节点。源节点将路径(P)包含在数据包头中,以便中间节点能够根据该路径转发数据包。

5.完整程序

VVV

这篇关于ADOV路由和DSR路由matlab对比仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

关于MyISAM和InnoDB对比分析

《关于MyISAM和InnoDB对比分析》:本文主要介绍关于MyISAM和InnoDB对比分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录开篇:从交通规则看存储引擎选择理解存储引擎的基本概念技术原理对比1. 事务支持:ACID的守护者2. 锁机制:并发控制的艺

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细