当前位置:文档之家› 经典路由算法

经典路由算法

经典路由算法
一、先验式路由协议(DSDV)
先验式路由协议是一种基于表格的路由协议。

在这种协议中,每个节点维护一张或多张表格,这些表格包含到达网络中其它所有节点的路由信息。

当检测到网络拓扑结构发生变化时,节点在网络中发送路由更新信息。

收到更新信息的节点更新自己的表格,以维护一致的、及时的、准确的路由信息。

不同的先验式路由协议的区别在于拓扑更新信息在网络中传输的方式和需要存储的表的类型。

先验式路由协议不断的检测网络拓扑和链路质量的变化,根据变化更新路由表,所以路由表可以准确地反映网络的拓扑结构。

源节点一旦需要发送报文,可以立即得到到达目的节点的路由。

(DSDV、OLSR路由协议等很多普通的因特网路由协议)它们查找路由是不依赖于路径上的节点是否要发包,而是每个节点维护一张包含到达其它节点的路由信息的路由表。

节点间通过周期性的交换路由信息来不断更新自身的路由表,以便能够及时的反映网络拓扑结构和变化,以维护一致的、及时的、准确的路由信息。

DSDV:目的节点序列距离矢量协议(待补充)
可以解决路由成环问题,每一个节点维持一个到其它节点的路由表,表的内容为路由的“下一跳”节点。

1)给每条路径增加了一个序列号码
2)每个目的节点会定期广播一个单调递增的偶数序列号号码
3)当一个节点发现它到某个目的节点的路径断开时,它把到这个节点的距离
设为无穷大。

并且将这条路径的序列号加1(此时为奇数),然后向网络中
广播这个更新包。

当这条路径修复时,它又将序列号加1然后广播出去。

换另一种方式来说,每个节点都保持着一张路由表,路由表中的每一项记录了
它到目的节点的距离和序列号,也就是(s,d)。

我们假设有一目的节点为D,当
以下任何一情况发生时,都会发送更新:
1)D定期将自己的序列号加2并广播出去,即(S,0)
2)如果节点X要通过Y到达节点D,当X和Y之间的连接断开后,X将到D的路径的序列号加1,同时将路径值设为∞,然后将信息发送给邻居。

参考资料:/candycat1992/article/details/8100146 CSDN博客DSDV协议
DSDV创新之处是为每一条路由设置一个序列号,序列号大的路由为优选路由,序列号相同时,跳数少的路由为优选路由。

正常情况下,节点广播的序列号是单调递增的偶数,当节点B发现到节点D的路由(路由序列号为s)中断后,节点B 就广播一个路由信息,告知该路由的序列号变为s+l,并把跳数设置为无穷大,这样,任何一个通过B发送信息的节点A的路由表中就包括一个无穷大的距离,这一过程直到A收到一个到达D的有效路由(路由序列号为s+1-1)为止。

在此方案中,网络内所有的移动终端都建立一个路由表,包括所有的目的节点到达各个目标节点的跳跃次数(或标识距离矢量的路径矩阵)。

每个路由记录都有一个由目标节点设定的序列号。

序列号使移动终端可以区分当前有效路由路径和已过时的路由路径。

路由表周期性地做全网更新以维护全网的通信有效性。

通常,为了减少由于路由表更新而产生的大量路由信息传递,减少网络路由开销,可以采用两种路由更新方式。

1)第一种是全清除方式:
即通过多个网络协议数据单元将路由更新信息在全网中传输。

如果网络内终端出现移动,则产生的新路由分组信息不定期的传达至网络内所有终端。

2)第二种是部分更新方式:
或称为增量更新方式,即在最后一次全清除传输后,只传递那些涉及变化了的路
由信息进行传输,这些信息通常被放置在一个标准的NPDU里,从而减少路由信息的传递量。

在增量更新方式中移动终端可以增加另外一个附加的表来存储路由更新信息。

新路由信息的广播信息包含目标节点的地址,到每个目标节点的跳数、接收信息的序列号,以及独有的广播序列号。

新路由信息适用最新的序列号。

如果两次更新具有相同的序列号,则具有较小的距离矢量阵的路由具有优先权。

因为它代表路径最短(或跳数最少)。

在通常情况下,从源节点到目的节点可能存在多条路径,在最佳路由路径的确定过程中,移动终端跟踪不同路由路径的时间,最佳路由路径就是时间最短的路径。

在找到最佳路径之前,该时间呈收敛性涨落。

一旦路径确定,这些信息就存放到每一个终端的路由表中,直到节点收到新的路由信息。

二、反应式路由协议(AODV)
反应式路由选择协议是一种当需要一条从源节点到目的节点的路径进行数据发送时才查找路由的路由选择方式。

节点并不保存整个网络的及时准确的路由信息。

当源节点要向目的节点发送报文时,源节点在网络中发起路由查找过程,找到相应的路由后,才开始发送报文。

为了提高效率,节点可以将找到的路由保存在缓存中供后续发送使用。

反应式路由协议按需路由的特点可以较好地适应节点移动较为频繁的无线网络环境,节点发生移动后,只需要更新需要发送数据的相关路径的路由信息即可。

AODV: adhoc on-demand distance vetor routing 无线自组网按需平面距离矢量路由协议
当一个节点需要给网络中的其他节点传送信
息时,如果没有到达目标节点的路由,则必须先以
多播的形式发出路由请求消息RREQ (route request
packet)。

RREQ报文中记录着发起节点和目标节点
的网络层地址。

邻近节点收到RREQ,首先判断目标节点是否
为自己。

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

直至发现目的节点。

在网络资源充分的情况下,AODV协议可以通过定期广播hello报文来维护路由,一旦发现某一个链路断开,节点就发送ERROR报文通知那些因链路断开而不可达的节点删除相应的记录或者对已存在的路由进行修复。

在AODV中,整个网络都是静止的除非有连接建立的需求。

这就是说一个网络节点要建立连接时才广播一个连接建立的请求。

其他的AODV节点转发这个请求消息,并记录源节点,和回到源节点的临时路由。

当接收连接请求的节点
知道到达目的节点的路由时,就把这个路由信息按照先前记录的回到源节点的临时路由发回源节点。

于是源节点就开始使用这个经由其他节点并且有最短跳数的路由。

当链路断掉,路由错误就被回送给源节点,于是源节点就重新发起路由查找的过程。

参考资料:https:///item/AODV/7811971?fr=aladdin百度百科AODV
三、基于位置的路由协议(GPSR)
GPSR路由协议:greedy perimeter stateless routing
GPSR路由算法是使用地理位置信息实现路由(非辅助作用)的一种算法,它使用贪婪算法来建立路由。

当节点S需要向节点D转发数据分组的时候,它首先在自己的所有邻居节点中选择一个距节点D最近的节点作为数据分组的下一跳,然后将数据传送给它。

该过程一直重复,直到数据分组到达目的节点D或某个最佳主机。

贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。

也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。

贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

一般步骤是:
1.建立数学模型来描述问题;
2.把求解的问题分成若干个子问题;
3.对每一子问题求解,得到子问题的局部最优解;
4.把子问题的局部最优解合成原来问题的一个解。

参考资料:/qq_32400847/article/details/51336300从零开始学贪心算法
空洞问题:
产生或收到数据的节点向以欧氏距离计算出的最靠近目的节点的邻节点并向其转发数据,但由于数据可能会到达没有比现节点更接近目的点的区域(称为空洞),导致数据无法传输。

解决方法:当出现这种情况时,空洞周围的节点能够探测到,并利用右手法则沿空洞周围传输来解决此问题。

优点:
1)该协议避免了在节点中建立、维护、存储路由表,只依赖直接邻节点进行路由
选择,几乎是一个无状态的协议;
2)且使用接近于最短欧氏距离的路由,数据传输时延小;并能保证只要网络连通
性不被破坏,一定能够发现可达路由。

缺陷:需要GPS定位系统或其他定位方法协助计算节点位置信息。

参考资料:/showcontent_38756.htm无线网状网络的路由协议分析。

相关主题