外观
OSPF 动态路由协议基础概念
OSPF(Open Shortest Path First,开放最短路径优先)是一种链路状态内部网关协议,用于在同一个自治系统内部动态交换路由信息。它直接封装在 IP 中,协议号为 89,并使用 SPF 算法计算到各目标网络的最短路径。
与距离矢量协议只向邻居通告“目标有多远”不同,OSPF 路由器会描述自己的链路状态。区域内路由器在链路状态数据库同步后,拥有一致的拓扑视图,再各自独立运行 Dijkstra 算法生成最优路由。
OSPF 的主要特点
- 收敛较快:拓扑变化时通过触发更新扩散链路状态,而不是周期性发送完整路由表。
- 支持分层设计:使用区域缩小链路状态数据库和 SPF 计算范围,骨干区域编号为
Area 0。 - 以 Cost 选路:接口开销通常由参考带宽与接口带宽计算,路径 Cost 为沿途出接口开销之和。
- 支持等价负载分担:存在多条总 Cost 相同的最优路径时,可同时安装到路由表。
- 无类别路由协议:通告中携带掩码,支持 VLSM 和 CIDR。
建立邻居关系的过程
OSPF 路由器通过 Hello 报文发现邻居并维护关系。双方的 Area ID、Hello/Dead Interval、认证参数等关键配置必须兼容,才能继续建立邻接关系。常见邻居状态为:
text
Down → Init → 2-Way → ExStart → Exchange → Loading → Full在广播型网络中,路由器会选举 DR(指定路由器)和 BDR(备份指定路由器),以减少邻接关系和 LSA 泛洪数量。达到 2-Way 不一定表示异常:DROther 之间通常停留在这一状态,而与 DR、BDR 建立完整邻接。
理解 OSPF 的三张表
学习 OSPF 时,可以沿着“发现邻居、同步拓扑、计算路由”这条主线理解三张核心表。
| 表 | 常用名称 | 记录内容 | 形成方式 |
|---|---|---|---|
| 邻居表 | Neighbor Table | 邻居 Router ID、状态、接口、Dead Time 等 | 通过 Hello 报文发现并维护 |
| 链路状态数据库 | LSDB / Topology Table | 区域内收到的各类 LSA,描述网络拓扑 | 邻接路由器之间可靠泛洪和同步 LSA |
| 路由表 | Routing Table | SPF 计算后选出的最优前缀、下一跳和出接口 | 对 LSDB 运行 SPF,并与其他路由来源比较 |
三张表之间存在明确的因果关系:只有邻接关系正常,LSA 才能可靠同步;只有 LSDB 足够完整且一致,SPF 才能计算出正确路径;计算结果还需要通过管理距离和度量值比较,才可能进入全局路由表。
区域与路由器角色
| 角色 | 定义 | 作用 |
|---|---|---|
| Internal Router | 所有 OSPF 接口属于同一区域 | 维护所在区域的 LSDB |
| Backbone Router | 至少一个接口位于 Area 0 | 参与骨干区域路由 |
| ABR | 接口连接两个或多个区域,且至少连接 Area 0 | 在区域之间传递和汇总路由信息 |
| ASBR | 将其他协议或静态路由重分发进 OSPF | 产生外部路由信息 |
多区域 OSPF 要求非骨干区域通过 Area 0 交换区域间路由。小型网络可以先从单区域设计开始,规模扩大后再根据故障域、设备能力和汇总需求划分区域。
常见 LSA 类型
| LSA 类型 | 名称 | 产生者与传播范围 | 主要用途 |
|---|---|---|---|
| Type 1 | Router LSA | 每台路由器产生,仅在本区域传播 | 描述路由器接口、链路和开销 |
| Type 2 | Network LSA | 广播网络中的 DR 产生,仅在本区域传播 | 描述多路访问网段及其连接路由器 |
| Type 3 | Summary LSA | ABR 产生,传播到其他区域 | 通告区域间网络前缀 |
| Type 5 | AS External LSA | ASBR 产生,通常在整个 OSPF 域传播 | 通告重分发进入 OSPF 的外部路由 |
这里的 “Summary” 是历史命名。Type 3 LSA 可以由 ABR 对路由进行汇总,但也可能逐条通告未汇总的区域间前缀。
基础排障思路
- 检查接口是否启用 OSPF,以及双方是否位于预期区域。
- 检查 Hello/Dead Interval、网络类型、认证和 MTU 等参数。
- 观察邻居状态;若长期停在 ExStart/Exchange,重点检查 MTU 和 Router ID。
- 查看 LSDB 是否包含目标前缀对应的 LSA。
- 查看 SPF 结果是否因更优路由来源、过滤策略或不可达下一跳而未进入路由表。