目录
1 DSR协议简介
2 路由发现
2.1 路由发现过程
2.2 几种情况
3 路由维护
3.1 点到点证实机制
3.2 端到端证实机制
4 路由缓冲技术优化策略
5 DSR协议的优缺点
5.1 优点
5.2 缺点
1 DSR协议简介
DSR协议是一种基于源路由方式的按需路由协议。在DSR协议中,当发送者发送报文时,在数据报文头部携带到达目的节点的路由信息,该路由信息由网络中的若干节点地址组成,源节点的数据报文就通过这些节点的中继转发到达目的节点。也就是说,在开始数据报文发送前,源节点就已经完成了路由发现过程并得到了有效路由。与基于表驱动方式的路由协议不同的是,在DSR协议中,节点不需要实时维护网络的拓扑信息,因此在节点需要发送数据时,如何能够知道到达目的节点的路由是DSR路由协议需要解决的核心问题。
DSR路由协议主要路由发现和路由维护两部分组成。路由发现过程主要用于帮助源节点获得到达目的节点的路由。当路由中的节点由于移动、关机等原因无法保证到达目的节点时,当前的路由就不再有效了。DSR协议通过路由维护过程来监测当前路由的可用情况,当监测到路由故障时,将调用新的一轮路由发现过程。同时为了提高系统性能,在DSR协议中,还引入了一系列的优化技术,如路由缓冲等。下面将分别介绍这几个部分。
2 路由发现
2.1 路由发现过程
节点通过路由发现过程获得到达网络中其他节点的路由。
1. 源节点首先向其邻节点广播路由请求报文。报文中包括“目的节点地址”、“路由记录”以及“请求ID”等字段。其中“路由记录”字段用于记录从源节点到目的节点路由中的中间节点地址,当路由请求报文到达目的节点时,该字段中的所有节点地址即构成了从源节点到目的节点的路由。“请求ID”字段由源节点管理,中间节点维护<源节点地址,请求ID>序列对列表,<源节点地址,请求ID>序列用于唯一标识一个路由请求报文,以防止收到重复的路由请求。
2. 中间节点在收到源节点的路由请求报文后,按照以下步骤处理报文:
(1)如果路由请求报文的<源节点地址,请求ID>存在于本节点的序列对列表中,表明此请求报文已经收到过,节点不用处理该请求;如果不存在,则转步骤(2)
(2)然后当前节点的地址已存在与路由记录字段中,该节点不用处理该请求;如果不存在,则转步骤(3)
(3)如果请求报文的目的节点就是本节点,则路由记录节点中的节点地址序列构成了从源节点到目的节点的路由。节点向源节点发送“路由响应”报文,同时将该路由拷贝到“路由响应”报文中;否则转步骤(4)
(4)该节点是中间节点。将节点地址附在报文的“路由记录”字段后,同时向邻节点广播该路由请求。
通过这种方法,路由请求报文将最终到达目的节点。如图1所示为节点A到达节点D的路由请求过程。虚线箭头代表路由请求消息发送,括号中的内容代表消息中的路由记录。
图1 DSR路由请求过程
其中有几个需要注意的问题:
(1)节点B分别收到了两次路由请求报文,B先收到来自A的路由请求,并将自己的地址添加到路由记录字段后将该消息广播给其邻节点,随后B又收到来自F的路由请求,由于路由请求报文的<源节点地址,请求ID>存在于节点B的序列对列表中,因此B对此不做任何处理。
(2)目的节点D可能会同时收到来自节点C和E的路由请求消息,造成消息碰撞,反而收不到正确的路由请求,因此在Ad hoc网络中,广播并非完全可靠。可以采用一定的策略来避免,如节点随机延时发送,或者节点间采用证实机制等。
2.2 几种情况
目的根据收到的源节点路由请求报文回送“路由响应”报文。目的节点在将“路由响应”报文转发到源节点时,需要考虑这样几种情况:
(1)目的节点有到达源节点的路由。此时目的节点可以直接使用该路由回送响应报文;
(2)如果目的节点没有到源节点的路由,此时需要考虑节点通信信道问题:
①如果网络中所有节点间的通信信道是对称的,此时目的节点到源节点的路由即为源节点到目的节点的反向路由;
②如果信道是非对称的,目的节点就需要发起到源节点的路由请求过程,同时将路由响应报文捎带在新的路由协议中。
如图2所示为DSR的路由响应过程。假设信道是双向信道,节点D根据最短路由原则选择了路由(A-B-C-D)作为最终路由,将此信息通过反向路由发送至源节点A
图2 DSR路由响应过程
3 路由维护
传统的路由协议中通过周期性广播路由更新消息将路由发现和路由维护过程合二为一。而在DSR协议中,由于没有这种周期性的广播,节点必须通过路由维护过程来检测路由的可用性。
按照路由维护的不同检测方法,可以将路由维护分为以下两种:
3.1 点到点证实机制
又称逐跳证实机制。即相邻节点间通过数据链路层的消息证实或者高层应用层之间的消息证实机制,来检测路由中各邻节点的可达性。当发现节点间的传输故障,即路由不再有效时,向上级节点发送“路由差错”报文,收到路由差错报文的节点根据此信息将该路由从本节点的路由缓冲区中删除。
3.2 端到端证实机制
在有些应用中要求端到端节点间的证实,通过端到端的证实机制可以用来检测整个路由的有效性。但当路由发生故障时,该机制无法确定故障发生的位置,即究竟是在哪个节点间发生了故障。
ps. 点到点与端到端都是网络设备之间的关系,两者工作的网络分层不同。点到点工作在物理层,是指两个网络设备直接相连,中间没有其他设备;端到端工作在传输层(如TCP连接),是指两个网络设备之间的逻辑互连,不管中间有多少物理设备。
4 路由缓冲技术优化策略
在DSR协议中,为了提高系统效率,协议中采用了路由缓冲优化策略。由于无线广播信道的特点,节点可以处于“混合监听”状态,即可以听到相邻节点发出的所有报文,包括路由请求、路由响应等。这些报文中携带了网络的一些路由信息,节点通过缓存这些路由信息,可以尽量减少每次发送新报文时启动的路由发现过程,以提高系统的效率。如图3所示,节点A通过发起目的节点为D的路由请求过程,获得路由A-B-C-B,同时节点A也获得了到达该路由中所有节点(如节点B、C)的路由,节点B等中间节点也获得了到达节点D的路由。
图3 DSR路由缓冲技术
同时,中间节点在收到源节点的路由请求时,如果本节点路由缓冲区中有到达目的节点的路由,可以直接恢复路由响应消息。如节点F在发起到节点D的路由请求时,当报文到达节点B时,节点B中有缓冲路由B-C-D,此时节点B可以直接回复路由协议(F-B-C-D)。这样一方面加快了路由请求的响应,同时也减少了路由请求消息的广播。
当然,这样也会出现一些问题。例如,假设节点A和节点B都有到节点D的路由,它们几乎同时都收到节点F的路由请求,几乎同时响应,由于“隐终端”等问题,可能会造成报文冲突。为了解决这个问题,在DSR协议中,要求节点在发送缓冲路由前先随机等待一段时间(通常时间和距离目的节点的跳数成正比,即距离越长,等待时间越久)。这样,一方面避免了响应冲突问题,同时也解决了路由的最短优化问题。文章来源:https://www.toymoban.com/news/detail-443749.html
尽管路由缓冲技术能够在一定程度上提高系统的效率,但同时一些错误或国企的路由缓冲信息(如由于某些节点的移动使得路由失效)也会对网络带来负面影响,这些错误的路由信息可能会影响和感染其他节点。对此,可以采用一定的策略来减少其影响。例如为缓冲路由设定有效期,超过有效期的路由将被认为无效,将其从缓冲区中删除。文章来源地址https://www.toymoban.com/news/detail-443749.html
5 DSR协议的优缺点
5.1 优点
- 仅在需要通信的节点间维护路由,减少了路由维护的代价
- 路由缓冲技术可进一步减少路由发现的代价
- 由于采用了路由缓冲技术,因此在一次路由的发现过程中,会产生多种到达目的节点的路径
- 支持非对称传输信道模式
5.2 缺点
- 由于采用源节点路由,每个数据报文的头部都要携带路由信息,增加了报文长度;
- 用于路由发现的控制报文可能会涉及全网各节点,造成一定的耗费;一种可行的优化方法是控制路由发现报文的传输距离(如跳数),如果本轮路由发现失败,后续的路由发现过程中再加大传输距离;
- “路由响应风暴”问题。由于采用路由缓冲技术,中间节点根据自己的缓冲路由,对路由请求直接应答,源节点会同时收到多个路由响应,造成路由响应信息之间的竞争;通常的解决方法是当中间节点在监听到邻节点的路由报文,发现该路由比自己的路由更短时,就不再发送本节点的路由响应报文;
- “脏”缓冲路由对其他节点的影响。如果中间节点的路由缓冲记录已经过时,当该节点根据缓冲路由回复路由请求时,其他监听到此“脏”路由的节点会更改自己的缓冲路由记录,造成“脏”缓冲路由的污染传播。因此必须采取相应的措施,尽量避免和减少“脏”缓冲路由的影响。
到了这里,关于Ad hoc网络路由协议概述3——按需路由协议(1)DSR协议(Dynamic source routing protocol)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!