路由算法是路由协议的核心,不同的路由算法其可运行的网络规模各不相同。目前常用的路由算法有距离向量算法和链路状态算法两种。
1、距离向量算法
距离向量(Distance Vector,DV)算法也称为Bellman Ford算法,使用此算法的路由协议要求路由器将其路由表发送给与其相邻的路由器,相邻路由器在新收到的路由信息以及自身的路由表中找出优路由,构成路由表的新表项,并用此表项刷新原路由表。
距离向量路由算法的基本思想是:各结点周期性地向所有相邻结点发送路由刷新报文,报文由组(V,D)有序数据对组成,其中V表示此结点可以到达的结点,D表示到达此结点的距离。收到路由刷新报文的结点重新计算和修改它的路由表。
距离向量路由算法具有简单、易于实现等优点,但它不适用于剧烈变化的路由或大型网络环境。由于某个结点的路由变化从相邻结点传播出去,其过程是非常缓慢的,因此,在距离向量路由选择算法的路由刷新过程中,可能会出现路由不致问题。另外,距离向量路由选择算法需要大量的信息交换,但很多可能与当前路由刷新无关。
2、链路状态算法
链路状态算法也被称为短路径算法,该算法使用短路状态作为度量选择路由。链路状态算法的基本步骤如下:
首先,每个结点必须找出它的所有邻近结点。当个结点启动后,通过在每条点到点的链路上发送个特殊的Hello报文,并通过链路另端的结点发送个应答报文。
接着,链路状态路由选择算法要求每个结点都知道到每个邻近结点的时延,因此每个结点都必须测量出到所有邻近结点的时延,测量的方法是:在它们之间的链路上发送个特殊的Echo响应报文,并要求对方收到后立即再特此响应报文发送回来,将测量得到的来同时间除以2,即可得到个比较合理的时延估计值。
收集用于交换的信息后,下步是为每个结点建立个包含所有数据的报文。报文以发送者的标识符开始,随后建立顺序号以及其所有邻近结点的列表。对于每—个邻近结点,路由器给出到此结点的时延。
路由器般每隔段时间间隔周期性地建立列表,或当结点检测到发生了某些重要事件时建立列表。例如,条链路或个邻近结点崩溃或恢复时,建立列表。
然后是分发链路状态报文。基本的分发算法是使用顺序号的洪泛法技术。这种分发算法由于循环使用顺序号、某个结点曾经崩溃或某个顺序号曾经被误用等原因,可能会使不同的结点使用不同版本的拓扑结构,导致不稳定、循环、到达不了目的机器及其他问题。为了防止这类错误的发生,需要在每个报文中包含—个生存期域,此域每秒减1,当减到0时,丢弃此报文。
后是计算新路由。旦个结点收集了所有来自于其他结点的链路状态报文,就可以据此构造完整的网络拓扑结构图,然后使用Dijkstra算法在本地构造到所有可能目的地的短通路。
链路状态路由选择算法具有各结点独立计算短通路、能够快速适应网络变化、交换路由信息少等优点,但相对于距离向量路由选择算法,它较复杂,难以实现。
距离向量算法比较简单,而链路状态算法较为复杂。链路状态算法收敛更快,不容易产生路由循环,但链路状态算法要比距离向量算法消耗更多的CPU和内存资源。采用距离向量算法的路由协议比较适合小型网络,而采用链路状态算法的路由协议可用于大型网络。
3、路由算法的设计目标
路由算法在路由协议中起着至关重要的作用,采用何种算法往往决定终的寻径结果,因此选择路由算法定要仔细。通常需要综合考虑以下几个设计目标。
(1)优化:指路由算法选择佳路径的能力。
(2)简洁性:算法设计简洁,利用少的软件和开销,提供有效的功能。
(3)坚固性:路由算法处于非正常或不可预料的环境时,如硬件故障、负载过高或操作失误时,都能正确运行。由于路由器分布在网络连接点上,所以在它们出故障时会产生严重后果。好的路由算法通常能经受时间的考验,并在各种网络环境下被证实是可靠的。
(4)快速收敛:收敛指在佳路径的判断上,所有路由器达到致的过程。当某个网络事件引起路由可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络,引发重新计算佳路径,终达到所有路由器致公认的佳路径。收敛慢的路由算法会造成路径循环或网络中断。
(5)灵活性:路由算法可以快速、准确地适应各种网络环境。例如,某个网段发生故障,路由算法要很快发现故障,并为使用该网段的所有路由选舞另条佳路径。
4、路由算法的相关参数
路由算法使用了许多种不同的度量标准去决定佳路径。复杂的路由算法可能采用多种度量来选择路由,通过定的加权运算,将它们合并为单个的复合度量,再填入路由表中,作为寻径的标准。路由算法涉及的相关参数如下。
(1)跳数(Hop Count):分组从源结点到达目的结点经过的路由器个数。
(2)带宽(Bandwidth):链路的传输速率。
(3)延时(Delay):分组从源结点到达目的结点花费的时间。
(4)负载(Load):通过路由器或线路的单位时间通信量。
(5)可靠性(Relibility):传输过程中的误码率。
(6)开销(Overhead):传输过程中的耗费,均所使用的链路带宽相关。