AODV 协议1.概述Nokia 研究中心开发,自组网路由协议的RFc 标准,它是 DSR和 DSDV的综合,借用了DSR 中路由发现和路由维护的基础程序,及DSDV 的逐跳(Hop-by-HoP)路由、目的节点序列号和路由维护阶段的周期更新机制,以 DSDV为基础,结合 DSR中的按需路由思想并加以改进。
它应用于无线自组织网络中进行路由选择的路由协议 , 它能够实现单播和多播路由。
该协议是自组织网络中按需生成路由方式的典型协议。
用于特定网络中的可移动节点。
它能在动态变化的点对点网络中确定一条到目的地的路由,并且具有接入速度快,计算量小,内存占用低,网络负荷轻等特点。
它采用目的序列号来确保在任何时候都不会出现回环,避免了传统的距离向量协议中会出现的很多问题。
AODV最初提出的目的是为了建立一个纯粹的按需路由的系统。
网络中的节点完全不依赖活动路径,既不维护任何路由信息,也不参与任何定期的路由表交换。
节点不需要发现和维护到其他节点的路由,除非两个节点需要通讯或者节点是作为中间转发节点提供特定的服务来维护另外两个节点的连接性。
提出: With the goals of minimizing broadcasts and transmission latency when new routes are needed, we designed a protocol to improve up on the performance characteristics of DSDV in the creation and maintenance of ad-hoc networks.2.特点优点:(1)基本路由算法为距离向量算法,但有所改进,思路简单、易懂。
(2)按需路由协议,而且节点只存储需要的路由,减少了内存的需求和不必要的复制。
(3)采用 UDP 封装,属于应用层协议。
(4)支持中间节点应答,能使源节点快速获得路由,有效减少了广播数,但存在过时路由问题。
(5)通过使用目的序列号来避免路由环路,解决了传统的基于距离向量路由协议存在的无限计数问题。
(6)具有网络的可扩充性。
(7)快速响应活跃路径上断链。
缺点:在无线个域网中,拓扑结构相对简单,网络的规模相对较小,节点的位置不固定,对它的设计首先要考虑的因素是简单、节能等问题。
3.路由发现(a)广播 RREQ路由请求帧(b)中间节点更新各自到源节点的路由表(c)如果收到 RREQ 的节点不是目的节点,并且没有到达目的节点的更新的有效路由,则转发该 RREQ(d)中间节点维护指向路由发起节点(源节点)的反向路由(e)目的节点或存在到目的节点有效路由的中间节点产生RREP路由应答帧f)RREP通过之前建立的反向节点单播至源节点g)源节点收到 RREP应答帧,至此源节点可以向目的节点发送数据包4.路由维护Hello 消息Hello 消息帧其实就是 TTL=1 时的 RREP 帧。
TTL( Time-To-Live) 为 IP 数据包字段,表示该帧的传播跳数。
Hello 消息帧用于监测活跃路径上相邻节点的链接状况。
例如:当活跃路径上某节点 ALLOWED_HELLO_LOSS* HELLO_INTERVAL毫秒时间内没有收到该路径上的邻居节点发送来的 Hello 消息帧或其他任何帧时,该节点就认为与它与邻居节点的链路已断。
并且只有当某节点位于某活跃路径之上时,它才能发送Hello 消息帧。
5.路由信息新旧判断AODV 依赖网络中每个节点维护自身的序列号,源节点在广播路由请求帧 RREQ 之前要先更新自己的序列号,即将序列号加1,目的节点在产生 RREP 应答帧之前也要将自身的序列号加 1,每个节点在对各自的序列号加 1 的时候是将其视为无符号数进行的。
通过比较来自目的节点路由控制帧中的序列号 SN1 和本节点维护的目的节点的序列号 SN2 就可以确定本链路的新旧程度,进而做相应处理。
如果SN2-SN1<0(有符号数相减) ,说明路由表中维护的信息已过时,应将路由信息更新至路由控制帧中最新的路由信息。
6.拥塞控制源节点在发送 RREQ 后,在规定的时间内没有收到来自目的节点的RREP 时,它可以选择再次发送 RREQ 路由请求帧。
在尝试了 RREQ_RETRIES次之后,如果依然收不到RREP,则在路由表中标记该目的节点不可达,并通知应用层。
每次重新发送RREQ 请求帧时,等待RREP 应答帧的时间要在原来时间的基础上乘以 2,避免拥塞。
DSR 协议1.概述动态源路由协议是一种按需路由协议,它允许节点动态地发现到达目的节点的多跳路由。
源路由是指在每个数据分组的头部携带有在到达目的节点之前所有分组必须经过的节点的列表,即分组中含有到达目的节点的完整路由。
用于 Ad-hoc 网络中,一个移动节点需要通过其他节点的帮助把数据包传到目的节点,能快速适应节点移动时路径的变化,能耗低2.特点优点:(1)采用源路由机制、避免了路由环路。
(2)通过采用路由缓存技术,避免了在每次路由中断时都需要进行路由发现,减少路由请求信息对信道的占用(3)中间节点不必存储转发分组所需的路由信息,网络开销较少缺点:(1)随着路经跳数的增加,分组头长度线性增加、开销大(2)路由请求分组 RREQ采用洪泛发向全网扩散,导致网络负荷大(3)来自邻居节点的 RREQ分组在某个节点可能会发生碰撞,解决办法是:在发送RREQ分组时引入随机时延(4)当源节点发送路由请求分组 RREQ时,可能会收到多个节点缓存的到达目的节点的路由信息,引起竞争。
解决办法:若某节点听到其它节点发出的RREQ分组中路由信息含有较少跳数,此节点停止发送。
(5)当源节点发送路由请求分组 RREQ时,可能会收到多个节点缓存的到达目的节点的路由信息,但有些路由信息可能是过时的。
解决办法:引入定时器、链路断的情况应进行全网洪泛。
3.路由发现(洪泛路由)当节点要传送数据分组时,源节点先检查缓存中是否有到信宿的路由信息,若有非过期的路由则可直接采用,否则泛洪广播发送路由请求分组。
(1)初始广播路由请求(2)中间节点接收后,都进行以下的处理:如果之前收到过请求,丢弃请求;如果本节点地址在请求中,丢弃请求;如果到达目的节点,返回路由应答。
否则,将自己的地址加入分组的路由记录并转发给相邻节点(3)若是目的节点则返回路由应答分组,当源节点接收到路由回复后,路由发现过程结束。
若 RREQ分组在最近收到的“历史 RREQ列表”中存在、或路由纪录中包括本节点,此节点将删除该“路由请求”分组,防止循环处理和出现路由环路。
4. 路由维护建立路由后, 源节点将进行数据传送, 在此过程中需要对已建立的路由进行维护。
源节 点通过路由维护机制可以检测出网络拓扑的改变, 从而知道到目的节点的路由是否可用。
当 路由维护探测到某条使用中的路由出现了问题时 ,就会发送 RERR 路( 由错误报文 )给源节点,源节点在收到该 RERR 后,就会从它的路由缓存中删除所有包含该故障链路的路由,并重新 发起一个路由发现过程。
DSR 与 ADOV 的比较1 算法基本类型: AODV 采用逐跳路由的算法,每一个节点仅仅是记住下一跳; DSR 使用源路由算法,每一个节点记住整个路由。
2 路径支持: AODV 单一路径; DSR 多路径支持,一条路径损坏可以使用路由缓存中其他路 径。
3 周期性广播: AODV 为了维护路由还周期性地发送 Hello 分组; DSR 不需要周期性广播。
4 逻辑结构:二者均是平面式路由,协议中所有节点地位平等。
5 单向链路支持: AODV 依赖于对称性的链路; DSR 可以处理非对称性链路的网络。
6 路由获取时机: DSR 首先检查缓存是否存在未过期的到目的节点的路由 ,如果存在 ,则直接使用可用的路由 ,否则启动路由发现过程; AODV 只要需要到新节点的路径就启动路由发现过 程。
Flooding (洪泛法)1.概述Flooding 是指从任何节点通过一个路由器发送的信息包会被发送给与该路由器相连的所有其他节点(除了发送信息包出来的那个节点)。
源节点首先通过网络将数据副本传送给它的每个邻居节点,每个邻居节点再将数据传送给各自的除发送数据来的节点之外的其他。
如此继续下去,直到数据传送目标节点或者数据设定的生存期限(TTL)为 0 为止。
2.特点优点:实现简单,容错能力强,不需要为保持网络拓扑信息和实现复杂的路由发现算法而消耗计算资源,适用于健壮性要求高的场合。
缺点:(1)存在信息爆炸问题,即出现一个节点可能得到一个数据多个副本的现象(2)会出现部分重叠现象,如果处于同一观测环境的两个相邻同类传感器同事对一个事件作出反应,二者采集的数据性质相同,数值相近,那么,这两个节点周围的邻居节点将收到双份数据副本(3)造成盲目使用资源,即扩散法不考虑各节点能量可用状况,因而无法做出相应的自适应路由选择。
3.算法模型任一节点 n i 接收到报文的动作可用如下伪代码描述。
每个报文都包含T TL(报文存活时间)、DATA(数据)等内容。
(1)Sink和其他节点广播自己的位置信息和序列号;(2)源节点广播报文;(3)若收到报文的节点为 Sink 则报文已传送到目的地了;否则转( 4);(4)若报文的 TTL-1=0 或节点已收到过该报文,则转( 5),否则转( 6);(5)节点丢弃该报文;(6)节点将报文转发给它所有的邻居节点。
Gossiping 协议1.概述Gossiping 协议是对 Flooding 协议的改进,节点将产生或收到的数据随机转发给一个或者若干个相邻节点,避免了以广播形式进行信息传播的能量消耗,避免了内爆,但增加了时延,且无法避免重叠问题。
在每次选取下一跳节点时,并没有采用路径优化相关算法,因此所选择的路由往往不理想,这将导致数据包的端到端延时增加或者生命周期在没到达目的节点之前就结束 .2.算法节点 n 通过将消息 m 发送给随机选择的 B 个邻居来完成本次消息的传播: When (node p receives a message m from node q)If(p has received m no more than Ftimes)p sends m to B uniformly randomlychosen neightbors that p knows havenot yet seen mB 表示消息在一次传播中最多可以转发的邻居节点的数目;参数 F 决定了节点向它的邻居转发同一消息的次数,例如 F 为 1,节点只向它的 B 个邻居转发第一次收到的消息 m,随后到达的消息 m 将被忽略。