热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《高级计算机网络》之移动自组网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)

注:本文根据大连理工大学《高级计算机网络》课程整理,这部分是移动自组网专题。整理不易,对你有用的话点个赞吧!《高级计算机网络

注:本文根据大连理工大学《高级计算机网络》课程整理,这部分是移动自组网专题。整理不易,对你有用的话点个赞吧!



  • 《高级计算机网络》之移动自组网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)
  • 《高级计算机网络》之无线传感网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)
  • 《高级计算机网络》之物联网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)

mobile ad hoc network 移动自组网


名词汇总


  • MANET mobile ad hoc network 移动自组网
  • DSR dynamic source routing 动态源路由
  • RREQ route request 路由请求
  • RREP route reply 路由回复
  • RERR route error 路由错误信息
  • hello message 用来检测连通性的
  • LAR Location Aided Routing 位置辅助路由
  • bi-directional 半双工:可发可收,但是不能同时发和收

introduction 介绍


  • fromed by wireless hosts which may be mobile 由移动终端组成
  • without using a pre-existing infrastructure 不用预先存在的基础设施
  • routes between nodes may potentially contain multiple hops 多路跳转
  • may need to traverse multiple links to reach a destination 可能需要遍历多条链路来到达目标节点
  • mobility causes route changes 移动性导致的路由变换

why mobile ad hoc network?


  • easy of deployment 部署便捷
  • speed of deployment 部署速度快
  • decrease dependence on infrastructure 减少对基础设施的依赖

many applications 应用


  • 个人应用
    • 手机,笔记本,耳机,手环
  • 军事应用
    • 士兵,坦克,飞机
  • 城市环境
    • 出租车网络,会议室,运动场,小船,小型飞行器
  • 突发事件场景
    • 搜救,警用设施,消防救援

许多变化many variations


  • 完全对称的环境
    • 所有的节点都有相同的能力和责任
  • 非对称环境
    • 传输范围和雷达不同 transmission ranges and radios may differ
    • 不同节点的电池寿命不同
    • 不同节点的处理能力不同
    • 移动速度的不同(不同节点)
  • 非对称环境下各节点的责任
    • 只有一些节点发送报文 route packets
    • 一些节点负责领导附近的节点(节点集群)
  • 不同的移动自组网中交通设备的特性
    • 比特率
    • 时效性约束 timeliness constraints
    • 可靠性要求 reliability requirements
    • 单播,多播,位置辅助多播
  • 可能基于相同的基础设施进行合作,共存。
  • 移动模式不同
    • 人在飞机的候机室
    • 纽约的出租车
    • 孩子玩耍
    • 军事移动
    • 个人领域的网络 personal area network
  • 移动特性
    • 速度
    • 预测
      • 移动方向
      • 移动模式
    • 不同节点之间的移动缺乏一致性

*挑战 challenges


  • 无线传输范围有限
  • 无线终端的广播特性:隐藏终端问题 hidden terminal problem
  • 传输错误导致丢包
  • 移动导致路由变化
  • 移动导致丢包
  • 能量限制 batter constraints
  • 潜在的大量网络介入 potentially frequent network partitions
  • 安全问题:无线网络容易被监听 ease of snooping on wireless transmissions(security hazard)

hidden terminal problem 隐藏终端问题

在这里插入图片描述

A 和 C 无法感知到对方。


解决方案 the holy grail

圣杯:极难得到的东西


  • 一劳永逸的解决方案 a one-size-fits-all solution
    • 可能使用一个自适应的/混合的方案
  • 许多方案提出尝试解决一个子问题

假设:所有的环境都是对称的

除非特别声明 unless stated otherwise, fully symmetric environment is assumed implicitly


unicast routing 单播路由

没有任何协议能在所有环境里都表现良好。


路由协议的分类


  • 主动路由协议
    • 根据移动模式主动探测
    • 传统的link-state和distance-vector 路由协议是主动的
  • 被动路由协议
  • 混合路由协议

折中方案 trade off


  • 路由发现的延迟
    • 主动式路由协议低延迟:因为路由一直保持连接
    • 被动式高延迟:因为X到Y的路由只有在X尝试发送到Y的时候才开始建立
  • 路由发现或保持的开销
    • 主动式开销大:因为要保持路由的更新
    • 被动式开销小:只有必要的时候才进行路由探索
  • 哪一个方法达到更好的折中取决于流量和移动模式

路由协议一览

重点关注:

洪范式路由发现过程,

动态源路由发现过程(路由缓存),

位置辅助路由发现过程,

以及DREAM算法(实际上也是基于地理位置的,圆锥区域发送),

查询本地化(在旧的路径的基础上最多加入K个新节点),

还有对于广播风暴的应对算法(距离,计数,延迟转发,dropout),以及查询本地化(最多K个节点,减少洪泛范围)

按需距离矢量路由AODV(路由信息保存在节点上,单一路径路由,需要的时候才连接)

链路反转算法(部分反转,全反转,可能会有多条路径)


洪泛式数据传输 flooding for data delivery

  • 发送节点S发送数据包P给所有的邻接结点
  • 每个收到P的节点也转发给各自的邻接节点
  • 序列号码用来防止传输相同的包两次
  • 目标节点D不用转发package

洪泛式数据传输的优点


  • 简单
  • 可能的高效性(低开销):当信息传输率足够低的时候,可能会比其他协议有效,因为路由发现和保持的开销增加。
    • 例如:当传输的数据包比较小的时候,而此时两次连续传输之间的路由结构发生了变化
  • 潜在的数据传输的高可靠性
    • 因为传输到目标节点有多条路径

洪泛式数据传输的缺点


  • 高开销
    • 数据传输给许多不必要的节点
  • 可能的低可靠性
    • 洪泛使用广播,而广播在不明确增加开销的前提下是很难保证可靠性的。 IEEE802.11 MAC是不可靠的
    • 例如,节点J和K同时发送数据包给D导致数据包丢失,导致冲突。

改进:洪泛式控制包传输 flooding of control packets

  • 许多协议只是洪泛控制包,而非数据包
  • 控制包用来进行路由发现
  • 被发现的路由可能用来发送数据包
  • 洪泛控制包的开销被分摊了 ? 如何分摊:理解,可能是和之前的洪泛数据包作比较?

动态源路由 dynamic source routing(DSR)

初始节点S 通过洪泛 发送 RREQ(route request 路由请求包)

每个经过的节点都将自己的标识加入到控制包中(慢慢的形成一条路径)

目标节点D收到第一个RREQ之后,根据RREQ中的路由反转,发送RREP(route reply 路由回复包),RREP包含了S到D的路由信息。


  • RREP 只能在半双工传输链路中传送,因此发送RREQ的时候应该只发送给满足半双工传输路径的节点(即发给他,他也能发给我,全双工是能同时收发,半双工是双向收发,但不能同时)
  • 如果路径中的节点允许非全双工(非对称)那么可能目标节点还需要发现到S的路由。(即不能反转S到D的路由,还得重新寻找回去的路)
    • 如果路由D已经知道了到S的路由,那么RREP会经过这个路由发送

源节点S收到目标节点D的RREP之后


  • S将会捕获S到D的路由信息
  • S发送给D的数据包中,在头部将会包含整条路由信息(hence the name source routing)
  • 中间负责转发的节点根据数据包头部的souce route来决定转发给哪个节点

什么时候执行路由发现:当节点S要发送数据包给D但是不知道S到D的路径的时候。(废话)


改进DSR优化:路由缓存 route caching

在路由发现过程中可以充分利用所有涉及的节点已知的信息。

路由缓存的使用

情景一:当节点S获知到节点D的路由中断的时候,它会从路由缓存中找到一条可行的路由。否则就发送RREQ进行路由发现。

情景二:中间节点X如果收到了一个路由请求并且知道从X到目标节点的路由,那么X可以直接发送RREP给S。


  • 可以加速路由发现
  • 可以减少路由请求的传输

路由缓存需要注意的


  • 过期的路由缓存会影响性能stale caches
  • 随着时间流逝和终端的移动,已经获知的路由信息可能会无效/过期。
  • 发送者可能需要多次尝试才能找到一条好的路由

DSR优点


  • 只有必要的节点之间才进行路由保持连接
  • 路由缓存能够进一步减少路由发现的开销
  • 一个路由发现过程可能会产生许多到目标节点的路由。因为中间节点从本地缓存中进行回复。

DSR缺点


  • 路由长度过长,包的头部过大(可能会导致负载降低,即包头比数据还大)
  • 路由请求信息洪泛可能会到达所有的节点
  • 需要避免相邻节点之间的路由请求冲突:在转发RREQ之前设置随机延迟(即,隐藏终端问题)
  • 冲突加剧:如果大量的节点用本地缓存路由信息进行回复
    • 路由回复风暴问题 route reply storm problem(后面有风暴问题的解决方案)
    • 当一个节点获知别的节点有更短的路由RREP已经发送的时候就不用再发RREP了,这样可以缓解路由回复风暴问题。
  • 一个中间节点的本地缓存路由信息可能是过时的,而它用这个信息进行回复会**污染其他的缓存。**polluteing other caches
  • 这个问题可以通过引入某种净化机制来缓解。
  • 一些可行的净化方案
    • 静态超时 static timeouts设置超时时间(时间到了就清除路由缓存信息,或者使用一个队列,将比较久的信息清除)
    • adaptive timeouts based on link stability 根据链接稳定性设置动态的超时时间,例如链接不稳定的时候超时时间短(链路不稳定的状态下,路由信息失效更快)

洪泛控制包的时候


  • 如何减少路由请求洪泛的范围
    • LAR 位置辅助路由
    • Query localization 查询本地化
  • 如何减少冗余的广播
    • 广播风暴问题

位置辅助路由LAR

Location Aided Routing

位置可以通过GPS获得,或者其他什么方式。

期望区域Expected Zone:即目标节点可能的区域范围,基于之前的目标节点的位置信息以及目标节点移动的速度

请求区域Request Zone:包含目标节点期望域和发送节点的区域

LAR算法:


  • 只有在请求域内的节点才转发请求(请求域外内的节点收到请求即丢弃,不转发,这样能缩小洪泛范围)
  • 在请求头中显式地包含了路由请求的请求域(即物理划定的范围,节点知道自己的物理信息,能判断自己是否在该范围内)
  • 每个节点都必须知道自己的位置以决定是否转发收到的请求
  • 如果Sender初始化的请求域太小以至于没找到目标节点,那么一段时间后重新初始化一个较大的请求域(请求范围),最大的范围可能包含整个网络(相当于完全洪泛)
  • 其余的部分同DSR(动态源路由协议)

LAR优化:动态请求域 adaptive request zone


  • 每个节点可以根据自己掌握的信息更改请求域(请求域逐渐缩小)
  • 更新后的请求域使用的是最新的、较为准确的位置信息,可能比原始的请求域小

LAR优化:模糊请求域implicit request zone


  • 之前的模式中,路由请求显式地包含了请求域,这次不包含而是由节点决定是否转发
  • 如果节点X相对于节点Y更接近目标节点,那么节点X就转发节点Y的请求
  • 动机是:尽可能地让路由请求在每一次转发之后更接近目标节点
  • 基于这样一个假设:在路由发现过程中,节点X的位置Y是知道的

LAR优点


  • 减少了路由请求洪泛的范围
  • 减少了路由发现的开销

LAR缺点


  • 每个节点都必须知道自己的物理位置
  • 没有考虑在信号传输过程中可能存在的障碍物 obstructions for radio transmissions

Distance Routing Effect Algorithm for Mobility(DREAM)

移动的距离路由效应算法

注意:LAR洪泛的是控制包,而DREAM洪泛的是数据包,不需要事先知道路由(不需要发起路由发现的过程)


  • 利用位置信息和速度(同LAR)
  • 直接洪泛数据包(不同于LAR)
    在这里插入图片描述

如上图所示,S发送数据包给在圆锥区域内的所有邻接节点(它知道目标节点的大概方位,但是不知道路径)


  • 收到数据包的节点A在一个更小的圆锥区域内转发请求(它也知道目标节点大概的方位,但是不知道路径)
  • 所有收到数据包的节点都如同A一样操作直到找到目标节点

前提是,所有的节点都要知道自己的位置以及邻接节点的位置


  • 节点需要周期性地广播自己的物理位置
  • 广播的范围应该也是圆锥区域(而不是全网),所以距离自己近的节点更新频繁,距离远的节点更新就慢。
  • Distance Effect:距离远的节点相对于距离近的节点以较慢的角速度移动
  • 使用TTL来控制广播信息/数据包发送的距离。如果TTL短,发送的距离也短,TTL(time to live存活时间)到了就认为失败。

Relative Distance Micro-Discovery Routing(RDMAR)

相对距离微发现路由


  • 发送节点先评估到目标节点的跳数
  • 根据以上的评估来设置TTL
  • 评估依据是:之前的目标节点到发送节点之间的物理距离以及传输范围

Gerographic Distance Routing(GEDIR)

地理距离的路由


  • 假设目标节点的位置是已知的
  • 每个节点都知道自己的邻接节点的位置
  • 每个节点转发包给距离自己最近的邻接节点
  • 但是可能会存在不可达的情况,因为局部最短路径全局不一定是最短的,甚至是不可达的
  • 如果相同的边遍历了两次,认为路由发现失败(不可达),即C发给G,G又发给C。

Routing with Guaranteed Delivery

保证交付的路由


  • 基于GEDIR改进:保证转发,即提供一条确定存在的源到目标的路径
  • Guarantees delivery(using location information) provided that a path exists from source to destination
  • 必要的时候路由可以绕道,回溯。routes around obstacles if necessary

Query Localization查询本地化

  • limits route request flood without using physical information 在不需要物理信息的前提下限制洪泛范围
  • route requests are propagated only alone paths that are close to the previously known route 路由请求的转发只基于之前已知的路由路径
  • the closeness property is defined without using physical location information 所谓的最近定义不基于物理位置信息
  • path locality heuristic(启发式的,探索式的):look for a new path that contains at most K nodes that were not present in the previously known route 寻找一条新的路径包含最多K个新节点,这K个节点并不包含在最近已知的路径中。
  • route request is forwarded only if the accumulated route in the route request contains at most k new nodes that were absent in the old route,this limits propagation of the route request.
  • 只有当路由请求头中的节点包含至多K个新的节点(之前的路由中没有出现过的节点)时,本次路由才会转发,这大大限制了路由转发的数量。

查询本地化的优势


  • 在不用物理位置信息的前提下减少了路由转发的开销
  • 可以在旧路由的邻近区域搜索新路由,在有障碍物的情况下表现更好

查询本地化的缺点

可能会产生比LAR更长的路由,最短的路由可能包含了超过K个新节点,所以找到的路由不一定是最短的。

在这里插入图片描述

看这个例子,之前已知道的路由SAD(旧的路由),现在D移动了位置变成了右边的样子。

这样只需要在旧的路由的基础上,最多再洪泛两个节点,即SABE,或者SABC.失败了就增大K。

而F节点不会转发请求,因为加上F节点就是新增三个节点了,这样能够控制洪泛的范围


广播风暴问题 Broadcast Storm Problem

  • 冗余:一个节点可能会收到许多节点的相同信息
  • 概率模式:一个节点第一次收到请求的时候,它以概率P来决定是否转发
  • 或者:不同节点延迟转发,采取碰撞避免机制。如果同时转发到一个节点,很容易会导致碰撞。wait a random delay when channel is idle(无事可做的)
  • 计数模式:如果一个节点E接收到超过K个邻居的路由请求,不进行转发。(这意味着这个节点E周围已经有很多洪泛数据了)
    • 直觉上认为这K个邻居已经转发给这个节点E的所有邻居了。
  • **基于距离模式:**如果E接收到节点Z的请求转发,而节点E和Z的距离小于d,则E不进行转发。
    • 直觉上认为:E和Z太近了,E和Z覆盖的区域相差不大,即便E进行了转发,所能通知到的新节点也寥寥无几。

广播风暴问题总结


  • 概率转发,延迟转发,计数模式,距离模式
  • 洪泛会导致:碰撞,冗余
  • 碰撞问题:通过延迟转发解决,waiting for a random interval before propagating the flood
  • 冗余问题:通过选择性的转发来解决

Ad Hoc On-Demand Distance Vector Routing (AODV) 按需距离矢量路由协议

总结:只有需要的时候才发起路由请求,路由信息保存在每个节点上,每个节点只保存到下一跳的信息。


  • 动态源路由头部包含了路由信息,这导致头部越来越大,可能会让负载有效率降低,即头部比负载信息还大。
  • AODV将路由表保存在节点,这样数据包就不用包含路由信息了
  • AODV和DSR一样只有节点之间需要通信的时候才保持连接
  • RREQ发送的过程同DSR
  • 当一个节点转发请求的时候,它反转路径指向源节点,AODV假设是全双工的
  • 当目标节点接收到请求的时候,它根据反转的路径发送RREP
  • 一个中间节点可能会发送RREP提供一个最新的到目标节点的路径。
  • 但是这个中间节点发送RREP的概率比DSR低,因为节点S发起的RREQ设置了一个更大的序列号,而中间节点的序列号较小无法发送RREP。(当序列号足够大时才认为它掌握的信息是最新的)

img

timeouts


  • 一个路由表维护的逆向路径在一段时间后(timeout 超时时间)将会被清除
    • timeout的设置应该能保障RREP回到发送节点
  • 一个路由表维护的逆向路径在一段时间内(active_route_timeout 活动路由时间)没有使用,将会被清除。
    • 即便这个路劲信息依然是有效的

Link Failure Reporting 连接失败报告

Route Error


  • 当节点X无法转发数据包P的时候,它就生成一个RERR消息
  • 节点X加大目标节点的序列号,序列号将被包含在RERR中
  • 节点S收到RERR之后,重新开始路由发现过程,这时对目标节点设置的序列号至少比N大(每一跳之后序列号就增加)

AODV总结


  • routes need not be inclued in packet headers包头不用包含路由
  • nodes maintain routing tables containing entries only for routes that are in active use节点只需要维护需要使用的路由表实体
  • at most one next-hop per destination maintained at each node 最多只需要维护一跳的信息就行(一个节点只需要维护到邻居的路径即可)
    • dsr may maintain serveral routes for a single destination(DSR需要维护很多,可能是整条完整的路径)
  • unuserd routes expire enve if topology dose not change 即便网络拓扑结构没有发生改变,那些长期未使用的路由也会被清除

Link Reversal Algorithm 链路反转算法

  • 首先要求链路是bi-directional 半双工的(可发可收,但是不能同时发和接收)
  • 为每一个目标节点维护一个有向无环图(Directed acyclic graph DAG)
  • 除了目标节点,任何没有出路的节点都将入的链路反向
  • 注意到之前反向过得邻居还会再次被反向:每次都是整个网络满足条件的节点反向。 full reversal method 全链路反向方法
  • partial reversal method 局部链路反向算法:之前反向过得不用再反向

链路反向算法的优点


  • link reversal methods attempt to limit updates to routing tables at nodes in the vicinity of a broken link
    • partial reversal method tends to be better than full reversal method
  • each node may potentially have multiple routes to a destination 可能会有多条路径到目标节点

缺点


  • need a mechanism to detect link failure(需要引入检测链路失败的机制)
    • hello messages may be used 发送hello message来检测连通性
    • but hello message can add to contention
  • if network is partitioned(分割),link reversal continue indefinitely (陷入死循环)

推荐阅读
author-avatar
哈哈1991188
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有