精华内容
下载资源
问答
  • 改进蚁群算法在DSR路由协议中的应用
  • DSR路由协议的路由选择和缓存策略进行分析,并针对它的不足,提出通过引入时间参数对路由的选择进行限制,采用自适应路由缩短机制的改进协议。新策略不但提高了缓冲器中路由的质量,而且充分利用了路由缓冲器的...
  • 提出了一种基于缓冲器的DSR路由协议改进方案,对DSR的路由缓冲机制和路由缩短机制进行了改进,并在NS2中对改进协议和原DSR协议进行了对比仿真。仿真结果证明,改进的DSR协议在网络吞吐量、端到端时延、丢包率方面均...
  • DSR路由协议 特色 DSR是一种典型的按需(按需)Ad Hoc路由协议,同时DSR使用源路由即每个分组对应显着型地包含了从源到达目的地目的完整的序列,使用源路由的任何中间节点都无需进行复杂的路由操作而只需根据分组...
  • 动态源路由DSR路由协议以最短路径优先为原则,但是没考虑负载均衡,产生拥塞区域、连接失败等不利结果。为减轻路由负载,提高协议性能,提出了一种基于负载均衡的DSR路由算法。在路由发现过程中节点根据自身负载情况...
  • 针对这种现象, 提出了一种基于DSR路由协议的跨层退避算法CBBD, 利用DSR路由协议中的路由缓存特点, 解决了信息流堵塞在某一些节点的问题。通过仿真实验验证, 该算法大幅减小了时延和丢包率, 使网络性能得到显著的提高...
  • 关于dsr路由协议原理的分析,介绍。并配以图片生动形象易于学习理解。
  • 分析了网络中通信节点的工作状态, 综合考虑协同合作方式的DSR路由机制和拥塞控制策略对3GPP网络性能的影响, 提出了一种基于拥塞控制的增强型协作DSR路由协议, 并通过3GPP网络系统级仿真验证改进后的协作路由协议的...
  • 基于能量考虑的Ad Hoc网络DSR路由协议改进,何黎聪,郝应光,Ad Hoc网络是由一组无线移动节点组成,是一种不需要依靠现有固定通信网络基础设施的、能够迅速展开使用的网络体系,其节点通常用电
  • Ad Hoc网络TORA和DSR路由协议的吞吐量研究,谢伟,,无线Ad Hoc网络是一种新型的无线通信网络,具有广泛的应用前景。本文论述了无线Ad Hoc移动自组织网络的概念、特点,认真讨论了无线Ad
  • 基于DSR路由协议的无线Ad_hoc网络实验
  • 经典DSR路由协议分析:路由发现

    千次阅读 2010-07-12 11:05:00
    路由缓存中已包含了到达该目的节点的有效路由,则立即使用此路由发送数据分组,否则它将向所有邻居广播RREQ(Route Request)分组,以启动一个路由发现过程来找到一条到达该目的节点的可用路由。 由...
    (1) 产生路由请求
    当源节点需要与某目的节点进行通信时,它首先在本节点维护的路由缓存中查找是否有到达该目的节点的路由。若路由缓存中已包含了到达该目的节点的有效路由,则立即使用此路由发送数据分组,否则它将向所有邻居广播RREQ(Route Request)分组,以启动一个路由发现过程来找到一条到达该目的节点的可用路由。
    由handlePktWithoutSR(SRPacket& p, bool retry)
    getRouteForPacket(SRPacket &p, bool retry)
    	sendOutRtReq(rrp, MAX_SR_LEN)
    来完成。
    (2) 节点对路由请求的处理:
    ①如果接收RREQ的节点是该路由请求的目的节点,则向发起RREQ的源节点返回RREP分组。将收到的RREQ分组的源节点地址、RREQ分组中携带的源路由节点地址列表和本节点的地址按顺序排列作为源路由封装在RREP(Route Reply)分组中发送给源节点,并将处理后的RREQ分组删除。
    工作由handlePacketReceipt()
    			returnSrcRouteToRequestor(p)来完成。
    
    ②收到RREQ的节点检查自己是否已经包含在RREQ携带的源路由节点列表中,如果是则将RREQ分组丢弃。
    由handleRouteRequest(SRPacket &p)
    		ignoreRouteRequestp(SRPacket &p)来实现
    		
    ③如果协议要求使用双向链路,节点要检查前一节点是否在自己的通信范围内,如果不在则丢弃该RREQ包;如果不确定则向前一节点发送一TTL值为“1”的RREQ分组,如果收到前一节点回复的RREP这表示两节点之间是双向链路,继续处理RREQ分组,否则表示两节点之间为单向链路则将RREQ分组丢弃。
    
    ④接收RREQ的节点必须要查找当地的路由请求表看有无发起此RREQ的源节点所对应的路由请求表入口。如果有则在当地缓存中查看有无与(此RREQ路由请求号,此RREQ目的节点IP地址)对相对应的入口,如有则将现在收到的RREQ分组丢弃。
    
    ⑤如果接受RREQ的节点的路由请求表中没有和此RREQ对应的表项,说明以前没收接受过此RREQ,则按以下步骤处理该RREQ请求分组:利用此RREQ的(路由请求序号,目的节点IP地址)值,为此RREQ分组在节点的路由请求表中创建一入口;对此RREQ分组做一个完整的拷贝;将节点自己的IP地址追加到RREQ分组的源路由节点列表中;节点在自己的路由缓存中查找到RREQ分组中目的节点的路由,有则向发起RREQ的源节点回复一RREP分组,称为“缓存路径回复(cached Route Reply)”;如果节点在自己的路由缓存中没有找到通往RREQ目的节点的路径,则将新改好的RREQ拷贝广播发送出去。
    由handleRouteRequest(SRPacket &p)
    
    (3)中间节点回复RREP分组:
    在(2)中讲到如果接收RREQ的中间节点在自己的路由缓存中找到通往RREQ分组目的节点的路径则要向源节点回复一cached Route Reply分组。这种机制可以大大减小网络中因为路由发现过程所造成的开销,因为这种机制可以大大减少路由发现过程中的RREQ广播报文。下面详细叙述向源节点回复cached Route Reply的过程。①中间节点在回复RREP之前首先要检查被回复的源路由中不会出现节点重复出现的情况。即查看由RREQ原节点地址、RREQ中已经积累的节点IP地址列表、本节点路由缓存中找到的路径中的IP地址顺序排列下来的地址列表中有无重复出现的IP地址,如果有则不能继续进行缓存路径回复,而转到(2)中步骤⑤的最后一步继续执行。如不存在重复出现的IP地址就向下执行。
    ②中间节点将从自己路由缓存中得到的路径cached-route追加到RREQ分组头中的源路由地址列表中,这样就得到要发给RREQ源节点的完整路由:<源节点IP地址、RREQ分组头携带的节点的IP地址列表、cached-route>。此中间节点的IP地址已经在RREQ分组头中,不需再追加。将得到的源路由封装在RREP包中发送给发起RREQ的源节点。
    ③中间节点发送完路由缓存回复后,就不再继续广播RREQ分组了。此时如果RREQ数据分组头中除了已经处理过的RREQ选项外不再含有其他任何选项,并DSR选项头后面也不含有其他数据负载(TCP或UDP数据),则中间节点可将此RREQ分组丢弃。否则作如下处理:将RREQ DSR选项头中的目的节点IP地址作为RREQ IP分组的目的IP地址,即置换掉RREQ分组的广播地址;将RREQ分组中的路由请求选项移除;将从中间接点路由缓存中得到地路径作为源路由添加到新的RREQ分组头中;将重新创建的RREQ数据分组按分组头中的源路由转发出去。
    (4)处理并转发路由回复:
    目的节点收到RREQ分组得到完整的源节点到目的节点的路由后,将此路由封装在RREP分组中,然后发送给源节点。RREP分组可以封装成一个单独的IP分组传递给源节点,或封装在其他有数据要传输给源节点的IP分组中被捎带回源节点。
    目的节点将自己的IP地址追加到RREQ携带的节点的IP地址列表中,将得到的IP地址列表作为返回给源节点的完整路由封装在RREP分组中。RREP数据分组的源IP地址设为发送RREP分组的节点的IP地址,目的IP地址设为发起RREQ的源节点的IP地址。如果使用的底层MAC协议支持双向路由,RREP数据分组可沿RREP选项中携带的源路由的逆向路由依次传输,否则目的节点为此RREP选项发起新的路由发现过程,且要将RREP选项封装在新产生的RREQ数据分组中以防止出现路由发现过程的反复进行。
    (5) 有错误处理
    
    展开全文
  • 带网关DSR路由协议的流程

    千次阅读 2005-06-21 17:39:00
    初始化部分的流程 nexthop_list_init(); 初始化下一跳列表,主要用来保存下一跳的信息,确定ack的请求机会gw_list_init(); 初始化网关列表routecache_init();... 初始化路由请求表,记录收到的路由请求的信息rtsmb

     

    初始化部分的流程

     

    nexthop_list_init(); 初始化下一跳列表,主要用来保存下一跳的信息,确定ack的请求机会

    gw_list_init();       初始化网关列表

    routecache_init();    初始化路由缓存

      reqtable_init();      初始化路由请求表,记录收到的路由请求的信息

    rtsmbuffer_init();    初始化重发缓冲区,保存发出数据中,需要ack回复的数据报的信息

    sendbuffer_init();    初始化发送缓冲区 ,临时存储 发送路由请求之后,受到路由应答请求之前,发送的数据报

     

    dsr_stat_init();        初始化统计信息

     

    init_packet_queue();   初始化用户空间队列

    对全局变量 ipq_queue_t q 进行初始化

      注册一个处理netfilter队列的函数  netfilter_receive,一旦有数据进入队列就调用,做两件事情

    1.调用ipq_enqueue函数(收到的包和发出的包都由他加入到q队列中,进入的包有dsr头,而发出的包没有dsr头,所以在程序中使用了两次switch 来吧接受的发送的udp包添加的q中)

        发出的hello包,info设置为空,根据不同的协议头,把元素加入到不同的list中

        接受到的数据包,info字段是由netfileter自己填写的

       2.唤醒dsr进程。

     

     

     

      

    startup_dsr();   创建DSR进程,负责处理用户空间队列的数据报

    注册pre_route  local_out  gw_post_route3个钩 ,gw_post_route为最后一个被调用的钩子

     

     

    pre_route  钩子

    1如果发现数据包中dsrhdr的头部需要ack标志为1,则直接发送一个ack回复,不进入用户空间排队。

    2如果是ack数据包,也就是下游节点返回的ack应答,然后进入dsr_in_ack_op_handler中进行处理,之前的判断已经没有必要了,不过还是按照从前的习惯保留了。其中在dsr_in_ack_op_handler中调用rtsmbuffer_ack_del函数,这个函数用来根据ack回复时间动态调整ack超时,这是和从前dsr最大的区别:

    1         如果是数据包,则直接去掉dsr头,返回netfilter

    2         其他类型的数据包,则加入用户队列 (返回NF_QUEUE)

     

    加入队列的数据包,有netfitlerreceive调用packet_enqueue来完成,并触发dsr进程,然后再由packet_inpacket_out进行处理

     

     

    dsr_local_out流程

     如果是自己给自己的,则直接返回

    如果是发往外网段的直接返回

    其他的数据报全部返回到用户空间队列排队。加入队列的数据包,有netfitlerreceive调用packet_enqueue来完成,并触发dsr进程,然后再由packet_inpacket_out进行处理

     

    dsr进程流程

    循环从用户空间队列中取出元素  iqp_dequeue

    {

      进入的数据报 ,调用packet_in

    发出的数据报,调用packet_out

    }

     

     

     

     

    packet_in  的流程

     

    循环处理dsr头部字段

    如果是DSR_SRC_OPT :调用dsr_src_opt_handler

           如果DSR_IN_OPT,调用dsr_in_src_opt_handler处理:

    如果dsrhdr标志位中需要ack1,则发送一个ack

                  如果DSR_FORWARD_OPT,调用dsr_forward_src_opt_handler                       

    1重新设置接受地址为下一跳地址,源地质为本节点地址;

    2重新设置nexthop_info_entry中下一跳的ack请求时间,即:

    if_in_nexthop_list判断转发的包的目的地址是否在下一跳得列表中。

               Get_nexthop_natime来获得请求下一个跳节点ack的时间。从nexthop_info_entry 中得到最近一次从下一收到的ack时间。改变Nexthop_info_entry中的标志位,需要ack ,计算下一次需要ack的时间;

     3 修改ip头目的地址为本节点地址,源地址为本节点地址

     

     

    如果是DSR_REQ_OPT ,调用dsr_req_opt_handler

    如果是DSR_IN_OPT  ,则调用dsr_in_req_opt_handler

          1首先处理路由信息,添加从本节点到路由请求发起源的路由信息。

    2再次判断是否为网关请求,然后make_and_send_dsr_reply 回复一个网关应答,否则回复一般的请求 同样是使用make_and_send_dsr_reply

                           3 修改ip头目的地址为本节点地址

    如果是DSR_FORWARD_OPT  dsr_forward_req_opt_handler

          1判断是否收到过这个请求,如果收到过,则返回,否则继续

          2处理路由信息,添加从本节点到路由请求发起源的路由信息

    3然后针对网关修改,首先查找本的路由网关列表,没有则转发网关请求:iph->daddr = BCAST;

    4如果本节点网关列表不为空,则还是make_and_send_dsr_reply来发送回复,将本地有的网关路由发送给请求节。

              

     

    如果是DSR_REP_OPT ,调用dsr_rep_opt_handler

    如果是DSR_IN_OPT, dsr_in_rep_opt_handler

               首先先把添加本地路由信息,然后添加网关列表,然后处理发送缓冲区的数据,这个缓冲区的数据,是在make_dsr_source_route_option中调用sendbuffer_insert添加的。

     

    如果是DSR_FORWARD_OPT, 则调用dsr_forward_rep_opt_handler ,

    首先将reply信息中自己需要的路由信息提取,添加本地路由信息,如果是网关发现应答,然后则提取网关路由,并添加网关列表

     

    如果是DSR_ERR_OPT                 ,则dsr_err_opt_handler

                     如果DSR_IN_OPT                 dsr_in_err_opt_handler

                                                                                         如果是网关错误,则删除网关列表,

                                                                                         删除路由列表

                     如果DSR_FORWARD_OPT  dsr_forward_err_opt_handler

                                                                                         如果是网关错误,则删除网关列表,

                                                                                         删除路由列表

    循环结束

    如果数据包是给自己的,则从dsr头部恢复真正的源地址和目的地址(针对网关设计的),而后去掉dsr头部,然后返回nf_accept

    否则,则直接由自己转发,返回nf_stolen

    重新注入netfilter架构:nf_reinject()

     

     

     

     

     

    paket_out 流程:

     

    调用了make_and_send_dsr_data_packet进行处理 具体过程:

    1如果hoplist是空 则调用make_dsr_source_route_option  ,在这个函数中,首先比较目的地址是否为本网段,如果不是本网段则需要查找本地网关列表  

    如果没有网关信息,则发起网关发现:gateway_discovery()

    否则 检查到网关/内网地址由,如果没有路由,则发起路由请求,将发送的数据暂时保存在发送缓冲区中,【在收到路由请求应答之后来发送】

    总结一下make_dsr_sour_route_option 的功能,就是检查网关信息和路由信息,没有相关信息则发起路由请求,把要发送的数据存到发送缓冲区中

     

    2如果hoplist不为空 调用make_dsr_source_route_opt 直接将hoplist复制给scropthoplist.

    3 ,填写dsrhdr的头部信息

    4.获取下一跳的地址 填写ip头的目的地址

    5nexthop_info_entry中的ack请求时间进行修改,并根据条件修改dsr 需要dsr头部的需要ack标志位。

    6dsr_merge_opt_two合并dsr头和源路由选项,并发送insert_dsr_stuff_and_send

    insert_dsr_stuff_and_send 又调用dsr_send_packet,而后在dsr_send_packet

    调用了rtsmbuffer_insert来插入发送缓冲区一个记录

     

    回到packet_out,然后返回一个NF_STOLEN

     

     

     

     

    网关节点的钩子调用处理过程

    说明几个钩子

      dsr                                                          nat

       dsr_pre_route 优先级最高                                pre_route   优先级低于dsr_pre_route

       pre_route  ,本在发出之前的               localout     优先级高于gw_local_out

       gw_local_out  上线之前

     

    第一部分 ,从网关受到发往外网段的数据报:

     

    首先调用dsr_pre_route ,进行各种头部处理,然后恢复ip头,交付给netfilter.

    这时候natpre_route 被调用,nat负责转换原地质为网关地址,记录内外对应的ip信息和段口号,返回netfilter,然后在发出是掉用localout 转换目标地址,返回给netfilter,

    此时gw_local_out 由于也是挂在local_out处,优先级低,所以在natlocalout结束后会被调用,察看是不是由内网发给内网的,不是则直接返回nf_accept,由此一个外发的数据报处理完毕。

     

     

    第二部分 ,从外网发给内网的

     

    首先由dsr_pre_route处里,由于外网进入的是原始的数据报,所以直接返回 ,再次有natpreroute捕获,进行原地址的变换,转为网关地质,经过内外对应的iptable,再local-out 转换目标地址为内网结点地址,然后gw_local_out 再次截获,发现是由外网发到内网段的,则进行处理调用make_and_send_dsr_data_packet,转为dsr协议可以识别的包,发送出去





    展开全文
  • 主要研究如何将协作通信的优势应用于网络层, 通过对DSR路由协议的修改, 提出了一种C-DSR路由协议。C-DSR路由协议通过协作来优化传输路径上的瓶颈链路, 从而改善整个传输路径的性能。在NS2上的仿真结果表明, C-DSR...
  • 路由协议 DSR PPT

    2013-12-09 18:16:08
    关于路由协议路由协议 DSR 的一个简要PPT
  • 动态源路由协议{DSR)在Linux下的实现 李光成张连芳舒炎泰周字征 (天津大学计算机科学与技术系天津300072) Emailliguangcheng@eyoucorn 摘要 Source ProtocolDSR)是由移动节点组成的多跳无线AdHoe网络is-1中一种 动态...
  • DSR协议

    2021-02-12 17:24:20
    DSR路由协议不像OLSR协议需要周期性的广播和探测分组 全部按需操作 在获取路由或者旁听其他分组过程中,节点能够获取到打一个目的节点的多条路由,所以一条不行可以换成另一条 基本路由寻找 A发送路由请求,源节点...

    1、概述

    PS:本文只是简要介绍协议大致流程,具体协议参见RFC4728

    • DSR路由协议不像OLSR协议需要周期性的广播和探测分组
    • 全部按需操作
    • 在获取路由或者旁听其他分组过程中,节点能够获取到达一个目的节点的多条路由,所以一条不行可以换成另一条

    2、基本路由寻找

    A发送路由请求,源节点为A,路由请求附上A的识别码(id=2)和请求记录列表(A)。当B收到请求后,如果目标节点就是本节点,发送一个路由应答信号,回送信息,回送到A后,A将路由记录储存在自己的路由存储器中。如果目标节点不是本节点,B将请求附上自己的信息(id仍然为A的识别码2,请求记录列表为A,B),再广播出去。直到目标节点。
    当E点回送消息时,E点可以同时开始自己的路由寻找进程,当然也可以把收到的路由记录倒过来直接送回A。
    在这里插入图片描述
    当A发送路由请求时,A会将发送分组储存进发送缓存器中,如果超出时间限制仍然没有收到则删除该分组。A每次请求路由都会产生一个这样的路由进程。若节点寻找同一个目的地址时应当注意,有时该目的地址有可能不可达,当路由寻找进程产生过于频繁时,无用进程会填满整个发送缓存器中,因此我们需要用指数退避算法,每次请求时间间隔加倍。

    3、基本路由维护

    在这里插入图片描述
    路由可能中断,有两种应对方法。

    1. 嵌入式:在每个分组之中发送ack,考虑B给C发信息(带有ACK确认信息),下一步C发送给D,此时B可以旁听C的信息。
    2. DSR软件确认:即明确要求下一跳节点D给上一跳节C点回送消息。设置最大允许重发次数,如果超出该次数限制上一跳节点C仍然没有收到应答,则认为链路中断,此时C会给节点A返回“路由错误”,提醒其删除这条中断链。

    如果链路中断,A再寻找一条路由即可。

    4、旁听

    在这里插入图片描述
    对于经常单向链的情况,节点C应该只存储C到D,D到E的路由信息,而不应该存储B到A,C到B的路由信息,除非是双向链。
    而对于偶尔是单向链的情况,C应该将两个方向的链全部存储起来。如果其他的节点(比如X)旁听到了C发的路由信息,他应该将所有的路由链存储起来,也包括C到X的链。

    5、存储路由应答

    节点路由除了可以进行旁听以外,还可以通过自身的存储路由进行应答路由请求。例如,A发送信息,目标路由是E,当信息经过C节点时,C已经收到了一条从A到C的路由信息,此时,如果C之中的路由存储器中含有C到E的路由信息,C节点可以直接将两条路由信息进行拼接,之后再进行回送。但这样有两个问题,C中的路由信息有可能过时,即C的路由路径中有可能有些路由器已经不可达。第二个问题用一个图来说明。
    在这里插入图片描述
    假设以F作为中间节点,此时F收到了A到F的路由信息,F节点中的路由存储器中还含有F到E的路由信息,但很明显F节点是多余的。因此我们要检验路由中是否包含重复节点,如果包含的话可以进行适当调整。

    6、链路中断怎么办?

    • 分组抢救
      在这里插入图片描述
      如果C中存在另外一条到达E的路由,C可以进行替换,但是:
    1. 要维护计数器用于表明最大抢救次数,避免无休止地抢救。
    2. 向源节点回送“路由错误”。
    3. 当源节点A收到“路由错误”应答时,增加一个搜索路由的进程(A里面没有到E的路由了),与此同时将该错误进行封装,其他节点收到以后就能删除本条中断的链路。
    • 中间节点还要处理接口缓存的排队分组以及将来要用到这条链路的分组。

    7、路由自动缩短

    在这里插入图片描述
    D有可能旁听到B到C的信息,发现B的路由信息里面有本节点D,于是D回送无路由请求应答给A,在这个应答中给出一条更短的路由AB+DE,路由变短。
    当节点每次收到数据分组时,如果该分组中包含DSR源路由选项,都要检查能否进行路由缩短。

    8、流状态

    DSR协议有一种特殊的流状态,当发送节点找到一条源路由后,先将这条源路由传输给后续节点,编上一个编号,之后发送数据分组的时候就可以用流的编号来代替这条路径。因此,DSR数据格式中流状态头。发送节点发送一个建立流的分组之后,后续节点应该保存进自己的流表之中。而如果之后节点想要沿着某个流传输数据,应该在数据分组之前加上一个DSR流状态头。 (其实有些问题,只是为了理解,下面是正解)

    1. 如果没有建立起“端到端通信”(一条路由上的所有节点的流表都包含同一个流),需要添加DSR源路由选项头(表明需要寻找路径)和DSR流状态头(标识流,与先前本条流路由相关联)
    2. 建立起端到端通信
      1. 非默认流:添加流状态头,但不添加源路由选项头
      2. 默认流:利用IP TTL识别流,不添加流状态头和源路由选项头

    9、源路由接收

    当节点接收到分组时(这里的接收到一般指旁听,得到的分组叫做旁听分组),分组头若包含DSR源路由选项,应检查分组通过的源路由能否进行路由缩短。

    1. 本节点搜索“无请求路由应答表”,如果存在条目匹配,说明以前曾经检查过这个源路由,不执行路由缩短
    2. 否则:
      1. 建立新的无请求路由条目,给旁听分组包含的IP源节点发送无请求路由应答。如果无法直接发往源节点可以将收到的转发跳序列倒过来。
      2. 如果能够进行路由缩短,说明本节点还不是源路由下一跳的路由器,此时正常传输的分组仍然还没有到达本节点。丢掉旁听分组防止重复。

    10、路由应答

    在这里插入图片描述
    还是这张图,A发送路由请求分组,E收到路由请求分组后应延迟一小段时间后给A发送路由应答分组,防止出现路由应答暴。E有两种路由应答发送方法:

    1. 将路由请求分组中的转发跳序列倒过来,这样可以检测链路是否双向
    2. E对A执行新的路由寻找进程(给A发送一个路由应答),此时要求用E收到的那个路由请求分组承载该路由应答选项。否则会出现E向A进行路由请求,然后A再向E进行路由请求的局面(A和E均没有通向对方的源路由)

    11、路由应答暴

    在这里插入图片描述
    A发送到G的请求路由,然后BCDEF里面均有到G的路由,于是都会回送应答路由,然后A就炸了。
    处理方法则是在接收到路由请求以后随机延迟一段时间在发送路由应答。

    12、路由维护处理

    只有当节点将要转发分组的时候才进行路由维护处理,此时节点需要确定下一跳节点的可达性。有三种确认方法:

    1. 链路层确认:不需要确认请求选项和确认选项,如果成功,无需进行被动确认或者网络层确认。
    2. 被动确认:最后一跳上不能进行被动确认,因为最后一个节点就是目的节点,不会转发该分组。只有当到达被动确认最大尝试次数时仍然没有接到回应,才需要请求网络层确认。每个节点维护一张可能的下一跳目的节点表。
    3. 网络层确认:其他方法无效才使用网络层确认。通过在DSR协议头添加确认请求选项和确认选项。
    展开全文
  • 采煤工作面无线传感器网络DSR-CLUSTER路由协议,赵小燕,李建峰,该文设计了一种安装在采煤工作面液压支架下用于采集瓦斯浓度、温度、顶板震动等环境参数的无线传感器网络。结合该网络拓扑结构,
  • 研究分析了基于Windows NDIS框架构建无线移动Ad hoc网络路由协议测试平台的一般方法,提出了以NDIS中间层驱动形式创建动态源路由协议(dynamic source routing,DSR)的设计方案,有效地解决了嵌入NDIS的DSR协议栈与...
  • 在移动自组织网络中,基于移动节点地理位置辅助信息,提出了一种新的泛洪算法——位置辅助泛洪改进算法(ILFA),ILFA...仿真结果证明,和传统泛洪方案相比,ILFA能够有效减小DSR路由协议的路由开销并提升MANET吞吐量。
  • ADHOC路由协议原理图解包括DSR AODV等

    热门讨论 2009-05-24 13:15:29
    整理是ADHOC网络路由协议的一个ppt但是是pdf格式的 讲的比较清楚 希望对大家有帮助
  • 详细介绍了DSDV DSR ZRP LAR等协议,通俗易懂,对于ad hoc网络的初学者是个很好的资料
  • 1 引言  无线Mesh网络(WireleSS Mesh Network,简称WMN)是一种新型的宽带无线网络结构,即一... 无线Mesh接入网络中,非常重要的问题就是路由选择其协议借鉴Ad hoc网络的路由协议,分为3种:第一种为先验式路由协议
  •  否则,在cache中寻找路由(调用route_cache->findRoute( p.dest, salvage_route, 0)),如果找到,则  使用salvaged的路由发送,此时数据包的源节点发生变化,不是原来的源节点,而是me  否则,丢弃数据包,...
    链路出错时,处理流程
    0)、首先是调用xmitFailed()。
         首先生成 tellid,fromid,toid;分别代表err数据包通知的源节点,me,和me的下一跳。
         然后处理这个无法发送的数据包(调用undeliverablePkt)
         同时也处理sendbuffer中包含该错误链路的数据包(也是调用undeliverablePkt)
         最后生成RERR数据包,告知tellid。
    1)、undeliverablePkt
         如果这个数据包是我要发送的,则调用handlePktWithoutSR
         否则,如果这个数据包不值得拯救,或者拯救次数达到最大,则丢弃。
         否则,在cache中寻找路由(调用route_cache->findRoute( p.dest, salvage_route, 0)),如果找到,则
               使用salvaged的路由发送,此时数据包的源节点发生变化,不是原来的源节点,而是me
         否则,丢弃数据包,或者重新将该数据包插入sendbuffer。
        
    2)、processBrokenRouteError用在收到Rerr错误数据包,或者snoop到Rerr数据包
        processBrokenRouteError 首先处理出错的链路(告知源端节点)
         而后调用 handlePktWithoutSR,处理无法发送的数据包
    3)、handlePktWithoutSR 处理无法发送的数据包
         首先在cache中查找到dest的路由,
         如果有,则发送(调用 sendOutPacketWithRoute)
         否则调用 getRouteForPacket,寻找路由。
    4)、getRouteForPacket首先生成一个数据包。然后判断是否可以发送rreq请求包(backoff退避算法)
        如果可以,则判断
        是否目的地址==自己
        是否为dsragent_ring_zero_search,如果是,则调用 sendOutRtReq(rrp,0)。注意后面参数为0,代表该数据包只有一跳,
                因此只能到起邻居。
        否则进行最大范围的路由请求广播。
        是否....
        是否....
    5)、sendoutrtreq()设置广播请求包,调用 sendOutPacketWithRoute(p,false) 
    展开全文
  • 1 AODV协议概述 AODV协议是在DSDV协议基础上综合类似DSR中的按需路由机制进行改进后提出的不同之处在于AODV采用...点就是加入了组播路由协议扩展并支持QoS但是AODV是基于双信道的假设工作路由应答报文沿路由请求报文的
  • 动态源路由协议(Dynamic Source Routing, DSR)是在移动自组网(MANET)中使用的一种路由协议。它工作在TCP/IP协议族的网际层。   它的首部采用扩展性良好的TLV格式。除固定部分外,不同类型的选项(option)以TLV格式...
  • 基于Ad hoc网络动态源路由DSR协议的特点、利用最小区域集(MZS)的仿真框架研究Ad hoc网络路由发现和路由维护的过程,在OPNET网络仿真平台进行实验仿真,对DSR的性能进行了分析和比较研究。通过对选取总路由流量...
  • 在NS2网络仿真平台中添加了节点城区移动模型和存在障碍物时的无线信号传播模型,建立了VANET的网络模型,分别在三种不同场景中对DSR路由协议的性能进行了仿真分析。结果表明,在真实的仿真场景中VANET的性能有所恶化...
  • 路由缓存中已包含了到达该目的节点的有效路由,则立即使用此路由发送数据分组,否则它将向所有邻居广播RREQ(Route Request)分组,以启动一个路由发现过程来找到一条到达该目的节点的可用路由。 由...
  • 本文首先研究了一些现有的路由协议(如AODV,DSR和OLSR)的机制,这些路由协议已在Ad Hoc网络中广泛使用。 然后,利用他们在物联网环境中的性能,为未来的物联网找到合适的路由机制。 比较了路由开销,平均端到端...

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

dsr路由协议