简介
本文档介绍开放最短路径优先 (OSPF) 区域和虚拟链路。
注意:本文档介绍基本OSPF协议。RFC 5250中描述的不透明链路状态通告(LSA)不在本文讨论范围之内。
什么是区域、Stub 区域和 Not-So-Stubby 区域?
OSPF 网络可划分为多个子域,每个子域称为区域。区域是具有相同区域标识的OSPF网络、路由器和链路的逻辑集合。区域内的路由器必须为所属的区域保存拓扑数据库。该路由器不包含关于其所属区域外部的网络拓扑的详细信息,因此减小了其数据库的大小。
区域可限制路由信息分发的范围。在一个区域内无法执行路由更新过滤。同一区域内各路由器的链路状态数据库 (LSDB) 必须同步且完全相同;但是,在不同区域之间可以进行路由汇总和过滤。创建区域的主要优势在于通过过滤和汇总路由可减少要传播的路由数。
分成不同区域的每个 OSPF 网络必须遵循以下规则:
-
必须存在主干区域,用于将一些独立的区域组合到单个域中。
-
每个非主干区域必须直接连接到主干区域(尽管此连接可能是通过虚拟链路的简单逻辑连接)。
-
在任何故障情况下(例如链路或路由器关闭事件),均不得对主干区域进行分区(划为更小的部分)。
警告:您网络中的某些路由器可能包含部分路由信息,如果您不遵守这些规则,会对您的网络造成负面影响。
区域由区域ID标识。Cisco IOS® 软件支持以 IP 地址格式或十进制格式表示的区域 ID,例如区域 0.0.0.0 等于区域 0。 如果网络中有多个区域,您需要将主干区域命名为“area 0”。 因为骨干区域与网络中的多个区域相连,所以必须为相邻的区域。如果主干被分区,自治系统的某些部分将无法访问,您需要配置虚拟链路以修复分区。
接口位于两个(或更多)不同区域的路由器为区域边界路由器。区域边界路由器位于两个区域之间的 OSPF 边界。任何链路的两边始终属于同一个 OSPF 区域。
自治系统边界路由器(ASBR)在整个OSPF自治系统范围内通告外部目的地。外部路由是从其他任何协议重分配到 OSPF 的路由。在很多情况下,外部链路状态在每个路由器数据库中的链路状态里占有很大的比例。末节区域是不允许通告外部路由的区域,因此会进一步减小数据库的大小。一条默认汇总路由 (0.0.0.0) 被插入到末节区域中以到达这些外部路由。若网络中不存在外部路由,则不必定义末节区域。
末节区域不接收外部路由,但会接收属于同一 OSPF 域其他区域的网络信息。您可以定义完全末节区域。处于完全末节区域的路由器将与路由相关的仅 LSDB 信息以及默认路由保留在其区域内部。
次末节区域(NSSA)是OSPF末节区域的扩展。与末节区域一样,它们可防止AS外部LSA泛洪到NSSA,而依靠到外部目的地的默认路由。因此,NSSA(如末端区域) 必须位于OSPF路由域的边缘。NSSA 比末节区域更灵活,因为 NSSA 可以将外部路由导入 OSPF 路由域,从而向不属于 OSPF 路由域的小型路由域提供中转服务。
要了解有关OSPF数据库的详细信息,请参阅《OSPF数据库解释指南》。
定义末节区域
请使用 area xx stub
命令将区域定义为末节区域。在下图所示的拓扑中,区域 7 中的路由器不需要知道所有外部目的地。无论外部目的地如何,区域 7 中的路由器都必须向 ABR 发送数据包以到达 ASBR。区域 7 可定义为末端区域。要将区域7定义为末节区域,请配置 area 7 stub
命令。

完全末节区域的定义
使用OSPF路由器配置 area xx stub no-summary
命令以定义完全末节区域。在上面的网络图中,区域 7 中的路由器不必知道所有外部目的地或其他区域骨干网的任何汇总 LSA。区域 7 中的路由器必须向 ABR 发送数据包才能到达区域 7 以外的任何目的地。区域 7 可以被定义为完全末节区域。要将区域7定义为完全末节区域,请配置 area 7 stub no summary
命令。
定义次末节区域
使用OSPF路由器配置 area xx nssa
命令以定义NSSA。例如,在此拓扑中,区域2配置为NSSA, area 2 nssa
命令。通过这种方式,区域 2 的内部路由器可免受所有 AS- 外部 LSA 的影响,这些 AS- 外部 LSA 是由 OSPF ASBR 导入的。但是它仍然允许非 OSPF 路由器的关联。外部路由信息被导入到 Type-7 LSA 中的 NSSA 里。Type-7 LSA 与 Type-5 AS-External LSA 类似,但 Type-7 LSA 只能被扩散到 NSSA 中。为了进一步传播 NSSA 外部信息,必须通过 NSSA ABR 将 Type-7 LSA 转换为 Type-5 AS-external-LSA。Cisco IOS 11.2 和更高版本支持 NSSA。

NSSA 完全 Stub 区域的定义
使用OSPF路由器配置命令 area xx nssa no-summary
命令以定义NSSA完全末节区域。在上一网络图中,区域2配置为NSSA完全末节, area 2 nssa no-summary
命令。通过这种方式可以防止任何 Type 5 AS- 外部或 Type 3 汇总路由在区域 2 中渗透。
普通区域、末节区域、完全末节区域和 NSSA 区域之间的区别
下表说明了本技术文件中所定义的区域类型之间的区别。
区域 |
限制 |
正常 |
无 |
末节 |
不允许第4类或第5类AS外部LSA |
完全末节区域 |
不允许 Type 3、4 或 5 LSA,但汇总汇总路由除外 |
NSSA |
不允许 Type 5 AS 外部的 LSA,但在 NSSA ABR 上转换为 Type 7 的 Type 5 LSA 可以通过。 |
NSSA 完全 Stub 区域 |
不允许 Type 3、4 或 5 LSA,默认汇总路由除外,但允许在 NSSA ABR 上转换为 Type 7 的 Type 5 LSA。 |
请参阅 OSPF 如何生成默认路由?中的 OSPF 区域类型部分,了解有关不同类型区域的更多信息。
什么是虚拟链路?
OSPF 自治系统中的所有区域都必须在物理上与骨干区域 (area 0) 相连。 在无法实现这种物理连接的情况下,可利用虚拟链接来通过非骨干区域建立连到骨干网的接。如前所述,您还可以使用虚拟链路通过非主干区域来连接已分区主干区域的两个部分。配置虚拟链路所使用的区域称为中转区域,这种区域必须具有全部路由信息。中转区域不能是末节区域。
请使用 area area-id virtual-link router-id
命令,其中area-id是分配给中转区域的区域ID(这可以是有效IP地址或十进制值),而router-id是与虚拟链路邻居关联的路由器ID。在下面的拓扑中,虚拟链路通过区域 7 将区域 5 与骨干网连接起来:

在本示例中,在路由器ID为1.1.1.1的路由器和路由器ID为2.2.2.2的路由器之间创建虚拟链路。要创建虚拟链路,请配置 area 5 virtual-link 2.2.2.2
路由器1.1.1.1和 area 5 virtual-link 1.1.1.1
子命令。有关详细信息,请参阅在虚拟链路上配置OSPF身份验证。
相关信息