AODV协议的运行方式

2024-09-03 19:58
文章标签 运行 协议 方式 aodv

本文主要是介绍AODV协议的运行方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(a)AODV路由发现

  AODV路由协议是一种典型的按需驱动路由协议,该算法可被称为纯粹的需求路由获取系统,那些不在活跃路径上的节点不会维持任何相关路由信息,也不会参与任何周期路由表的交换。此外,节点没有必要去发现和维持到另一节点的路由,除非这两个节点需要进行通信。移动节点间的局部连接性可以通过几种方法得到,其中包括使用局部广播Hello消息。这种算法的主要目的是:在需要时广播路由发现分组一般的拓扑维护;区别局部连接管理(邻居检测)和一般的拓扑维护;向需要连接信息的邻居移动节点散播拓扑变化信息。

  AODV使用广播路由发现机制,它依赖中间节点动态建立路由表来进行分组的传送。为了维持节点间的最新路由信息,AODV协议借鉴了DSDV中的序列号的思想,利用这种机制就能有效地防止路由环的形成。当源节点想与另外一个节点通信,而它的路由表中又没有相应的路由信息时,它就会发起路由发现过程。每一个节点维持两个独立的计数器:节点序列号计数器和广播标识。源节点通过向自己的邻居广播 RREQ(Route Requests)分组来发起一次路由发现过程。

  (b)AODV协议反向路由的建立

  在RREQ分组中包含了两个序列号:源节点序列号和源节点所知道的最新的目的序列号?源节点序列号用于维持到源的反向路由的特性,目的序列号表明了到目的地的最新路由。当RREQ分组从一个源节点转发到不同的目的地时,沿途所经过的节点都要自动建立到源节点的反向路由。

  节点通过记录收到的第一个RREQ分组的邻居地址来建立反向路由,这些反向路由将会维持一定时间,一该段时间足够RREQ分组在网内转发以及产生的RREP分组返回源节点。当RREQ分组到达了目的节点,目的节点就会产生RREP分组,并利用建立的反向路由来转发RREP。

  (c)AODV协议正向路由的建立

  RREQ分组最终将到达一个节点,该节点可能就是目的节点,或者这个节点有到达目的节点的路由。如果这个中间节点有到达目的的路由项,它就会比较路由项里的目的序列号和RREQ分组里的目的序列号的大小来判断自己已有的路由是否是比较新的。

  如果RREQ分组里的目的序列号比路由项中的序列号大,则这个中间节点不能使用己有的路由来响应这个RREQ分组,只能是继续广播这个RREQ分组。中间节点只有在路由项中的目的序列号不小于RREQ中的目的序列号时,才能直接对收到的RREQ分组做出响应?如果节点有到目的地的最新路由,而且这个RREQ还没有被处理过,这个节点将会沿着建立的反向路由返回RREP分组。

  在RREP转发回源节点的过程中,沿着这条路径上的每一个.节点都将建立到目的节点的同向路由,也就是记录下RREP是从哪一个邻居节点来的地址,然后更新有关源和目的路由的定时器信息以及记录下RREP中目的节点的最新序列号。对于那些建立了反向路由,但RREP分组并没有经过的节点,它们中建立的反向路由将会在一定时间(Active-Route-Timeout)后自动变为无效。收到RREP分组的节点将会对到某一个源节点的第一个RREP分组进行转发,对于其后收到的到同一个源的RREP分组,只有当后到的RREP分组中包含了更高的目的序列号或虽然有相同的目的序列号但所经过的跳数较少时,节点才一会重新更新路由信息,以及把这个RREP分组转发出去。

  这种方法有效地抑制了向源节点转发的RREP分组数,而且确保了最新及最快的路由信息。AODV协议中规定,源节点将在收到第一个RREP分组后,就开始向目的节点发送数据分组。如果以后源节点了解到的更新的路由,它就会更新自己的路由信息。

 

本文转自:https://blog.csdn.net/cappuccino92/article/details/50344815。

 

30W年薪的人工智能工程师只是“白菜价”?

人工智能技术向前发展,也必然会出现一些岗位被人工智能取代,但我们相信,随着人工智能的发展,会有更多的新的、属于未来的工作岗位出现,是社会发展的必然产物,我们能做的也许只能是与时俱进了

--------------------- 本文来自 小豆子92 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/cappuccino92/article/details/50344815?utm_source=copy

这篇关于AODV协议的运行方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制