路由生产算法

来源:互联网 发布:苹果千牛mac工作台 编辑:程序博客网 时间:2024/04/30 11:16

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

路由:数据包从源地址到目的地址所需要经过的路径,由一系列节点组成。路由某个路由节点为数据报选择投递方向的选路过程。

路由节点:一个具有路由功能的主机或者路由器,维护一张路由表,通过查询路由表来决定向哪个节点发送数据包。

路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接收和发送,其中最后一个是缺省路由条目。

路由条目:路由表中的每一行,每个条目主要由网络地址、子网掩码、下一跳地址、发送接收四部分组成,如果要发送的数据报的目的网络地址匹配到路由表中的某一行,就按照规定接受发送到下一跳。
接口: 路由节点与某个⽹络相连的⽹卡接口。

缺省路由条⽬:路由表中的最后⼀⾏,主要由下⼀跳地址和发送接⼜两部分组成,当⽬的地址与路由表中其 它⾏都不匹配时,就按缺省路由条⽬规定的接⼜发送到下⼀跳地址。


路由算法是路由选择协议的核心。路由算法指明了计算机网络中的结点机(或路由器)在接收到一个分组之后,应该选择哪条输出链路的策略。当采用虚电路通信时,路由是在建立呼叫链接是确立的,即一次性选择路由,后继的分组均沿着这条既定的路由传送。当采用数据报通信时,路由器要为每个分组做出路由选择。因此通信子网采用不同的通信方式,路由算法的使用额度是不一样的。

常见路由生产算法

距离矢量算法
使用距离矢量算法Bellman-Ford算法 。 这种方法分配一个 成本 数量为每个网络中的每个节点之间的联系。 节点发送信息通过的路径从A点到B点,导致最低的总成本 (即成本之和)使用的节点之间的联系。
该算法以一个非常简单的方式运作。 当一个节点第一次启动时,它只知道的邻国,达到他们所涉及的直接成本。 (此信息-目的地的列表,每个总成本,和 下一跳 发送数据到那里——构成了路由表,或 距离表 )。 每个节点,定期发送给每个邻居节点自身当前的总成本评估的所有目的地它知道。 邻近的节点检查这些信息和比较他们已经“知道”,任何代表他们已经有所改善,他们在自己的路由表插入。 随着时间的推移,网络中所有节点所有目的地,发现最佳的下一跳和最好的总成本。
当一个网络节点失效,任何使用它的节点作为下一跳丢弃的条目,并创建新的路由表信息。这些节点传递路由信息更新所有相邻节点,进而重复这个过程。 最终网络中的所有节点接收更新,和发现不了新路径的所有目的地他们仍然可以“达到”。

链路状态算法
当链路状态算法,应用图形化的地图网络的每个节点使用的基本数据。 生产它的地图,泛洪整个网络中每个节点与其他节点的信息连接。 每个节点独立组装这个信息到一个地图。 使用这张地图,每个路由器独立决定采行从其他节点使用一个标准的 最短路径 算法等 。 结果是一个 树图 扎根在当前节点,这样的路径通过这棵树从根到任何其他节点的最小开销路径节点。 这棵树是构造路由表,它指定最佳的下一跳从当前节点到其他节点。

LS算法

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

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

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

(4) 使用一个合适的算法,确定网络中两个节点之间的最佳路由。在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如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的最佳路由。


收敛路由原理

路由收敛指网络的拓扑结构发生变化后,路由表重新建立到发送再到学习直至稳定,并通告网络中所有相关路由器都得知该变化的过程。也就是网络拓扑变化引起的通过重新计算路由而发现替代路由的行为。

通过路由收敛可以使路由域中所有路由器对当前的网络结构和路由转发达成一致的状态。收敛时间是指从网络的拓扑结构发生变化到网络中所有路由设备中路由表重新保持一致的状态转换过程。

触发条件
1)路由器失效
2)连接失效
3)管理度量调整等

步骤

在转发层面启动定时器,所述定时器的时长用于限定路由收敛的速度;当转发层面监测到网络异常时或者控制层面对端口的关闭(Shut down)命令后,在相应的转发条目中置上标记;根据所述被置上的标记,取次优先的下一跳和出接口进行转发;控制层面重新计算相应目的地址的路由,并且更新到转发表中。本发明方法可以在网络状态发生变化、需要路由收敛的第一时间,由转发层面先侦测出这一变化,并直接执行收敛的结果,然后再更新路由表。由于将路由更新,转发更新的操作置后,使得路由的收敛时间大大减少。