aodv路由协议分析

合集下载

初探基于跨层机制的无线路由协议(AODV)的分析与仿真

初探基于跨层机制的无线路由协议(AODV)的分析与仿真

初探基于跨层机制的无线路由协议的分析与仿真摘要:AdHoc无线网络具备无需基础设施、临时组网、动态网络拓扑和自组织的特点,在国内外得到了显著的重视。

也正是由于无线网络的这些特点,存在很多问题,成为推广无线网络的瓶颈,亟需提高AdHoc无线自组网的性能。

为此,我们提出并研究了结合跨层设计和基于AODV 路由协议的改进维护路由的算法的技术方案,并基于NS2进行模拟和仿真,提出高效合理的改进方案。

关键词:AdHoc网络AODV协议跨层改进仿真1前言随着Internet、无线通信技术的发展,Adhoc无线网络技术越来越受到人们的重视。

Adhoc 无线网络是由众多的无线移动节点组成,这些节点不需要无线网络基础设施的支持,自发地以多跳的方式快速地建立通信联系,组织成为一个临时的网络。

为了与现有的网络互联互通,Adhoc无线网络采用了TCP/IP体系结构,然而,Adhoc无线网络自身的特性如无中心控制节点、节点的移动导致串路和网络拓扑快速变化、节点资源和网络带宽受限等问题严重影响了Adhoc无线网络的性能,决定了Adhoc无线网络不能完全照搬使用现有网络的协议栈,在多种提高AdHoc无线网络性能的方法中,跨层设计是非常行之有效的一种。

另外,由于无线链路的不稳定性和邻居节点的移动性,各个节点对其邻居信息的掌握和管理变得困难,整个网络拓扑呈现高度的动态特征。

这样就需要适合AdHoc无线网络这种特殊环境的路由协议和路由算法。

我们研究了一种基于AODV路由协议(AdhocOn-demandDistantVector,按需距离矢量路由算法)的改进,主要在于改进维护路由的算法。

并且,通过仿真软件NS2进行模拟和仿真,研究出高效合理的改进方案。

2AdHoc网络及其路由协议2.1AdHoc网络的概况AdHoc网络是由一组带有无线收发装置的移动终端组成的一个多跳的临时性自治系统。

网络中的移动终端具有路由和报文转发功能,可以通过无线连线构成任意的网络拓扑。

AODV简介

AODV简介

2 AODV路由发现
正向路由的建立:RREQ分组最终将到达一个节点,该节点 可能是目的节点,或者这个节点由到达目的节点的路由。 如果这个中间节点有到达目的的路由项,它就会比较路由 项里的目的序列号和RREQ分组里的目的序列号的大小来判 断自己已有的路由是否是比较新的。如果是就对收到的 RREQ分组做出响应,否,则更改RREQ中的目的节点序列号 至当前最大,跳数字段加1,然后继续广播。 在RREP转发回源节点的过程中,沿着这条路径上的每一个 节点都将建立到目的节点的正向路由,也就是记录下RREP 是从哪一个邻居节点来的地址以及记录下RREP中目的节点 的最新序列号。
链路断广播RRER:
4 AODV优点
使用序列号机制,避免路由环路 支持中间结点应答,减少了广播数 节点只存储需要的路由,减少了内存的要求和不必要的复 制。 时延较大,不支持单向信道。
2 AODV路由发现
AODV借鉴了DSDV中的列号的思想,每一个节点都维持了独立序列 号计数器,利用这种机制就能有效地防止路由环的形成。当源节点想 与另外一个节点通信,而它的路由表中又没有相应的路由信息时,源 节点通过向自己的邻居广播RREQ(Route Requests)分组来发起一 次路由发现过程。 反向路由的建立:当RREQ分组从源节点转发,沿途所经过的节点都 要自动建立到源节点的反向路由。节点通过记录收到的第一个RREQ 分组的邻居地址来建立反向路由。
AODV路由发现:
3 AODV路由维护
(1)与活动路由无关的节点移动,并不影响信源到信宿 的寻径。 (2)如果信源节点移动导致路由不可用,则由信源重新 发起路由发现过程。 (3)当信宿节点或活动路由的中间结点移动,导致链路 中断,则链路的"上游节点“主动发送一个RERR,该 RERR的信宿大于其所获取的信宿序列号,跳计数设为无 穷大,并广播到所有活动邻居。

无线mesh网络aodv路由协议分析

无线mesh网络aodv路由协议分析

湘潭大学学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权湘潭大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日摘要无线Mesh网络(Wireless Mesh Network ,WMNs)具有快速部署和自组织等特点,这使得它非常适应于临时的按需网络部署场景。

WMNs对于热点地区的基础设施网、以及能提供低成本回程的传感器网和偏远农村蜂窝网基站,都是一种具有很大吸引力的技术。

WMNs的自组织性、自愈性、有效的移动用户管理和跟踪机制,高容量和高速率的特性,迫切需要高性能的路由算法。

近年来,路由算法成为WMNs发展中的一个研究热点。

WMNs从移动Ad Hoc 网络中借鉴了许多路由选择方法作为路由的解决方案,但是这些方法都不太理想或者没有达到性能的最优化,且没有利用到WMNs自身的特点。

本文提出了一个改进的分层AODV路由协议(IH-ADOV),它表现出了更好的可扩展性和网络性能,当一条路由丢失时,它可使寻找替代路由的路由开销得到降低。

此外,在IH-AODV中,我们还提出了一种新技术,即最新链路发现机制。

它旨在对加入簇的节点进行快速路由发现,能够提高路由发现的速度和效率。

对于路由维护,这种技术也非常有用。

在新算法中,本论文定义静态节点为Way Point(WP)节点,其他节点称为Cluster Member(CM)簇成员节点。

AODV协议详解

AODV协议详解

AODV协议详解1 AODV 报文格式AODV 有三种基本的协议报文类型:RREQ 报文、RREP 报文和RRER 报文。

1.1 RREQ 报文a. 对RREQ 的处理接收到RREQ 的结点做如下处理:(1)创建一个表项,先不分配有效序列号,用于记录反向路径。

(2)如果在“路由发现定时”内已收到一个具有相同标识的RREQ 报文,则抛弃该报文,不做任何处理;否则,对该表项进行更新如下:I.下一跳结点=广播RREQ 的邻居。

II.跳数=RREQ 报文的“跳计数”字段值。

III.设置表项的“过时计时器”。

(3)如果满足以下条件,则结点产生“路由回答报文”RREP,并发送到信源;否则更新RREQ 报文并广播更新后的RREQ 报文。

I.该结点是信宿。

II.结点的路由表中有到信宿的活动表项,且表项的信宿序列号大于RREQ中的信宿序列号。

(4)更新RREQ 报文并广播更新后的RREQ 报文I.信宿序列号=本结点收到的信宿相关的最大序列号。

II.跳计数加1。

1.2 RREP 报文(1)信宿结点产生RREP执行如下操作:I.如果收到相应的RREQ 的信宿序列号与信宿维护的当前序列号相等,则信宿将自己维护的序列号加1,否则不变。

II.跳计数=0。

III.定时器值。

(2)中间结点产生的RREP执行如下操作:I.本结点获取的该信宿的最大序列号。

II.跳计数=本结点到信宿的跳数(查相应表项即可得到)。

III.更新本结点维护的“前向路由表项”的下一跳和“反向路由表项”的前一跳b. 对RREP 的处理结点对接收到的RREP 作如下处理。

(1)如果没有与RREP 报文中的信宿相匹配的表项,则先创建一个“前向路表”空表项。

(2)否则,满足如下条件对已有表项进行更新。

条件:I.现有表项的信宿序列号小于RREP 报文中的序列号。

II.现有的表项没有激活。

III.信宿序列号相同,但RREP 报文的“跳计数”值小于表项相对应的值;通过更新或创建,产生一个新的前向路由。

路由协议-aodv

路由协议-aodv

#3节点仿真Ad hoc AODV的例子# 环境设定set val(chan) Channel/WirelessChannel ;#信道类型set val(prop) Propagation/TwoRayGround ;#无线传输模块类型set val(netif) Phy/WirelessPhy ;#网络接口类型set val(mac) Mac/802_11 ;# MAC类型set val(ifq) Queue/DropTail/PriQueue ;#接口队列类型set val(ll) LL ;#链路层类型set val(ant) Antenna/OmniAntenna ;#天线类型set val(ifqlen) 50 ;#IFQ中最大报文数set val(nn) 3 ;# 移动节点数目set val(rp) AODV ;# 路由协议set val(x) 500 ;# 场景长xset val(y) 400 ;# 场景宽yset val(stop) 150 ;# 仿真结束时间set ns [new Simulator]#创建一个模拟对象set tracefd [open aodv.tr w]#打开一个trace file记录数据包的传送过程$ns trace-all $tracefdset windowVsTime2 [open win.tr w]set namtrace[open aodv.nam w] #创建.nam文件记录nam的trace数据$ns namtrace-all-wireless $namtrace $val(x) $val(y)set topo[new Topography]#建立一个Topography对象在拓扑边界范围内运动$topoload_flatgrid $val(x) $val(y)#设定场景的长宽尺寸#创建nn移动节点[$ val(nn)] 并将它们附加到信道。

基于AODV的安全路由协议研究的开题报告

基于AODV的安全路由协议研究的开题报告

基于AODV的安全路由协议研究的开题报告一、选题背景和意义移动自组织网络(MANETs)由一组自主移动节点组成,可以随时随地在没有固定网络基础设施的情况下进行通信。

它在无线电频段、战场、灾难等场合的通信中具有广泛的应用。

由于MANETs中的节点数量较大、节点资源受限、节点位置不稳定、网络质量不稳定等因素,使得MANETs 的安全性得到了广泛关注。

路由是MANETs中至关重要的任务,在很大程度上决定了网络的可靠性和效率。

目前,动态源路由协议(DSR)和自适应距离向量协议(AODV)是MANETs中最广泛使用的两种路由协议之一。

然而,由于它们的基于无限制的广播策略,会导致“黑洞攻击”、“虫洞攻击”、“篡改攻击”、“拒绝服务攻击”等安全问题,并且易受恶意攻击者攻击。

因此,设计高效、安全的路由协议是MANETs中的一项重要任务。

本研究将基于AODV协议,研究如何设计一种安全路由协议,以保证MANETs网络的安全性和可靠性,有利于推动其在各种场景中的广泛应用。

二、研究目标1、对基于AODV协议的前沿研究进行综述,分析其优缺点;2、对AODV协议进行安全性分析,阐述可能存在的攻击方式和安全风险;3、提出基于多因素安全要素的路由协议,并进行实验验证,评估其在网络安全性和性能方面的表现;4、将所研究的协议与已有的路由协议进行比较和评估,证明其在网络安全性和性能方面的优越性。

三、研究内容和方法本研究的具体内容如下:1、综述基于AODV的安全路由协议研究现状,比较其优缺点,分析存在的问题和未来发展趋势;2、分析AODV的安全性,确定可能出现的攻击类型、攻击手段和安全风险;3、基于AODV协议,设计一种高效的安全路由协议,采用多因素安全要素(如身份认证、加密技术、防火墙、访问控制等)进行安全控制,保证协议的安全性和性能;4、使用NS-3模拟器或其他相关工具进行研究渗透测试和模拟实验,在不同的实验场景下评估所设计的路由协议的性能和安全性;5、在测试得出的数据基础上,与已有的路由协议进行比较,并进一步评估所设计的协议的性能和优越性。

AODV协议详解

AODV协议详解

AODV协议详解AODV(Ad-hoc On-Demand Distance Vector)是一种用于自组织无线网络的路由协议。

它是基于距离矢量路由算法的一种改进,并在无线传感器网络(WSN)和移动自组网(MANET)中广泛应用。

AODV的主要目标是在网络中实现有效的路由,同时减少网络资源的消耗。

AODV协议通过以下方式工作。

当一个节点需要向目标节点发送数据时,它首先广播一个路由请求(RREQ)消息以查询目标节点的路由信息。

接收到这个消息的节点会更新路由表,并向源节点发送一个路由回复(RREP)消息,该消息包含到目标节点的路径信息。

在此过程中,源节点可以选择最佳的路径,并将其添加到路由表中。

当源节点收到RREP消息后,它就可以开始向目标节点发送数据了。

在途中,如果网络拓扑发生变化(例如节点移动或节点失效),AODV协议会更新路由表以反映这些变化。

在节点间的通信过程中,AODV协议使用一种称为序列号的技术来区分新的路由信息和旧的路由信息,并避免出现循环路径。

每次路由更新时,序列号都会递增,并在路由表中进行记录。

另外,AODV协议还支持源路由。

源路由是指由源节点指定的完整路由路径,数据包将按照此路径传输。

这意味着源节点可以控制数据包的传输路径,可以避免路径和路由发现的开销,并减少网络资源的消耗。

但是,源路由在网络中可能会面临节点失效、链路中断和网络拓扑变化等问题,因此需要进行有效的处理。

在AODV协议中,节点还可以进行路由维护。

路由维护是指节点在路由表中更新、维护和删除路由信息以反映网络状态的变化。

AODV协议使用一些机制来处理链路中断、节点失效和网络分割等问题。

当节点发现路由不可用时,它会向源节点发送一个路由错误(RERR)消息来通知源节点,并更新自身的路由表。

总结起来,AODV协议是一种用于自组织无线网络的强大路由协议。

它具有快速路由发现、低资源消耗和多路径支持等特点,可以在无线传感器网络和移动自组网等环境中提供高效的数据传输。

Aodv路由协议报告

Aodv路由协议报告

Aodv路由协议报告本周主要工作是分析aodv协议代码的具体实现过程,根据代码总结出aodv中比较重要的知识一.Aodv数据结构路由表项{rt_dst:目的节点ip地址rt_seqno:目的节点序列号,目的节点有效序列号为偶数rt_hops:跳数rt_req_cnt:发rreq的次数,不得大于rreq_retries次rt_req_timeout:路由请求超时时间,只有超过此时间才能再次发出rreq的aodv消息.rt_req_last_ttl:上次请求生命期,即发送rreq时ip头中ttl的值rt_disc_latency[]:每次请求的延时rt_last_hop_count:上次使用的路由跳数rt_nexthop:下一跳ip地址rt_expire:路由寿命rt_flag:路由状态标志(RT_UP,RT_DOWN,RT_IN_PAIR)rt_prelist:路由前驱列表hist_index:本次发送的rreq次数}邻居列表{Expire:超时时间Id:邻居ip地址}广播列表{expire:过期时间id:广播iddst:广播源节点ip地址}二.节点定时器btimer:广播定时器,用来调用id_purge()函数,顺序查看广播表中的每个条目,比较过期时间是否大于当前时间,如果大于,则调用id_delete()函数删除此广播htimer:hello定时器,用来调用sendhello()函数,发送hello消息ntimer:邻居列表定时器,用来调用nb_purge()函数,顺序查看邻居表中的每个条目,如果过期时间超过当前时间,则认为此邻居不可达,删除此邻居条目rtimer:路由缓存定时器,用来调用rt_purge()函数,顺序查看每条路由的是否过期,如果没过期且有效,则看是否缓存队列中是否有要发送到目的节点的分组,如果有则按路由转发,并将路由过期时间重置。

如果路由过期且有分组待转发,则发送rreq消息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分类:ns仿真2012-04-23 10:52 171人阅读评论(0) 收藏举报delete脚本活动工作
1 AODV 报文格式
AODV 有三种基本的协议报文类型:RREQ 报文、RREP 报文和RRER 报文。

1.1 RREQ 报文
a. 对RREQ 的处理
接收到RREQ 的结点做如下处理:
(1)创建一个表项,先不分配有效序列号,用于记录反向路径。

(2)如果在“路由发现定时”内已收到一个具有相同标识的RREQ 报文,则抛弃该报文,不做任何处理;否则,对该表项进行更新如下:
I.下一跳结点=广播RREQ 的邻居。

II.跳数=RREQ 报文的“跳计数”字段值。

III.设置表项的“过时计时器”。

(3)如果满足以下条件,则结点产生“路由回答报文”RREP,并发送到信源;否则更新RREQ 报文并广播更新后的RREQ 报文。

I.该结点是信宿。

II.结点的路由表中有到信宿的活动表项,且表项的信宿序列号大于RREQ中的信宿序列号。

(4)更新RREQ 报文并广播更新后的RREQ 报文
I.信宿序列号=本结点收到的信宿相关的最大序列号。

II.跳计数加1。

1.2 RREP 报文
(1)信宿结点产生RREP
执行如下操作:
I.如果收到相应的RREQ 的信宿序列号与信宿维护的当前序列号相等,则信宿将自己维护的序列号加1,否则不变。

II.跳计数=0。

III.定时器值。

(2)中间结点产生的RREP
执行如下操作:
I.本结点获取的该信宿的最大序列号。

II.跳计数=本结点到信宿的跳数(查相应表项即可得到)。

III.更新本结点维护的“前向路由表项”的下一跳和“反向路由表项”的前一跳
b. 对RREP 的处理
结点对接收到的RREP 作如下处理。

(1)如果没有与RREP 报文中的信宿相匹配的表项,则先创建一个“前向路表”空表项。

(2)否则,满足如下条件对已有表项进行更新。

条件:
I.现有表项的信宿序列号小于RREP 报文中的序列号。

II.现有的表项没有激活。

III.信宿序列号相同,但RREP 报文的“跳计数”值小于表项相对应的值;通过更新或创建,产生一个新的前向路由。

更新:
IV.下一跳=广播RREP 的邻居结点。

V.信宿序列号=RREP 中的信宿序列号。

VI.跳计数加1。

(3)按照上述的过程,任何转发RREP 的结点,都记录了到信宿的下一跳,当RREP到达信源时。

结点地址匹配,不再转发RREP,信源到信宿的前向路由已经建立起来了。

信源可以沿这条前向路径进行数据传输。

1.3 RRER 报文
邻居间周期性的互相广播“Hello”报文,用来保持联系,若在一段时间内没有收到“Hello”报文,则认定为链路断。

例如当结点X、Y 之间链路产生断路使数据无法通过此条链路传至信宿,则结点X 会产生RRER 报文向信源报告此情况。

RRER 通过广播形式传送,维护路由表的结点收到此报文会更新路由表(将X、Y
间的路由设成无效),并转发RRER 报文。

2 协议从接收到一个分组开始的基本流程
AODV 路由协议主要包括以下几个组件:
1、协议实体
2、路由表
3、定时器
(1)广播定时器
(2)周期Hello 报文广播定时器
(3)用于邻居管理的定时器
(4)用于路由缓存的定时器
(5)用于本地修复的定时器
(6)缓存广播ID 的定时器
4、日志记录器
5、路由缓存队列
当协议接收到一个分组,即recv(Packet*, Handler*)函数被调用,函数根据分组类型调用不同的处理函数进行处理。

1、如果是协议分组,则将分组的ttl 值减1,并调用recvAODV(Packet*)函数进行处理。

recvAODV 函数再根据分组的不同类型来调用不同的函数进行处理。

(1)如果接收到的是路由请求分组,则调用recvRequest(Packet*)函数进行处理。

如果该分组由节点自身产生或已经接收过的,会被节点丢弃,并结束处理。

否则,节点将缓存该分组的序列号,并将该分组发送来的路径添加到反向路由中,转发相应分组。

然后,节点根据该分组的目的地址进行判断并调用不同函数进行
处理。

如果节点自身即为目的节点,则调用sendReply(nsaddr_t, u_int32_t,nsaddr_t, u_int32_t, u_int32_t, double)函数进行响应。

如果节点不是目的节点,但知道通往目的节点的路由,则调用sendReply 函数进行响应,并在源和目的前驱列表中分别插入到源和目的的下一跳节点。

否则,不能直接响应该请求,
将跳数加1,并调用forward(aodv_rt_entry*, Packet*, double)函数转发该分组。

在sendReply 函数中,节点首先查找到达目的节点(即发送路由请求分组的节点)的路由,创建并填充分组,然后调用Scheduler::instance().schedule()函数来发送该分组。

(2)如果接收到的是路由响应分组,则调用recvReply(Packet*)函数进行处理。

节点首先查询前往分组目的节点的路由,如果不存在则新增一条路由项。

然后,节点更新到该目的节点的路由项,并发送所有相关分组。

如果节点为目的节点则更新路由发现延迟并发送所有相关的分组。

如果节点不是目的节点,但知道通往目的节点的路由,则将跳数加1,调用forward 函数转发该分组,并修改响应的前驱列表。

如果节点不是目的节点,也不知道通往目的节点的路由,则丢弃该分组。

(3)如果接收到的是路由错误分组,则调用recvError(Packet*)函数进行处理。

节点首先清除所有受到影响的路由项,丢弃所有受影响的分组。

然后,如果前驱节点中存在会受该路由错误影响的分组,则调用sendError(Packet*, bool)函数转发该分组。

sendError 函数创建并填充分组,然后调用Scheduler::instance().schedule()函数来发送该分组。

(4)如果接收到的是Hello 消息分组,则调用recvHello(Packet*)函数进行处理。

节点会将该邻居的信息添加到邻居列表中(或更新该邻居的信息)。

2、如果是数据分组,则节点丢弃已经发送过或者ttl 为0 的分组,并结束处理。

如果分组是由上层协议产生的,则节点添加IP 报头。

随后,节点根据目的路由进行不同处理。

(1)如果目的节点路由未知,则调用rt_resolve(Packet*)函数进行路由解析和转发。

如果目的节点路由在路由表中存在,则直接调用forward 函数进行转发。

如果分组是由节点自身产生的,则将分组保存到缓冲队列中,并调用sendRequest(nsaddr_t)函数查询目的路由。

如果目的路由已知,但正在进行本地修复,则将分组保存到缓冲队列中。

否则,丢弃该分组,并调用sendError 函数报错。

(2)如果目的节点路由已知,则调用forward 进行转发。

节点丢弃ttl 为0 的分组,并根据分组类型决定下一步操作。

如果接收到的是数据分组,且自身为目的节点,则通过调用PortClassifier 对象的recv(Packet*, Handle*)函数将分组交递给高层协议,并结束处理。

否则,节点设置分组属性,并调用
Scheduler::instance().schedule (Handler*, Event*, double)函数来发送分组。

其中,Handler 为基类中的属性target_(会根据脚本中的设置指向相应的协议实体),Event 为要发送的分组即可。

以上就是在节点收到分组后的一个处理过程。

以下是各个定时器所做的工作。

1、广播定时器BroadcastTimer 在到时后调用id_purge()函数删除广播项中已超时的项目,并通过调用Scheduler:: instance().schedule()函数来设置下次被调用的时间(Handler 为this 指针,Event 为类属性intr)。

2、周期Hello 报文广播定时器HelloTimer 在到时后调用sendHello()函数向邻居创建并发送Hello 消息,并调用schedule()函数来设置下次被调用的时间。

3、邻居管理定时器NeighborTimer 在到时后调用nb_purge()函数来清除邻居列表中已超时的邻居项,并调用schedule()来设置下次被调用的时间。

nb_purge会调用nt_delete(nsaddr_t) 函数来清除超时的邻居项,其又会调用handle_link_failure(nsaddr_t)函数来处理由于邻居节点被删除而引起的路由
变化。

4、路由缓存定时器RouteCacheTimer 在到时后调用rt_purge()函数来清除路由表中已超时的路由项,并丢弃相关的分组,再调用schedule()来设置下次被调用的时间。

5、本地修复定时器LocalRepairTimer 在调用后根据传递的分组的目的地址关闭相应的路由项。

6、缓存广播ID 定时器BroadcastID 用来保存广播分组的ID。

相关文档
最新文档