当前位置:文档之家› 无线自组织网络的应用.

无线自组织网络的应用.

无线网络技术及其应用无线自组织网络的应用专业:班级:姓名:学号:成绩:项目任务:1、AODV协议应用2、DSR协议应用项目分析:1、AODVAODV路由协议开始工作时,源节点首先会广播一个携带有目的节点信息的路由分组RREQ,然后邻居节点会依次向周围的节点广播这个RREQ。

广播RREQ前将会建立该节点到源节点的路由,直到路由分组到达目的节点或者下一个中间节点,这个节点包含了节点的路由信息,就不会再广播RREQ。

整个工作过程会建立一个从源节点到目的节点的反向路由。

随后该节点将沿着反向路由发回一个RREP,RREP到达源节点之后路由发现过程结束。

为了避免路由环路,每个路由分组中都包含了一个sequence ID作为唯一标志,当节点收到一个sequence ID比它当前保留的的sequence ID小的数据包时,说明这个数据包是过期的,将不会进行处理,直接丢弃。

发现多条路由时,源节点会选择一条sequence ID大,跳数最少的最佳路由路径。

AODV是一种源驱动路由协议。

当一个节点需要给网络中的其他节点传送信息时,如果没有到达目标节点的路由,则必须先以多播的形式发出RREQ(路由请求)报文。

RREQ报文中记录着发起节点和目标节点的网络层地址,邻近节点收到RREQ,首先判断目标节点是否为自己。

如果是,则向发起节点发送RREP(路由回应);如果不是,则首先在路由表中查找是否有到达目标节点的路由,如果有,则向源节点单播RREP,否则继续转发RREQ进行查找。

2、DSRDSR中移动节点都维护一个存放路由的快速缓冲区。

每当某移动节点要发送分组时,首先查询本地高速路由缓冲区,确定是否存在可用路由,如存在则沿路由发送数据,否则发送一个包含源和目标节点地址的路由请求分组,启动路由发现过程。

中间节点收到该请求后,查询本地缓冲区,如无到达目标节点的路由,则将本节点地址加入请求分组后转发,直至将分组转发到目标节点或有到达目标节点路由的中间节点。

该节点返回一个路由应答分组,包含了从源到目标路径上所有节点的序列。

每个发送的数据分组中都将包含该路径节点序列。

因此,中间节点不需保存路由信息,不再需要周期性路由广播和邻居发现。

DSR路由协议有两个主要机制组成——路由寻找机制和路由维护机制。

路由寻找机制在源节点需要给目的节点发送一个分组并且还不知道到达目的节点的路由的时候使用。

当源节点正在使用一条到达目的节点的源路由的时候,源节点使用路由维护机制可以检测出因为拓扑变化不能使用的路由,当路由维护指出一条源路由已经中断而不再起作用的时候,为了将随后的数据分组传输到目的节点,源节点能够尽力使用一条偶然获知的到达目的节点的路由,或者重新调用路由寻找机制找到一条新路由。

项目实施:设定无线节点的通信半径,代码如下所示:A实验参数设置,包括信道类型、无线传播模型,网络接口类型、MAC类型、接口队列类型、链路层类型、接口队列所能接收的最大包的数量、移动节点个数、路由协议、场景尺寸等,代码如下所示:set val(chan) Channel/WirelessChannel ;# Channel Type……set val(traffic) ftp ;# cbr/poisson/ftp进行ns实例化设置,开启NAM显示文件和开启Trace跟踪文件AODV,以及设置模拟时产生需要的结果文件等,代码如下:Initialize Global Variables……$ns_ puts-nam-traceall {# nam4wpan #}将物理层NAM设为启动状态(默认情况下为关闭),所有都引用了物理层WirelessPhy类,代码如下所示:set dist(15m) 8.54570e-07Phy/WirelessPhy set CSThresh_ $dist(15m)Phy/WirelessPhy set RXThresh_ $dist(15m)5)设置了拓扑的范围和全局节点移动情况记录代码如下:set topo [new Topography]$topo load_flatgrid $val(x) $val(y)设置God和channelset god_ [create-god $val(nn)]set chan_1_ [new $val(chan)]节点设置情况:配置节点属性,在节点实例化之前对节点的参数进行配置,包括何种路由协议、何种mac协议、关闭移动trace等。

实现正确有效地隐藏节点实验分析,代码如下所示:$ns_ node-config -adhocRouting $val(rp)-llType $val(ll)-macType $val(mac)......-channel $chan_1_对13个节点进行实例化,设置各节点非随机移动代码如下:for {set i 0} {$i < $val(nn) } {incr i}set node_($i) [$ns_ node]$node_($i) random-motion 0 }建立源节点到目的节点的TCP连接,建立一个FTP数据流,且在时间设置代码如下:proc ftppro { src dst starttime }global ns_ node_……$ns_ at $starttime "$ftp($src) start"set highSpeed 1.4msMac/802_15_4 wpanNam PlaybackRate $lowSpeed调用函数ftppro,代码如下所示:ftppro 8 2 $Stime1ftppro 4 1 $Stime2定义通信协议仿真时,各几点间产生的分组流动的颜色,代码如下:Mac/802_15_4 wpanNam FlowClr -p AODV -c tomato……Mac/802_15_4 wpanNam FlowClr -p ack -s 1 -d 4 -c green在nam文件中定义节点的大小及对节点进行重置代码如下:for {set i 0} {$i < $val(nn)} {incr i}……$ns_ at $End "$node_($i) reset";定义仿真结束函数,然后启动运行,代码如下:$ns_ at $End "stop"……exit 0$ns_ run项目结果:1、AODV仿真开始时(0s),节点间未交换路由信息,路由表尚未建立(AODV的按需机制决定)。

仿真到0.02s 时,节点8 开始向节点2 发送数据,注意,在发送数据前,节点8 需要通过RREQ/RREP 与节点2 建立路由。

仿真进行到0.25s 时,节点4 开始向节点1 发送数据,同样的,节点4 需要通过RREQ/RREP 与节点1 建立路由。

在仿真过程(0.25~3s)中,两条传输的数据流会出现断断续续的情况,其反映的是TCP 的拥塞控制。

在3s 时,仿真实验结束。

结果如下图:2、DSR仿真开始时(0s),节点间未交换路由信息,路由表尚未建立(DSR的源路由决定)。

仿真进行到0.02s 时,节点8 开始向节点2 发送数据,注意,在发送数据前,节点8 需要通过RREQ/RREP 与节点2 建立路由。

仿真进行到0.25s 时,节点4 开始向节点1 发送数据,同样的,节点4 需要通过RREQ/RREP 与节点1 建立路由。

在仿真过程(0.25~3s)中,两条传输的数据流会出现断断续续的情况,其反映的是TCP 的拥塞控制。

3s 时,仿真实验结束。

结果如下图:项目总结:1、AODV协议如何进行路由发现和路由建立的?AODV路由发现:AODV借鉴了DSDV中的序列号的思想,利用这种机制就能有效地防止路由环的形成。

当源节点想与另外一个节点通信,而它的路由表中又没有相应的路由信息时,它就会发起路由发现过程。

每一个节点维持两个独立的计数器:节点序列号计数器和广播标识。

源节点通过向自己的邻居广播RREQ(Route Requests)分组来发起一次路由发现过程。

反向路由的建立:在RREQ分组中包含了两个序列号:源节点序列号和源节点所知道的最新的目的序列号。

源节点序列号用于维持到源的反向路由的特性,目的序列号表明了到目的地的最新路由。

当RREQ分组从一个源节点转发到不同的目的地时,沿途所经过的节点都要自动建立到源节点的反向路由。

节点通过记录收到的第一个RREQ分组的邻居地址来建立反向路由,这些反向路由将会维持一定时间,一该段时间足够RREQ分组在网内转发以及产生的RREP分组返回源节点。

当RREQ分组到达了目的节点,目的节点就会产生RREP分组,并利用建立的反向路由来转发RREP。

正向路由的建立:RREQ分组最终将到达一个节点,该节点可能就是目的节点,或者这个节点有到达目的节点的路由。

如果这个中间节点有到达目的的路由项,它就会比较路由项里的目的序列号和RREQ分组里的目的序列号的大小来判断自己已有的路由是否是比较新的。

如果RREQ分组里的目的序列号比路由项中的序列号大,则这个中间节点不能使用己有的路由来响应这个RREQ分组,只能是继续广播这个RREQ分组。

如果节点有到目的地的最新路由,而且这个RREQ还没有被处理过,这个节点将会沿着建立的反向路由返回RREP分组。

2、DSR协议如何进行路由发现和路由建立的?1)产生路由请求:当源节点需求与某目的节点进行通信时,它首先在本节点维护的路由缓存中查找是否有到达该目的节点的路由。

若路由缓存中已包含了到达该目的节点的有效路由,则立即使用此路由发送数据分组,否则他将所有邻居广播RREQ分组,以启动一个路由发现过程来找到一条到达目的节点的可用路由。

2)节点对路由请求的处理:如果接收RREQ的节点是该路由请求的目的的节点,则向发起RREQ的源节点返回RREP分组。

将收到的RREQ分组的源节点地址、RREQ分组中携带的源路由节点地址列表和本节点的地址按顺序排列作为源路由封装在RREP分组中发送给源节点,并将处理后的RREQ分组删除。

3)中间节点回复RREP分组4)处理并转发路由回复3、AODV与DSR协议的区别?1)AODV在每个中间节点隐式保存了路由请求和应答的结果,并利用扩展环搜索的办法来限制搜索发现过的目的节点的范围。

AODV支持组播功能,支持QoS,而且AODV中可以使用IP地址,实现同Internet连接,但是不支持单向信道。

2)和DSDV保存完整的路由表不同的是,AODV报头并不携带路由信息,中继节点依据自身的路由表逐跳转发,并通过建立基于按需路由来减少路由广播的次数,这是AODV对DSDV的重要改进。

3)和DSR相比,AODV的好处在于源路由并不需要包括在每一个数据分组中,这样会使路由协议的开销有所降低。

相关主题