路由器的路由表生成算法

路由:路由是一种指向标,因为网络是一跳一跳往前推进的,因此在每一跳都要有一系列的指向标。实际上不仅仅是分组交换网需要路由,电路交换网在创建虚电路的时候也需要路由。

简单的说,路由由三元素组成:目标地址,掩码,下一跳。注意,路由项中其实没有输出端口-它是链路层概念,Linux操作系统将路由表和转发表混为一谈,而实际上它们应该是分开的(分开的好处之一使得MPLS更容易实现)。

路由表:路由表仅指定从该路由器到目的地路径上的下一步,而不知道到达目的地的完整路径,标准的IP路由表包含许多对序偶,N表示目的网络的IP地址,R表示到N路径上的下一个路由器的IP地址。

Linux中的路由表:
这里写图片描述
Destination目的网络
Gateway下一跳
Genmask子网掩码
Flags 标记 :U标志表示此条目有效(可以禁用某些条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发,因此下一跳地址处记为* 号。
Use 此路由项被路由软件查找的次数
Iface 使用接口

路由表项生成算法:生成路由表项的方式有两种,第一种是管理员手工配置,第二种为通过路由协议动态生成。

路由算法,又名选路算法,可以根据多个特性来加以区分。算法的目的是找到一条从源路由器到目的路由器的“好”路径(即具有最低费用的路径[1] )。算法设计者的特定目标影响了该路由协议的操作;具体来说存在着多种路由算法,每种算法对网络和路由器资源的影响都不同;由于路由算法使用多种度量标准(metric),从而影响到最佳路径的计算。

基本的下一站路由选择算法:
RouteDatagram(Datagram, RoutingTable)

{

  从Datagram中提取目的IP地址D,计算netid网络号N;

if N与路由器直接连接的网络地址匹配

Then 在该网络上直接投递(封装、物理地址绑定、发送等)

ElseIf RoutingTable 中包含到N的路由

Then 将Datagram发送到RoutingTable中指定的下一站

Else 路由选择错误

}
动态路由与静态路由:

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

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

路由选择协议:

1、使用动态路由的基本条件,路由器运行相同的路由选择协议,执行相同的路由选择算法。

2、广泛采用的路由选择协议,路由信息协议RIP:利用向量-距离算法,开放式最短路径优先协议OSPF:利用链路-状态算法。

3、路由收敛,互联网中的所有路由器都运行着相同的、精确地、足以反映当前互联网拓扑结构的路由信息,快速收敛是路由选择协议最希望具有的特征。

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

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

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

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

OSPF路由选择协议
优点:收敛速度快;支持服务类型选择;提供负载均衡和身份认证。
缺点:要求较高的路由器处理能力;一定的带宽需求。
适用环境:规模庞大、环境复杂的互联网

两者原理性差异:

向量-距离路由选择算法不需要路由器了解整个互联网的拓扑结构;通过相邻的路由器了解到达每个网络的可能路径,而链路-状态路由选择算法依赖于整个互联网的拓扑结构图;利用整个互联网的拓扑结构图得到SPF树,进而由SPF树生成路由表。

3、LS算法

采用LS算法时,每个路由器必须遵循以下步骤:
(1)、确认在物理上与之相连的路由器并获得它们的IP地址。当一个路由器开始工作后,它首先向整个网络发个“HELLO”分组数据包。每个接收到数据包的路由器都将返回一条消息,其中包含它自身的IP地址。

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

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

(4)、使用一个合适的算法,确定网络中两个节点之间的最佳路由。在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如Dijkstra最短路径算法。在这个算法中,一个路由器通过收集到的其他路由器的信息,建立一个网络图。这个图描述网络中的路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示节点间的跃点数。例如,如果一个节点与目的地之间有两条链路,路由器将选择权值最低的链路。

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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值