AODV按需路由协议

2023-11-16

一:详细解释

      AODV(Ad hoc On-demand Distance Vector Routing)是一种按需路由协议。当一个节点需要给网络中的其他节点传送信息时,如果没有到达目标节点的路由,则必须先以多播的形式发出RREQ(路由请求)报文。RREQ报文中记录着发起节点和目标节点的网络层地址,邻近节点收到RREQ,首先判断目标节点是否为自己。如果是,则向发起节点发送RREP(路由回应);如果不是,则首先在路由表中查找是否有到达目标节点的路由,如果有,则向源节点单播RREP,否则继续转发RREQ进行查找。

二:概述

1:AODV是为快速移动自组网(MANET)设计的数据包路由协议,是网络层协议

2:较适用于有大量节点的无线自主网络

3:按需路由协议,只有当到达某目的节点的路由不存在时,才会激起该协议发起路由请求

4:使用节点序列号机制避免环路产生

5:传输层使用的是UDP协议

6:网络各节点使用的是IP地址统一编制

7:每一个节点维护一个包含到达目的节点路由信息的路由表(路由表字段包含:目的节点IP地址、目的节点序列号、目的节点序列号的有效标志位、下一条节点IP地址、本节点到达目的节点的跳数、前驱节点列表、生存时间、网络层接口、其他的状态和路由标志位等)。

8:路由表每项只记录下一跳路由信息,而不是整条路由信息。

9:源节点和目的节点都维护各自的序列号(源节点发送路由请求RREQ/目的节点返回路由应答RREP,都要更新各自序列号。序列号是用来表示路由信息的新旧程度的。)

三:AODV路由帧格式:

  1:RREQ--路由请求帧

   2:RREP--路由应答帧

   3:RERR--路由错误帧

   4:HELLO---活跃路由链路检测帧

四:路由帧格式详解

   1:RREQ路由请求帧

在两个节点之间的路由有效、通信正常的情况下,AODV路由协议不起作用。只有当源节点S需要向目的节点D发送数据包,但又没有D节点的路由入口时,才会发起路由请求,即发送路由广播帧RREQ。当RREQ在网络中传播时,中间节点会更新各自到源节点的路由,我们称之为反向路由。RREQ请求帧中包含源节点以前记录的到目的节点的序列号,但此序列号可能不是最新(最大)的。中间节点如果有到目的节点的路由时,只有该节点记录的目的节点序列号比RREQ中的目的节点序列号更大时,才认为这条路由是有效的。(目的节点序列号>RREQ,更新。)

2:RREP路由应答帧

  当RREQ最终到达目的节点时,目的节点通过向该反向路由(即该RREQ传播路线)发送RREP应答帧,从而在该条路径的各个节点建立通向目的节点的前向路由。

只有在以下情况下才会产生RREP:该节点本身就是目的节点;该节点是中间节点,但是他有通向目的节点的活跃路径。

当RREP传播到源节点时,中间节点根据该RREP更新他们各自指向目的节点的路由信息。节点只对第一次收到的RREQ发送RREP应答帧。

3:RERR路由错误帧

发生以下情况,则广播RERR路由错误帧:一个节点检测到与一个邻居节点的链路断裂(即该邻居节点不可达);节点收到一个数据包,而该节点路由表没有志向数据包制定的目的地址的有效路由,并且该路由并非处于修复状态;节点收到来自邻居节点的RERR路由错误信息帧,该帧可能指示多个目的节点不可达。

RERR信息的发送方式:单播(将RERR信息单播发送给一个接收者)、重复单播(将RERR信息分别的单播发送给多个接收者)、广播(将RERR信息同时发送给多个接收者,使用IP地址255.255.255.255进行广播,TTL=1)。

五:路由发现和维护

  1:路由发现过程

  广播RREQ路由请求帧,中间节点更新各自到源节点的路由表,如果收到RREQ的节点不是目的节点,并且没有到达目的节点的更新的有效路由,则转发该RREQ,中间节点维护指向路由源节点的反向路由。目的节点或存在到目的节点有效路由的中间节点产生RREP路由应答帧,RREP通过之前建立的反向节点单播至源节点,源节点收到RREP应答帧,至此源节点可以向目的节点发送数据包。

  2:路由发现算法

  源节点:应用层有数据发送请求,并且指向目的节点的路由有效,直接通过该路由发送数据包,如果没有到达目的节点的有效路径,则产生RREQ广播帧,RREQ的序列号、ID字段加1,将源节点的IP,序列号、目的节点的IP、序列号等信息添加到RREQ中,广播至网络。

  中间节点:如果中间节点路由表中记录的到目的节点的路由有效,并且记录的目的节点的序列号大于或者等于RREQ中的目的节点序列号,则该中间节点可以产生路由应答帧。如果该中间节点不产生应答帧,更改RREQ中的目的节点序列号至当前最大,跳数字段加1,然后转发。

  目的节点:目的节点的序列号加1,产生RREP应答帧(包括源节点IP、目的节点IP和更新后的序列号),单播发送至源节点。

这个图我有些疑问,如果D已经知道了目的地F的路径,那么D向源节点A通知了路径,那么F还要不要通知呢?

六:路由维护

 Hello消息:Hello消息帧就是TTL=1时的REEP帧,Hello消息帧用于检测活跃路径上相邻节点的链接状况。只有当某节点位于某活跃路径之上时,他才能发送Hello消息帧。活跃路径节点以HELLO_INTERVAL为周期发送Hello消息。在DELETE_PERIOD的时间内没有收到来自邻居节点的Hello消息,则认为该链路失效;发起一次指向该邻居节点的局部修复,路由修复超时以后,路有错误信息RERR向源节点和目的节点发送,RERR在传播过程中,各中间节点删除该失效路径上相应的路由信息。

七:路由信息新旧判断

  AODV依赖网络中每个节点维护自身的序列号,源节点在广播路由请求帧RREQ之前要更新自己的序列号,即将序列号加1,目的节点在产生RREP应答帧之前也要将自身的序列号加1,每个节点在对各自的序列号加1的时候,是将其视为无符号数进行的。通过比较来自目的节点路由控制帧中的序列号SN1和本节点维护的目的节点的序列号SN2,就可以确定本链路的新旧程度。如果SN2-SN1<0(有符号数相减),说明路由表中的维护信息已过时,应将路由信息更新至路由控制帧最新的路由信息。

 

八:拥塞控制

 源节点在发送RREQ后,在规定的时间内没有收到来自目的节点的RREP时,他可以选择再次发送RREQ路由请求帧。在尝试了RREQ_RETRIES次之后,如果依旧收不到RREP,则在路由表中标记该目的节点不可达,并通知应用层。每次在重新发送RREQ请求帧时,等待RREP应答帧的时间要在原来时间的基础上乘以2,避免拥塞。
--------------------- 
转载,原文:https://blog.csdn.net/u013300635/article/details/82842332 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AODV按需路由协议 的相关文章

  • Windows Server 2016-OU组织单位日常操作

    技术无所谓贵贱 既然曾经做过就总该是要留下点什么 毕竟做技术这些年给我们留下太多太多的成长经历 总有人问这些已经很皮毛了为什么还要写 其实没那么多花哨理由 就是想着做或者不做这一块总是要对过往做个简单归总 习惯已成自然 虽然因为种种原因频繁
  • 使用http动词篡改的认证旁路

    文章目录 一 漏洞描述 二 解决建议 三 解决方法 Springboot 配置文件增加配置 编写配置类 编写过滤器 提示 以下是本篇文章正文内容 下面案例可供参考 一 漏洞描述 可能会升级用户特权并通过 Web 应用程序获取管理许可权可能会
  • C++小坑:问号表达式的输出

    文章目录 发现问题 解决方案 发现问题 本来只是想写这样一个测试是否连接成功的判断 std cout lt lt Result gt lt lt Avaliable hey you got it hell suck it lt lt std
  • DSView源码阅读笔记(持续更新中···)

    一 DSView源码阅读笔记 主线任务 将源码成功编译运行 提取示波器功能代码 添加示波器通道数量 找到接收数据部分源码 在win平台上使用qt开发环境进行代码重构 支线任务 以下笔记内容部分是猜测内容 DSView pv mainwind
  • RMS正则化 和 STD正则化 的一些见解

    研究styleganv2过程中 记录下它使用的正则化方法的一些见解 RMS 方均根 STD 标准差 stylegan 中的 pixel norm 是 RMS正则化 常见的BN层 IN层 用的是STD 在不减均值的情况下 RMS正则化公式 t
  • 针对于QT5下找不到QApplication头文件的问题界解决

    感谢前辈的总结 这里用了CTRL C CTRL V进行操作 原地址 http bbs csdn net topics 380130389 老版本 C C code 1 2 include
  • 【计算机网络】数据通信的基础知识

    通信系统的一般模型 数据通信系统的组成部分 源点 信源 产生数据 如从键盘输入 产生数字比特流 发送器 对数字比特流进行编码 如调制器 信道 是信号传输的通道 可能是一条简易的传输线路 也可能是一个复杂的网络 接收器 设备的功能与发送设备相
  • 保姆式教学-实现天空盒旋转

    目录 一 天空盒材质设置 1 在菜单栏window gt Rendering gt lighting 2 设置天空盒子材质 替换默认材质 3 认识Rotation变量 二 代码实现让天空盒转起来 在一个小Unity项目中 需要将天空盒旋转
  • 将MATLAB环境下深度学习目标检测模型部署在Jetson TX2开发板

    摘要 在MATLAB2019b环境下训练深度学习目标检测模型 利用MATLABcoder和GPUcoder生成c 代码和CUDA代码 并部署在NVIDIA Jetson TX2开发板上运行 1 利用NVIDIA SDK manager对TX
  • Python的heapq堆模块

    heapq模块 一 heapq内置模块 二 heapq 模块的使用 1 创建堆方法 2 访问堆的方法 2 获取堆的最大值 最小值方法 总结 一 heapq内置模块 Python中的heapq模块提供了一种堆队列heapq类型 这样实现堆排序
  • Java线程与操作系统线程的关系

    操作系统的线程 Linux操作系统启动一个线程 int pthread create pthread t thread const pthread attr t attr void start routine void void arg 再
  • UE4-DeltaTime(时间增量)

    UE4 DeltaTime 时间增量 Time 2020年10月14日13 33 52 Author Yblackd UE4 DeltaTime 1 结论 2 deltaTime 增量时间 3 为什么乘以 时间增量 4 注意误区 5 参考
  • Linux:Xorg占用现存过大问题

    usr lib xorg Xorg占用3692 MB显存 导致程序出现CUDA out of memory问题 解决方案 1 Ctrl Alt F1 F7 关闭图形界面 输入用户名 密码 输入nvidia smi查看GPU使用情况 发现明显
  • 中国电子信息制造产业运营模式及未来投资方向建议报告2022版

    中国电子信息制造产业运营模式及未来投资方向建议报告2022版 修订日期 2022年2月 出版单位 鸿晟信合研究院 对接人员 周文文 内容分析有删减 了解详情可查看咨询鸿晟信合研究院专员 目录 第1章 中国电子信息制造业发展环境分析 1 1
  • stable diffusion webui 教程:安装与入门

    stable diffusion webui 安装与入门 原理简介 一 源码仓库 二 模型库地址 三 在 Windows 上自动安装步骤 安装Python 安装git 下载源代码 编辑 webui user bat 四 如何打开 五 依据文
  • PHP 创建派生类对象时基类部分问题

    之前我以为在派生类的构造函数中 在调用基类的构造函数前是不能使用基类成员的 因为基类对象还未构造 其中的成员也不存在 但在以下测试中发现 在调用基类的构造函数前基类中的成员已经存在 基类构造函数只是改变了基类中成员的值 class base
  • Android Studio3.4.2新建C++项目,CMakeLists批量添加代码编译不过的坑

    上段时间升级了AS到3 4 2 最后新建了个C 的项目 然后生成的那个native lib cpp文件就可以编译 但是我的项目里 C 代码文件非常多 显然一个一个地添加太慢了 然后就想批量添加进去 但总是编译不过 真是orz 像上图这样 批
  • php微信token存储,php获取微信公众帐号access_token存储并长期使用

    header Content type text html charset utf 8 apitest new GetWeixinToken apitest gt cacheData weixin access token 获取微信公众号的

随机推荐

  • CSDN接入AIGC辅助创作,对此你怎么看?

    catalogue 写在前面 GitChat 百万粉丝计划 CSDN接入AIGC 写在最后 写在前面 哈喽 大家好 我是几何心凉 这是一份全新的专栏 得到CSDN王总的授权 来对于我们每周四的绿萝时间 直达CSDN 直播内容进行总结概括 让
  • emacs 选中对齐快捷键

    Alt H 选中段落 Ctrl Alt 对齐
  • Go并发编程

    目录 一些基本概念 并发任务单元的状态 并发任务单元 进程 线程 协程 同步 异步 并发和并行 并发编程 创建并发任务 WaitGroup 等待goroutine结束 WaitGroup Wait WaitGroup Add 获取CPU数量
  • Windows系统下zookeeper启动报错JAVA_HOME is incorrectly set

    最近在Windows系统下 下载了zookeeper 3 5 2 alpha这个版本的zookeeper 把配置文件zoo example cfg重命名为zoo cfg后 直接双击zkServer cmd文件启动结果命令行窗口闪一下就消失了
  • ssh:could not resolve hostname XXX:Temporary failure in name resolution

    ssh could not resolve hostname XXX Temporary failure in name resolution 这个有两种解决办法 1 在 etc profile 中添加如下信息 export HADOOP
  • SDN应用场景实践--指定业务带宽保障

    SDN应用场景实践 指定业务带宽保障 温州大学 12网络工程 欢迎转载 转载请注明出处 谢谢 目录 第一章 背景介绍 2 1 1实验背景
  • 10 linux系统中的日志管理

    10 linux系统中的日志管理 1 journald 服务名称 systemd journald service journalctl 默认日志存放路径 run log journalctl命令的用法 journalctl n 3 日志的
  • python快速实现简易双重弹力球小游戏

    完整代码如下 from tkinter import import random import time Creating the window window Tk window title Bounce window geometry 6
  • STM32HAL 移植MultiButton小巧简单事件驱动型按键驱动框架(裸机版本)

    目录 概述 一 使用方法 特性 按键事件 Examples 二 STM32CubeMx配置 三 Examples 四 运行结果 五 总结 概述 本篇文章介绍如何使用STM32移植 MultiButton开源框架 引用官网简述如下 Multi
  • 日志审计-syslog日志外发

    一 Linux 主机日志 不同的 Linux 版本 syslog 服务名可能为 syslog 也可能为 rsyslog 以下以 syslog 为例说明 Linux 主机所有的日志文件一般都在 var log 下 默认只是不记录 FTP 的
  • antdpro5.2.0项目开卷

    一 下载antdpro antdpro官网 刚开始想的是去github上下载项目 发现下载出来的版本是6 0 0版本 安装完依赖启动项目 左侧的菜单不出来 用react developer tools工具看 是因为左侧的菜单没有渲染出来 身
  • R语言第十一讲 决策树与随机森林

    概念 决策树主要有树的回归和分类方法 这些方法主要根据分层和分割 的方式将预测变量空间划分为一系列简单区域 对某个给定待预测的观 测值 用它所属区域中训练集的平均值或众数对其进行预测 基于树的方法简便且易于解释 但预测准确性通常较低 如图所
  • Mybatis之choose (when, otherwise)标签

    choose when otherwise 标签 有时候我们并不想应用所有的条件 而只是想从多个选项中选择一个 而使用if标签时 只要test中的表达式为 true 就会执行 if 标签中的条件 MyBatis 提供了 choose 元素
  • idea 导出文件附带文件目录结构

    安装这个插件
  • Linux学习记录之命令

    1 显示 跳转行号的基本操作 vi 文件名 打开文件后 如果要显示所有行号 使用 set nu 如果要显示当前行号 使用 nu 如果要跳转到指定行 使用 行号 例如 跳转到第10行 使用 10
  • OpenPie上榜2022年源自中国值得关注的20家新锐全球化科技品牌

    2022年6月25日 EqualOcean盘点了2022年源自中国值得关注的20家新锐全球化科技品牌 拓数派 OpenPie 成为了数据计算领域领先全球的佼佼者 OpenPie是以 Data Computing for New Discov
  • 1.3 OC与OD门(硬件基础系列)

    针对设计过程的问题 欢迎各位留言评论或群内讨论 1 3 OC与OD门 1 3 1 简介 OC Open Collector 门又叫集电极开路门 主要针对的是BJT电路 图1 21 OC门 OD Open Drain 门又叫漏极开路门 主要针
  • express中简单的使用token

    首先安装需要的插件 创建一个js文件 导入express const exprss require express 创建web服务器 const app exprss 生成token const jwt require jsonwebtok
  • 35道SpringBoot面试题及答案

    Spring Boot 是微服务中最好的 Java 框架 我们建议你能够成为一名 Spring Boot 的专家 本文精选了三十五个常见的Spring Boot知识点 祝你一臂之力 问题一 Spring Boot Spring MVC 和
  • AODV按需路由协议

    一 详细解释 AODV Ad hoc On demand Distance Vector Routing 是一种按需路由协议 当一个节点需要给网络中的其他节点传送信息时 如果没有到达目标节点的路由 则必须先以多播的形式发出RREQ 路由请求