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

news/2024/10/7 2:17:52

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:Nodesplot(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)包含在数据包头中,以便中间节点能够根据该路径转发数据包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/42883.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

ResourceManager unable to find resou

哈喽,大家好,我是木头左,AI改变生活!一、问题描述 在使用Mybatis自定义模板引擎时,可能会遇到一些问题。本文将介绍一个常见的报错信息:org.apache.velocity.exception.ResourceManagerException: Unable to find resource。这个错误通常表示Velocity引擎无法找到指定的资…

科技巨头的裁员潮:AI转型的代价是同事?

哈喽,大家好,我是木头左,AI改变生活!随着2024年的到来,硅谷科技大厂裁员的消息如同潮水般涌来。谷歌、亚马逊甚至苹果公司,都传出了人员减员、部门关停的消息。对于硅谷大厂连绵不断的裁员,有分析指出,科技巨头竞争白热化,AI转型是一次成本巨大的押注,而这部分激增的…

免费公益Teamspeak3服务器(附服务器地址,可开私人频道)

服务器地址:ts.melonagua.icu 可开私人频道,q2424149926

Git分布式版本控制工具

了解Git基本概念 git是一个免费开源的分布式版本控制系统,它使用一个叫做仓库的数据库来记录文件的变化,仓库中的每个文件都有一个完整的版本历史记录。可以看到谁在什么时间修改了哪些文件的哪些内容。 现在最流行的版本控制系统有两种,一种是集中式版本控制系统:SVN、CVS…

Android studio实现图标方式展示信息(折线图等)时com.github.mikephil.charting.charts.LineChart标红

参考连接—— https://blog.csdn.net/m0_37919094/article/details/122416408去 https://gitcode.com/PhilJay/MPAndroidChart/overview?utm_source=csdn_github_accelerator&isLogin=1 下载MPAndroidChart的zip包,解压在Android studio中操作 file——》new——》import…

软件工程课程总结

这学期上的软件工程课程非常充实,学会很多东西,大二下我们主要学习的Android studio(手机端)的开发,手机端对我来说是一个全新的知识,刚开始接触觉得很难,我网上看了很多资料,很抽象,很多很杂,因为安卓的视频都很老,基本上都是2020年以前的,可能在不远的将来安卓也会…

Oracle静默安装

1.安装前准备 1.1.关闭防火墙和SELINUX systemctl stop firewalld systemctl disable firewalld sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config1.2.修改主机名 vi /etc/hostname1.3.添加hosts解析 vi /etc/hosts #-------------------------…

ch4 信息搜寻与最优信息决策

信息搜寻与最优信息决策重点贝叶斯信念 信息搜寻预期收益(大题)课程内容 了解信息决策的基本原理,重点掌握信息搜寻理论的分析框架及其在具体实践中的应用。(1)信息与一般决策过程(2)不确定性与信息离散分布(3)信息搜索模型(4)最优信息决策 信息与决策 noth…