1、为了解决上述问题,我们人为的把网络划分成若干个组群区域,但仅仅是划分了区域还是不够的,因为我们要清楚区域间的路由是如何处理的。在划分区域后,一个区域内的路由处理是同没有划分区域之前是一样的。每一个区域中的路由器都按照该区域中定义的链路状态算法来计算网络拓扑结构,这意味着每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。对于每一个区域,其网络拓扑结构在区域外是不可见的,同样,在每一个区域中的路由器对其域外的其余网络结构也不了解。当进行跨区域进行路由计算的时候区域边界路由器发生了一些变化。如下图所示:由于中间的路由器分数两个不同的区域,一个接口属于区域 0 另一个接口属于区域 3。接在区域
2、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 表示一条路由。这样,在区域边界路
3、由器就获知了区域 0 和区域 3 的路由。在区域边界路由器参与区域 0 和区域 3 路由计算的时候会将自己学习到的路由标识出来,以告诉区域 0 和区域 3。由此,区域 3 中的路由器知道如何到达区域边界路由器,而区域边界路由器又知道如何到达区域 0,这样就能够计算出路由。这样计算的好处是:第一、减少了 LSA 的信息,因为以前 LSA 的信息不仅包含了路由信息还包含了连接状况信息,而生成的 Router LSA 只需要包含路由信息即可,大大减少了存储容量。缓解了随着网络规模的扩大造成 LSA 数量众多,LSDB 占用存储空间过大的弊端。第二、区域 0 中的路由变化不会影响到区域 3,区域 3
4、中的路由变化也不会影响区域 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中即可,也就是说可以通过路
5、由聚合来发布。这样就大大减少了路由表,当区域 0 中无论发生什么变化,对于聚合后的路由没有任何影响。也就是说,无论区域 0 发生什么变化也不会影响区域 3,反之亦然。至此,针对 OSPF 协议的就得到了进一步的完善。在上面我们讲过,OSPF 协议在区域间传递路由时通过不在描述连路状态,减少路由信息。那么我们看看这么做有什么弊端。实际上 OSPF 在区域间进行路由计算的时候已经不在是链路状态算法了,而是使用 DV 算法。区域间的路由计算是通过 ABR 的传递,这样既然采用了 DV 算法,那么就会产生以区域为单位的自环问题。为了解决以区域为单位的自环问题,协议设计者提出了一个骨干域的概念。它规定在
6、划分区域时有一个区域是特殊的,这个区域用区域号 0 来标示,而其他所有的区域必须以区域 0 为中心。换句话说,所有的 ABR 都必须在骨干域中。划分骨干域的概念很好的解决了大规模网络中常出现的问题,同时解决了路由自环。但是,到此时,OSPF 协议虽然解决了路由自环和大规模网络中常出现的问题,接下来又出现了新的问题-限制了网络的设计,因为划分区域时所有的区域必须和骨干域连接,使得网络设计者不在随心所欲。要解决这个问题,可以将划分的区域扩大,但当网络规模扩大时又会面临 LSA 存储空间过大,路由器 Cpu 符合太大,以及区域内部网络变化频繁。这时,又提出了新的概念-虚连接。所谓的虚连接就是指在两个 ABR 之间建立一条虚拟连路。如果两个区域之间跨越的不是骨干区域,在这两个区域之间可以配置一条虚连接命令,来建立一条虚拟通道。一般这条命令配置在两个区域的 ABR 路由器上。通过在两个区域的 ABR 路由器上配置一条点对点的虚连接,这两个区域之间就可以相互建立发送 Hello 报文来建立邻居关系。需要注意的是,在前文中讲到的 OSPF 报文只能发送一条的限制在虚连接中是例外。虚连接的提出很好的解决了大规模网络中遇到的问题,以及路由自环和网络设计的限制问题。