OSPF区域与路由聚合
1. 区域划分
随着网络规模日益扩大,当一个大型网络中的路由器都运行
OSPF
路由协议时,路由器数量的增多会导致
LSDB
非常庞大,占用大量的存储空间,并使得运行
SPF
算法的复杂度增加,导致
CPU
负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“振荡”之中,造成网络中会有大量的
OSPF
协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF
协议通过将自治系统划分成不同的区域(
Area
)来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(
Area ID
)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行
OSPF
的接口必须指明属于哪一个区域。如
图1
所示。
划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的
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
。
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
区域。
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
的规模。
(2)
ASBR
聚合
配置引入路由聚合后,如果本地路由器是自治系统边界路由器
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
的开销。