OSPF区域与路由聚合

1. 区域划分
随着网络规模日益扩大,当一个大型网络中的路由器都运行 OSPF 路由协议时,路由器数量的增多会导致 LSDB 非常庞大,占用大量的存储空间,并使得运行 SPF 算法的复杂度增加,导致 CPU 负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“振荡”之中,造成网络中会有大量的 OSPF 协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF 协议通过将自治系统划分成不同的区域( Area )来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号( Area ID )来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行 OSPF 的接口必须指明属于哪一个区域。如 1 所示。
图1 OSPF 区域划分
划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的 LSA 数量,还可以将网络拓扑变化带来的影响最小化。
2. 路由器的类型
OSPF 路由器根据在 AS 中的不同位置,可以分为以下四类:
(1)        区域内路由器( Internal Router
该类路由器的所有接口都属于同一个 OSPF 区域。
(2)        区域边界路由器 ABR Area Border Router
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(骨干区域的介绍请参见下一小节)。 ABR 用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
(3)        骨干路由器 Backbone Router
该类路由器至少有一个接口属于骨干区域。因此,所有的 ABR 和位于 Area0 的内部路由器都是骨干路由器。
(4)        自治系统边界路由器 ASBR
与其他 AS 交换路由信息的路由器称为 ASBR ASBR 并不一定位于 AS 的边界,它有可能是区域内路由器,也有可能是 ABR 。只要一台 OSPF 路由器引入了外部路由的信息,它就成为 ASBR
图2 OSPF 路由器的类型
3. 骨干区域与虚连接
OSPF 划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号( Area ID )是 0 ,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此, OSPF 有两个规定:
l              所有非骨干区域必须与骨干区域保持连通;
l              骨干区域自身也必须保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置 OSPF 虚连接( Virtual Link )予以解决。
虚连接是指在两台 ABR 之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是 ABR ,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区( Transit Area )。
3 中, Area2 与骨干区域之间没有直接相连的物理链路,但可以在 ABR 上配置虚连接,使 Area2 通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如 4 所示。
虚连接相当于在两个 ABR 之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送 Hello 报文间隔等。
两台 ABR 之间直接传递 OSPF 报文信息,它们之间的 OSPF 路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的 IP 报文来转发。
4. (Totally) Stub区域
Stub 区域是一些特定的区域, Stub 区域的 ABR 不允许注入 Type5 LSA ,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
为了进一步减少 Stub 区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为 Totally Stub (完全 Stub )区域,该区域的 ABR 不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally) Stub 区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说, (Totally) Stub 区域位于自治系统的边界。
为保证到本自治系统的其他区域或者自治系统外的路由依旧可达,该区域的 ABR 将生成一条缺省路由,并发布给本区域中的其他非 ABR 路由器。
配置 (Totally) Stub 区域时需要注意下列几点:
l              骨干区域不能配置成 (Totally) Stub 区域。
l              如果要将一个区域配置成 (Totally) Stub 区域,则该区域中的所有路由器必须都要配置 stub [ no-summary ] 命令。
l              (Totally) Stub 区域内不能存在 ASBR ,即自治系统外部的路由不能在本区域内传播。
l              虚连接不能穿过 (Totally) Stub 区域。
5. NSSA区域
NSSA Not-So-Stubby Area )区域是 Stub 区域的变形,与 Stub 区域有许多相似的地方。 NSSA 区域也不允许 Type5 LSA 注入,但可以允许 Type7 LSA 注入。 Type7 LSA NSSA 区域的 ASBR 产生,在 NSSA 区域内传播。当 Type7 LSA 到达 NSSA ABR 时,由 ABR Type7 LSA 转换成 Type5 LSA ,传播到其他区域。
5 所示,运行 OSPF 协议的自治系统包括 3 个区域:区域 1 、区域 2 和区域 0 ,另外两个自治系统运行 RIP 协议。区域 1 被定义为 NSSA 区域,区域 1 接收的 RIP 路由传播到 NSSA ASBR 后,由 NSSA ASBR 产生 Type7 LSA 在区域 1 内传播,当 Type7 LSA 到达 NSSA ABR 后,转换成 Type5 LSA 传播到区域 0 和区域 2
另一方面,运行 RIP 的自治系统的 RIP 路由通过区域 2 ASBR 产生 Type5 LSA OSPF 自治系统中传播。但由于区域 1 NSSA 区域,所以 Type5 LSA 不会到达区域 1
Stub 区域一样,虚连接也不能穿过 NSSA 区域。
图5 NSSA 区域
6. 路由聚合
路由聚合是指 ABR ASBR 将具有相同前缀的路由信息聚合,只发布一条路由到其它区域。
AS 被划分成不同的区域后,区域间可以通过路由聚合来减少路由信息,减小路由表的规模,提高路由器的运算速度。
例如, 6 中, Area 1 内有三条区域内路由 19.1.1.0/24 19.1.2.0/24 19.1.3.0/24 ,如果此时在 Router A 上配置了路由聚合,将三条路由聚合成一条 19.1.0.0/16 ,则 Router A 就只生成一条聚合后的 LSA ,并发布给 Area0 中的其他路由器。
OSPF 有两类聚合:
(1)        ABR 聚合
ABR 向其它区域发送路由信息时,以网段为单位生成 Type3 LSA 。如果该区域中存在一些连续的网段,则可以将这些连续的网段聚合成一个网段。这样 ABR 只发送一条聚合后的 LSA ,所有属于聚合网段范围的 LSA 将不再会被单独发送出去,这样可减少其它区域中 LSDB 的规模。
配置引入路由聚合后,如果本地路由器是自治系统边界路由器 ASBR ,将对引入的聚合地址范围内的 Type5 LSA 进行聚合。当配置了 NSSA 区域时,还要对引入的聚合地址范围内的 Type7 LSA 进行聚合。
如果本地路由器是 ABR ,则对由 Type7 LSA 转化成的 Type5 LSA 进行聚合处理。
7. 路由类型
OSPF 将路由分为四类,按照优先级从高到低的顺序依次为:
l              区域内路由( Intra Area
l              区域间路由( Inter Area
l              第一类外部路由( Type1 External
l              第二类外部路由( Type2 External
区域内和区域间路由描述的是 AS 内部的网络结构,外部路由则描述了应该如何选择到 AS 以外目的地址的路由。 OSPF 将引入的 AS 外部路由分为两类: Type1 Type2
第一类外部路由是指接收的是 IGP Interior Gateway Protocol ,内部网关协议)路由(例如静态路由和 RIP 路由)。由于这类路由的可信程度较高,并且和 OSPF 自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的 ASBR 的开销与 ASBR 到该路由目的地址的开销之和。
第二类外部路由是指接收的是 EGP Exterior Gateway Protocol ,外部网关协议)路由。由于这类路由的可信度比较低,所以 OSPF 协议认为从 ASBR 到自治系统之外的开销远远大于在自治系统之内到达 ASBR 的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于 ASBR 到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的 ASBR 的开销。