一、OSPF报文
OSPF 协议报文直接封装为 IP 报文,协议号为 89。
OSPF 有五种类型的协议报文:
(1) Hello 报文:周期性发送,用来发现和维持 OSPF 邻居关系,以及进行 DR(DesignatedRouter,指定路由器)/BDR(Backup Designated Router,备份指定路由器)的选举。
(2) DD(Database Description,数据库描述)报文:描述了本地 LSDB(Link State DataBase,链路状态数据库)中每一条 LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。
(3) LSR(Link State Request,链路状态请求)报文:向对方请求所需的 LSA。两台路由器互相交换 DD 报文之后,得知对端的路由器有哪些 LSA 是本地的 LSDB 所缺少的,这时需要发送LSR 报文向对方请求所需的 LSA。
(4) LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的 LSA。
(5) LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的 LSA 进行确认。
二、LSA类型
OSPF 中对链路状态信息的描述都是封装在 LSA 中发布出去,常用的 LSA 有以下几种类型:
(1) Router LSA(Type-1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
(2) Network LSA(Type-2):由 DR 产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
(3) Network Summary LSA(Type-3):由 ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
(4) ASBR Summary LSA(Type-4):由 ABR 产生,描述到 ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。
(5) AS External LSA(Type-5):由 ASBR 产生,描述到 AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了 Stub 区域和 NSSA 区域)。
(6) NSSA External LSA(Type-7):由 NSSA(Not-So-Stubby Area)区域内的 ASBR 产生,描述到 AS 外部的路由,仅在 NSSA 区域内传播。
(7) Opaque LSA:用于 OSPF 的扩展通用机制,目前有 Type-9、Type-10 和 Type-11 三种。其中,Type-9 LSA 仅在本地链路范围进行泛洪,用于支持 GR(Graceful Restart,平滑重启)的 Grace LSA 就是 Type-9 的一种类型;Type-10 LSA 仅在区域范围进行泛洪,用于支持MPLS TE 的 LSA 就是 Type-10 的一种类型;Type-11 LSA 可以在一个自治系统范围进行泛洪。
三、OSPF区域
1. 区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域,或者说每个运行 OSPF 的接口必须指明属于哪一个区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的 LSA 数量,还可以将网络拓扑变化带来的影响最小化。
2. 骨干区域与虚连接
(1) 骨干区域(Backbone Area)OSPF 划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号是 0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF 有两个规定:
- 所有非骨干区域必须与骨干区域保持连通;
- 骨干区域自身也必须保持连通。
在实际应用中,可能会因为各方面条件的限制,无法满足上面的要求。这时可以通过配置 OSPF 虚连接予以解决。
(2) 虚连接(Virtual Link)虚连接是指在两台 ABR 之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是 ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
3. Stub区域和Totally Stub区域Stub 区域是一些特定的区域,该区域的 ABR 会将区域间的路由信息传递到本区域,但不会引入自治系统外部路由,区域中路由器的路由表规模以及 LSA 数量都会大大减少。为保证到自治系统外的路由依旧可达,该区域的 ABR 将生成一条缺省路由 Type-3 LSA,发布给本区域中的其他非 ABR路由器。
为了进一步减少 Stub 区域中路由器的路由表规模以及 LSA 数量,可以将区域配置为 Totally Stub(完全 Stub)区域,该区域的 ABR 不会将区域间的路由信息和自治系统外部路由信息传递到本区域。为保证到本自治系统的其他区域和自治系统外的路由依旧可达,该区域的 ABR 将生成一条缺省路由 Type-3 LSA,发布给本区域中的其他非 ABR 路由器。
4. NSSA区域和Totally NSSA区域
NSSA(Not-So-Stubby Area)区域是 Stub 区域的变形,与 Stub 区域的区别在于 NSSA 区域允许引入自治系统外部路由,由 ASBR 发布 Type-7 LSA 通告给本区域。当 Type-7 LSA 到达 NSSA 的ABR 时,由 ABR 将 Type-7 LSA 转换成 Type-5 LSA,传播到其他区域。
可以将区域配置为 Totally NSSA(完全 NSSA)区域,该区域的 ABR 不会将区域间的路由信息传递到本区域。为保证到本自治系统的其他区域的路由依旧可达,该区域的 ABR 将生成一条缺省路由 Type-3 LSA,发布给本区域中的其他非 ABR 路由器。