区域间的路由如何计算

2018年7月15日23:51:56 发表评论 732 views

为了解决上述问题,我们人为的把网络划分成若干个组群区域,但仅仅是划分了区域还是不够的,因为我们要清楚区域间的路由是如何处理的。

在划分区域后,一个区域内的路由处理是同没有划分区域之前是一样的。每一个区域中的路由器都按照该区域中定义的链路状态算法来计算网络拓扑结构,这意味着每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。对于每一个区域,其网络拓扑结构在区域外是不可见的,同样,在每一个区域中的路由器对其域外的其余网络结构也不了解。当进行跨区域进行路由计算的时候区域边界路由器发生了一些变化。如下图所示:

由于中间的路由器分数两个不同的区域,一个接口属于区域0另一个接口属于区域3。接在区域0中的每台路由器生成自己的LSA(生成的是Router LSA第二种LSA)传递给ABR,这种Router LSA在区域边界路由器被阻断,不能够传到区域3。同理区域3中生成的Router LSA也在区域边界路由器被阻断,不能传递到区域0。那么区域3中是如何得知区域0中的路由信息呢?在图中我们可以看出,ABR既参与了区域0的路由计算也参与了区域3的路由计算。所以在区域边界路由器中会存在区域0和区域3的路由表。同时,在区域边界路由器中生成type=3类型的LSA。Type=3这种LSA用一条LSA表示一条路由。这样,在区域边界路由器就获知了区域0和区域3的路由。在区域边界路由器参与区域0和区域3路由计算的时候会将自己学习到的路由标识出来,以告诉区域0和区域3。由此,区域3中的路由器知道如何到达区域边界路由器,而区域边界路由器又知道如何到达区域0,这样就能够计算出路由。这样计算的好处是:第一、减少了LSA的信息,因为以前LSA的信息不仅包含了路由信息还包含了连接状况信息,而生成的Router LSA只需要包含路由信息即可,大大减少了存储容量。缓解了随着网络规模的扩大造成LSA数量众多,LSDB占用存储空间过大的弊端。第二、区域0中的路由变化不会影响到区域3,区域3中的路由变化也不会影响区域0。

但是针对网络的变化或者说网络中经常存在的链路UP/down的情况,用划分区域的方法还是没有得到改善,因为这种情况不会因为区域的产生而消失。因此还需要针对这个问题推出解决办法。在OSPF协议中的ABR路由器采用了路由汇聚的办法来减少路由的计算,因此在划分区域的时候采用最重要的根据IP地址来划分。比如说:假设区域0种存在 10.0.1.0/24、10.0.2.0/24、10.0.3.0/24,10.0.4.0/24这四个网段,当ABR向区域3发布的时候可以通过一条命令只发布10.0.0.0/16这个网段到区域3中即可,也就是说可以通过路由聚合来发布。这样就大大减少了路由表,当区域0中无论发生什么变化,对于聚合后的路由没有任何影响。也就是说,无论区域0发生什么变化也不会影响区域3,反之亦然。至此,针对OSPF协议的就得到了进一步的完善。

在上面我们讲过,OSPF协议在区域间传递路由时通过不在描述连路状态,减少路由信息。那么我们看看这么做有什么弊端。实际上OSPF在区域间进行路由计算的时候已经不在是链路状态算法了,而是使用DV算法。区域间的路由计算是通过ABR的传递,这样既然采用了DV算法,那么就会产生以区域为单位的自环问题。为了解决以区域为单位的自环问题,协议设计者提出了一个骨干域的概念。它规定在划分区域时有一个区域是特殊的,这个区域用区域号0来标示,而其他所有的区域必须以区域0为中心。换句话说,所有的ABR都必须在骨干域中。 

划分骨干域的概念很好的解决了大规模网络中常出现的问题,同时解决了路由自环。但是,到此时,OSPF协议虽然解决了路由自环和大规模网络中常出现的问题,接下来又出现了新的问题---限制了网络的设计,因为划分区域时所有的区域必须和骨干域连接,使得网络设计者不在随心所欲。要解决这个问题,可以将划分的区域扩大,但当网络规模扩大时又会面临LSA存储空间过大,路由器Cpu符合太大,以及区域内部网络变化频繁。

这时,又提出了新的概念---虚连接。所谓的虚连接就是指在两个ABR之间建立一条虚拟连路。如果两个区域之间跨越的不是骨干区域,在这两个区域之间可以配置一条虚连接命令,来建立一条虚拟通道。一般这条命令配置在两个区域的ABR路由器上。通过在两个区域的ABR路由器上配置一条点对点的虚连接,这两个区域之间就可以相互建立发送Hello报文来建立邻居关系。需要注意的是,在前文中讲到的OSPF报文只能发送一条的限制在虚连接中是例外。虚连接的提出很好的解决了大规模网络中遇到的问题,以及路由自环和网络设计的限制问题。

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: