首页 > 代码库 > 路由算法
路由算法
一、基础概念:
路由:数据报从源地址发送到目的地址所经过的路径,由一系列节点构成
路由节点:一个具有路由功能的主机或者路由器,都会维护一张路由表,通过查询路由表决定数据报想哪下一个节点发送
有维护路由表的主机或者路由器,就是路由中一个个节点
路由表:由很多路由条目组成,每个路由条目都指名去往哪个个网络的数据报应该经由那个接受和发送,其中最后一个是缺省路由条目
LINUX中的路由表:
Destination:目标网络
Gateway:下一跳
Genmask:子网掩码
Flags标记:U标志此条目有效(可以禁用一些条目);G标志此条目的下一跳地址是某个路由器的地址;*表明目标网络和本机网络直连
Uer:此路由被路由软件查找的次数
Iface:使用接口
上图中:路由表每一行都表示一个路由条目
二、路由算法
LS(链路状态)算法:这个算法中 ,每个路由器都拥有网络中其他路由器的全部信息和网络的流量状态
(1)路由器向相邻路由器发送查询报文。测试他和相邻路由器的链路状态,如果可以收到相邻路由器发回的响应,说明该路由器和相邻路由器可以正常通信。
(2)收到该路由器和其他相邻路由器的链路状态后,还向系统中所有参加最短路径优先算法的路由器发送链路状态报文。
(3)各路由器收到其他路由器发送到链路状态后,根据报文中的数据刷新本路由器保存的网络拓扑结构图。如果链路发生变化,路由器将采用Dijkstra算法生成新的最短路径 优先数并刷新路由表
DV(距离向量)算法:这个算法中,每个路由器只拥有和自己相连的路由器信息
路由器周期性地向其相邻路由器广播自己知道的路由信息,用以通知相邻路由器自己可以到达的网络以及到达该网络的距离。相邻路由器可以根据收到的路由信息修改和刷 新自己的路由表
优点:算法简单,容易实现
缺点是:慢收敛问题(路径循环或者网络中断),路由器的路径变化需要相邻路由器传播出去,网络稍微复杂点这个路由传播导致路径变化的过程会很慢
Dijkstra算法
(1)路由器建立一张网络图,并且确定源节点和目的节点,在这个例子里我们设为V1和V2。然后路由器建立一个矩阵,称为“邻接矩阵”。在这个矩阵中,各矩阵元素表示 权值。例如,[i, j]是节点Vi与Vj之间的链路权值。如果节点Vi与Vj之间没有链路直接相连,它们的权值设为“无穷大”。
(2)路由器为网路中的每一个节点建立一组状态记录。此记录包括三个字段:
前序字段——表示当前节点之前的节点。
长度字段——表示从源节点到当前节点的权值之和。
标号字段——表示节点的状态。每个节点都处于一个状态模式:“永久”或“暂时”。
(3)路由器初始化(所有节点的)状态记录集参数,将它们的长度设为“无穷大”,标号设为“暂时”。
(4)路由器设置一个T节点。例如,如果设V1是源T节点,路由器将V1的标号更改为“永久”。当一个标号更改为“永久”后,它将不再改变。一个T节点仅仅是一个代理而已。
三、收敛路由原理:
收敛 对于路由协议,网络上的路由器 在一条路径不能使用时必须经历决定替代路径的过程,是在最佳路径的判断上所有路由器达到一致的过程。当某个网络事件引起路由 可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络,引发重新计算最佳路径,最终达到所有路由器一致公认的最佳路径。这个过程即称为收敛。收敛时 间指从网络发生变化开始直到所有路由器识别到变化并针对该变化作出适应为止的这段时间。收敛慢的路由算法会造成路径循环或网络中断。收敛过程既具协作性,又具 独立性。路由器之间既需要共享路由信息,各个路由器也必须独立计算拓扑结构变化对各自路由过程所产生的影响。由于路由器独立更新网络信息以与拓扑结构保持一致, 所以,也可以说路由器通过收敛来达成一致。收敛的有关属性包括路由信息的传播速度以及最佳路径的计算方法。可以根据收敛速度来评估路由协议。收敛速度越快,路由 协议的性能就越好。通常,RIP和IGRP收敛较慢,而EIGRP、OSPF和IS-IS收敛较快
路由算法