计算机网络(二十五):路由选择算法

路由选择算法在网络路由器中运行、交换和计算信息,用这些信息配置转发表。主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器,又称为该主机的第一跳路由器。每当主机发送一个分组时,该分组被传送给它的默认路由器。将源主机的默认路由器称作源路由器,把目的主机的默认路由器称作目的路由器。一个分组从源主机到目的主机的路由选择问题显然可归结为从源路由器到目的路由器的路由选择问题。
路由选择算法的目的是简单的,给定一组路由器以及连接路由器的链路,路由选择算法要找到一条从源路由器到目的路由器的"好"路径。通常,一条好路径指具有最低费用的路径。

①、全局式路由选择算法

:用完整的、全局性的网络知识计算出从源到目的地之间的最低费用路径。也就是说,该算法以所有结点之间的连通性及所有链路的费用为输入。这就要求算法在真正开始计算以前,要以某种方式获得这些信息。计算本身可在某个场点(集中式全局路由选择算法)进行,或可在多个场点重复进行。然而这里的主要区别在于,全局式算法具有关于连通性和链路费用方面的完整信息。通常被称作链路状态LS算法。

②、分散式路由选择算法

:以迭代、分布式的方式计算出最低费用路径。没有结点拥有关于所有网络链路费用的完整信息,而每个结点仅有与其直接相连链路的费用知识即可开始工作。然后,通过迭代计算过程并与相邻结点(即与该结点相连链路的另一端的结点)交换信息,一个结点逐渐计算出到达某目的结点或一组目的结点的最低费用路径。

③、静态路由选择算法

中,随着时间的流逝,路由的变化是非常缓慢的,通常是人工干预进行调整(如人为手工编辑一台路由器的转发表)

④、动态路由选择算法

能够当网络流量负载或拓扑发生变化时改变路由选择路径。一个动态算法可周期性地运行或直接响应拓扑或链路费用的变化而运行。 虽然动态算法易于对网络的变化做出反应,但也更容易受诸如路由选择循环、路由振荡之类问题的影响

1、链路状态路由选择算法LS:

Dijkstra算法计算从某结点(源结点,我们称之为u)到网络中所有其他结点的最低费用路径。Dijkstra算法是迭代算法,其性质是经算法的第k次迭代后,可知道到k个目的结点的最低费用路径,在到所有目的结点的最低费用路径之中,这k条路径具有k个最低费用。
网络拓扑和所有的链路开销都是已知的,是一种使用全局信息的、集中式的算法。实践中通过让每个节点向网络中所有其他节点广播链路状态分组来完成,其中每个链路状态分组包含它所连接的链路的标识和开销。
振荡:当两条路径上的费用仅在两条道路上的负载相等时才相等,则可能出现第一次LS算法,所有分组集中于其中一条路,第二次LS算法,所以分组集中于另一条路,第三次又回到第一条路,以此类推

2、距离向量路由选择算法DV:

距离向量算法是一种迭代的、异步的和分布式的算法,分布式是因为每个结点都要从一个或多个直接相连邻居接收某些信息,执行计算,然后将其计算结果分发给邻居。迭代是因为此过程一直要持续到邻居之间无更多信息要交换为止 (有趣的是,此算法是自我终止的,即没有计算应该停止的信号,它就停止了)。异步是因为它不要求所有结点相互之间步伐一致地操作。
一种迭代的、异步的和分布式的算法。当遇到路由选择环路的时候可能会产生无穷计数的问题.
最低费用路径的费用之间的一种重要关系。令dx(y)是从结点x到结点y的最低费用路径的费用,则该最低费用与著名的Bellman-Ford 方程相关,即:
dx(y)=minlc(x,v)+dv(y)|
方程中的min是对于x的所有邻居的。Bellman-Ford方程是相当直观的。实际上,从x到v遍历之后,如果我们接下来取从v到y的最低费用路径,则该路径费用将是c(x,v)+dv(y),因此我们必须通过遍历某些邻居v开始,从x到y的最低费用是对所有邻居v的c(x,v)+dv(y)的最小值。
DV算法其基本思想如下。每个结点x以Dx(y)开始,对在N中的所有结点,估计从它自己到结点y的最低费用路径的费用。令Dx=[Dx(y):yεN]是结点x的距离向量,该向量是从x到在N中的所有其他结点y的费用估计的向量。
在该分布式、异步算法中,每个结点不时地向它的每个邻居发送它的距离向量副本。当结点x从它的任何一个邻居v接收到一个新距离向量,它保存v的距离向量,然后使用Bellman- Ford 方程更新它自己的距离向量如下:
Dx(y)=min[c(x,v)+Dv(y)| 对N中的每个结点
如果结点x的距离向量因这个更新步骤而改变,结点x接下来将向它的每个邻居发送其更新后的距离向量。,只要所有的结点继续以异步方式交换它们的距离向量,这个费用收敛到实际最低费用路径的费用。
结点具有的唯一信息是它到直接相连邻居的链路费用和它从这些邻居接收到的信息 每个结点等待来自任何邻居的更新。

3、层次路由选择:

在LS和 DV 算法的研究中,我们将网络只看作一个互联路由器的集合。从所有路由器执行相同的路由选择算法以计算穿越整个网络的路由选择路径的意义上来说,一台路由器很难同另一台路由器区别开来。
但由于规模和管理自治的需要,可以采用路由器组织进自治系统AS来解决。每个AS由一组通常处在相同管理控制下的路由器组成(例如,由相同的ISP运营或属于相同的公司网络) 在相同的 AS 中的路由器都全部运行同样的路由选择算法(如一种LS或DV算法),且拥有彼此的信息,这就像在前一节中所讲的理想化模型中的情况一样在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议。互联网按组织边界划分为多个自治系统。每个自治系统由运行相同路由协议和路由选择算法的路由器组成
当然,将AS彼此互联是必需的,因此在一个AS内的一台或多台路由器将有另外的任务,即负责向在本AS之外的目的地转发分组 这些路由器被称为网关路由器。
而AS之间的通信也是通过同一个自治系统间路由选择协议实现的。从相邻AS获取可达性信息和向该AS中所有路由器传播可达性信息是两项由自治系统间路由选择协议处理的任务。因为自治系统问路由选择协议涉及两个AS之间的通信,这两个通信的AS必须运行相同的自治系统间路由选择协议。事实上,因特网中的所有AS都运行相同的AS间路由选择协议,该协议称为BGP4。

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/107095402