在进行OSPF路由方案部署过程中,OSPF的各种区域是最难理解的。它们之间到底有什么区别和作用呢?本文将为大家一一解答。
Backbone(骨干)区域
在一个OSPF网络中,可以包括多种区域,其中就有三种常见的特殊区域,即就是骨干区域(Backbone Area)、末梢区域(Stub Area)和非纯Stub区域(No Stotal Stub area,NSSA),当然还可以包括其它标准区域。OSPF网络中的区域是以区域ID进行标识的,区域ID为0的区域规定为骨干区域。
OSPF主要区域类型示例
一个OSPF互联网络,无论有没有划分区域,总是至少有一个骨干区域。骨干区域有一个ID 0.0.0.0,也称之为区域0。另外,骨干区域必须是连续的(也就是中间不会越过其他区域),也要求其余区域必须与骨干区域直接相连(但事实上,有时并不一定会这样,所以也就有了下面将要介绍的"虚拟链路"技术)。骨干区域一般为区域0(Area 0),其主要工作是在其余区域间传递路由信息。
骨干区域作为区域间传输通信和分布路由信息的中心。区域间的通信先要被路由到骨干区域,然后再路由到目的区域,最后被路由到目的区域中的主机。在骨干区域中的路由器通告他们区域内的汇总路由到骨干区域中的其他路由器。这些汇总通告在区域内路由器泛洪,所以在区域中的每台路由器有一个反映在它所在区域内路由可用的路由表,这个路由与AS中其他区域的ABR汇总通告相对应。
如在本章前面的图8-1中,R1使用一个汇总通告向所有骨干路由器(R2和R3)通告Area 0.0.0.1中的所有路由。R1从R2和R3接收汇总通告。R1配置了Area 0.0.0.0中的汇总通告信息,通过泛洪,R1把这个汇总路由信息传播到Area 0.0.0.1内所有路由器上。在Area 0.0.0.1内的每个路由器,来自Areas 0.0.0.0、0.0.0.2和0.0.0.3区域的汇总路由信息共同完成路由表的计算。
在实际网络中,可能会存在骨干区域不连续,或者某一个区域与骨干区域物理不相连的情况,此时系统管理员可以通过设置虚拟链路(Virtual Link)的方法来解决(参见图8-4)。虚拟链路存在于两个路由器之间,这两个路由器都有一个端口与同一个非骨干区域(这个区域是处于骨干区域和某个不直接与骨干区域相连的区域之间)相连,虚拟链路使该区域与骨干区域间建立一个逻辑联接点。虚拟链路被认为是属于骨干区域(相当于骨干区域的延伸),在 OSPF路由协议看来,虚拟链路两端的两个路由器被一个点对点的链路连在一起。而且,在OSPF路由协议中,通过虚拟链路的路由信息是作为域内路由来看待的。该虚拟链路必须建立在两个区域边界路由器之间,并且其中一个区域边界路由器必须属于骨干区域。
Stub(末梢)区域
通过前面对OSPF区域概念的了解可以知道,在划分了区域之后,OSPF网络中的非骨干区域中的路由器对于到外部区域的路由,一定要通过ABR(区域边界路由器)来转发,或者说对于区域内的路由器来说,ABR是一个通往外部世界的必经之路。既然如此,对于区域内的路由器来说,就没有必要知道通往外部区域的详细路由了,只要由ABR向该区域发布一条默认路由来指导报文的发送路径即可。这样在区域内的路由器中就只需要为数不多的区域内路由和一条指向ABR的默认路由(Default-Route),使区域内的路由表简化。而且无论区域外的路由如何变化,都不会影响到区域内路由器这个简单的路由表。这就是OSPF 路由协议中"Stub Area"(末梢区域)的设计理念。Stub区域的ABR不允许注入Type5 LSA(有关OSPF LSA类型将在本章后面具体介绍),在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少,同时也使得该区域不受外部AS路由的影响。
一个Stub区域可以包含一个入口/出口(也就是一个ABR),或者在任一ABR可以被用于到达外部路由目标时,还可包含多个ABR。对于多ABR的 Stub区域,外部路由是通过一个区域外的ASBR进行通告的。AS外部路由器不会被泛洪到,或者通过Stub区域。在一个Stub区域中的所有到达外部网络的路由是通过一个默认路由(0.0.0.0 0.0.0.0)来实现的。这样,在一个Stub区域中的路由器的路由表中就只有一个路由到所有AS外部位置的入口。
为了创建默认路由,Stub区域的ABR通行一个默认路由到Stub区域。默认路由被泛洪到这个Stub区域内的所有路由器上,但是不会泛洪到Stub区域外。默认路由是用于一个Stub区域中的路由器为任一不可到达AS内部的目的IP地址提供路由。在Stub区域中的所有路由器必须被配置,以便它们不在 Stub区域内导入或泛洪AS外部路由。所以,在一个Stub区域中的所有路由器接口上的所有区域配置必须配置Stub区域。例如,图8-5中的Area 0.0.0.3被配置为一个Stub区域,因为所有外部通信必须它的单个ABR——R3。R3通告一个默认路由分布在内部区域Area 0.0.0.3,而不是在区域内泛洪AS外部网络。
在 Stub区域中规定不接收外部AS的LSA,也不向外部AS发送区域内部LSA,即Stub区域中不注入ASE(自治系统外部)路由。Stub区域一定是非骨干区域和非转换区域(可以配置虚连接的区域),因为它不接收也不发送LSA。并且在Stub区域中不传递Type 5类型(AS外部LSA)的LSA(有关LSA类型将在本节后面介绍)。本节前面的图8-4显示了骨干区域、Stub区域,以及其他标准区域之间的关系。 Area 0为骨干区域,area 3是Stub区域,area 2为一个标准OSPF区域。同时在这个示例中Area 2区域并没有与骨干区域Area 0直接相连,这时就通过在两个区域的边界路由器之间建立的虚拟链路进行直接通信。Area 1是一个转发区域。
由于Stub区域通常位于OSPF网络末端,这些区域内的路由器通常是由一些处理能力有限的低端路由器组成,所以处于Stub区域内的这些低端设备既不需要保存庞大的路由表,也不需要经常性的进行路由计算。这样做有利于减小Stub区域中内部路由器上的链路状态数据库的大小及存储器的使用,提高路由器计算路由表的速度。
当一个OSPF的区域只存在一个区域出口点(只与一个其他区域连接)时,我们可以将该区域配置成一个Stub区域。这时,该区域的边界路由器会对域内通告默认路由信息。需要注意的是,一个Stub区域中的所有路由器都必须知道自身属于该区域,否则Stub区域的设置不会起作用。另外,针对Stub区域还有两点需要注意:一是Stub区域中不允许存在虚拟链路,这样就不会作为骨干区域的延伸;二是Stub区域中不允许存在ASBR,否则这个AS中的LSA无法传播到另一个AS中。
Totally Stub(完全末梢)区域和NSSA(非纯末梢)区域
上节介绍的Stub区域是一类特殊的OSPF区域,这类区域不接收或扩散Type-5类型LSA(AS-external-LSAs),对于产生大量 Type-5 LSA(外部AS LSA)的网络,这种处理方式能够有效减小Stub区域内路由器的LSDB大小,并缓解SPF运算对路由器资源的占用。通常情况下,Stub区域位于自治系统边缘区域。为保证Stub区域去往自治系统外的报文能被正确转发,Stub区域的ABR(区域边界路由器)将通过Summary-LSA(汇总链路状态通告)向本区域内发布一条默认路由,并且只在本区域泛洪。为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为 Totally Stub(完全末梢)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
1. 完全Stub区域
这里所说的完全Stub区域(Totally Stub,或者Stub no-summary)是在Stub区域的基础上(即阻止了Type 5 LSA包的基础上)再对其他ABR通告的网络汇总LSA(即Type 3类型LSA)也进行了阻隔,不接收区域间路由通告。其ABR仅通过网络汇总LSA通告一个默认路由,使用这个默认路由到达OSPF自治系统外部的目的地址。也就是说,完全Stub区域同时不允许Type 3、4或5三类LSA注入,但默认汇总路由除外。
若要将一个区域定义为Stub区域,则在区域内所有路由器中使用"area xx stub"命令;若要定义完全Stub区域,使用OSPF路由器配置命令"area xx stub no-summary"命令。
2. NSSA区域
Stub 区域虽然为合理的规划网络描绘了美好的前景,但在实际的组网中利用率并不高(Stub区域一般只存在于网络边缘),未免遗憾。但此时的OSPF协议已经基本成型,不可能再做大的修改。为了弥补缺陷,协议设计者提出了一种新的概念NSSA(not-so-Stubby area,非纯末梢区域),并且作为OSPF协议的一种扩展属性单独在RFC 1587中描述。NSSA可以说是对原来的Stub区域要求有所放宽,使它可以在更多网络环境中得到应用。
NSSA 区域规定,AS外的ASE路由不可以进入到NSSA区域中,但是NSSA区域内的路由器引入的ASE路由(NSSA区域中可以连接ASBR)可以在 NSSA中泛洪并发送到区域之外。这样,在NSSA区域中取消了原来Stub区域中关于ASE的双向传播的限制(区域外的进不来,区域里的也出不去),改为单向限制(区域外的进不来,区域里的能出去)。若要定义NSSA区域,使用OSPF路由器配置命令"area xx nssa"命令。
为了解决ASE单向传递的问题,NSSA中重新定义了一种LSA——Type 7类型的LSA(NSSA外部LSA),作为区域内的路由器引入外部路由时使用。该类型的LSA除了类型标识与Type 5不相同之外,其它内容基本一样。这样区域内的路由器就可以通过LSA的类型来判断是否该路由来自本区域内。但由于Type 7类的LSA是新定义的,对于不支持NSSA属性的路由器无法识别,所以协议规定:在NSSA的ABR上将NSSA内部产生的Type 7类型的LSA转化为Type 5类型的LSA再发布出去,并同时更改LSA的发布者为ABR自己。这样NSSA区域外的路由器就可以完全不用支持该属性。在NSSA区域内的所有路由器(包括NSSA的ABR)必须支持Type 7类型的LSA属性,而自治系统中的其他路由器则不需要。
总的来说,NSSA区域不允许Type 5 LSA,但在NSSA ABR上转换为Type 5的Type 7 LSA还是可以通过的。
NSSA所对应的区域ID为1,它与骨干区域0相连,同时它又与另两个自治系统的路由网络(分别是运行 IGRP和RIP路由协议的)相连。此时,外部区域和外部AS的路由信息不能通告到NSSA区域中,但NSSA中的路由信息可以向外发布。
OSPF NSSA区域示例
原文博客:http://blog.163.com/hlz_2599/blog/static/142378474201261543555605/