路由算法的类型有

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由算法的类型有相关的知识,希望对你有一定的参考价值。

路由算法有很多种,如果从路由表对网络拓扑和通信量变化的自适应能力的角度划分,可以分为静态路由算法和动态路由算法两大类,这两大类又可细分为几种小类型,比较典型常见的有以下几种:

一、静态路由算法

1.Dijkstra算法(最短路径算法)

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN,CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权回路。

Dijkstra算法执行步骤如下:

步骤一:路由器建立一张网络图,并且确定源节点和目的节点,在这个例子里我们设为V1和V2。然后路由器建立一个矩阵,称为“邻接矩阵”。在这个矩阵中,各矩阵元素表示权值。例如,[i,j]是节点Vi与Vj之间的链路权值。如果节点Vi与Vj之间没有链路直接相连,它们的权值设为“无穷大”。

步骤二:路由器为网路中的每一个节点建立一组状态记录。此记录包括三个字段:

前序字段———表示当前节点之前的节点。

长度字段———表示从源节点到当前节点的权值之和。

标号字段———表示节点的状态。每个节点都处于一个状态模式:“永久”或“暂时”。

步骤三:路由器初始化(所有节点的)状态记录集参数,将它们的长度设为“无穷大”,标号设为“暂时”。

步骤四:路由器设置一个T节点。例如,如果设V1是源T节点,路由器将V1的标号更改为“永久”。当一个标号更改为“永久”后,它将不再改变。一个T节点仅仅是一个代理而已。

步骤五:路由器更新与源T节点直接相连的所有暂时性节点的状态记录集。

步骤六:路由器在所有的暂时性节点中选择距离V1的权值最低的节点。这个节点将是新的T节点。

步骤七:如果这个节点不是V2(目的节点),路由器则返回到步骤5。

步骤八:如果节点是V2,路由器则向前回溯,将它的前序节点从状态记录集中提取出来,如此循环,直到提取到V1为止。这个节点列表便是从V1到V2的最佳路由。

2.扩散法
事先不需要任何网络信息;路由器把收到的每一个分组,向除了该分组到来的线路外的所有输出线路发送。将来会有多个分组的副本到达目的地端,最先到达的,可能是走了“最优”的路径常见的扩散法是选择性扩散算法。

3.LS算法

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

步骤一:确认在物理上与之相连的路由器并获得它们的IP地址。当一个路由器开始工作后,它首先向整个网络发送一个“HELLO”分组数据包。每个接收到数据包的路由器都将返回一条消息,其中包含它自身的IP地址。

步骤二:测量相邻路由器的延时(或者其他重要的网络参数,比如平均流量)。为做到这一点,路由器向整个网络发送响应分组数据包。每个接收到数据包的路由器返回一个应答分组数据包。将路程往返时间除以2,路由器便可以计算出延时。(路程往返时间是网络当前延迟的量度,通过一个分组数据包从远程主机返回的时间来测量。)该时间包括了传输和处理两部分的时间——也就是将分组数据包发送到目的地的时间以及接收方处理分组数据包和应答的时间。

步骤三:向网络中的其他路由器广播自己的信息,同时也接收其他路由器的信息。

在这一步中,所有的路由器共享它们的知识并且将自身的信息广播给其他每一个路由器。这样,每一个路由器都能够知道网络的结构以及状态。

步骤四:使用一个合适的算法,确定网络中两个节点之间的最佳路由。

路由算法有哪些类型?路由算法与路由协议的区别

在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如Dijkstra最短路径算法。在这个算法中,一个路由器通过收集到的其他路由器的信息,建立一个网络图。这个图描述网络中的路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示节点间的跃点数。例如,如果一个节点与目的地之间有两条链路,路由器将选择权值最低的链路。

二、动态路由算法

1.距离向量路由算法

距离向量路由算法,也叫做最大流量演算法,其被距离向量协议作为一个算法,如RIP、BGP、ISO IDRP、NOVELL IPX。使用这个算法的路由器必须掌握这个距离表(它是一个一维排列-“一个向量”),它告诉在网络中每个节点的最远和最近距离。在距离表中的这个信息是根据临近接点信息的改变而时时更新的。表中数据的量和在网络中的所有的接点(除了它自己本身)是等同的。这个表中的列代表直接和它相连的邻居,行代表在网络中的所有目的地。每个数据包括传送数据包到每个在网上的目的地的路径和距离/或时间在那个路径上来传输(我们叫这个为“成本”)。这个在那个算法中的度量公式是跳跃的次数,等待时间,流出数据包的数量,等等。在距离向量路由算法中,相邻路由器之间周期性地相互交换各自的路由表备份。当网络拓扑结构发生变化时,路由器之间也将及时地相互通知有关变更信息。其优点是算法简单容易实现。缺点是慢收敛问题,路由器的路径变化需要像波浪一样从相邻路由器传播出去,过程缓慢。

每一个相邻路由器发送过来的路由表都要经过以下步骤:

步骤一:对地址为X的路由器发过来的路由表,先修改此路由表中的所有项目:把”下一跳”字段中的地址改为X,并把所有”距离”字段都加1。

步骤二:对修改后的路由表中的每一个项目,进行以下步骤:

(1)将X的路由表(修改过的),与S的路由表的目的网络进行对比。若在X中出现,在S中没出现,则将X路由表中的这一条项目添加到S的路由表中。

(2)对于目的网络在S和X路由表中都有的项目进行下面步骤:

1)在S的路由表中,若下一跳地址是x,则直接用X路由表中这条项目替换S路由表中的项目。

2)在S的路由表中,若下一跳地址不是x,若X路由表项目中的距离d小于S路由表中的距离,则进行更新。

步骤三:若3分钟还没有收到相邻路由器的更新表,则把此相邻路由器记为不可到达路由器,即把距离设置为16。

2.链路状态最短路由优先算法SPF

1)发现邻居结点,并学习它们的网络地址;

2)测量到各邻居节点的延迟或者开销;

3)创建链路状态分组;

4)使用扩散法发布链路状态分组;

5)计算到每个其它路由器的最短路径。
参考技术A 路由算法,又名选路算法,可以根据多个特性来加以区分。算法的目的是找到一条从源路由器到目的路由器的“好”路径(即具有最低费用的路径)。算法设计者的特定目标影响了该路由协议的操作;具体来说存在着多种路由算法,每种算法对网络和路由器资源的影响都不同;由于路由算法使用多种度量标准(metric),从而影响到最佳路径的计算。
路由 算法是提高 路由协议功能,尽量减少路由时所带来开销的 算法。当实现路由 算法的软件必须运行在 物理资源有限的计算机上时高效尤其重要。路由 算法必须健壮,即在出现不正常或不可预见事件的情况下必须仍能正常处理,例如硬件故障、高 负载和不正确的实现。因为 路由器位于 网络的连接点,当它们 失效时会产生重大的问题。最好的路由 算法通常是那些经过了时间考验,证实在各种 网络条件下都很稳定的算法。

此外路由 算法必须能快速聚合,聚合是所有 路由器对最佳路径达成一致的过程。当某 网络事件使路径断掉或不可用时, 路由器通过网络分发路由更新 信息,促使最佳路径的重新计算,最终使所有路由器达成一致。聚合很慢的路由 算法可能会产生路由环或网路中断。
路由器使用路由 算法来找到到达目的地的最佳路由。当说“最佳路由”时,考虑的参数包括诸如跳跃数(分组 数据包在 网络中从一个 路由器或中间 节点到另外的 节点的行程)、延时以及分组数据包 传输通信耗时。 关于 路由器如何收集 网络的结构 信息以及对之进行分析来确定最佳路由,有两种主要的路由 算法:

总体式路由 算法和分散式路由 算法。采用分散式路由 算法时,每个 路由器只有与它直接相连的路由器的 信息——而没有 网络中的每个路由器的信息。这些 算法也被称为DV( 距离 向量)算法。采用总体式路由 算法时,每个 路由器都拥有 网络中所有其他路由器的全部 信息以及网络的流量状态。这些算法也被称为LS(链路状态)算法。
路由 算法通常具有下列设计目标的一个或多个: 优化、简单、低耗、健壮、稳定、快速聚合、灵活性。

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

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

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

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

(5)灵活性:路由 算法要求可以快速、准确地适应各种 网络环境。例如,某个 网段发生故障,路由 算法要能很快发现故障,并为使用该网段的所有 路由选择另一条最佳路径。
参考技术B 在互联网中,路由器采用表驱动的路由选择算法。路由表储存了肯能的目标地址以及如何到达目标地址的信息。路由器再传送IP分组时必须查询路由表,已决定分组通过哪一个端口转发出去。路由表是根据路由选择算法产生的。从路由表对网络拓扑和通信量变化的自适应能力的角度划分,可以分为静态路由选择算法和动态路由选择算法两大类。

1.静态路由选择算法也叫做非自适应路由选择算法,其特点是简单和开销较小,但不能及时适应网络状态的变化;动态路由选择算法也叫做自适应路由选择算法,其特点是能够较好的适应网络状态的变化,但实现起来较为复杂,开销也比较大。

2.所有连接在互联网上的主机和路由器要传输IP分组,就必须维护一个路由表。路由表可以分为静态路由表和动态路由表:

(1)静态路由表

静态路由表是由人工方式建立的,网络管理员将每一个目的地址的路径输入到路由表中。网络结构发生变化时,路由表无法自动更新。静态路由表的更新工作必须由网络管理员手动修改。因此,静态路由表一般只用在小型的、结构不会经常发生改变的局域网系统中,或者是故障查找的实验网络中。

(2)动态路由表

大型互联网络通常采用动态路由表。在网络系统运行时,系统将会自动运行动态路由选择协议,建立路由表。当互联网结构发生变化时,例如当某个路由器出现故障时或者某条链路中断时,动态路由选择呢协议就会自动更新所有路由器中的路由表。不同规模的网络需要选择不同规模的动态路由选择协议。
参考技术C 路由算法,又名选路算法,可以根据多个特性来加以区分。算法的目的是找到一条从源路由器到目的路由器的“好”路径(即具有最低费用的路径[1])。算法设计者的特定目标影响了该路由协议的操作;具体来说存在着多种路由算法,每种算法对网络和路由器资源的影响都不同;由于路由算法使用多种度量标准(metric),从而影响到最佳路径的计算。
路由算法还应该是灵活的,即它们应该迅速、准确地适应各种网络环境。路由算法可以设计得可适应网络带宽、路由器队列大小和网络延迟。
路由算法的核心是路由选择算法,设计路由算法时要考虑的技术要素有:
1、选择最短路由还是最佳路由;

路由算法
2、通信子网是采用虚电路操作方式还是采用数据报的操作方式;
3、采用分布式路由算法还是采用集中式路由算法;
4、考虑关于网络拓扑、流量和延迟等网络信息的来源;
5、确定采用静态路由还是动态路由。
优化指路由算法选择最佳路径的能力,根据metric的值和权值来计算。例如有一种路由算法可能使用跳数和延迟,但可能延迟的权值要大些。当然,路由协议必须严格定义计算metric的算法。
区分要素
各路由算法的区别点包括:静态与动态、单路径与多路径、平坦与分层、主机智能与路由器智能、域内与域间、链接状态与距离向量。
静态与动态
静态路由算法很难算得上是算法,只不过是开始路由前由网管建立的表映射。这些映射自身并不改变,除非网管去改动。使用静态路由的算法较容易设计,在网络通信可预测及简单的网络中工作得很好。由于静态路由系统不能对网络改变做出反映,通常被认为不适用于的大型、易变的网络。九十年代主要的路由算法都是动态路由算法,通过分析收到的路由更新信息来适应网络环境的改变。如果信息表示网络发生了变化,路由软件就重新计算路由并发出新的路由更新信息。这些信息渗入网络,促使路由器重新计算并对路由表做相应的改变。动态路由算法可以在适当的地方以静态路由作为补充。例如,最后可选路由(router of last resort),作为所有不可路由分组的去路,保证了所有的数据至少有方法处理。
参考技术D 路由算法类型:
1.非自适应算法
(1)静态路由
(2)扩散法
(3)随机走动法
(4)最短路径法
(5)基于流量的路由算法
2.自适应路由算法
(1)距离矢量算法
(2)链路状态路由算法‘
(3) 分级路由算法

Linux 基于策略的路由

Linux 基于策略的路由(Linux Policy Routing)

Linux 有传统的基于数据包目的地址的路由算法,和新的基于策略的路由算法
新算法优点:支持多个路由表,支持按数据报属性(源地址、目的地址、协议、端口、数据包大小、内容等)选择不同路由表


# 查看规则命令,后面可跟其它参数,默认为 show(list) 显示全部
ip rule

系统默认有3条记录
0: from all lookup local
32766: from all lookup main
32767: from all lookup default

各部分解释
xx: 第一列数字是优先级,小的数字优先级高
lookup [xxx] : 表示搜索xxx路由表,1-252之间的数字或名称
中间部分内容:如 from all, 这是规则

整行的意思就是,如果一个数据包符合规则(源地址、目的地址、协议、端口、数据包大小、内容等),则使用指定路由表


# 系统最多支持255个路由表。文件 /etc/iproute2/rt_tables
# 可以看到系统保留的表及对应名称,253:default 254:main 255:local
# 可以自由添加自定义名称
# 查看路由表命令,参数可用数字或名称
ip route list table 101
ip route list table main
ip route list cache

# 清除表或内存缓存
ip route flush table 101
ip route flush cache

 


# 示例

##清空一个路由表
##添加一条路由
##添加这个表的默认路由
##添加规则使用这个表,如果没有指定优先级,则使用比现在规则最小数字
ip route flush table 100
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.240 table 100
ip route add default dev eth0 table 100
ip rule add from 192.168.1.242 table 100 [pre 12345]


# 示例2 (Linux 多个网卡使用相同网段的IP地址设置)
## Linux 系统带4个网卡,连接同一交换机,设置同一网段的IP,
## eth0-eth3 IP分别是 192.168.1.240-243
## 默认情况下 route -n 的结果是按 eth up 的顺序决定的,
## IP 实际上都全部指向第一块 UP 的网卡,可以在其它机器上 ping 这4个IP,使用 arp -a 查看到
## 全部 IP 都关连到相同的 MAC 地址
## 这样的结果就是保留第一条网线,拔掉其它网线,其它机器还是能连通这4个IP
## 意味着4个网卡,设置了4个相同网段的IP,但是数据流全部通过第一个网卡传输

## 执行以下命令
ip route flush table 100
ip route flush table 101
ip route flush table 102
ip route flush table 103

ip route add default dev eth0 table 100
ip route add default dev eth1 table 101
ip route add default dev eth2 table 102
ip route add default dev eth3 table 103

ip rule add from 192.168.1.240 table 100
ip rule add from 192.168.1.241 table 101
ip rule add from 192.168.1.242 table 102
ip rule add from 192.168.1.243 table 103

ip route flush cache
## 在其它机器上 ping 这4个IP ,使用 arp -a 查看到
## IP 关连的 MAC 已经不相同了。
## 拔掉任意一条网线,其它机器就会连不上对应的 IP
## 这就表示不同 IP 使用各自的网卡传输数据了。

















































以上是关于路由算法的类型有的主要内容,如果未能解决你的问题,请参考以下文章

目前使用的两种常见动态路由协议算法是啥方法

6,路由选择都有哪些算法?

动态路由算法的介绍

路由算法

通用的路由选择算法

网络层 4.2+4.6 路由算法与路由协议