网络通信 频道

中小企业网络管理:思科动态路由分析

        【IT168 技术】在上一篇文章中,咱们介绍了IP路由的基础知识,今天花一些篇幅来介绍一下路由中的重头戏:动态路由。

  路由选择算法是动态路由选择的基础,所以我们先来看看路由选择算法,基本上来说路由选择算法可以分为以下3类:

  距离矢量算法、链路状态算法、平衡混合算法,到底这3类分别是什么意思?有什么区别,我们一一来看:

  距离矢量算法(Distance Vector):

  简称DV,什么叫距离矢量,很明显如果我们要想搞清楚距离矢量算法,就必须要知道什么是距离和矢量,其中这个距离指的是我这个路由器到目标网络有多远?至于矢量,我们以前学代数的时候知道矢量是有大小和方向的量,那么用在路由算法中指的是什么呢?指的是目标网络在我的哪个方向,而且这个大小会发生变化。我们来总结一下:DV在计算路由的过程中重点在于定期将路由表复制给相邻的路由器并且进行矢量累加。即运行DV距离适量路由协议的路由器会定期的发送路由信息给邻居,同时也会定期的从邻居路由器学习新的路由更新信息,通过对路由更新信息的学习和距离的累加来计算支往目的地址的代价。如图所示:

中小企业网络管理:思科动态路由分析
 

  现在三个路由器的路由表分别为下图:

中小企业网络管理:思科动态路由分析
 

中小企业网络管理:思科动态路由分析
 

  现在当我们把IP地址都设置好之后,各个路由器的路由表就如上表所示,但一旦选择使用距离适量的路由协议之后,每个路由器就定期将路由表自己的路由表复制给相邻的路由器并且进行矢量累加!我们继续来分析,每个路由器如何学得其他的路由条目,上表中的路由条目大家已经发现了,都是每个路由器的直连路由,但很明显这些路由信息还不完整,如route1就不知道如何到达10.10.30.0和10.10.40.0网段同理Router2也不知道如何到达10.10.10.0以及10.10.40.0,Router3也不知道如何到达10.10.10.10以及10.10.20.0,那么它们之间就需要利用DV算法来把路由表补充完整。比如说它们之间使用的就是RIP协议:

中小企业网络管理:思科动态路由分析
 

  如果此时配置好了RIP协议,那么它们之间开始以广播的方式开始发布路由更新,我们以中间的Router2开始分析,它会把自己的两个直连路由分别发给Router1和Router3,Router1收到Router2发过来的20.0以及30.0的路由信息,然后再和自己的比较,发现原来自己已经有一个到达20.0的路由了,并且距离为0,因为是直连的,所以你发过来的我就不用了,但是30.0我没有,我就加到我的路由表中,并且距离应该是1,因为不是直连的,中间要经过一个路由器,对于Router3来说也是一样的分析,30.0我有了,我就不要了,但是20.0我没有,我就加到自己的路由表中,并且距离为1。同样Router2也会收到Router1和Router3的更新路由表,只不过,它只会留下它以前没有的10.10.10.0和10.10.40.0的信息。这样经过一轮之后,每个路由器的路由表就变成了下面:

中小企业网络管理:思科动态路由分析
 

  然后战争没有结束,爱情仍在继续,Router2仍然会将自己收到的更新内容分别发给Router1以及Router3,那么Router1收到后10.10.10.0网段我已经有了,并且是直连的,就不要了,但是10.10.40.0我没有,我就加到我的路由表中并且原来的距离已经是1了,那么我还要在原来的基础上再加1,我也要再赚一个!嘻。。。。。那这个时间距离就变成了2,也就意味着如果到达10.10.40.0网段从我这儿出去还要再经过两个路由器。同理Router3也是一样,会把10.10.10.0加到自己的路由表中,并且距离也是2。那么这个时候路由表又变了:

中小企业网络管理:思科动态路由分析
 

  那么到了此时,它们之间的路由条目就已经都一样了,分别都是10.0;20.0;30.0;40.0术语就叫做收敛!在一个网络中,如果网络发生了变化,那么运行同一个路由协议的路由表必须全部收敛完成,网络才可用,否则数据包是不能被路由的,所以收敛的速度也是路由协议中比较重要的一个元素!如果一个网络结构发生了变化,收敛的速度快,那么网络恢复可用性的速度就快,收敛的慢,那么网络恢复可用性的速度就慢!

  也就是说从网络结构发生变化到网络中所有的路由器都知道这个路由表变化的时间就是我们所说的收敛时间!所以这个收敛时间肯定是越小越好!注意一定要是所有的路由器的路由表都同步!

  那么每个路由器经过一系列的学习之后路由条目就一样的了,但是不一样的是什么呢,是距离,有的是0,有的是1,有的是2,这分别代表什么意思呢,其实大家已经知道了,这就是咱们前面所介绍的metric值,度量值,也就是在同一个路由协议里评价一个路由条目好坏的一个标准!成本越小,数字就越小!我们日常生活中也是不论做什么事都是成本越低越好,这里也是一样,明白人不用细说!嘻。。。。。

  大家通过刚才的分析过程也看到了路由表的更新过程是通过其他路由器一步一步实现。而且一旦网络结构发生改变就要将改路由表的再次更新,这是肯定的,因为网络结构发生变化了就意味着可能是网络路径发生改变了,可能有的路不通了,必须要更新大家的路由器,那么其中一个路由器收到更新后,要在下一个周期后再把这个更新传给其他的路由器,直至每个路由器都更新完毕。因为是定期发送更新数据包,所以动态路由会占用一定的网络带宽。那么其他路由器收到这个更新后开始用它来更新自己的路由表。这里大家也可以看到,路由器不会自己去发现网络发生变化,必须要由其他路由器来告诉它,它再来进行更新!这样有什么问题吗?有!就是容易产生路由环路的问题,这又是什么东西?大家一听肯定就知道这不是一个好东西,就像我们以前所说的死循环呀,网络环路呀差不多,都是一个意思,路由环路大体意思是说一个数据包想发给目标主机,但因为产生了环路,就在几个路由器之间游荡,就是到不了目标主机!那么在这里又是怎么回事?听我慢慢道来:

  我们还是从上面的那个图开始分析:

中小企业网络管理:思科动态路由分析

中小企业网络管理:思科动态路由分析
 

  现在路由已经收敛成功,也就是说每个路由器的路由表都已经同步了,开始正常工作了,但是这个时候Router3所连接的10.10.40.0断开了,发生故障,不能通讯了!那么这个时候Router3的路由表应该就如下所示了

中小企业网络管理:思科动态路由分析
 

  也就是说10.10.40.0不可用了,也就意思着10.10.40.0不能通讯了,但是咱们讲了动态路由有路由学习功能。当了一个周期后,Router2会将自己的路由信息发给Router1以及Roter3,至于Router1的死活咱们就不管了,我们来分析一下Router3;Router3收到之后发现我到达10.10.40.0是不可用了,你可以到,那么我就把你的路由信息加到我的路由表中,这样路由表就发现改变了,如表所示:

中小企业网络管理:思科动态路由分析
 

  学习过来后还将距离改为2,为什么呀?因为Router2原来的距离是1,复制过来以后肯定要再加1!然后如果要真正发数据包给10.10.40.0时,就通过自己的S0口发出去了,发给谁了,发给Router2了,那Router2收到这个数据包后也查一下自己的路由表发现通过自己的S1口可以出去,大家通过看图可以发现,S1连接的是谁?是Router3,所以又交给了Router3,那么Router3再交给Router2......

中小企业网络管理:思科动态路由分析
 

  那么这样的话,就进行了死循环,无限的循环下去,所以必须要有一个机制来解决这个问题。

  

路由环路的解决方法

  解决的方法主要有以下几种:

  Split Horizon:水平分割

中小企业网络管理:思科动态路由分析
 

  水平分割,它规定由1个接口发送出去的路由信息不能再发回这个接口,这个办法减少了路由信息的不正确性和负载。我们来分析一下,10.10.40.0这个网络的路由信息都是通过Router3的S0口发出去的,就规定不能再发给Router3的S0口,这样就可以避免环路。

  Route Poisoning路由中毒:

  通过将断开的网络地址的路由距离设置为无穷大来阻止网络循环。那有的朋友要问了,这怎么可能避免环路了,这里还用到了一个小技术叫毒性逆转,如一个路由器发现一个网络地址的距离设置为无穷大了,就认为这条网络地址不可达了,也会将自己的相关路由信息设置为down 不可用,由刚才的拓扑图可知10.10.40.0不可用了。那么Router3就将10.10.40.0的路由设置为无穷大,然后Router2仍然会将自己的信息发给Router3,但是此时Router3就会将无穷大的信息发给Router2,那么Router2只要看到这个信息就认为这个网络地址不可达了,这样就保证了所的有都知道那条不可达的路由信息,来阻止循环。

  Holddowns:抑制计时

中小企业网络管理:思科动态路由分析
 

  分析:当一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时候内不再接收关于同一目的地址的路由更新,因为此时再接收到的更新也可能是不正确的。如果在抑制时间内网络恢复正常了,此时Router3会将自己的路由更新正常,然后再去更新其他路由器的路由信息。

  Triggered update:触发更新

中小企业网络管理:思科动态路由分析
 

  分析:触发更新和一般的更新是不一样的,当路由表发生变化时,更新报文会立即广播给相邻的路由器,而不是等30秒。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器会立即应答一个更新报文,而不是等到下一个更新周期。这样,网络拓扑的变化会最快的在网络上传播开,减少了路由回环产生的可能性。

  Maximum Hop Count:最大跳数

  这个原理很简单就是指定一个最大跳数来阻止循环,我们前面讲产生循环只要是这个距离不断的往上加,没有限制,那现在我们来给它加上一个限制,如RIP定义的最大跳数为15,第16跳就为不可达,这样也可以在一定程度上去除路由循环的问题!

  那么以上我们讨论的是距离矢量协议以及几种路由回环的解决方法!再往下咱们来看一下另一种动态路由算法:

  链路状态路由算法

  链路状态路由协议是目前使用最广的一种域内路由协议。但就其理论来说应该属于CCNP的内容,咱们在这里就简单的看一下:

中小企业网络管理:思科动态路由分析
 

  链路状态协议和刚才介绍的距离矢量协议是不同的。在DV算法中,每个路由器是将自己的更新路由表发给其他路由器,而链路状态协议不是,它将将它到周围邻居的链路状态向全网的其他路由器传递,也就是说DV传递的是具体的路由条目,而链路状态传递的是一个链路的状态,说的形象一点,传的是一个“地图”。当然在链路状态中术语叫LSA,链路状态宣告,告诉我的邻居,我还有哪些邻居?我连接的有哪些网段?也就是说我所知道的网络的拓扑结构的详细情况发给对方,然后我的邻居再将这些信息再告诉它的邻居,这样网络中的路由器就会得到网络中比较精确的一个网络拓扑状态。举个例子来说,在实际生活中,我们每个人对我们所生活的这一块区域是比较熟悉的,但对离你比较远的区域是不熟悉的,那如果你有一天要去某个地方办事,但你不知道该怎么走?但你的一个朋友对那个地方比较熟悉,他有可能会给你画一张那个地方的地图,那么你通过他的描述就可以计算我应该怎么去那儿,路径应该怎么走,等等信息!所以你得到的是一个地图,而不是一个具体的路径,这和链路状态是一致的,每个路由器得到的也是一个网络的“地图”,也不是一个具体的路由条目。然后根据这个地图来计算去对方应该怎么走,这个计算还是比较精确的。主要是使用Dijkstra算法来查找到达目标网络中的非常好的路由。所有的路由器拥有相同的拓扑后,把自己放进树中的根里,然后根据每条链路的耗费,选出耗费最低的做为非常好的路径。然后把这个非常好的路径放进自己的路由表。这个计算用的是这个链路上的带宽,如用一个常数去除带宽,得到的数越小,就说明代价越小。就会优先选择此条链路。在这里我们结合OSPF协议来说,每个运行OSPF协议的路由器中都存放着三张表:

  第一张表是邻居表,记录着它的邻居信息;第二张表是链路状态数据库又称为拓扑表,记录着网络的完整的拓扑结构,并且在同一个区域内的每一个路由器的这个拓扑表应该是一样的;第三张表是路由表,是根据拓扑表所描述的信息然后根据带宽来计算去到达对方的非常好的路由然后存放到路由表中。所以对于运行OSPF协议的路由器来说这三张表非常重要,并且它们不会像DV一样每隔一个周期就发送一个路由表的信息,在OSPF的网络里只要网络是稳定的,就不会发LSA宣告,只有当网络拓扑发生改变时才会发送相应的LSA宣告。关键是每个路由器自己计算如何到达对方,这做是比较科学精确,不会像DV算法存放回环的问题!但是要求运行链路状态协议的网络必须有一定的层次结构,要求分为两个层一次,一个是骨干区域,其他的为非骨干区域也称为普通区域,一般来说骨干区域都定义为Area0,普通区域为Area1,Area2……即可,并且严格规定普通区域必须要和骨干区域Area0相连。为什么采用区域的概念,主要是因为在链路状态路由协议中,所有的路由器都保持有LSDB,也就是网络拓扑结构,路由器越多,LSDB就越大,这可能对了解完整的网络信息有所帮助,但是随着网络的增长,LSDB数据库就会显的庸肿,而且不利用网络扩展,所以就引入了区域这个概念。 如图所示:

中小企业网络管理:思科动态路由分析
 

  在某一个区域里的路由器只保持有该区域中所有路由器和链路的详细信息和其他区域的一般信息。当某个路由器或某条链路出故障以后,信息只会在那个区域内传递,该区域之外的路由器不会收到该信息。所以OSPF必须要求层次化的网络设计,而且普通区域之间是不能连接的,它们都必须通过backbone area0进行连接。这中间用到两个术语

  BR:骨干路由器,同骨干区域中的路由器 如上图中的A和B

  ABR:区域边界路由器,用来连接骨干区域和普通区域的路由器,上图中的 C D E

  链路状态路由协议的优势是:

  1 对网络发生的变化能够快速响应,当网络发生变化的时候发送触发式更新。

  2 路由没有环路 因为每个路由器都知道整个网络(整个区域的网络)的拓扑,LSA是有序可靠的传递。

  3 层次化的设计更加有利于网络的扩展。

  以上是关于链路状态的一些浅显的分析,还有些内容我们会结合OSPF再做讨论。

  平衡混合算法(Balanced Hybrid)

  思科公司提供了平衡混合路由算法,它具有距离矢量和链路状态两种路由选择协议的特点。平衡混合路由选择协议使用具有更精确度量标准的距离适量来确定目的网络的非常好的路径。但是,它们与大多数距离矢量协议不一样的地方是它们使用拓扑改变来触发路由表的更新,而不是周期性的更新,并且收敛速度快,它与距离矢量以及链路状态协议不同的是使用更少的带宽、内存和处理器开销。平衡混合协议的例子有中间系统到中间系统(IS-IS)和增强内部网关路由选择协议(EIGRP)。

0
相关文章