前面学习了OSPF路由协议的基本概念、工作过程以及单域的配置,但在大型网络中,网络结构的变化是时常发生的,随着网络路径的增加,路由表变得越来越大,仅有单域是远远不够的。为了解决这个问题,OSPF允许把大型区域划分为多个更易管理的小型区域,这里就来了解一下OSPF多区域的原理及配置。
生成OSPF多区域的原因:改善网络的可扩展性,快速收敛
OSPF区域的容量
划分多区域后,每个OSPF区域里到底可以容纳多少台路由器?
单个区域所支持的路由器数量的范围大约是30-200。但在一个区域内实际加入的路由器数量要小于单个区域所能容纳路由器的最大数量。这是因为还有更为重要的一些因素影响着这个数量,诸如一个区域内链路的数量,网络拓扑的稳定性、路由器的内存和CPU性能、路由汇总的有效使用和注入到这个区域的汇总LSA的数量等。正是由于这些因素,有时在一些区域里包含25台路由器可能都已经显得比较多了,而在另一些区域内却可以容纳多于500台的路由器。
对于和区域相关的通信量定义了下面的三种类型:
域内通信量(Intar-Area Traffic):是指由单个区域内路由器之间交换的数据包构成的通信量。
域间通信量(Inter-Area Traffic):是指由不同区域的路由器之间交换的数据包构成的通信量。
外部通信量(External Traffic):是指由OSPF区域内的路由器与OSPF区域外或另一个自治系统内的路由器之间交换的数据包构成的通信量。
OSPF被分成多区域的能力是依照分层路由实现的。当被划分成小区域以后,像重新计算拓扑数据库这样的操作就被限定在该小区域内,区域间则只需要通告一些汇总信息。例如:区域1内部发生了路由器的Up或者Down时,其他区域内的路由器不需要运行SPF算法来重新计算路由信息,这是因为那些问题被隔离在区域1的内部。
具体来说,分层路由有以下优势:
(1)降低了SPF运算的频率。因为详细的路由信息被保留在每个区域的内部,无需泛洪全部链路状态的改变给所有其他区域。因此,只有那些受拓扑改变影响的路由器才需要重新运行SPF算法。
(2)减少了路由表。当使用多区域时,每个区域只保留自己区域的详细路由条目,并且不会通告这些条目到区域外部,区域边界路由器可以汇总一条或多条路由信息,在OSPF域间进行通告,这样既减少了LSA的数量,同时又保证了区域之间的连通性。
(3)减小了链路状态更新报文(LSU)的流量。LSU包含多种LSA类型,也包括链路状态信息和汇总信息。分成多区域后,不再是发送每个网络的LSU,而是在区域间通告单个路径或者几个汇总路径的更新,从而有效的减小了穿越多个区域的LSU流量。
路由器的类型
路由器也像通信量一样可以被分成和区域相关的几种类型:
(1)内部路由器(Internal Router):是指所有接口都属于同一个区域的路由器。
(2)区域边界路由器(Area Border Routers,ABR):是指连接一个或多个区域到骨干区域的路由器,并且这些路由器会作为域间通信量的路由网关。因而,ABR路由器至少有一个接口是属于骨干区域的,而且必须为每一个与之相连的区域维护不同的链路状态数据库。正因为这个原因,ABR路由器通常需要比一般的内部路由器有更多的内存和更高性能的路由处理器。ABR路由器将会汇总与它相连区域的拓扑信息给骨干区域,然后又将这些汇总信息传送给其他的区域。
(3)自治系统边界路由器(Autonomous System Boundary Router,ASBR):可以认为是OSPF域外部的通信量进入OSPF域的网关路由器,也就是说,ASBR路由器是用来把其他路由器协议学习到的路由器通过路由选择重分配的方式注入到OSPF域的路由器。一个ASBR路由器可以是位于OSPF域的自治系统内部的任何路由器,它可以是一台内部路由器或者ABR路由器。
区域的类型
OSPF路由协议将区域划分为不同类型,包括骨干区域、标准区域、末梢区域、完全末梢区域、非纯末梢区域等。根据互连区域的类型和数量不同,OSPF提供了不同类型的路由更新。
运行OSPF的整个区域属于一个自治系统(AS),除了AS的路由都属于外部路由。Backone是连接众区域的骨干层,跨区域的流量都要在骨干上通过,骨干的稳定性、健壮性至关重要。骨干上的路由器大都是区域边界路由器ABR。
(1)骨干区域Area 0
该区域的ID一定为0,它是连接所有其他区域的核心域,相当于交换网络的汇聚层。
(2)标准区域
该区域可以接收各种链路状态信息和汇总的路由通告。没有特殊定义的区域就是标准区域。
链路状态数据库
一台运行OSPF路由协议的路由器中,所有有效的LSA通告都被存放在它的链路状态数据库当中,正确的LSA通告将可以描述出一个OSPF区域网络拓扑的结构。
每台路由器都创建了由每个接口、对应的相邻节点和接口速率组成的数据库,链路状态数据库中的每个条目都称为LSA(链路状态通告),常见的LSA有六种类型。
常见的LSA有六种类型,分别是LSA1、LSA2、LSA3、LSA4、LSA5、LSA7。
(1)LSA1:路由器LSA(Router LSA),每一台运行OSPF路由协议的路由器都会产生路由器LSA通告。这个最基本的LSA通告列出了路由器所有的链路或接口,并指明了它们的状态和沿每条链路方向出站的代价。这些LSA通告只会在始发它们的区域内部进行泛洪。通过命令“show ip ospf database router” 可以查看数据库中列出的所有路由器LSA通告。还可以在这条命令后加上一个参数以指定一个路由器ID,从而观察到单个路由器LSA通告的详细信息。这些信息显示了记录在链路状态数据库中的完整的LSA信息。
(2)LSA2:网络LSA(Network LSA),每一个多址网络(广播型和NBMA)中的指定路由器DR都将会产生网络LSA通告。可将DR路由器看做一个“伪”节点或一个虚拟路由器,用来描绘一个多址访问网络和与之相连的所有路由器。网络LSA通告列出了所有与之相连的路由器,也包括DR路由器本身。向路由器LSA一样,网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。使用命令show ip ospf database network 可以查看一条网络LSA通告的信息。
(3)LSA3:网络汇总LSA(Network Summary LSA),是由ABR路由器始发的。ABR路由器将发送网络汇总LSA到一个区域,用来通告该区域外部的目的地址。实际上,这些网络汇总LSA就是ABR 路由器告诉在自己所属区域内的内部路由器它所能到达的目的地址的一种方法。一台ABR路由器也可以通过网络汇总LSA向骨干区域通告与它相连的区域内部的目的地址。在一个区域外部,且仍然在一个OSPF自治系统内部的默认路由,也可以通过这种LSA来通告。使用命令show ip ospf database summary可以显示链路状态数据库中的网络汇总LSA信息。
OSPF多区域配置的验证及OSPF路由表
1. OSPF常用的检查命令
2. OSPF路由表
使用show ip route命令查看多区域OSPF实例中路由器的路由表。
在路由条目前的“O”代表OSPF区域内的路由,而“O IA”代表OSPF区域间的路由。
区域内路径(Intra-area Path)是指在路由器所在的区域内就可以到达目的地的路径。
区域间路径(Inter-area Path)是指在其他区域但仍在OSPF自治系统内的目的地路径。在路由表中,打上了IA标志的条目就是区域间路径,它总是至少通过一台ABR路由器。
3. 路由器对路由条目的选择
路由器在选择路由条目并将其添加到路由表中时,使用两个参数:Metrics(度量值)和Distance Metric(管理距离)。
度量值代表距离,由度量值来确定寻路时的最优路由。
管理距离是指一种路由协议的路由可信度。
注意:
(1)OSPF路由协议中的度量值为接口代价(Cost);RIP路由协议中度量值代表距离(跳数)。
(2)在OSPF中一条路由的代价是指到达目的网络的路由路径上所有出站接口的代价之和。
当路由器收到相同目的地址的路由条目时,首先比较管理距离,选择管理距离小的路由条目添加到路由表中。如果管理距离相同,则比较度量值,选择度量值小的路由条目添加到路由表中。
当收到目的地址、度量值和管理距离值都相同的路由条目时,路由表中会形成负载均衡的路由条目。
需要注意的是,OSPF路由协议为不同类型的路由规定了不同的优先级,即域内路由优先级高于域间路由。例如,如果一台路由器通过OSPF的SPF算法得到某一网段有度量值和管理距离相同的两条路径时,如果一条路径是域内而另一条路径是域外,路由器会选择域内路由添加到路由条目中。
注意:
静态路由的管理距离默认是1,度量值是0。
RIP协议的管理距离默认是120,度量值是跳数。
OSPF协议的管理距离默认是110,度量值是接口代价。
在学习浮动路由时,就是对同一网段使用了不同的管理距离(一条路由管理距离大,另一条管理距离小),再让路由器选择最优的路由(可信度高的路由)添加到路由表中。当线路出现故障时,管理距离小的路由失效,管理距离大的路由为最佳路由,会被路由器选入路由表中。
需要注意的是,路由器转发数据时选择可以和目的地址最精确匹配的路由。例如,如果路由表中存在路由条目172.19.64.0/18、172.19.64.0/24和172.19.64.192/27,而目的地址是172.19.64.205,那么最后一个路由条目将被选中。最精确的匹配应该总是最长匹配——拥有最长地址掩码的路由。如果路由器没有发现匹配的条目,它将发送一个ICMP目的不可达的消息给那个数据包的源地址,并且把这个数据包丢弃。如果最后匹配多条等价路由时,那么将会负载分担的利用多条等价路由。
Stub区域及配置
除了骨干区域和标准区域之外,还有末梢区域(Stub)、完全末梢区域(Totally Stubby)和非纯末梢区域(NSSA)。
1.LSA4与LSA5
(1)LSA4:ASBR汇总LSA(ASBR Summary LSA),也是有ABR路由器始发的。ASBR汇总LSA除了所通告的目的地是一个ASBR路由器而不是一个网络外,其他的域网络汇总LSA都是一样的。使用命令show ip ospf database asbr-summary可以查看ASBR汇总LSA的信息。
注意:目的地是一个主机地址,并且掩码是0。通常ASBR汇总LSA通告的目的地总是一个主机地址,因为它是一条到达一台路由器的路由。
(2)LSA5:自治系统外部LSA(Autonomous System External LSA),也称为外部LSA(External LSA),始发于ASBR路由器,用来通告到达OSPF自治系统外部的目的地或者是到OSPF自治系统外部的默认路由的LSA。外部LSA通告将在整个自治系统中进行泛洪。使用命令show ip ospf database external可以查看AS外部LSA的信息。
末梢区域和完全末梢区域
在OSPF区域中,一些区域出口很少,对区域外的路由仅需要一条默认路由,为了减少区域内路由器的路由条目,可以把此区域配置为末梢区域。在Stub区域中仅仅需要域内的路由条目和一条指向区域边界路由器的默认路由就能实现所有的选路,所以在Stub区域中可以减少不必要的LSA泛洪。
由于从Stub区域内到其他区域仅有一条默认路由,所以Stub区域有一定限制,即区域内不能有自治系统边界路由器(ASBR),并且它们不能为区域间的流量做转发。
Stub区域并不限制一定只有一个作为出口的区域边界路由器。能够进入或存在Stub区域的链路状态通告LSA的类型为1、2、3型,禁止4、5、7型进入Stub区域。
当区域配置为完全末梢区域(Totally Stubby)时,在区域内除了域内路由外,只有一个默认路由。
满足以下四个条件的区域可以被认定为Stub或者Totally Stubby区域:
(1)只有一个默认路由作为其区域的出口
(2)区域不能作为虚链路的穿越区域
(3)Stub区域里无自治系统边界路由器ASBR
(4)不是骨干区域Area0
1. 末梢区域(Stub Area)
末梢区域是一个不允许自治系统外部LSA通告在去内部进行泛洪的区域。如果在一个区域里没有学到类型5的LSA通告, 那么类型4的LSA通告也是不必要的了,因为这些LSA通告也将被阻塞。位于末梢区域边界的ABR路由器将使用网络会中LSA向这个区域通告一个简单的默认路由(目的地址是0.0.0.0)。在区域内部路由器上,所有和域内或域间路由不能匹配的目的地址都将最终匹配这条默认路由。由于默认路由是由类型3的LSA通告传送的,因此它将不会被通告到这个区域的外部去。
由于在一个末梢区域里,路由器的链路状态数据被减小了,因此,这些路由器的性能将得到提高,并且内存也得到节省。当然,在一个含有大量类型5的LSA通告的OSPF区域里,这种改进将更加显著。
(1)和所有的区域一样,一个末梢区域内部的所有路由器也必须拥有相同的链路状态数据库。为了确保满足这个条件,所有末梢区域内的路由器都会在它们的Hello报文中设置一个标志E-bit,并将它设置为0。这样,这些末梢区域路由器将不接受其他路由器发送的任何E-bit为1的Hello报文。结果,末梢区域路由器将不能和其他非末梢区域的路由器建立邻接关系。
(2)虚连接不能再一个末梢区域内进行配置,也不能穿过一个末梢区域。
(3)末梢区域内的路由器不能是ASBR路由器。这个限制条件是很容易直观的理解的,因为ASBR路由器会产生类型5的LSA通告,而在一个末梢区域内不能存在类型5的LSA通告。
(4)一个末梢区域可以拥有多台ABR路由器,但是因为默认路由的原因,区域内部路由器将不能确定哪一台路由器才是到达ASBR路由器的最优网关。
注意:配置成NSSA区域的路由器也不能和其他非NSSA区域的路由器形成邻接关系。
2. 完全末梢区域(Totally Stubby Area)
如果通过阻塞类型5和类型4的LSA传播的方法来节省内存的话,那么要是能够把类型3的LSA也阻塞掉,不是可以节省更多的内存吗?
对于这个问题,Cisco借助于末梢区域的概念提出了完全末梢区域的概念。
完全末梢区域(Totally Stubby Area)不仅使用默认路由到达OSPF自治系统外部的目的地址,而且使用默认路由到达这个区域外部的所有目的地址。一个完全末梢区域的ABR将不仅阻塞AS外部的LSA,而且阻塞所有的汇总LSA,除了通告默认路由的那一条类型3的LSA。
配置末梢区域和完全末梢区域
1. 配置Stub Area
Router(config-router)# area area-id stub
其中,area-id标识Stub区域的ID,可以是数字或者IP地址形式。此命令需要在Stub区域内的所有路由器上配置。
2. 配置Totally Stubby Area
Router(config-router)# area area-id stub no-summary
其中,area-id标识Stub区域的ID,可以是数字或者IP地址形式。no-summary使用此参数来生成Totally Stubby区域,仅用于ABR,以阻止ABR发送汇总链路通告到完全末梢区域内。