Ad Hoc Networks TOPIC FOUR

  • 为什么不用有线MANET Routing?
    • Hidden terminal
    • Exposed terminal
  • MANET的组成分类
  • 一、DSDV(Destination Sequenced Distance Vector)
    • DBF算法(Distributed Bellman-Ford)
    • 路由表更新类型
    • 基本准则
    • 优点/缺点
  • 二、AODV(Ad hoc On-Demand Distance Vector Routing)
    • 实现步骤
      • 流程图
    • RREQ&RREP
    • RERR(Route Error)
    • 总结
  • 三、ABR(Associativity Based Routing)
    • Associativity Ticks
    • 基本准则(?)
    • 三个步骤
      • 1. 路由寻找(Route Discovery Phase)
        • BQ(Broadcast Query)
        • REPLY message
        • 数据流确认
      • 2. RRC(Route ReConstruction phase )
        • 场景一:IN moves
        • 场景二:DEST moves
        • 场景三:SRC moves
        • Concurrent Nodes Movements
        • Movement of Subnet Bridging Mobile Host
      • 3. RD(Route Deletion Phase)
  • 对比
  • 其他资料
    参考:自组织网络(Ad Hoc Network)——TOPIC 5 MANET Routing

正文:

为什么不用有线MANET Routing?

  • 路由是MANET中的主要挑战之一。
    =>节点的高流动性导致链路随意中断
    =>高动态拓扑结构。
  • 寻找到可靠的链接需要花费很多能量
  • 收敛慢 slow convergence
  • 吞吐量低 Little throughput
  • Signs of instability due to count-to-infinity problem.(?)
  • 管理中的挑战——移动性 / 带宽限制 / 资源限制,用电

Hidden terminal

问题原因:A与C不互通,因此AB通信时会受到来自C的干扰,反之亦然
解决办法:与MAC layer protocol协作,发送信道繁忙/中断信息

Exposed terminal

问题原因:S2因收到来自S1的信号,放弃与R2的通信
解决办法:?

MANET的组成分类

Table Driven(例如DSDV)

  • 保持routing table的实时性,周期性的路由更新
  • 节点的所有路由信息都会被记录,无论是否需要,以备后用
  • 大量的通信和电力消耗(Substantial signalling traffic and power consumption)

On-Demanded Driven(例如ABR/AODV)

  • source只有为了传输才会创建路由
  • 当节点需要到目的地的路由时,它将在网络中启动路由发现过程
  • 没有周期性的route更新
  • 功率高效
  • 带宽高效

一、DSDV(Destination Sequenced Distance Vector)

  • 总体来讲,DSDV协议是对传统的DV协议的一种拓展。
  • 基于DBFDistributed Bellman-Ford)算法
  • DSDV每个节点都保持着一张路由表,路由表记录了到目的节点的距离下一跳(无论此时是否有通信需求)
  • 一个顺序编号系统(给路线打上标签)用于区分已有路线新路线
  • 每个目的节点会定期广播一个单调递增的偶数序列号号码(但这会造成网络资源浪费)

DBF算法(Distributed Bellman-Ford)

路由更新的一种比较好的解决方案:

  • DBF中每个节点记录到达其他节点最短路径的下一跳

路由表更新类型

  • Full Dump:它包含所有可用的路由信息。当本地拓扑发生重大变化时(许多节点发生移动),就会发生这种情况。
  • Increment Update:只包含自上一次full dump以后的路由信息。当路由没有观察到重大变化的时候,采用这种方式。

基本准则

  • 序列号(sequence number)标识路由信息
  • 跳数为cost
  • 节点跟踪自己的时间事件发生的顺序以进行更新
  • 每个节点需要为反映其邻居信息的距离向量更新分配序列号

假设节点A节点B发送了一个信息(SeqA,DistA),B在更新前的状态是(SeqB,DistB)。在收到信息后,B将按照如下方式进行更新:

  • 当SeqA>SeqB
    序列号的更新以序列号较大的为准,距离也变成DistB = DistA + d(A, B)
  • 当SeqA=SeqB
    比较DistBDistA + d(A, B) ,选择较小的值作为新的DistB。如果需要经过A到达目的节点,将设置A为下一跳。

优点/缺点

Advantages

  1. 可以随时读取route->destinations,没有延迟
  2. 序列号的增量更新使现有的有线网络协议适应于无线网络

Disadvantages
3. 在高移动性期间,由于链路中断而导致的更新会导致沉重的控制开销
4. 要获取关于特定目标节点的信息,节点必须等待由相同目标节点发起的表更新消息。这种延迟可能导致节点上的路由信息陈旧


二、AODV(Ad hoc On-Demand Distance Vector Routing)

是基于On-Demand的路由协议,只有当到达某目的节点的路由不存在时,才会发起该协议发起路由请求,也就是有路由请求时才激活。

  • 寻找最短(最快)路由路径。
  • 传输层使用的是UDP协议。

实现步骤

  • 当源节点需要给网络中其他节点发送信息时,首先检查路由表是否有目标节点,如果没有则向邻居广播RREQRoute Request)(RREQ报文中记录着源节点目标节点网络层地址,还有当前RREQ的序列号

为什么需要RREQ序列号:避免loop;判断新鲜

-邻居节点收到RREQ,检查RREQ序列号,以判断是否首次收到当前RREQ
如果是:检查目标是否是自己,是否在自己的路由表中
------如果不是自己 ||不在:重新广播RREQ(有着相同的源和序列号),同时建立指向源节点的逆向路径(指向当前RREQ的首次发送节点,第二次及以后收到的RREQ将被丢弃)(优点:便于区分loop和new;便于建立源到目标的最短路径,因为永远只接收到达最快的请求)
----如果不是自己但是在路由表中(之前发生过通信而保留的路径):向源发送RREPRoute Reply

reverse path 保存在哪?之前保存的RREQ吗?

----如果是自己:不再重新广播,生成RREP(源与目标正好与RREQ相反)
-----某个节点收到RREP,它意识到自己是天选之子(逆向路径的一员),它将根据RREP的源和目标建立指向发送当前RREP的节点的上传路径(作为路由信息保存在路由表中),上传路径在RREP的发送过程中被建立

-最初的源节点收到RREP后,根据最终形成的上传路径发送信息

流程图

Created with Raphaël 2.3.0SRC需要发送信息RT是否有目标节点?向邻居广播RREQ邻居节点收到RREQ是否首次收到?目标是否是自己?不再重新广播生成RREP某个节点收到RREP:建立指向发送当前RREP的节点的上传路径(作为路由信息保存在路由表中)源收到RREP:根据最终形成的上传路径发送信息结束是否在RT中?向源发送RREP重新广播RREQ建立逆向路径丢弃RREQnoyesnoyesnoyesno

RREQ&RREP

所有节点都是:先转发广播,再判断目标是不是自己?否,先判断,如果是就不广播了

  • Intermediate Node也会发送一个RREP,只要它拥有比发送者以前记录的更近的路径
  • RREQ包含了源节点已知最新的目标节点的序列号
  • 没有收到RREP的节点将在一段时间后清除收到的EERQ

上传路径中的节点也会定时清除逆向路径吗?

  • 源节点在一段时间内(active_route_timeout)没有通过上传路径发送数据,上传路径将被清除

Link Failure

  • 邻居节点周期(HELLO_INTERVAL)交换hello消息
  • 当路由表条目中的下一跳链路断开时,所有活动的邻居都会被通知。
  • 链路故障通过路由错误(RERR)传播,也会更新目的地序列号

RERR(Route Error)

  • 当节点X在链路(X,Y)上无法转发数据包P(从节点S到节点D);或者在DELETE_PERIOD的时间内没有收到来自邻居节点的Hello message,认为链路失效,它产生一个RERR消息,RERR在传播过程中,IN删除该路径上相应的路由信息
  • 节点X递增缓存在节点X的D的目的序列号(此时为奇数)。当这条路径修复时,它又将序列号加1然后广播出去(整体+2)。
  • 递增的序列号N被包含在RERR
  • 当节点S收到RERR时,它使用至少与N一样大的目的序列号为D发起新的路由发现
  • 当节点D收到目的序列号为N的路由请求时,节点D将把它的序列号设置为N,除非它的序列号已经大于N

总结

RREQ: SrcID, DestID, SrcSeqNum, DestSeqNum, BcastID, TTL

Path Discovery

  • Reverse-Path Setup:为了让RREP返回源
  • Forward-Path Setup:收到RREP后,为了发送数据而建立

Path Maintenance

  • hello message:维护邻居关系
  • timer:判断是否active

No local path reconstruction:发生link failure后源节点发起新的Path Discovery,而不是局部修复(?)

两个Timer
route_request_expiration_timer:设置这个参数是为了让不在路径上的节点,丢弃这个路由数据。
route_caching_timeout:用来判断什么时候路由已经无效。此外,活跃节点的地址也会被保留,如果某路由断了,就会找到其他活跃的邻居节点。

  • 路由不需要包含在包头中。
  • 节点维护路由表,只包含正在使用的路由的条目。
  • 每个节点上每个目的地最多维持一个下一跳。
  • 序列号用于避免旧的/破损的路线。
  • 序列号防止形成路由环路。
  • 即使拓扑结构不改变,未使用的路由也会过期。

三、ABR(Associativity Based Routing)

是一种On-Demand路由协议。寻找最稳定路由。

  • 稳定性:从邻居那里收到的周期性beacon(信标)的数量
    Stability in ABR refers to :
    1)associativity ticks(beacon number), or some params to add
    2)signal strength
    3)power life

Associativity Ticks

Neighbour Table

  • Node ID
  • Ticks(在一段时间内累加beacon的数量)
  • Timer(interval of beacon period)
    越少的ticks->越差的稳定性->越高的移动性

基本准则(?)

  1. 迁移过程中,迁移方与邻居的关系发生变化。在这个不稳定的时期之后,存在一个稳定的时期,在此期间,移动主机将在一个无线单元中花费更多的休眠时间,然后再移动。
  2. 一个移动电话表示,当它与相邻的移动电话的结合度较低(associativity tick)时,其移动状态处于高水平。如果观察到高结合性标记,这意味着主机处于稳定状态,是执行ad hoc路由的理想点。

三个步骤

1. 路由寻找(Route Discovery Phase)

DEST选择最稳定的路由:

  1. 高稳定性与低移动性
  2. 稳定性相同的情况下选择cost少的路径
  3. 稳定性与cost都相同,随机选择

BQ(Broadcast Query)

  • source先进行BQ广播(Broadcast Query),发现邻居都不是DEST
  • BQ先把经过的点的associativity ticks记下来,一直携带着往下一位传输。
  • 如果有多种情况,BQ会都记下来,最后遇到dest以后用算法选出最稳定路径。
  • 节点收到BQ后,检查序列号,如果都相同就检查节点ID列表当ID列表中包含自己时,忽略当前BQ
  • 移除上一个节点的邻居信息,加入自己的邻居信息(节点IDTicks
  • DEST将在收到第一个BQ数据包后,启动timer等待更多的BQ

REPLY message

DEST的timer过期后,RSAroute select algorithm)选出最佳路径,生成REPLY message单播到

结构

实现步骤

  1. 每个中间节点收到REPLY后检查ID列表
  2. 如果在表中:位于自己左边的是REPLY发送方向,右边的是数据上传方向(放入路由表)
  3. 如果不在表中:检查源ID目标ID,清除之前收到的相应BQ

数据流确认

被动:S将A发送给B的信息作为识别
主动:D主动发送ACK

2. RRC(Route ReConstruction phase )

移动设备(源/目标/中间节点)从原有位置离开时,激活RRC

  • partial route discovery to make it locally and fast
  • RRC does not produce BQ again unless necessary – avoids excessive control overhead and disturbing unconcerned nodes.

场景一:IN moves

  • Pivoting node (上一跳的节点)生成Local Query(LQ)
    LQ包括:Pivoting node ID,目标,序列号,邻居信息(节点IDTicks),限制跳数(LQ可移动的距离)

通过total route lengthID列表,中间节点可以算出自己与目标相离的跳数
Pivoting node通过限制跳数找到能保持原有跳数的新路径

  • Pivoting node邻居收到LQ后,检查,如果没有目标的记录则移除上一个节点(此时是Pivoting node)的邻居信息,加入自己的邻居信息,将限制跳数减一,重新广播LQ
  • DEST收到第一个LQ后启动timer,等待更多的LQ
  • DEST的timer过期后,RSA(route select algorithm)选出最佳路径,生成Local REPLY单播到Pivoting node
  • Pivoting node收到Local REPLY后,新路径建立成功

场景二:DEST moves

  • Pivoting node (目标上一跳的节点)生成LQ[1](限制跳数为1)并启动timer,等待REPLY
  • 超时未收到后,ABR要求Pivoting node发送RN[0](Route Notification)到其上一跳(Second Pivoting node)或重新发送几次LQ[1](取决于具体设计)

RN[0]代表发送方向为SRC
RN[1]代表发送方向为DEST

  • Second Pivoting node发送LQ[2](限制跳数为2),直到找到通向DEST的路径,同上

  • 当Local Repair进行到total route length的一半仍未成功,不再进行Local Repair,生成RN[0]发送到SRC请求新的BQ

  • 当IN moves发生在后半程,将启动LQ;发生在前半程,直接发送RN[0]请求新的BQ,其中收到并上传RN的节点会将路由信息从RT 删除

场景三:SRC moves

  • SRC广播BQ
  • SRC原来的下一跳生成RN[1]发送到DEST,收到RN[1]的IN会删除RT里相应路由信息

Concurrent Nodes Movements

  • 结果多次调用路由重构、RRC
  • SRC将发送BQ删除无果的重建(参见后面的路由删除)
  • 最终只有一条路线重建成功。

Movement of Subnet Bridging Mobile Host

  • M的移动会导致移动网络被分割。
  • 如果现有的临时路由都在每个子网内,则不需要RRC。
  • 如果路由跨越子网,M的移动会导致网络被分割,需要进行BQ-REPLY循环。

3. RD(Route Deletion Phase)

当发现的路由不再需要时,SRC将启动路由删除(RD)广播【是一个定向广播direct broadcast】,以便所有INs将更新它们的路由表条目。

  • 当SRC不再需要路由时,启动路由删除(RD)广播。
  • 硬状态:SRC广播RD信息
    =>所有的IN都会更新路由表:释放资源,避免保留陈旧的路线
  • 软状态:当一段时间内没有与路由相关的流量活动时,基于定时器。这种方式是在路由中的每个节点进行的。

对比

低移动性或少量包裹发送时,更新是无效的

Ad Hoc Networks TOPIC FOUR <MANET Routing>【Personal Notes】相关推荐

  1. Ad Hoc Networks TOPIC FIVE <Multicast Routing>【Personal Notes】

    Ad Hoc Networks TOPIC FIVE 有线网络的多播 Source-based multicast Core-based multicast 移动网络的多播 分类 1. ODMRP(O ...

  2. Ad Hoc Networks TOPIC TWO <Wireless Network>【Personal Notes】

    Ad Hoc Networks TOPIC TWO Wireless Network GSM: FDD+TDMA GSM network architecture 情景一:网络如何识别新用户 情景二: ...

  3. Ad Hoc Networks TOPIC THREE <IP Addressing and Internet Protocol>【Personal Notes】

    Ad Hoc Networks TOPIC THREE Classful IP Address Structure Private IP addresses Router--connect diffe ...

  4. <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(五)——Plugins

    <2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(五)--Plugins 前言 DataDispatcher DDSource DDTarget IPlugin ...

  5. <2021SC@SDUSC>【Overload游戏引擎】OvCore源码模块分析(六)——SceneSystem

    <2021SC@SDUSC>[Overload游戏引擎]OvCore源码模块分析(六)--SceneSystem 前言 SceneSystem Scene SceneManager 总结 ...

  6. <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(三)——Internal

    <2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(三)--Internal 前言 Internal 1.Converter 2.EMemoryMode 3.Wi ...

  7. <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(二)——ImGui

    <2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(二) 前言 案例分析 程序框架 1.基本案例 2.实现定制绑定/定制引擎 渲染函数 总结 前言 本篇我们来分析 ...

  8. <2021SC@SDUSC>【Overload游戏引擎】OvCore源码模块分析(一)——APIComponent

    <2021SC@SDUSC>[Overload游戏引擎]OvCore源码模块分析(一)--API&Component 前言 API Component Behaviour CAmb ...

  9. <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(四)——ModulesPanels

    <2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(四)--Modules&Panels 前言 Modules Canvas Panels APanel ...

最新文章

  1. docker klee tutorial_在容器中安装新的程序
  2. App 即时通讯 SDK
  3. 【数据库】-基本特性
  4. python字符串的表示_Python字符串方法总结
  5. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python模块、包和库)
  6. ZooKeeper之(一)ZooKeeper是什么
  7. 445.两数相加II(力扣leetcode) 博主可答疑该问题
  8. scratch 极简坦克大战
  9. 线程安全之单例模式之懒汉模式
  10. Linux中ffmpeg批量压缩音频
  11. 手机自带抖音无水印视频下载功能,另推荐抖音短视频去水印网页版
  12. 一文教你如何挑选深度学习GPU
  13. 升级光伏供应链体系,供应商系统规范供应商管理,促进企业与供应商高效协同
  14. java多线程使用业务场景_Java多线程使用场景
  15. 板材眼镜大小调整方法
  16. 考财管一定要带科学计算机,注会财管吴相全老师推荐的计算器是哪个?
  17. odoo之Qweb的一些参数
  18. 一个成熟的低代码平台能有多惊艳?
  19. 计算机医学英语论文,医学英语论文范文
  20. 顾小清:教育信息化进入数字化转型重要时期

热门文章

  1. ECSHOP手机访问和电脑访问效果一样
  2. kotlin 之until,step,downTo,in等关键字
  3. (1)从服务器下载文件
  4. SSM传统民间工艺线上商城毕业设计源码181701
  5. Linux中一行命令查看网卡流量、统计网络流量的各种实现方法
  6. T100常用的Debug命令和XShell常用命令
  7. 如何避免QQ/微信中出现被禁止访问的链接域名
  8. UDP的报文结构及注意事项
  9. PMP报名后,不能参加考试怎么办?
  10. 快来看看这些创意包装二维码吧!