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

在上一篇文章中,咱们介绍了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……

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

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