路由算法简介

1、路由算法简介

路由算法是用于找到一条从源路由器到目的路由器的最佳路径的算法

  • 存在着多种路由算法,每种算法对网络和路由器资源的影响都不同
  • 由于路由算法使用多种度量标准 (metric),所以不同路由算法的最佳路径选择也有所不同

路由算法是提高路由协议功能,尽量减少路由时所带来开销的算法。

  • 当实现路由算法的软件必须运行在物理资源有限的计算机上时高效尤其重要
  • 路由算法必须健壮,即在出现不正常或不可预见事件的情况下必须仍能正常处理,例如硬件故障、高负载和不正确的实现
  • 因为路由器位于网络的连接点,当它们失效时会产生重大的问题
  • 最好的路由算法通常是那些经过了时间考验,证实在各种网络条件下都很稳定的算法
  • 此外路由算法必须能快速聚合,聚合是所有路由器对最佳路径达成一致的过程
  • 当某网络事件使路径断掉或不可用时,路由器通过网络分发路由更新信息,促使最佳路径的重新计算,最终使所有路由器达成一致
  • 聚合很慢的路由算法可能会产生路由环或网路中断

1.1、主要目的

路由器使用路由算法来找到到达目的地的最佳路由
当说“最佳路由”时,考虑的参数包括诸如跳跃数(分组数据包在网络中从一个路由器或中间节点到另外的节点的行程)、延时以及分组数据包传输通信耗时。关于路由器如何收集网络的结构信息以及对之进行分析来确定最佳路由

  • 有两种主要的路由算法:

总体式路由算法

采用总体式路由算法时,每个路由器都拥有网络中所有其他路由器的全部信息以及网络的流量状态。这些算法也被称为LS(链路状态)算法

分散式路由算法

采用分散式路由算法时,每个路由器只有与它直接相连的路由器的信息——而没有网络中的每个路由器的信息。这些算法也被称为DV(距离向量)算法

1.2、设计目标

路由算法通常具有下列设计目标的一个或多个:

优化、简单、低耗、健壮、稳定、快速聚合、灵活性

(1)最优化: 指路由算法选择最佳路径的能力。根据metric的值和权值来计算

(2)简洁性: 算法设计必须简洁。路由协议在网络中必须高效地提供其功能,尽量减少软件和应用的开销。这在当实现路由算法的软件必须运行在物理资源有限的计算机上时尤其重要。

(3)坚固性: 路由算法处于非正常或不可预料的环境时,如硬件故障、负载过高或操作失误时,都能正确运行。由于路由器分布在网络联接点上,所以在它们出故障时会产生严重后果。最好的路由器算法通常能经受时间的考验,并在各种网络环境下被证实是可靠的

(4)快速收敛: 收敛是在最佳路径的判断上所有路由器达到一致的过程。当某个网络事件引起路由可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络,引发重新计算最佳路径,最终达到所有路由器一致公认的最佳路径。收敛慢的路由算法会造成路径循环或网络中断

(5)灵活性: 路由算法要求可以快速、准确地适应各种网络环境。例如,某个网段发生故障,路由算法要能很快发现故障,并为使用该网段的所有路由选择另一条最佳路径。

1.3、技术要素

  • 路由算法还应该是灵活的,即它们应该迅速、准确地适应各种网络环境
  • 路由算法可以设计得可适应网络带宽、路由器队列大小和网络延迟
  • 路由算法的核心是路由选择算法
  • 设计路由算法时要考虑的技术要素有:

1、选择最短路由还是最佳路由;
2、通信子网是采用虚电路操作方式还是采用数据报的操作方式;
3、采用分布式路由算法还是采用集中式路由算法;
4、考虑关于网络拓扑、流量和延迟等网络信息的来源;
5、确定采用静态路由还是动态路由

优化指路由算法选择最佳路径的能力,根据metric的值和权值来计算
例如有一种路由算法可能使用跳数和延迟,但可能延迟的权值要大些。当然,路由协议必须严格定义计算metric的算法

1.4、区分要素

各路由算法的区别点包括:

  • 静态与动态
  • 单路径与多路径
  • 平坦与分层
  • 主机智能与路由器智能
  • 域内与域间
  • 链接状态与距离向量

静态与动态

  • 静态路由算法很难算得上是算法,只不过是开始路由前由网管建立的表映射。这些映射自身并不改变,除非网管去改动
  • 使用静态路由的算法较容易设计,在网络通信可预测及简单的网络中工作得很好
  • 由于静态路由系统不能对网络改变做出反映,通常被认为不适用于的大型、易变的网络
  • 九十年代主要的路由算法都是动态路由算法,通过分析收到的路由更新信息来适应网络环境的改变。如果信息表示网络发生了变化,路由软件就重新计算路由并发出新的路由更新信息。这些信息渗入网络,促使路由器重新计算并对路由表做相应的改变
  • 动态路由算法可以在适当的地方以静态路由作为补充。例如,最后可选路由(router of last resort),作为所有不可路由分组的去路,保证了所有的数据至少有方法处理

单路径与多路径

  • 一些复杂的路由协议支持到同一目的多条路径
  • 与单路径算法不同,这些多路径算法允许数据在多条线路上复用
  • 多路径算法的优点很明显:它们可以提供更好的吞吐量和可靠性

平坦与分层

  • 一些路由协议在平坦的空间里运作,其它的则有路由的层次
  • 在平坦的路由系统中,每个路由器与其它所有路由器是对等的
  • 在分层次的路由系统中,一些路由器构成了路由主干,数据从非主干路由器流向主干路由器,然后在主干上传输直到它们到达目标所在区域,在这里,它们从最后的主干路由器通过一个或多个非主干路由器到达终点。路由系统通常设计有逻辑节点组,称为域、自治系统或区间
  • 在分层的系统中,一些路由器可以与其它域中的路由器通信,其它的则只能与域内的路由器通信。在很大的网络中,可能还存在其它级别,最高级的路由器构成了路由主干
  • 分层路由的主要优点是它模拟了多数公司的结构,从而能很好地支持其通信
    多数的网络通信发生在小组中(域)。因为域内路由器只需要知道本域内的其它路由器,它们的路由算法可以简化,根据所使用的路由算法,路由更新的通信量可以相应地减少

主机与路由器

一些路由算法假定源结点来决定整个路径,这通常称为源路由。在源路由系统中,路由器只作为存贮转发设备,无意识地把分组发向下一跳。其它路由算法假定主机对路径一无所知,在这些算法中,路由器基于自己的计算决定通过网络的路径。前一种系统中,主机具有决定路由的智能,后者则为路由器具有此能力。
主机智能和路由器智能的折衷实际是最佳路由与额外开销的平衡。主机智能系统通常能选择更佳的路径,因为它们在发送数据前探索了所有可能的路径,然后基于特定系统对“优化”的定义来选择最佳路径。然而确定所有路径的行为通常需要很多的探索通信量和很长的时间

域内与域间

一些路由算法只在域内工作,其它的则既在域内也在域间工作。这两种算法的本质是不同的。其遵循的理由是优化的域内路由算法没有必要也成为优化的域间路由算法

链接与距离

  • 链接状态算法(也叫做短路径优先算法)把路由信息散布到网络的每个节点,不过每个路由器只发送路由表中描述其自己链接状态的部分
  • 距离向量算法(也叫做Bellman-Ford算法)中每个路由器发送路由表的全部或部分,但只发给其邻居。也就是说,链接状态算法到处发送较少的更新信息,而距离向量算法只向相邻的路由器发送较多的更新信息
  • 由于链接状态算法聚合得较快,它们相对于距离算法产生路由环的倾向较小
  • 在另一方面,链接状态算法需要更多的CPU和内存资源,因此链接状态算法的实现和支持较昂贵。虽然有差异,这两种算法类型在多数环境中都可以工作得很好

1.5、度量标准

  • 路由算法使用了许多种不同的度量标准去决定最佳路径
  • 复杂的路由算法可能采用多种度量来选择路由,通过一定的加权运算,将它们合并为单个的复合度量、再填入路由表中,作为寻径的标准
  • 通常所使用的度量有:路径长度、可靠性、时延、带宽、负载、通信成本等

路径长度

路径长度是最常用的路由metric。一些路由协议允许网管给每个网络链接人工赋以代价值,这种情况下,路由长度是所经过各个链接的代价总和。其它路由协议定义了跳数,即分组在从源到目的的路途中必须经过的网络产品,如路由器的个数

可靠性

可靠性,在路由算法中指网络链接的可依赖性(通常以位误率描述),有些网络链接可能比其它的失效更多,网路失效后,一些网络链接可能比其它的更易或更快修复。任何可靠性因素都可以在给可靠率赋值时计算在内,通常是由网管给网络链接赋以metric值

路由延迟

路由延迟指分组从源通过网络到达目的所花时间。很多因素影响到延迟,包括中间的网络链接的带宽、经过的每个路由器的端口队列、所有中间网络链接的拥塞程度以及物理距离。因为延迟是多个重要变量的混合体,它是个比较常用且有效的metric

带宽

带宽指链接可用的流通容量。在其它所有条件都相等时,10Mbps的以太网链接比64kbps的专线更可取。虽然带宽是链接可获得的最大吞吐量,但是通过具有较大带宽的链接做路由不一定比经过较慢链接路由更好。例如,如果一条快速链路很忙,分组到达目的所花时间可能要更长

负载

负载指网络资源,如路由器的繁忙程度。负载可以用很多方面计算,包括CPU使用情况和每秒处理分组数。持续地监视这些参数本身也是很耗费资源的

通信成本

通信成本是另一种重要的metric,尤其是有一些公司可能关心运作费用甚于关心性能。即使线路延迟可能较长,他们也宁愿通过自己的线路发送数据而不采用昂贵的公用线路

1.6、典型种类

LS算法

采用LS算法时,每个路由器必须遵循以下步骤:

  • 1、确认在物理上与之相连的路由器并获得它们的IP地址。当一个路由器开始工作后,它首先向整个网络发送一个“HELLO”分组数据包。每个接收到数据包的路由器都将返回一条消息,其中包含它自身的IP地址
  • 2、测量相邻路由器的延时(或者其他重要的网络参数,比如平均流量)。为做到这一点,路由器向整个网络发送响应分组数据包。每个接收到数据包的路由器返回一个应答分组数据包。将路程往返时间除以2,路由器便可以计算出延时。(路程往返时间是网络当前延迟的量度,通过一个分组数据包从远程主机返回的时间来测量。)该时间包括了传输和处理两部分的时间——也就是将分组数据包发送到目的地的时间以及接收方处理分组数据包和应答的时间
  • 3、向网络中的其他路由器广播自己的信息,同时也接收其他路由器的信息在这一步中,所有的路由器共享它们的知识并且将自身的信息广播给其他每一个路由器。这样,每一个路由器都能够知道网络的结构以及状态
  • 4、使用一个合适的算法,确定网络中两个节点之间的最佳路由,在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如Dijkstra最短路径算法。在这个算法中,一个路由器通过收集到的其他路由器的信息,建立一个网络图。这个图描述网络中的路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示节点间的跃点数。例如,如果一个节点与目的地之间有两条链路,路由器将选择权值最低的链路。

Dijkstra算法

Dijkstra算法执行下列步骤

  • 1、路由器建立一张网络图,并且确定源节点和目的节点,在这个例子里我们设为V1和V2。然后路由器建立一个矩阵,称为“邻接矩阵”。在这个矩阵中,各矩阵元素表示权值。例如,[i, j]是节点Vi与Vj之间的链路权值。如果节点Vi与Vj之间没有链路直接相连,它们的权值设为“无穷大”
  • 2、路由器为网路中的每一个节点建立一组状态记录。此记录包括三个字段:
    前序字段——表示当前节点之前的节点。
    长度字段——表示从源节点到当前节点的权值之和。
    标号字段——表示节点的状态。每个节点都处于一个状态模式:“永久”或“暂时”。
  • 3、路由器初始化(所有节点的)状态记录集参数,将它们的长度设为“无穷大”,标号设为“暂时”。
  • 4、路由器设置一个T节点。例如,如果设V1是源T节点,路由器将V1的标号更改为“永久”。当一个标号更改为“永久”后,它将不再改变。一个T节点仅仅是一个代理而已。
  • 5、路由器更新与源T节点直接相连的所有暂时性节点的状态记录集。
  • 6、路由器在所有的暂时性节点中选择距离V1的权值最低的节点。这个节点将是新的T节点。
  • 7、如果这个节点不是V2(目的节点),路由器则返回到步骤5。
  • 8、如果节点是V2,路由器则向前回溯,将它的前序节点从状态记录集中提取出来,如此循环,直到提取到V1为止。这个节点列表便是从V1到V2的最佳路由。

链路状态路由算法

  • 链路状态算法(也称最短路径算法)发送路由信息到互联网上所有的结点,然而对于每个路由器,仅发送它的路由表中描述了其自身链路状态的那一部分

距离向量算法

  • 距离向量算法(也称为Bellman-Ford算法)则要求每个路由器发送其路由表全部或部分信息,但仅发送到邻近结点上。从本质上来说,链路状态算法将少量更新信息发送至网络各处,而距离向量算法发送大量更新信息至邻接路由器。 ——由于链路状态算法收敛更快,因此它在一定程度上比距离向量算法更不易产生路由循环。但另一方面,链路状态算法要求比距离向量算法有更强的CPU能力和更多的内存空间,因此链路状态算法将会在实现时显得更昂贵一些

2、路由选择算法的功能

源/宿对之间的路径选择,以及选定路由之后将报文传送到它们的目的地

路由选择算法的要求:

  • 正确性:确保分组从源节点传送到目的节点
  • 简单性:实现方便,软硬件开销小
  • 自适应性:也称健壮性,算法能够适应业务量和网络拓扑的变化
  • 稳定性:能长时间无故障运行
  • 公平性:每个节点都有机会传送信息
  • 最优性:尽量选取好的路由

3、自治系统 AS (Autonomous System)

由一个组织管理的一整套路由器和网络

  • 使用一种AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由
  • 使用一种 AS 之间的路由选择协议用以确定分组在AS之间的路由
  • 尽管一个 AS 使用了多种内部路由选择协议和度量,但对其他 AS 表现出的是一个单一的和一致的路由选择策略

4、两大类路由选择协议

因特网的中,路由协议可以分为
内部网关协议 IGP (Interior Gateway Protocol)
外部网关协议 EGP (External Gateway Protocol)

IGP是在一个AS内部使用的路由选择协议,如RIP和OSPF协议,是域内路由选择 (interdomain routing)
当源主机和目的主机处在不同的AS中,在数据报到达AS的边界时,使用外部网关协议 EGP 将路由选择信息传递到另一个自治系统中,如BGP-4,是域间路由选择 (intradomain routing)

5、RIP(路由信息协议)

路由信息协议 (Routing Information Protocol, RIP) 是一种基于距离 向量的路由选择协议
RIP 协议要求网络中的每一个路由器都要维护从它自己到自治系统内其他每一个目的网络的距离和下一跳路由器地址

6、OSPF(开放最短路径优先)

开放最短路径优先(Open Shortest Path First,OSPF),这个算法名为“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF,只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”

小知识

路由算法与路由协议的区别:

区别一:概念不同

路由算法是指路由器根据多种路由测度(比如长度)来选择路由,确定路由表的方法,路由协议就是在路由指导IP数据包发送过程中事先约定好的规定和标准。路由器之间运行路由协议交换路由信息,路由协议交换的路由信息最终会形成路由表保持在路由器中,而路由器就是根据路由表来决定分组的转发
常用的路由协议:RIP,OSPF,BGP

区别二:关系不同

协议是两端协商的一种约定,算法是协议使用以计算路由去向的一种方法。各种路由协议之间采取不同的路由算法进行路由选择。

【参考链接-百度百科】
【路由算法有哪些类型】

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值