3.2 Ad Hoc 网络路由协议

article/2025/10/7 2:08:21

Ad Hoc 网络路由协议

Ad Hoc 网络路由面临的问题

在设计Ad Hoc 网络路由协议时,我们首先要明确可能面临的问题:
(1)路由信息不易获得:定期交换路由信息的开销大、网络资源有限,并且必须被所有节点共享、节点资源(电池、CPU)等有限、也许不能接收到所有的路由信息。
(2)路由信息不完整:移动和分区很难将信息分发到一个没有固定成员网络的所有节点。
(3路由信息可能过期:不可能连续地或者立即交换信息、节点随时移动、无线传播变化大。

MANET(Mobile Ad Hoc Net)对路由协议的需求

收敛迅速、提供无环路由、控制管理开销小、对终端无过高要求、支持单向信道、尽量简单实用。

为什么不能把传统的路由协议直接用于Ad Hoc 网络呢?

(1)Ad Hoc 网络具有动态变化的网络拓扑结构,可能有节点加入、离开、移动的情况,这样的话路由算法还未收敛,网络拓扑结构就发生变化。
(2)Ad Hoc网络的系统带宽、能量等资源是有限的,传统的路由协议会周期性地通告,这样的话会严重降低系统的性能。
(3)Ad Hoc需要间歇性的网络分割,传统的路由协议用于Ad Hoc网络容易形成回路。
(4)Ad Hoc是支持单信道无线传输的,而传统路由协议一般假设链路是对称的。

Ad Hoc 路由协议的性能指标

(1)端到端数据吞吐量和延时 ,反映了数据的传输质量。
(2)路由获取时间-有数据要发送到发送出去的时间。
(3)乱序分组发送率-衡量无连接路由协议应用于需要有序发送的传输层协议。
(4)路由协议的效率-路由控制消息/发送数据。

Ad Hoc 路由分类结构

在这里插入图片描述
、、

在这里插入图片描述

|| 表驱动(Table Driven)/ 先应式(Proactive)路由

what? 每个节点维护到网络中所有其它节点的路由、所有节点都已存在并且随时可用。
feature? 路由延时小,但是路由开销大。

@ DSDV(Destination-Sequenced Distance Vector)

※ 先应、逐跳转发、DV

※ 传统DV的不足?
开销大;可能出现环路——浪费网络带宽、为消除环路需要额外开销、 对拓扑变化适应慢。

※ feature?
(1)利用目的地序列号来解决无穷计数问题。
(2)路由更新——周期性通告、检测到链路变化就突发性通告。
(3)简单易实现(RIP的优点)
(4)用于对称链路。

※ 如何解决无穷计数问题呢?

思考环路问题解决的关键是什么??是传递信息的不全,无法区别路由表项的新旧。

解决办法:设置目的序列号——每个节点设置序列号(路由通告携带序列号),各节点只保存最新序列号的目的表项。

在这里插入图片描述
、、
在这里插入图片描述

※ 通告机制 ?
(1)周期性通告与突发性通告——尽快通告路由变化
(2)整体通报与增量通报(减少路由开销)——局部采用增量通报
(3)限制不稳定的路由通报,防止路由震荡。

※ 什么是路由震荡以及如何解决这种问题??

在这里插入图片描述
在这里插入图片描述

@ FSR : Fisheye State Routing Protocol

L-S、减少路由开销。

※ 基本思想: 局部拓扑、了解远地拓扑。不使用flooding。时间驱动代替事件驱动。

※ Fisheye技术: 不同距离节点的链路状态路由表项的交互频率不同:与近距离节点的链路状态的交互频率高,维护精确的拓扑信息;与远距离节点的链路状态的交互频率低,拓扑不精确。

在这里插入图片描述

※ 存在问题??

(1)路由不是全局最优——远离目的节点时,路径信息不全面准确。
(2)不适用于规模较大的网络——收敛时间长、存在许多不稳定的路由。

|| 按需(On-demand)/ 反应(Reactive) 路由

what? 源节点根据需要通过路由来发现过程来确定路由,控制消息采用洪泛(Flooding)方式。

feature?路由延时大,但是路由开销小。

※ 实现技术: 源路由(分组携带完整的路由信息)
逐跳(Hop-by-Hop)路由

比如 DSR、AODV、DYMO协议

※ 什么是数据洪泛??有什么优缺点??

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
优点:
(1)简单
(2)当信息传输需求足够低时,可能比其他协议更高效——因为其他协议所产生的显式路由发现、维护的开销是相对较高的
(3)潜在的更高的数据传输可靠性——因为分组可能会通过多条路径传输到目的地。

缺点:
(1)潜在的高开销——数据分组可能会被传输到太多并不需要接受它的节点。
(2)潜在的数据传输的低可靠性——潜在的冲突

所以,基于上述内容,许多协议执行控制分组洪泛,而不是数据分组:
控制分组是发现路由的,发现路由后用于发送数据。

@ DSR Dynamic Source Routing

在这里插入图片描述

※ DSR中的假设

  • 所有节点都愿意转发分组到网络中的其他节点
  • 自住址网络不会太大(如果路由非常长,分组首部将超过有效负荷)
  • 节点的速度是缓慢的(如果节点的速度很快,本地的路由缓存将过期)
  • 所有节点都能收听到(混杂)不节能

※ 操作步骤

(1)节点S洪泛路由请求(RREQ:Route Request),RREQ包括
<目的地址、起始地址、路由记录、请求ID>
(2)当节点Y收到一个RREQ时,可能进行如下三种操作:

  • 丢弃——若<起始地址、请求ID>已经在它的表中。
  • 返回一个包括从起始地到目的地路由的路由响应分组——如果Y已经是目的地或者Y的路由缓存中存在一个到目的地的路由
  • 不是以上情况的话就在RREQ的路由记录中附上自己的地址并重新广播RREQ。
    (3)目的节点D收到该RREQ后,会回送RREP(Route Reply),RREP中包含RREQ中的地址列表。当节点S收到RREP后,会将RREP中的路由缓存起来,在节点S发送一个数据分组到D时,整条路由将包含在分组首部中。

注意: 如果单向的链接是允许的,那么RREP可能需要一个从节点D到节点S的路由发现(除非节点D已经知道一条到节点S的路由),在D的路由请求中会捎带路由响应。

※ 路由维护 ??

也可以分为逐条维护、端到端的维护。

※ 路由优化??

每个节点通过任何方式学习到一个新路由都会将其缓存起来
比如 在这里插入图片描述

但是问题在于: 过期的缓存无论从资源方面还是时间方面都会使系统增大开销。

  • 加速路由发现 ????
    在这里插入图片描述
    路由缓存的优点: 可以减少路由请求的传播(从K到Z的响应RREP限制了RREQ的洪泛),加速路由发现。

※ summary

DSR优点:

  • 只需要在交流节点之间维护,减少路由维护的开销。
  • 路由缓存可以进一步减少路由发现的开销。
  • 一个单一的路由发现可能产生多条路由到目的地,因为中间的节点根据本地缓存进行响应。

DSR缺点:

  • 分组首部大小随路由长度的增大而增大,因为源路由开销大。
  • 路由请求的洪泛可能会到达网络中的所有节点
  • 邻居之间生成的路由请求可能会产生碰撞(在转发RREQ之前要产生插入的随机延迟)
  • 路由响应风暴:节点根据自己本地的缓存产生了太多的路由响应。
  • 过期的缓存将增大开销。

@ AODV (Ad Hoc on-demand DV)

许多文献称之为DSDV的反应式版本;是逐条转发协议的,中间节点根据目的地址确定“下一跳”地址;采用标准IP报头:源地址,目的地址;

下面介绍AODV的路由行为——路由发现(请求、应答)、路由维护

※ 路由请求???

  • 源点:
    广播到指定节点的路由请求消息(RREQ)
    <源地址、请求ID、目的地址、源序列号、目标序列号、跳计数>

  • 中间节点:
    step1:比较源地址+请求ID,重复则丢弃。
    step2:如果是目的节点,直接回复RREP
    step3:查找自己的路由表,如果有到达目的节点的路由,且对应的序列号大于或等于RREQ中的目标序列号(最新的已知),回复RREP。
    step4:创建到源节点的“下一跳”表项(假设为双向链路),记录跳数,构造反向路由,启动反向路由定时器。
    step5:向目的节点转发(广播)路由请求,跳计数加1。

※ 路由应答???

  • 目的节点向源节点发送路由应答(RREP)消息

    RREP中包含序列号(RREQ中的源和目标序列号在RREP中调换)、跳数计数(初始为0),RREP沿着RREQ消息的路径反向传输。

  • 中间节点:

收到RREP以后,创建到目的节点的“下一跳”表项,记录跳数,建立向前路由。RREP的“跳数计数”字段加一,沿着反向路径转发消息。清除相应的反向路由定时器,将反向路由加入路由表

  • 源节点:

选择最小跳数的路径(下一跳)
AODV只维护一条路由。

注意:

源序列号是保证反向路由的有效性,因为在反向路径中,源序列号就是目的序列号。

目的序列号是保证前向路由的有效性,用于告知中间节点当前源节点所了解的关于目的节点的路由信息(前向)的最新的序列号。

反向路由定时器是为了去除那些没有使用到的反向路由。

在这里插入图片描述

※ ※ 路由维护???

  • 路由表项 : 目的地址、前继、下一跳、跳数、序列号
  • 更新的依据: 序列号大或者短路由
  • 每个节点维护非递减的序列号——在RREQ、RREP消息中发送,每个新消息加2,作为路由表项的“时间戳”,保留最新消息
  • 若中间节点表项的序列号大,或者序列号相同但到目的节点的距离更短,则向源节点发送RREP(路由表项设置生存期定时器,到期删除该路由,用到时再复位;反向路由定时器超时,还未收到相应RREP,则删除相应路由)
  • 产生路由错误消息(RERR)会向前继发送

※ 性能比较 ???

  • 报文长度—— DSR长于AODV
  • 路由开销 ——拓扑稳定时,DSR可以发现多条路由;拓扑不稳定时,DSR多条路由可能都是“脏”路由,不一定优于AODV。当然因为DSR具有路由缓存功能,所以DSR有更少的RREQ广播,但是会有更多的RREP以及RERR。

那么怎样清除脏路由呢??DSR没有定时机制;AODV使用定时机制

  • 错误报告——DSR通知目前route上的前继节点以及源节点。AODV主动通知所有用过此link的前继节点。
  • 节点较少,低负荷,节点移动性小——DSR,有备选路由;反之,DSR的备选路由可能都是错误的,DSR对链路错误的反应速度慢。

在这里插入图片描述

|| battle一下~

在这里插入图片描述

|| 两者杂交体——混合路由

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

|| 其他分类

地理定位辅助路由协议——能提高路由性能,适合拓扑结构高度动态变化(比如车联网),缺点是实现成本高,路由协议比较复杂。

典型的有 LAR、DREAM、GPSR、DV-MP、FORP等

多路径路由协议——优点是以低成本提供足够的冗余度,平衡网络负载,提高分组交付的可靠性,缺点是复杂度高,开销大。

典型的有 AOMDV、SMR、MP-DSR、MSR、TBRPF、CHAMP。

作业1

  • 什么是先应式路由协议?什么是反应式路由协议?他们各有什么特点?

先应式(Proactive)路由协议:
定义——沿用传统的分布式最短路径协议(距离向量或者是链路状态,所有节点周期性地更新“可达”信息),每个节点维护到网络中其他节点的路由,所有的路由都已经存在并随时可以使用。
特点:路由延时小,但是路由开销大。

反应式(On-demand)路由协议:
定义——源节点需要路由发现过程来确定路由,控制消息采用洪泛方式。
特点——路由延时大,但是路由开销小。

  • 什么是源点选路?与逐跳转发相比,源点选路有什么优缺点?

通过洪泛路由请求信息确定好一条完整的转发路径。发送节点在路由分组首部封装完整的路由信息,中间节点按照分组首部的源路由来转发分组。

优点: 可以获得多条路由,网络拓扑稳定时,开销较小,更加可靠。
缺点:
(1)在网络规模较大时,会导致分组较长,增大开销。
(2)一条路径出错时,需要反馈到源节点进行处理,对错误的反应时间比较长。
(3)网络拓扑不稳定时,通过源点选路获得的多条路由可能都是“脏”路由。

  • DSDV和FSR都是表驱动路由协议,它们有什么区别?

DSDV是距离向量路由协议,FSR是链路状态路由协议。

  • DSDV如何避免环路,提高“坏消息”传播速度?

Destination sequence DV,通过设置目的序列号,每个节点设置序列号(路由通告携带序列号),各节点只保存最新序列号的目的表项。正常情况下序列号都是偶数,当某一节点检测到邻居链路失效时,将其目的序列号加一变为奇数,更新后通告其他节点。

  • FSR用什么方法减少路由开销?

与近距离节点的链路状态交互频率高,维护精确的拓扑信息;与远距离节点的链路状态交互频率低,拓扑不精确。关注局部拓扑,了解远地拓扑。

作业2

  • DSR和AODV都是按需路由,它们有什么区别?

(1)路由方式上,DSR是源点选路,AODV是逐跳转发。
(2)所维护路由上,DSR维护多条路由,AODV只维护一条。
(3)链路上,DSR支持单向或双向链路,AODV仅支持双向链路。
(4)定时机制上,DSR无定时机制,AODV有定时机制来消除无效路由。
(5)出现错误时,DSR仅在有分组需要发送时通知目前route上的前继节点以及源节点,AODV主动通知所有用过此条链路的前继节点。
(6)表项方面,DSR中包含从源节点到目的节点的完整路由,AODV表项中有目的地址、前继、下一跳、序列号等。

  • AODV为什么只能支持双向链路?DSR为什么可以支持非对称链路?

因为路由发现过程中,创建到下一跳的表项时,会构造反向路由,同时启动反向路由定时器用以消除无效路由。路由应答RREP只能沿着RREQ消息的路径反向传输,所以AODV只能支持双向链路。

DSR路由请求RREQ在路由发现完毕后会携带整条路由的完整信息,回复RREP时可以进行再次路由发现,只要路由请求中携带路由的完整信息即可,所以DSR可以支持非对称链路。

  • 为什么AODV里面要设置一个反向路由定时器?

因为AODV源节点只保留一条路径,路由发现的过程中RREQ可能到达了很多节点,但是路由应答RREP只经过一条路径,设置反向定时器可以消除那些RREP没有经过的无效路由。

  • 高度动态的网络拓扑下,DSR和AODV谁更加合适?为什么?

AODV更加合适。
(1)因为网络的高度动态变化,DSR维护的多条路由可能已经是“脏”路由。
(2)在错误处理上,DSR遇到链路错误时需要汇报到源节点,对错误的反应时间较AODV长。

  • 在混合路由中,区域内和区域间各自适合什么类型的路由,为什么?

区域内采用表驱动路由
因为区域内交互频繁,表驱动路由的路由表已经创建,数据发送不需再去路由发现,只需定期的维护,因此区域内数据交互的时延会比较小,效率比较高。

区域间采用按需路由。
因为区域间交互较少,需要发送数据时才去进行路由发现,这样可以减少系统开销。


http://chatgpt.dhexx.cn/article/W8NMYDMS.shtml

相关文章

Ad hoc网络路由协议概述2——表驱动路由协议(1)DSDV协议(Destination-sequenced distance vector protocol)

目录 1 DSDV协议的先导协议: DV协议的困境 2 解决DV协议计数到无穷的困境 2.1 毒性反转 (Poisoned reverse) 2.2 增加序列号 3 DSDV协议 3.1 基本流程 3.2 广播机制 3.2.1 交换路由信息的两个时刻 3.2.2 交换路由信息的两种方式 3.2.3 序列号不同如何选择 3.2.4 序列…

Ad hoc网络路由协议概述4——按需路由协议(2)AODV协议 (Ad-hoc on-demand distance vector algorithm protocol)

目录 1 一点前言 2 路由发现 2.1 相关概念 2.2 AODV的路由发现过程 2.3 与DSDV协议的对比 3 路由表管理及维护 3.1 更新路由表的策略 4 AODV协议的特点 4.1 优点 4.2 缺点 1 一点前言 在之前提过的DSR协议中&#xff0c;采用了源节点路由方式&#xff0c;每个数据报…

计算机网络实验四:配置网络路由

1、相关知识点 1.1 路由器的一般知识&#xff1a; 路由器是局域网与广域网之间进行互联的关键设备。通过它不仅可以互联不同协议、不 同物理接口的网络&#xff0c;还能选择数据传送的路经&#xff0c;并能阻隔非法访问。它在异构网互联能力、 拥塞控制能力和网段的隔离能力等方…

linux 默认路由 主机路由 网络路由

route命令 oute 命令的输出项说明 输出项 说明 Destination目标网段或者主机Gateway网关地址&#xff0c;”*” 表示目标是本主机所属的网络&#xff0c;不需要路由Genmask网络掩码Flags标记。一些可能的标记如下&#xff1a; U — 路由是活动的 H — 目标是一个主机 G — 路…

计算机网络路由转发题

1&#xff09;、目的地址和142.150.64.0/24明显不匹配&#xff0c;所以只有B、C、D&#xff0c;把相应的网络地址算出来 B-网络地址&#xff1a;142.150.71.128 C-网络地址&#xff1a;142.150.71.128 D-网络地址&#xff1a;142.150.0.0&#xff0c;把目的地址逐条的和子网…

各种路由的概念-直连路由、网关路由、主机路由、网络路由等

各种路由的概念 路由的分类 直连路由在添加的时候使用的是出接口&#xff08;dev&#xff09; 网关路由在添加的时候使用的是下一跳&#xff08;gw&#xff09; 主机路由的目的地址是一个完整的主机地址&#xff08;host&#xff09; 网络路由的目的地址是一个网络地址&#…

片上网络路由算法综述

一、 片上网络概述 在半个多世纪以来&#xff0c;半导体工业一直遵循着“摩尔定律”发展&#xff0c;即集成电路上可容纳的晶体管数目&#xff0c;约每隔两年便会增加一倍。截至目前&#xff0c;处理器中的晶体管数量最多已达到了上百亿。晶体管数量的增加一方面极大提升了单核…

网络——路由

路由 路由是路由器控制层面的工作&#xff08;路由器另一工作是数据层面上的转发&#xff09;&#xff0c;所以路由的学习需要从路由器入手。 借鉴学习&#xff1a;路由器工作原理 设备-路由器 路由器含义结构功能工作原理工作在OSI模型的网络层上的具有多个输入端口和多个输…

网络基础之路由详解

目录 IP路由基础 路由协议的分类 路由选路规则 静态路由 缺省路由 OSPF开放式最短路径优先协议 IP路由基础 路由器 特点 路由器的一个接口就是一个网段&#xff0c;一个网段就是一个广播域 路由器的一个接口用于一个MAC地址 路由器可以隔离广播域 广播报文无法穿越…

计算机网络:路由的概念及其分类

面对“路由”二字&#xff0c;很多人的第一个反应就是路由器。而路由器只是实现“路由”这一功能的工具罢了。路由器可以说是一台简化的电脑&#xff0c;它具有操作系统&#xff0c;接口&#xff0c;输入输出&#xff0c;存储器等等。正因为如此&#xff0c;现代路由器和电脑一…

网络路由相关的知识

配置静态路由 手工配置的路由信息&#xff0c;包括网络地址 子网掩码和下一跳地址。在没有配置静态路由的情况下&#xff0c;这两个子网中的计算机a、b之间是不能通信的。从计算机a发往计算机b的ip包&#xff0c;在到达router后&#xff0c;router不知道如何到达计算机b所在的…

网络路由知识大全

一、 如果ping域名的时候出现ping:unknown host xxx.xxx 但是ping IP地址的时候可以通的话 可知是dns服务器没有配置好&#xff0c;查看一下配置文件/etc/resolv.conf&#xff0c;里面是否有nameserver xxx.xxx.xxx.xxx&#xff0c;比如使用dns服务器 nameserver 8.8.8.8&am…

java解析rtc_RTC Java API 学习笔记

1 使用RTC Java API进行登录&#xff1a; Login的步骤分为以下&#xff1a; 1 初始化启动RTC的平台TeamPlatform&#xff1a;TeamPlatform.startup(); 2 获取RTC repository的连接 ITeamRepository teamRepository TeamPlatform.getTeamRepositoryService().getTeamRepository…

JS控制元素的显示和隐藏

开发工具与关键技术&#xff1a; DW、前端 作者&#xff1a;梁锦豪 撰写时间&#xff1a;2019/1/16当我们想要通过事件来控制元素时&#xff0c;我们可以用JavaScript来实现 下面是通过鼠标移入&#xff0c;移出事件来控制元素的显示与隐藏的例子&#xff1a; 首先&#xff0c;…

如何通过JS判断一个元素是否显示、隐藏

如何通过JS判断一个元素是否显示、隐藏 文章目录 如何通过JS判断一个元素是否显示、隐藏通过display是否等于none来判断通过jquery的:hidden/:visible 伪类来判断说明 通过display是否等于none来判断 通过判断当前元素的display的值来判断当前元素是否是可见状态。只能用displa…

js显示隐藏

其实这边我是新学的一点知识虽然不多但是新手还是比较容易上手的 <div id"panel"><button class"head">什么是jQuery?</button><div class"content">jQuery是继Prototype之后又一个优秀的JavaScript库&#xff0c;它是…

CSS隐藏元素的方法

隐藏元素之后&#xff0c;它在页面的行为如何&#xff1f; HTML文件如下 很简单&#xff0c;就一个div <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&…

javascript隐藏和显示元素

使页面元素隐藏和显示可以有两种方式&#xff1a; 方式一&#xff1a;设置元素style属性中的display var t document.getElementById(test);//选取id为test的元素 t.style.display none; // 隐藏选择的元素 t.style.display block; // 以块级样式显示方式二&#xff1a;设…

JavaScript控制元素(标签)的显示与隐藏

使用JavaScript有多种方式来隐藏元素&#xff1a; 方式一、使用HTML 的hidden 属性&#xff0c;隐藏后不占用原来的位置 hidden 属性是一个 Boolean 类型的值&#xff0c;如果想要隐藏元素&#xff0c;就将值设置为 true&#xff0c;否则就将值设置为false 【HTML hidden 属性…