路由表建立策略(算法)

一。路由表的一些介绍:
路由(名词)数据包从源地址到⽬的地址所经过的路径,由⼀系列路由节点组成。
路由(动词)某个路由节点为数据报选择投递⽅向的选路过程。
路由节点⼀个具有路由能⼒的主机或路由器,它维护⼀张路由表,通过查询路由表来决定向哪个接⼜发送数据包。
在Linux环境下可以通过ifconfig和route查看路由表的信息。
《路由表建立策略(算法)》

路由表由很多路由条⽬组成,每个条⽬都指明去往某个⽹络的数据包应该经由哪个接⼜发送,其中最后⼀条是缺省路由条⽬。
路由条⽬路由表中的⼀⾏,每个条⽬主要由⽬的⽹络地址、⼦⽹掩码、下⼀跳地址、发送接⼜四部分组成,如果要发送的数据包的⽬的⽹络地址匹配路由表中的某⼀⾏,就按规定的接⼜发送到下⼀跳地址。
缺省路由条⽬路由表中的最后⼀⾏,主要由下⼀跳地址和发送接⼜两部分组成,当⽬的地址与路由表中其它⾏都不匹配时,就按缺省路由条⽬规定的接⼜发送到下⼀跳地址。
二。路由算法:
路由器使用路由算法来找到到达目的地的最佳路由。当说“最佳路由”时,考虑的参数包括诸如跳跃数(分组数据包网络中从一个路由器或中间节点到另外的节点的行程)、延时以及分组数据包传输通信耗时。关于路由器如何收集网络的结构信息以及对之进行分析来确定最佳路由,有两种主要的路由算法
总体式路由算法和分散式路由算法。采用分散式路由算法时,每个路由器只有与它直接相连的路由器的信息——而没有网络中的每个路由器的信息。这些算法也被称为DV(距离向量)算法。采用总体式路由算法时,每个路由器都拥有网络中所有其他路由器的全部信息以及网络的流量状态。这些算法也被称为LS(链路状态)算法。
(一)静态路由算法

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

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权回路。
2. 扩散法
事先不需要任何网络信息;路由器把收到的每一个分组,向除了该分组到来的线路外的所有输出线路发送。 将来会有多个分组的副本到达目的地端,最先到达的,可能是走了“最优”的路径

常见的扩散法是选择性扩散算法。
3. 基于流量的路由算法
既考虑拓扑结构,又兼顾网络负荷;前提:每对结点间平均数据流是相对稳定和可预测的;根据网络带宽和平均流量,可得出平均包延迟,因此路由选择问题归结为找产生网络最小延迟的路由选择算法。提前离线(off-line)计算

(二)动态路由算法
1. 距离向量路由算法
距离向量路由算法(Bellman-Ford Routing Algorithm),也叫做最大流量演算法(Ford-FulkersonAlgorithm),其被距离向量协议作为一个算法,如RIP, BGP, ISO IDRP, NOVELL IPX。使用这个算法的路由器必须掌握这个距离表(它是一个一维排列-“一个向量”),它告诉在网络中每个节点的最远和最近距离。在距离表中的这个信息是根据临近接点信息的改变而时时更新的。表中数据的量和在网络中的所有的接点(除了它自己本身)是等同的。这个表中的列代表直接和它相连的邻居,行代表在网络中的所有目的地。每个数据包括传送数据包到每个在网上的目的地的路径和距离/或时间在那个路径上来传输(我们叫这个为“成本”)。这个在那个算法中的度量公式是跳跃的次数,等待时间,流出数据包的数量,等等。在距离向量路由算法中,相邻路由器之间周期性地相互交换各自的路由表备份。当网络拓扑结构发生变化时,路由器之间也将及时地相互通知有关变更信息。 

水平分裂算法(在发送路由更新消息时进行限制,结点不向相邻结点报告那些从该相邻结点学习到的路由信息

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

  1. 发现邻居结点,并学习它们的网络地址;
  2. 测量到各邻居节点的延迟或者开销;
  3. 创建链路状态分组;
  4.  使用扩散法发布链路状态分组;
  5. 计算到每个其它路由器的最短路径。

使用Dijkstra算法处理链路信息

点赞