《最新AODV路由协议的仿真与性能分析论文.doc》由会员分享,可在线阅读,更多相关《最新AODV路由协议的仿真与性能分析论文.doc(123页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateAODV路由协议的仿真与性能分析论文AODV路由协议的仿真与性能分析论文AODV路由协议的仿真与性能分析摘 要:首先,本文简单介绍了无线自组网和无线局域网的一些知识,对其主要内容做了概述性的讲解。接着论述了AODV路由协议的工作原理。最后在上面的分析的基础上,提出AODV路由协议的实现方案并将其实现。关键字:AODV;无线自组网;路由Abstract: First o
2、f all, the paper briefly introduced the wireless network and wireless LAN knowledge of some of its main outline of the content of the lecture. Then AODV routing protocol discussed the working principle. In the final analysis of the above, on the basis of AODV routing protocol to the realization of t
3、he programme and to achieve. Keyword: AODV; Wireless network; Routing目录第一章 绪论31.1课题的背景31.2无线自组网简介41.3 IEEE802.11无线局域网协议5第二章 AODV路由协议82.1 AODV路由协议概述82.2 AODV路由算法原理92.3 AODV术语92.4 AODV路由协议帧格式112.4.1 RREQ协议帧格式112.4.2 RREP协议帧格式122.4.3 RERR协议帧格式132.4.4 RREP-ACK132.5 AODV路由协议的操作142.5.1维护序列号142.5.2路由表项和先驱表
4、152.5.3产生路由请求162.5.4路由请求消息的控制传播172.5.5处理和转发路由请求172.5.6产生路由应答182.5.7接收和转发路由应答202.5.8单向链路上的操作212.5.9 Hello消息212.5.10维护本地连接性222.5.11 RERR消息,路由过期和路由删除232.5.12本地修复24第三章 AODV路由算法模拟263.1 NS-2概述263.2模拟步骤273.3网络吞吐量模拟283.3.1 shell脚本283.3.2模拟结果293.4网络数据包时间延迟293.4.1计算延迟的awk脚本293.4.2模拟结果313.5跳数模拟323.7 RREQ广播演示33
5、3.8数据传输演示333.9掉包演示343.10本章小节35总 结36参考文献37致 谢38第一章 绪论1.1课题的背景自从1997年IEEE802.11协议正式发布以来,无线局域网得到了快速发展,形成了一个巨大的市场。现在国内外的许多高档写字楼、宾馆还有机场等,都已经铺设了或者正在铺设无线局域网。但IEEE802.11协议不具有转发功能,组成的网络规模小,传输距离近,需要铺设较多的AP点。而无线自组网则可以弥补这个缺点。无线自组网其前身是分组无线网。自七十年代世界上第一个分组无线网ALOHA在美国夏威夷大学研制成功之后,分组无线网就受到了军方的高度重视。国内从八十年代起开始关注分组无线网的研
6、究,经过二十年来的努力,已经取得了很多进步和成果。而近几年,由于军用和民用需求的增加,大大促进了无线自组网的研究。无线自组网现在广泛应用于自然灾害抢险、科学考察、以及在战场等通信场合。无线自组网研究的一个重要方面就是无线自组网的路由。由于无线自组网的拓扑结构动态变化,如何在移动中保持通信成为一个重要的研究方向。现阶段已经提出许多的路由算法,各个路由算法有各自的优缺点,适合于不同的场合。利用无线自组网的技术,可以扩大无线局域网的使用范围。同时,可以利用基于无线局域网的设备,很方便的验证无线自组网的一些技术。1.2无线自组网简介无线自组网又称无线移动多跳网、移动ad hoc网,其前身是分组无线网。
7、一个无线自组织网络是由可以任意移动的移动平台组成(每个移动平台逻辑上是由一个路由器和无线通信装置构成)的自主系统。无线自组网把移动通信和计算机网络结合在一起:一方面,用户终端是通过无线链路连接起来的可以移动的便携式终端;另一方面,网络的信息交换采用了计算机网络中的分组交换机制。在无线自组网中,所有终端不仅能自由移动,而且身兼两职:既是主机,又是路由器。作为一种无中心分布控制的网络,无线自组网与有线网和单跳无线网在结构上有较大区别,它没有基站一类的固定通信设施(Infrastructureless Networks),可以在不能利用或不便利用现有网络基础设施的情况下提供一种通信支撑环境,从而拓宽
8、了移动网络的应用场合,在军事领域(如战场临时通讯)和民用领域(如紧急抢险联络)都具有广阔的应用前景,同时也能作为Internet网的接入部分使用,在下一代网络(NGN:Next Generation Network)中占有重要地位。移动无线自组网是一种无线、易变的网络环境,与传统的有线网和无线局域网有明显不同。它的无线链路、移动终端、多跳结构等特点给路由的实现带来了诸多不利影响。以致于在有线网上表现良好的传统的距离矢量(DV:Distance Vector)算法和链路状态(LS:Link State)算法不能直接运用于无线自组网,也使得路由的优化不再是最重要的要求,而路由的迅速收敛、灵敏反应拓
9、朴变化、节省带宽以及减少节点资源开销等则成为更重要的因素。因此,对在无线自组网上运行的路由协议便提出了许多具体而严格的要求。这些要求主要有:收敛迅速,提供无环路由,避免无穷计算,控制管理开销小,对终端性能无过高要求,支持单向信道等。多年来人们对无线自组网技术持续增长的兴趣导致了许多路由协议方案的提出。除了MANET WG(Mobile Ad hoc NETworks Working Group)发布的DSR、AODV、ZRP等路由协议草案外,研究人员还发表了许多关于无线自组网路由协议的学术论文,如DSDV、WRP、CGSR等。但由于无线自组网的复杂性和多样性,IETF至今尚未能确定一个标准,有
10、关研究及草案的征集和修改工作仍在进行中。目前,已存在数10种无线自组网路由协议,可从不同的角度对它们进行分类。从是否使用GPS(Global Positioning System)系统出发,可分为地理定位辅助路由与无地理定位辅助路由;从路由查找策略出发,可分为先应式路由(又称主动路由)与反应式路由(又称被动路由或者按需路由);从网络逻辑视图出发,可分为平面路由与分级路由。图1-1表示了无线自组网的主要路由协议的分类。图1-1:多跳无线路由协议分类在本课题中,实现的是AODV路由协议。AODV是被IETF(Internet Engineering Task Force)的MANET工作组认为是最
11、好的候选路由协议之一,简单且性能优越。课题采用的实现方案,对于实现无线自组网的其它按需路由协议也具有借鉴作用。1.3 IEEE802.11无线局域网协议传统的有线局域网在某些场合会受到布线困难的限制,并且无法支持移动设备。由于这些问题的出现,存在建立无线局域网的需求。由于应用的要求,1990年7月,IEEE802委员会接受了NCR公司的“CSMA/CD无线媒体标准扩充”的提案,成立IEEE802.11无线局域网工作委员会,负责制定无线局域网物理层和MAC层的协议标准,并于1997年六月公布该标准。1999年8月,802.11协议得到进一步完善,并成为IEEE/ANSI和ISO/IEC的一个联合
12、标准,称为ISO/IEC8802.11。IEEE80211协议标准定义了MAC层和物理层的规范,它是一个协议家族,涵盖了许多子协议,各个子协议的主要任务见表1-1。在这些子协议之中,最核心的是802.11a,802.11b和802.11g,它们定义了最核心的物理层规范。1997年公布的IEEE802.11协议标准提供了三个物理层的规范,包括2.4GHz ISM频带中的红外线、12Mbps频率跳跃扩频技术(FHSS)和12Mbps直接序列扩频技术(DSSS)。此后,IEEE802.11标准沿着两条路发展,一条是802.11b,另一条是802.11a。802.11b规范是指定在2.4GHz通信频带
13、,使通信数据速率达到10Mbps,同时保持跟最初的802.11 DSSS标准的兼容性。它的物理层采用高速直接序列扩频技术(HR-DSSS),调制方式可以有两种选择,一种是“补码键控”(CCK)调制方式,从而达到11Mbps的顶端数据速率;另一种是“信息包二进制回旋式编码”(TM PBCC),凭借其能够提供3dB的编码增益,延伸了通信的距离,因此作为在5.5和11Mbps速率的范围内获得更高性能的一个选择。802.11的第二个分支为802.11a,它将通信频带放在5.2GHz U-NII频带,并被指定高达54Mbps的数据速率。它采用了正交频率划分多路复用(OFDM)的多载波调制技术。它与802
14、.11b和最初的802.11 WLAN标准均不能进行互操作。为了与最初的802.11协议和802.11b协议兼容,同时能提供802.11a的高达54Mbps的传输速率,在经过多年研究以后,IEEE于2003年正式颁布了802.11g的标准。它采用OFDM调制方案,可以在2.4GHz的频带上提供54Mbps的数据传输速率。IEEE802.11协议规定了多种组网方式。图1-2表示了一种非常通用的网络拓扑结构:图1-2:WLAN的一种常用网络拓扑结构图中所示的两个WLAN网,通过A(PAcess Point)点与D(SDistribution System)网络相连接,从而互通。其中,DS可以是任意
15、的网络。第二章 AODV路由协议2.1 AODV路由协议概述 现有的移动Ad Hoc网路由协议大致可以分为先验式(proactive)和反应式(reactive)两种。先验式路由协议又被称为表驱动路由协议(Table-driven Routing Protocol),是基于路由表项的路由协议。网络中的主机通过周期性地交互路由信息得到所有其它主机的路由,而不管需不需要该路由进行通信。节点必须维护去往全网所有节点的路由,每个节点维护一张或多张路由表,这些路由表包含到达网络中所有节点的路由信息。先验式路由的优点是,当节点需要发送数据分组时,只要去往目的节点的路由存在,所需的延时就很小。缺点是先验式路
16、由需要花费较大的开销,尽可能使得路由更新能够紧随当前网络拓扑结构的变化。然而,快速动态变化的拓扑结构可能使得这些路由更新变成过时信息,导致路由协议始终处于不收敛状态。典型的先验式路由协议有:DSDV, WRP和STARA。 反应式路由协议,又称为按需路由协议(On-demand Routing Protocol),是当需要时才查找路由的路由选择方式。网络中的每个节点在需要进行通信时才发送路由分组,以减少路由开销。一般分成两个阶段:路由发现和路由维护。 路由发现:当一个节点需要向某个目标节点发送数据时,首先查询其路由表,如果不存在所需路由,就启动一个路由发现过程,通常是广播一个路由请求(RREQ
17、)分组,当合适的路由被找到,返回一个请求响应(RREP),该过程就终止。或所有可能的路由排列都已检查过,该过程也终止。 路由维护:路由建立后,它就由某种路由维护程序进行维护,直到该路由不再需要,或通过任何路径都无法访问目标节点。它的优点是不需要周期性地广播路由信息,节省了一定的网络资源。缺点是发送数据分组时,如果没有去往目的节点的路由,数据分组需要等待因路由发现而引起的延时。典型的反应式无线移动路由协议有:AODV, DSR和TORA 。根据国际上目前研究的结果可知,在各种不同的情况下比较时,如数据源数、节点的移动性、自组织网络模型以及网络负载等,按需方式的路由算法要比先验式的路由算法在性能上
18、有着明显的优势。另外,在负载较重的情况下,反应式的路由协议中AODV协议的性能最为理想。2.2 AODV路由算法原理 AODV路由协议是一种按需的改进的距离向量路由协议,具有按需路由协议的特点即在AODV路由协议中,网络中的每个节点在需要进行通信时才发送路由分组,而不会周期性地交互路由信息以得到所有其它主机的路由;同时具有距离向量路由协议的一些特点,即各节点路由表只维护本节点到其他节点的路由,而无须掌握全网拓扑结构。 AODV路由协议中有三种类型的消息控制帧:路由请求RR五Q,路由应答RREP和路由错误RERR消息。当源节点需要发送数据而又没有到目的节点的有效路由时,启动一个路由发现过程:向网
19、络广播一个路由请求分组RREQ , AODV允许中间节点响应RREQ,当收到请求的中间节点或目的节点有一条“足够新”的路由到达目的地时(“足够新”的意思是这条路由对应的目的序列号大于或等于RREQ中的目的序列号),中间节点或目的节点以单播的方式向源节点返回一个RREP分组,RREP沿着刚建立的逆向路径传输回源节点,源节点收到该RREP后则开始向对应目的节点发送数据。在数据传输过程中,当中间节点检测到一条正在传输数据的活动路由的下一跳链路断开或者节点收到去往某个目的地节点的数据报文,而节点没有到该目的地节点的有效路由时,中间节点向源节点单播或多播路由错误消息RERR,源节点收到RERR后就知道存
20、在路由错误,并根据RERR中指示的不可达目的地重新找路。在RERR中有一条链表,这条链表是由因为某条链路断了,从而导致无法到达的所有目的节点组成的。每一个接收到RREQ的节点都会保存到源节点的路由,当到目的节点的路由找到时就能用单播将RREP传回源节点。2.3 AODV术语Active route(有效路由) 通往目的节点的一条路由,路由表项标记为有效。只有有效路由可以用 来转 发用户数据分组。Broadcast(广播) 发送至IP地址为255.255.255.255的广播报文。一个广播报文不是盲目转发的,对它的转发会有限制。但有时候需要将某些AODV协议帧广播发送到全网。Destinatio
21、n(目的节点址) 用户数据分组将要被发送到的IP地址,有时候用这个地址来表示目的节点 。 到目的节点的路由通过执行AODV协议算法获得,在路由发现协议帧 RREP 中携带着到目的节点的路由。Forwarding node(转发节点) 同意转发用户数据分组至另一节点的中间节点。沿着路由查找过程己经建立好的路径,转发节点将用户数据分组转发到距离目的节点较近的下一跳。Forward route(转发路由) 为了从发起路由查找操作的源节点发送用户数据分组到目的节点而建立起的一条路由。Invalid route(无效路由) 己经过期的路由,通过在路由表中的无效状态来标识。无效路由表项虽然不可以用来转发用
22、户数据分组,但它仍然会将路由信息存储一段时间再删除。Originating node(源节点) 发起AODV协议帧的节点,这一AODV协议帧很可能被无线自组网中的其 它节点重新转发。例如,发起路由查找过程并广播RREQ协议帧的节点称为 RREQ的源节点。Reverse route(反向路由) 为了将RREP协议帧从目的节点转发至源节点,或者从具有到目的节点路由的中间节点转发至RREQ的源节点,建立起的一条路由。Sequence number(序列号) 一个不断增加的数字,由每一个帧的源节点来维护。在协议帧中使用时,它帮助其它节点判断源节点所发出信息的新旧程度。2.4 AODV路由协议帧格式2.
23、4.1 RREQ协议帧格式图2.1RREQ协议帧格式Type一标志帧的类型,RREQ帧设为toJ加入标记,为实现组播保留。R修复标记,为实现组播保留。G是否产生免费RREP的标记。当中间节点响应RREQ时,在将RREP发送 到源节点的时候,同时发送一个RREP帧到目的TP地址节点,这个发送到目的节点的RREP帧就叫免费RREP帧。D一指出只有目的节点才可以响应本RREQ aU一标明未知序列号,指出目的序列号未知。Reserved一发送时为0,接收时忽略,为将来保留。Hop Count一从源节点到处理该请求的节点的跳数。RREQ ID一RREQ帧的ID,与源节点的IP地址一起标识一个唯一的RRE
24、Q。Destination IP Address一所寻找的目的节点的IP地址。Destination Sequence Number一目的节点序列号,发起路由请求的源节点过去收到的,经过目的节点的任何路由的最大序列号。Originator IP Address一发起路由请求节点的IP地址。Originator Sequence Number一源节点序列号。在源节点的路由表中有一个指向自己本身的路由表项,这个路由表项使用的当前序列号就是源节点序列号。这个序列号由路由请求源节点产生和维护。2.4.2 RREP协议帧格式图22 RREP协议帧格式Type一标志帧的类型,RREP帧设为20R一修复标记
25、,为实现组播保留。A一需要应答标记,当节点收到这个RREP帧后需要给于应答。这样做是为了避免单向链路的问题。Reserved一发送时为0,接收时忽略,为将来扩展保留。Prefix Size一这个字段用于分群的无线自组网。当不分群的时候,这个字段设置为零。当不为零的时候,具有相同Prefix Size的节点属于同一个群。Hop Count一从RREP源节点到处理该请求的节点的跳数。Destination IP Address一目的节点的IP地址。Destination Sequence Number一目的节点的序列号。Originator IP Address一发起这个路由请求节点的IP地址。L
26、ifetime一节点收到RREP后记录的这条路由有效时间,以毫秒为单位计算。2.4.3 RERR协议帧格式图2.3 RERR协议帧格式Tpe一标志帧的类型,RERR帧设为30N一不删除标记。当节点进行了本地链路的修复,通知上游节点不要进行删除动作时设置这个标志。Reserved一发送时为0,接收时忽略。保留将来扩展时使用。DestCount一在协议帧中包含的不可达目的节点的数目,必须至少为IoUnreachable Destination IP Address一由于链路断开造成的不可达目的节点的IP地址。Unreachable Destination Sequence Number一在路由表项
27、中不可达目的节点对应的 序列号。在任何时候由于链路中断,导致从该节点的邻居到一个或多个目的节点变得不可达时,发送RERR协议帧。2.4.4 RREP-ACK 路由请求应答协议帧对设置了“A”比特的RREP协议帧进行应答。通常在存在单向链路情况下,用它来避免形成环路。图2.4 RREP-ACK协议帧格式Type一标志帧的类型,RREP-ACK帧设为40Reserved一发送时为0,接收时忽略,保留给将来扩展时使用。2.5 AODV路由协议的操作 为了与目的节点进行单播通信,节点是如何产生路由请求扭REQ),路由应答(RREP)和路由差错(RERR)消息的。这些消息数据是如何处理的。为了正确处理这
28、些消息,某些状态信息是如何保存在所对应的目的地节点的路由表项中的。这一章节将对以上情况进行详细描述。2.5.1维护序列号 在每个节点的每一个路由表项中,必须包含关于序列号的最新可用信息,该序列号是路由表项中维护的目的节点IP地址的序列号。这一序列号称为目的地序列号。当节点从RREQ RREP或RERR消息中收到与目的节点相关的序列号的新信息时,对该目的序列号进行更新。AODV依赖在网络中的每个节点拥有并维护自身的目的序列号来避免到该节点的所有路由出现环路。目的节点在下列两种情况增加它自身的序列号: 在节点产生一个路由发现之前,立即增加它自身的序列号,这样可以防止到RREQ帧源节点的反向路由。
29、在目的节点产生一个RREP对R.REQ进行应答之前,必须立即将自己的序列号更新,更新值为当前序列号与RR丑Q报文序列号中的最大值。当目的节点增加它的序列号时,必须把序列号值看作无符号数。为实现序列号的循环,序列号采用32比特无符号整数,当序列号增加到最大可能值时,再增加则值变为0。为了确定目的地信息没有失效,节点比较它当前的序列号值和接收到的AODV消息的序列号值。比较必须使用有符号32比特算法进行,用收到AODV消息中的序列号的值与当前存储的序列号的值相减,所得值如果小于0,则必须丢弃AODV消息中该目的地的相关信息。因为这些信息与节点当前存储的信息相比已经过时了。 通往目的节点的下一跳链路
30、丢失或过期时,节点也可以在它的路由表项中改变目的地序列号。节点通过查询路由表来确定哪一个目的地使用特定的下一跳。在这种情况下,对于使用该下一跳的每一个目的地,节点增加它的序列号并将路由标记为无效。当节点收到任何关于受影响目的地的足够新的路由信息时,节点应该按照更新报文中的信息来更新路由表信息。 节点在下列情况下可以改变路由表项中的目的地序列号: 节点本身是目的地节点,并为自己提供了一条新的路由; 节点收到AODV控制消息,消息中具有关于目的节点序列号的较新信息;通往目的地节点的路径过期或中断。2.5.2路由表项和先驱表 节点收到来自邻居的AODV控制报文,或者为特定目的地建立或更新了一条路由的
31、时候,它会检测路由表中对应该目的地的表项。在没有该目的地的对应表项的情况下,则建立表项,并利用控制报文记录的源IP地址和前一跳节点IP地址建立到源节点的反向路由表项。序列号或者由包含在控制报文中的信息确定,或者将有效序列号字段设置为假。路由仅在下列情况下进行更新: 新序列号高于路由表中的目的地序列号; 新序列号与路由表中序列号相等,但是跳数+1小于路由表中存在的跳数; 路由表序列号未知。路由表项中的生存期字段或者由控制报文确定,或者初始化为ACTIVE ROUTE_TIMEOUT。这一路由现在可以用来发送任何排队等待数据报文,完成任何没有完成的路由请求。 使用路由进行数据的转发时,它到源,目的
32、地和通往目的地路径的下一跳的有效路由生存期更新为大于等于当前时间加上ACTIVE ROUTE TIMEOUT。由于我们认为源和目的地址之间的路由是对称的,那么沿着逆向路径返回源节点的前一跳的有效路由生存期也同样更新为大于等于当前时间加上ACTIVE ROUTE TIMEOUT。对于节点作为路由表项维持的每一条有效路由,节点同样维护了一个可能用来转发报文的先驱列表。路由表项中的先驱列表就是使用了这条路由的所有邻居节点(一个或多个),在节点检测到下一跳链路丢失的情况下,将会向先驱列表中的所有节点发出通知。2.5.3产生路由请求 如果节点确定它需要一条到目的节点的路由而该路由并不可用,则节点发起一个
33、RREQ。这种情况可能是:目的节点之前对于当前节点是未知的,或者曾经有效的到目的节点的路由已经过期或标记为无效。在RREQ消息中的目的序列号字段是最近知道的目的节点的目的序列号,从路由表中的目的序列号复制。如果源节点不知道目的节点的序列号,必须设置未知序列号标记。RREQ消息中的发起者序列号是节点自身的序列号,在填入 RREQ之前加1 o RREQ ID字段为当前节点上一次使用的RREQ ID号加1。每个节点只维护一个RREQ ID。跳数字段设置为O。在广播RREQ以前,发起节点在PATH DISCOVERY TIME时间内缓存RREQ ID和RREQ发起者的IP地址(它自身的地址)。以这种方
34、式,如果节点再从它的邻居收到同样的RREQ报文,它将不对此进行重新处理和转发。RREQ ID和发起者的IP地址联合起来标志一个独一无二的RREQ报文。 发起者节点通常期望和目的节点之间的通信是双向的,在这样的情况下,就不能仅仅只是发起节点拥有到目的节点的路由,同时目的节点也必须拥有返回发起节点的一条路由。为了使之尽可能有效地发生,中间节点产生发往发起者节点的RREP的同时,应该附带通知目的节点,告知目的节点返回发起节点的反向路由。通过设定“G”标记,发起者节点可以在中间节点选择这种工作模式。 节点每秒钟不应该产生多于RREQ_RATELIMIT次的RREQ消息。广播出一个RREQ以后,节点等待
35、RREP(或者具有关于正确目的地路由当前信息的其它控制信息)。如果在NET_RAVERSAL_TIME微秒的时间内没有获得路由,则节点广播另一个RREQ试图重新进行路由发现过程,直到在最大TTL值时达到了RREQ_RETRIES的最大次数。每一次新的尝试都必须增加并更新RREQID。对于每一次新的尝试,IP头中的TTL字段根据2.5.4部分描述的机制进行设置,以对RREQ每次发送的距离进行控制。等待路由的报文应该进行缓存(例如在RREQ发送后等待RREP)。这个缓存应该是先进先出的(FIFO)。如果路由发现在最大TTL值时已经尝试了RREQ_RETRIES次,却没有收到任何RREP,则所有要发
36、往对应目的地的数据报文应该从缓存中丢弃,并发送一个目的地不可达信息给应用层。2.5.4路由请求消息的控制传播 为了防止不必要的网络范围的RREQ传播,发起者节点应该使用扩展环搜索技术。在扩展环搜索中,发起者节点在RREQ报文的IP头中最初使用的TTL值为TTL START,并将接收RREP的超时时间设置为NET_TRAVERSAL_TIME毫秒。如果RREQ超时而没有一个对应的RREP,发起者再一次广播RREQ,此时TTL值增加TTL_INCREMENT。如此反复,直到RREQ中TTL的值到达了TTL THRESHOLD,超过这个值之后的每一次尝试TTL值都使用NET_DIAMETER。当希望
37、所有的重试经过整个网络时,可以通过将TTL_START和TTL INCREMENT都配置成同样的值NET -DIAMETER来实现。存储在无效路由表项中的跳数指出路由表中到目的地节点的最后知道的跳数。如果一段时间后需要到同一目的节点的新路由(比如路由丢失的情况发生),RREQ的IP头中的TTL初始化设置为跳数加上TTL_INCREMENT。接下来的每次超时,TTL都增加TTL_INCREMENT,直到TTL等于TTL_THRESHOLD。超过TTL _THRESHOLD则TTL的值设为 NET_DIAMETER 。 到期的路由表项在当前时间加上DELETE PERIOD之前不应该删除,否则,相
38、应路由的软状态(比如最后知道的跳数)将会丢失。而且可以根据需要配置更长的路由表项删除时间。任何等待RREP的路由表项在当前时间加上2*NET TRAVERSAL TIME之前都不应该被删除。2.5.5处理和转发路由请求当节点收到RREQ,它首先建立或更新到上一跳的无有效序列号的反向路由,然后检查确定在至少PATH DISCOVERY TIME时间内,它是否收到带有同样发起者IP地址和RREQ ID的RREQ报文。如果收到过同样的RREQ,则节点丢弃新收到的RREQ。这一节的剩余部分描述没有丢弃的RREQ报文的处理。首先,RREQ中的跳数值增加1,以加入通过中间节点的新一跳。然后,节点使用RRE
39、Q中的发起者序列号(作为路由表项中的目的地序列号),在路由表中建立或更新到发起者IP地址的反向路由。如果节点收到一个要返回发起RREQ节点(由发起者IP地址标识)的RREP,就需要这条反向路由,反向路由建立或更新的时候,路由需要进行下列操作:从RREQ中拷贝发起者序列号至路由表项中对应的目的地序列号,有效序列号字段设置为真; 路由表中的下一跳设置为向它发出Q的节点; 跳数从Q消息的跳数字段中拷贝。(增加了1以后的值)任何时候收到Q消息,到发起者IP地址的反向路由表项的生存期设置为现有生存期,最小生存期的最大值。最小生存期=(当前时间+2 X NET_ TRAVERSAL_TIME-2 X跳数X
40、 NODE_TRAVERSAL_TIME) 当前节点现在可以开始使用反向路由来转发数据报文了。 节点在下列两种情况下才产生RREP: 节点本身是目的地节点; 节点具有到目的地的有效路由,节点现有的到目的地节点的路由表项的目的地序列号有效,并且大于或者等于RREQ消息中的目的地序列号。 如果上述任何一种情况满足,则节点不再广播RREQ。否则,如果收到RREQ消息的IP报文头的TTL值大于1,节点更新RREQ,并向它的所有配置接口广播RREQ至地址255.255.255.255。为了更新RREQ,发出IP报文的TTL字段减去1,并且RREQ消息中的跳数字段增加1,以加入通过中间节点后的新一跳。最后
41、,设置请求目的地的目的地序列号,值为收到RREQ消息中的相应值,节点当前维护的请求目的地节点的目的地序列号值的最大值。然而,即使收到的RREQ消息的目的地序列号值大于节点所维护的当前值,该转发节点也不能修改自己维护的相应路由表项的目的序列号值。2.5.6产生路由应答如果节点收到对于某个目的地的路由请求,当节点具有一条足够新的路由来满足该路由请求,或者它本身就是目的地节点,那么这个节点产生一个RREP消息,节点拷贝RREQ消息中的目的地IP地址和发起者序列号到RREP的对应字段。根据节点本身是请求目的地或者是具有足够新路由的中间节点,处理过程略有不同,在下面的章节进行描述。 一旦建立了RREP,
42、就把RREP单播至通往RREQ请求发起者的下一跳,该下一跳在到发起者的路由表项中指出。随着RREP被转发回发起RREQ消息的节点,跳数字段也在每一跳加1。这样,当RREP到达发起RREQ的节点,跳数就代表从目的节点到发起节点的距离。 如果产生RREP的节点是目的节点本身,假如RREQ报文中的序列号等于目的地节点本身的序列号加1,则节点必须把自己的序列号再加1(RREQ报文中的序列号大于目的地节点维护的自身序列号的情况:某节点因为检测到通往目的地的链路中断,将目的地序列号加1,然后重发路由请求)。否则,目的节点在产生RREP消息之前不改变它的序列号。目的节点将它的序列号(可能是新增加的)放入RR
43、EP的目的地序列号字段当中,并把跳数字段值设置为O。目的节点拷贝MY ROUTE TIMEOUT的值到RREP的生存期字段,每个节点可以在适度限制的情况下重新配置MY ROUTE TIMEOUT的值。 如果产生RREP的节点不是目的地节点,而是发起节点到目的地节点路径上的一个中间节点,它将拷贝己知的目的地序列号至RREP消息中的目的地序列号字段。 中间节点通过把上一跳节点放入转发路由表项(即到目的地IP地址的表项)的先驱表中来更新转发路由表项(上一跳节点指的是向它发送RREQ的节点)。中间节点同时更新到RREQ发起者节点的路由表项,这一操作通过将通往目的地的下一跳放入反向路由表项(即RREQ消
44、息中发起者IP地址字段的表项)的先驱表中实现。 中间节点将目的地节点到它的跳数距离(由路由表中的跳数给出)放入RREP中的跳数字段。RREP的生存期字段由路由表项的过期时间减去当前时间计算得出。节点收到RREQ并以RREP进行响应以后,丢弃RREQ。如果中间节点对每一个发出的RREQ进行应答,目的节点就不能收到任何RREQ的拷贝,也就不可能知道到发起者节点的路由。这可能导致目的节点发起路由发现(比如,如果发起者节点试图建立TCP会话)。目的地节点很可能需要到发起者节点的路由,为了使目的节点能够知道到发起者节点的路由,发起者节点应该在RREQ消息中设置“G”标记。为了对带有“G”标记的RREQ消
45、息进行应答,中间节点的操作是:返回RREP的同时必须向目的地节点单播一个免费RREP 。 发给Rl妞Q发起者的RREP和前面提到的一样,而发给目的节点的免费RREP,在RREP消息字段中包含下面的值: 跳数:节点路由表中到发起者节点的路由表项给出的跳数; 目的地IP地址:RR卫Q发起者节点的IP地址; 目的地序列号:RREQ中的发起者序列号; 生存期:中间节点所知的,通往RREQ发起者路由的剩余生存期; 免费RREP就这样被发送到去往目的地节点路径上的下一跳,就像目的地节点已经发出了到发起者节点的一个RREQ,而这一RREP正是对假想的RREQ进行应答一样。2.5.7接收和转发路由应答 当节点
46、收到RREP消息,它首先建立或更新无有效序列号的到上一跳的路由,然后RKEP中的跳数值加1,将通过中间节点的新一跳计入其中。我们把这一增加后的值称为“新跳数”。随后,如果到目的地的转发路由不存在,则建立转发路由,否则的话,节点对RREP消息中的目的地序列号和本身存储的目的地序列号进行比较,比较以后,现存的表项在下列情况下进行更新: 路由表项中的序列号无效; RREP中的目的地序列号大于节点中的目的地序列号的拷贝,并且已知值为有效; 序列号相同,但是路由不再有效; 序列号相同,新跳数小于路由表项中的跳数。如果到目的地节点的表项进行了建立或者更新,路由表项的下一跳就设置为刚才发出RREP的节点。跳
47、数设为新跳数,过期时间为当前时间加上RREP消息中的生存期。目的地序列号为RREP消息中的目的地序列号。当前节点现在可以使用这条路由对去往目的节点的数据报文进行转发了。 如果当前节点不是RREP消息中发起者IP地址指示的节点,并且转发路由已经进行了建立或更新,节点查询关于发起者节点的路由表项来为RREP报文确定下一跳,然后使用路由表项中的信息向发起者节点转发RREP。任何节点传送RREP的时候,把RREP被转发到的下一跳节点加入对应目的地节点的先驱列表中,对该先驱列表进行更新。同时,每个节点上用来转发RREP的反向路由的生存期变为现有生存期,当前时间+ ACTIVE ROUTE TIMEOUT的最大值。最后,通往目的地节点的下一跳的路由的先驱表更新为通往