第八章 路由方式与原理
概述:
本章主要讲解数据在路由器中怎样路由和路由的原理。
关键字:
静态路由 动态路由
重点提示:
理解两种路由的方法,
第一节、静态路由
路由器进行路由选择,实现路由交换功能,通常采用两种方法:静态路由与动态路由。
静态路由是指信息传输的路径由网络管理员预先定义好一个传输路径,在网络中有信息需要传输时将按静态路由表进行的一种路由机制。静态路由不能自动发现与维护路由表,缺乏与其他路由器交换路由选择信息的机制,只能按网管定义好的路由(接口)进行转发分组。
静态的信息是通过手工管理的:网络管理员将其输入到路由器的配置中。每当互联网拓扑结构发生改变需要更新时,管理员必须手工更新静态路由(static route)入口。
1、静态路由的优点
免去动态路由用于计算路由所浪费的CPU和内存资源,节约资源的开销;动态路由选择揭示互联网中的每一件事情;有利于网络安全(假设只有一条路径,可以有多个静态路由)。
2、静态路由缺点
在网络拓扑发生变化后需要网管手动调整路由表;不具有及时调整路由的功能。
第二节 动态路由
动态路由是由路由器自动进行发现与维护路由表、会聚一个认可的网络拓扑以及计算路由等的一种智能路由选择机制。
网络管理员输入配置命令来启动动态路由选择以后,无论何时从互联网中收到新的信息,路由信息都会通过路由进程自动更新。动态信息的改变作为更新过程的一部分在路由器之间交换。
动态路由包括三种动态路由选择协议:
距离矢量路由选择协议
链路状态路由选择协议
汇合路由选择协议
第三节 距离矢量路由选择
1、距离矢量算法概述
在基于距离矢量算法的路由选择中,在路由器间定期传送路由选择表的拷贝。路由器间的定期更新交换了拓扑结构的改变。该过程在直接相临的理由器 之间-----全向的方式进行,这一步步的过程将使每个路由器都了解其他路由器的情况,并且形成一个关于网络“距离”的累计透视图。该透视图用来更新每个 路由器的路由选择表,完成之后每个路由器将知道有关网络资源的“距离”信息,但是它们并不了解其他路由器任何的信息和网络的拓扑结构。
通过距离矢量选择协议的每个路由器从它的直接邻居接收路由选择表。例如,在上图中,路由器B从路由器A中接收信息。路由器B增加了一个距离矢量 (例如跳计数)来增加距离矢量,然后把路由选择表传到它的其它邻居-路由器C。这种一步一步的处理在所有方向上的直接相邻的路由器间发生。用这个方式,算 法累加了网络距离,所以能够维护网络拓扑结构信息的数据库。距离矢量算法不允许路由器知道一个互联网的确切拓扑结构。
2、距离矢量网络搜索
每个用距离矢量选择路由的路由器都以标识自己的邻居开始。在图中,每个直接相连的网络的端口都用于距离0。随着距离矢量网络搜索过程的继续,路由器以从每个邻居得到的信息为基础,发现了到达信宿网络的最佳路径。
例如,路由器A根据它从路由器B得到的信息了解了其它网络的情况。路由选择表中每个这种网络的入口表中都有一个累加距离矢量用来显示那个网络在给定的方向上有多远。
3、距离矢量拓扑结构改变
当一个距离矢量协议网络的拓扑改变时,一定会引起路由选择表的更新。随着网络发现过程,拓扑结构改变引起的更新从路由器到路由器一步一步地进行。 距离矢量算法需要每个路由器将它的全部路由选择表发送到它的每个相邻的路由器中。距离矢量路由选择表包含了关于整个路径成本的信息(以度量尺度来定义)和 它知道的通往每个网络的路径上的第一个路由器的逻辑地址的信息。
4、问题--路由回路
当网络对新配置的缓慢会聚引起了路由选择表的不一致时,就会发生路由回路。图中显示了回路(loop---数据包永远无法到达目的地的路由,只是简单地在相同的系列网络节点上循环传输)路由如何才能发生的情况:
就在网络1出现故障之前,所有的路由器拥有一致的信息和正确的路由选择表,网络被称为是会聚的。假定对于该例的其它部分,路由器C到网络1的最优 路径是经过路由器B,并且路由器C在路由选择表中记录的到网络1的距离是3。当网络1出现故障时,路由器E向路由器A发送更新信息。路由器A不再通过路由 选择向网络1发送数据包,但是路由器B、C和D还继续向网络1发送数据包,因为它们还没有接到发生故障的通知。当路由器A发送完了更新信息时,路由器B和 D不再向网络1发送数据包;但是,路由器C还没有更新。对于路由器C来说,网络1还可以经过路由器B到达。这就会成为有三个跳计数的度量尺度的新的最优路 径现在,路由器C定期向路由器D发送更新信息,指示途经路由器B到达网络1的路径。路由器D更新它的路由选择表以对这个很好但不正确的信息做出反应,并把 信息传到路由器A。路由器A又把信息传到路由器B和E,以此类推。任何以网络1为目的地的数据包现在都会沿着从路由器C到B到A到D然后回到C循环传 送。
5、问题--无限计数
在路由回路中的例子,关于网络1的无效更新会继续循环,除非其它某个进程能终止这个循环。这种情况称为无限计数(count-to- infinity----发生在缓慢会聚的路由选择算法中的问题。在这些算法中,路由器连续增加特定网络的跳计数。通常会设立一个任意的跳计数的极限值来 预防这个问题),数据包在网络中不停的循环,尽管信宿网络1已经出现故障。当路由器无限计数时,无效的信息允许路由回路的存在。若没有停止这个过程的对 策,数据包每次经过下一个路由器时,跳计数的距离矢量都会递增。由于路由选择表中的错误信息,这些数据包就会在网络中循环传送。
6、解决方法--定义一个最大数
距离矢量路由选择算法是自校正的,但是路由回路问题首先要求无限计数。为了避免这个拖延的问题,距离矢量协议把无限定义为某个最大数。这个数指的 是路由选择度量尺度(routing metric--- -路由选择算法通过这种方法来进行路由比较,确定最佳路由。此信息存储在路由表中。路由矢量包 括带宽、通信代价、延迟、跳计数、负载、MTU、路径代价和可靠性。有时也简称为metric矢量。)(例如,一个简单的跳计数)。用这个方法,路由选择 协议允许有路由回路直到度量尺度超过允许的最大值。图中所示定义的最大值是16个步跳;对于跳计数距离矢量,通常用15个步跳作为最大值。在任何情况下, 一旦度量尺度超过最大值,网络1就被认为是不可到达的了。
7、解决方法--水平分割
循环路由发生的另一个原因可能是:发回到一个路由器的错误信息与该路由器发出的正确信息相矛盾。下面叙述了这个问题是怎样发生的:路由器A向路由 器B和路由器D发送更新信息指示网络1已出故障。然而,路由器C向路由器B发送信息指示网络1是可用的,可以经过路由器D用4个跳计数的距离到达。这并没 有违背水平分割原则。路由器B(错误地)判断路由器C仍然有一条通向网络1的有效路径,虽然度量尺度要差一些。路由器B发送更新信息给路由器A,建议A用 这条到达网络1的新路由。路由器A断定它可以通过路由器B给网络1发送数据包;路由器B断定它可以通过路由器C给网络1发送数据包,而路由器C断定它可以 通过路由器D给网络1发送数据包。任何进入这种环境中的数据包将在路由器之间循环。水平分割试图避免这种情形的发生。正如图中所示,如果关于网络1的更新 信息是从路由器A发出的,路由器B和路由器D不能将有关网络1的信息发送回路由器A。这样,水平分割减少了错误的路由选择信息,也减少了路由选择的开 销。
8、解决方法--抑制定时器
你可以使用抑制(hold-down---路由所进入的一个状态。进入这个状态以后,在给定的时间段(挂起时间)内,路由器不会发布路由信息,也 不会接收有关路由的消息。Hold-down用于刷新来自所有路由器的有关此路由的坏信息。当这条路由上的链路出现故障时,这条路由通常就被置于挂起状 态。)定时器来避免无限计数问题,抑制定时器工作如下:当一个路由器从相邻路由器接收到更新信息,指示一个原先可到达的网络现在不能到达时,这个路由器将 这条路由标识为不可到达,并启动一个抑制定时器。
如果在抑制定时器期满前的任一时刻,从另外一个相邻路由器接收到更新信息指示了中断的网络可以到达了,那么这个路由器就把该网络标识为可到达的并卸下抑制定时器。
如果从另外一个相邻路由器接收到更新信息指示了一条比以前记录的路径有更好尺度的路径,那么这个路由器就把该网络标识为可到达的并卸下抑制定时器。
如果在抑制定时器期满前的任一时刻,从另外一个相邻路由器接收到更新信息指示了一条不如以前记录的尺度好的路径,则忽略这个更新。
当抑制定时器有效时忽略一个更新允许有更多的时间来将突发故障信息在全网传送。
第四节 链路状态路由选择
1、链路状态概念
第二个用于路由选择的基本算法是链路状态算法。基于链路状态的路由选择算法--也被称为最短路径优先算法--是用于维护拓扑结构信息的复杂数据 库。距离矢量算法没有关于远端网络的特定信息,对远端路由器也没有任何认识,与之不同的是,一个链路状态路由选择算法保留远端路由器的全部信息以及它们之 间是如何互相连接的信息。链路状态路由选择算法使用链路状态公告link-state advertisements(链路状态协议使用的广播分组包含有 关邻近路由器和路径代价的信息。接收数据包的路由器使用LSAs来维护它们的路由选择表。它有时又称为链路状态分组)、(LSAs---Link- state advertisement(链路状态通知)。链路状态协议使用的广播分组包含有关邻近路由器和路径代价的信息。接收数据包的路由器使用 LSAs来维护它们的路由选择表。它有时又称为链路状态分组、一个拓扑结构数据库、 SPF(Shortest path first algorithm(最短路径优先算法)。这个路由选择算法对路径长度进行反复计算,从而确定最短路径 生成树。这通常使用在链路状态路由选择算法中。)算法、结果SPF树,最后,使用到每个网络的路径和端口的路由选择表。下面的几页将更详细地介绍这些过程 和数据库。工程师们已经在开放的最短路径优先(OSPF)路由选择中实现了这种链路状态概念。
2、链路状态网络搜索
链路状态路由选择用以下过程进行网络搜索:路由器之间互相交换LSA(链路状态通知)。每个路由器都从有直接信息的、与它直接相连的网络开始。然 后,每个路由器并行地建立一个拓扑结构数据库,数据库由所有从互联网而来的LSA组成。SPF算法计算网络的可达性,确定到链路状态协议的互联网中的每个 其它网络的最短优先路径。路由器把最短路径的逻辑结构建成一棵SPF树,以自己为树根,这棵树表示了从这个路由器到所有目的地的路径。路由器将到达路由选 择表中的信宿网络的最优路径和端口进行了列表。它也维护其它拓扑结构元素和状态细节的数据库。
3、链路状态拓扑变化
链路状态算法依赖于使用相同的链路状态更新。无论何时链路状态拓扑结构发生改变时,首先意识到这种改变的路由器向其它路由器发送信息,或者向一个 指定的路由器发送,所有其它的路由器都可以用这个指定的路由器来进行更新。这使得公共的路由选择信息必须发送到互联网中的所有路由器。为了获得会聚效果, 每个路由器都须做以下工作:了解其相邻路由器的动态:相邻路由器的名字,无论这个相邻路由器是好是坏,以及到达这个相邻路由器的链接的费用。建立一个 LSA数据包,在这个数据包中列出它的相邻路由器的名称和链接费用,这包括了新的邻居、链接费用的改变以及已发生故障的到某邻居的链路。将这个LSA数据 包发送出去,以便所有其它的路由器能接收到。当路由器接收到一个LSA数据包时,在数据库中记录这个数据包,以便能够存储从每个其它路由器而来的最新生成 的LSA数据包。利用积累的LSA数据包数据建立一个互联网拓扑结构的完整映射,从这个公共的起始点继续下去,重新运行SPF算法,计算到每个网络目的的 路由。LSA数据包每次引起链路状态数据库的改变,链路状态算法就重新计算最优路径,更新路由选择表。这样,每个路由器为交换数据包而确定最短路径时,都 要考虑拓扑结构的改变。
4、链路状态所涉及的问题
链路状态要考虑以下两个问题:
1)处理能力和存储器需求--在大多数情况下,运行链路状态路由选择协议要求路由器使用更大的存储器,执行更高的处理能力。网络管理员必须保证他们选择的路由器能够为路由选择提供这些所需的资源。
2)路由器了解其相邻路由器及通过别的路由节点能到达的网络的动态。对于链路状态路由选择来说,存储器必须能保存来自不同数据库(拓 扑结构树、路由选择表)的信息。用SPF算法(SPF - Shortest path first algorithm(最短路径优先算法),这个路由 选择算法对路径长度进行反复计算,从而确定最短路径生成树。计算最短路径需要执行一个处理任务,这个处理任务与互联网中的链接数和网络中的路由器数的乘积 是成比例的。
带宽的需求----另一个要考虑的问题是初始链路状态数据包扩散时消耗的带宽。在最初的发现过程中,所有使用链路状态路由选择协议的路由器都向其 它路由器发送LSA数据包。当路由器对带宽的需求达到高峰时,这个动作使互联网络扩散,从而减少了载有用户数据的发送业务可用的带宽。初始扩散发生之后, 链路状态路由选择协议一般仅需要互联网带宽来发送间歇的或有事件触发的、反应了拓扑结构变化的LSA数据包。
5、链路状态更新
链路状态路由选择的最复杂和最重要的方面是保证所有的路由器得到所有必要的LSA数据包。不同LSA集合的路由器会基于不同的拓扑数据计算路由,这样的发送,会导致路径信息不一致。
下面是一个路径信息不一致的例子:
假设路由器C和路由器D间的网络1出现故障。正象前面讨论的,两个路由器都创建数据包来反应这种不可达的状态。
在此之后的很短时间内,网络1恢复了,又需要另一个新的LSA数据包来反应这个新的拓扑结构的变化。
如果原先从路由器C发出的网络不可达的消息对其更新使用了一条缓慢的路径,这个更新信息会到达得晚些。可能在路由器D的网络1已恢复信息到达路由 器A之后,这个LSA数据包才到达路由器A。对于不同步的LSA,路由器A会感到进退两难,不知道该建立哪个SPF树:对于最新收到的报告说是不可达的网 络1而言,究竟使用包含网络1的路径呢还是使用不包含网络1的路径?
如果LSA向所有路由器的分发不正确的话,链路状态路由选择可能导致错误的发送。
很大的互联网中使用相应规模的链路状态协议会扩大LSA数据包分发的错误问题。如果网络的一部分首先发生改变,而另一部分之后才发生,发送和接收 LSA数据包的顺序就会不同。这种不同会改变和削弱会聚。在一个大型互联网络中,更新较快一些的部分可能给更新慢一些的部分的造成问题。
第五节 距离矢量路由选择和链路状态路由选择的比较
你可以在几个关键的方面比较距离矢量路由选择和链路状态路由选择:
1、距离矢量路由选择从它的相邻路由器的路由表信息中得到所有的拓扑结构数据。链路状态路由选择通过积累所有必要的LSA获得对整个互联网拓扑的全面认识。
2、当路由表从一个路由器移到另一个路由器时,距离矢量路由选择通过增加其所收到的度量值来确定最佳路径;对于链路状态路由选择来说,每个路由表都独立工作来计算它自己到达目的地的最短路径。
3、对于大多数的距离矢量路由选择协议,拓扑结构改变的更新信息由定期的路由表的更新来传送。这些路由表在路由器间传送,从而导致通常比较慢的会聚。
4、对于链路状态路由选择协议,更新通常是由拓扑结构的改变而触发的。相对较小的LSA传到所有其它的路由器中,从而导致对任何互联网拓扑结构的改变的会聚都比较快。