关于路由表及路由条目生成算法

一、关于路由

路由:数据包从源地址到目的地址要经过的路径,由一系列节点组成。

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

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

路由条目:路由表中的每一行,由目的网络,下一跳地址,子网掩码,有效标记,输入输出端口等组成。

静态路由:是由人工建立和管理的,不会自动发生变化,必须手工更新以反映互联网拓扑结构或连接方式变化。优点是安全可靠、简单直观,避免了动态路由选择的开销。缺点是不适用于复杂的互联网结构,建立和维护工作量大,容易出现路由环。

动态路由:可以通过自身学习,自动修改和刷新路由表。动态路由要求路由器之间不断的交换路由信息。优点是更多的自主性和灵活性。缺点是交换路由信息需要占用网络带宽,路由表的动态修改和刷新需要占用路由器的内存和CPU处理时间,消耗路由器的资源

Linux下的路由表:



二、路由选择协议

1、使用动态路由的基本条件,路由器运行相同的路由选择协议,执行相同的路由选择算法。
2、广泛采用的路由选择协议,路由信息协议RIP:利用向量-距离算法,开放式最短路径优先协议OSPF:利用链路-状态算法。
3、路由收敛,互联网中的所有路由器都运行着相同的、精确地、足以反映当前互联网拓扑结构的路由信息,快速收敛是路由选择协议最希望具有的特征。


三、路由条目生成算法

1、向量-距离路由选择算法

路由器周期性地向其相邻路由器广播自己知道的路由信息,用以通知相邻路由器自己可以到达的网络以及到达该网络的距离。相邻路由器可以根据收到的路由信息修改和刷新自己的路由表。优点是算法简单、易于实现。缺点是慢收敛问题,路由器的路径变化需要像波浪一样从相邻路由器传播出去,过程缓慢

2、链路-状态路由选择算法

互联网上的每个路由器周期性地向其它路由器广播自己与相邻路由器的连接关系,互联网上的每个路由器利用收到的路由信息画出一张互联网拓扑结构图。利用画出的拓扑结构图和最短路径优先算法,计算自己到达各个网络的最短路径。

1)路由器向相邻路由器发送查询报文。测试他和相邻路由器的链路状态,如果可以收到相邻路由器发回的响应,说明该路由器和相邻路由器可以正常通信。 
2)收到该路由器和其他相邻路由器的链路状态后,还向系统中所有参加最短路径优先算法的路由器发送链路状态报文。 
3)各路由器收到其他路由器发送到链路状态后,根据报文中的数据刷新本路由器保存的网络拓扑结构图。如果链路发生变化,路由器将采用Dijkstra算法生成新的最短路径优先数并刷新路由表。 
向量-距离路由选择算法不需要路由器了解整个互联网的拓扑结构;通过相邻的路由器了解到达每个网络的可能路径,而链路-状态路由选择算法依赖于整个互联网的拓扑结构图;利用整个互联网的拓扑结构图得到SPF树,进而由SPF树生成路由表。

3、Dijkstra算法 
1)路由器建立一张网络图,并且确定源节点和目的节点,在这个例子里我们设为V1和V2。然后路由器建立一个矩阵,称为“邻接矩阵”。在这个矩阵中,各矩阵元素表示权值。例如,[i, j]是节点Vi与Vj之间的链路权值。如果节点Vi与Vj之间没有链路直接相连,它们的权值设为“无穷大”。 
2)路由器为网路中的每一个节点建立一组状态记录。此记录包括三个字段: 
前序字段——表示当前节点之前的节点。 
长度字段——表示从源节点到当前节点的权值之和。 
标号字段——表示节点的状态。每个节点都处于一个状态模式:“永久”或“暂时”。 
3)路由器初始化(所有节点的)状态记录集参数,将它们的长度设为“无穷大”,标号设为“暂时”。 
4)路由器设置一个T节点。例如,如果设V1是源T节点,路由器将V1的标号更改为“永久”。当一个标号更改为“永久”后,它将不再改变。一个T节点仅仅是一个代理而已。

4.LS算法

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

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

3)向网络中的其他路由器广播自己的信息,同时也接收其他路由器的信息。 

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

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

6)在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如Dijkstra最短路径算法。 

7)在这个算法中,一个路由器通过收集到的其他路由器的信息,建立一个网络图。这个图描述网络中的路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示节点间的跃点数。 

例如,如果一个节点与目的地之间有两条链路,路由器将选择权值最低的链路。


猜你喜欢

转载自blog.csdn.net/if9600/article/details/73159482