一、OSPF 技术定位与优势
1. 路由协议对比分析
RIP 的固有缺陷:
受限于 15 跳的最大路由范围,无法支持大规模网络;每 30 秒周期性发送完整路由表,占用大量带宽;以跳数为唯一度量值,无法根据链路实际性能选路;收敛速度慢且易产生路由环路。OSPF 的突破性改进:
彻底摆脱跳数限制,可适配超大规模园区或广域网络;仅通过组播发送变化的路由信息,大幅降低带宽消耗;采用触发式更新机制,实现毫秒级快速收敛;以链路实际开销(COST)为度量,选路更精准;通过 SPF 算法天然避免环路,30 分钟仅周期性更新链路状态摘要(LSA),稳定性更强。本质区别:
OSPF 传递的是全网拓扑结构图 + 路由信息,路由器可自主计算最优路径;RIP 仅传递路由表条目,路由器被动接收转发。
2. 核心组件解析
(1)三大关键数据表
- 邻居表:记录所有已发现的邻居路由器信息,包括邻居状态、Router ID 等,是建立通信的基础。
- 拓扑表(LSDB):即链路状态数据库,存储整个网络的完整拓扑结构,相当于路由器的 “地图库”。
- 路由表:通过 SPF 算法从拓扑表中计算出的最优转发路径,可使用
dis ip routing-table pro ospf
命令查看 OSPF 生成的路由。
(2)OSPF 协议数据包(IP 协议号 89)
数据包类型 | 核心功能 | 关键特征 |
---|---|---|
Hello(类型 1) | 邻居发现、建立与保活 | 含 10s Hello 间隔、40s Dead 间隔(Hello 的 4 倍)、DR/BDR 信息;组播地址 224.0.0.5 |
DBD(类型 2) | 交换链路状态数据库摘要 | 携带 LSA 头部信息,主从关系由 Router ID 大的设备决定,通过序列号控制同步 |
LSR(类型 3) | 请求缺失的链路状态信息 | 用 “类型 + ID + 通告路由器” 三元组精准定位所需 LSA |
LSU(类型 4) | 发送完整的链路状态更新 | 可批量携带 LSA;广播网络中 DROTHER 发至 224.0.0.6,DR 转发至 224.0.0.5 |
LSAck(类型 5) | 确认 LSU 接收成功 | 仅携带需确认的 LSA 头部,轻量高效 |
二、OSPF 工作流程详解
1. 邻居与邻接关系建立
- 邻居关系:通过 Hello 报文交互,双方互相识别后进入 2-way 状态(稳定的邻居关系)。
- 邻接关系:邻居间完成拓扑数据库同步后建立,需经历四个阶段:
- Exstart:协商主从关系,确定数据库同步的 “主导方”
- Exchange:交换链路状态数据库摘要(DBD 报文)
- Loading:请求缺失的 LSA 并接收更新(LSR/LSU 交互)
- Full:拓扑数据库完全同步,进入稳定邻接状态
2. DR/BDR 选举机制
- 设计目的:在广播型网络(如以太网)中减少邻接关系数量,避免 n (n-1)/2 的冗余连接(n 为路由器数量)。
- 选举规则:
优先级(0-255,默认 1)高的路由器优先当选;优先级相同则 Router ID 大的胜出。 - 核心特性:一旦选举完成则无抢占性,仅当原 DR/BDR 失效或重启 OSPF 进程时才会重新选举。
- 关系规则:DR 和 BDR 与所有路由器建立邻接关系(Full 状态);普通路由器(DROTHER)之间仅维持邻居关系(2-way 状态)。
3. 状态流转与更新机制
- 状态机流转:
初始 Down → 收到 Hello 但未互认(Init) → 互认邻居(2-way) → 主从协商(Exstart) → 摘要交换(Exchange) → 加载更新(Loading) → 完全同步(Full)。 - 关键前提:进入 2-way 状态需网络掩码、区域 ID、Hello/Dead 时间等参数一致;进入 Full 状态需 MTU 大小匹配。
- 拓扑更新逻辑:网络变化时立即触发 LSU 泛洪更新;LSA 老化时间最长 3600 秒,1800 秒周期性重置;通过序列号(越大越新)和校验和(序列号相同时取更大值)判断 LSA 新旧。
三、LSA 链路状态通告
1. LSA 基本结构
头部固定 20 字节,包含链路状态类型、老化时间、链路状态 ID、通告路由器 ID、序列号、校验和等关键标识信息。
2. 六大核心 LSA 类型
类型 | 名称 | 通告设备 | 主要作用 | 传播范围 |
---|---|---|---|---|
1 | 路由器 LSA | 所有 OSPF 路由器 | 描述本设备在区域内的直连链路(类型、开销等) | 仅本区域 |
2 | 网络 LSA | 广播网络中的 DR | 描述广播网络的网段掩码及接入路由器 | 仅本区域 |
3 | 网络汇总 LSA | ABR(区域边界路由器) | 将其他区域的网段路由传递到本地区域 | 跨区域传播 |
4 | ASBR 汇总 LSA | ABR | 告知全网 ASBR(外部路由入口)的位置 | 跨区域传播 |
5 | AS 外部 LSA | ASBR | 描述引入的外部路由信息(如静态路由、RIP 路由) | 所有区域(特殊区域除外) |
7 | NSSA 外部 LSA | NSSA 区域的 ASBR | 在 NSSA 区域内传递外部路由,经 ABR 转为 5 类 LSA | 仅 NSSA 区域内部 |
四、网络类型与配置参数
网络类型 | 典型应用链路 | 报文发送方式 | 是否需要 DR/BDR | Hello 间隔 | Dead 间隔 |
---|---|---|---|---|---|
Broadcast | 以太网、WiFi | 组播(224.0.0.5) | 是 | 10 秒 | 40 秒 |
P2P | PPP、HDLC 链路 | 组播 | 否 | 10 秒 | 40 秒 |
NBMA | 帧中继、X.25 | 单播(需手动指定邻居) | 是 | 30 秒 | 120 秒 |
P2MP | 手动配置的多点链路 | 模拟组播(需手动指定邻居) | 否 | 30 秒 | 120 秒 |
五、区域规划与设备角色
1. 区域划分原则
- 骨干区域(Area 0):所有非骨干区域必须直接连接骨干区域,是区域间路由交互的核心,避免路由环路。
- 非骨干区域:通过 ABR 接入骨干区域;特殊区域(如 Stub、NSSA)可减少 LSA 数量,优化路由表大小。
2. 路由器角色分类
- IR(区域内路由器):所有接口均属于同一 OSPF 区域,仅参与本区域的路由计算。
- BR(骨干路由器):至少有一个接口属于骨干区域(Area 0),参与骨干区域的路由交互。
- ABR(区域边界路由器):连接骨干区域和非骨干区域,负责生成 3 类、4 类 LSA,实现区域间路由传递。
- ASBR(自治系统边界路由器):连接 OSPF 自治系统与外部网络,引入外部路由,生成 5 类、7 类 LSA。
六、路由开销(COST)计算
- 参考带宽:默认 100Mbps,建议根据网络实际最高带宽调整(如千兆网络设为 1000Mbps)。
- 计算方式:
当链路带宽≥参考带宽时,COST=1;
当链路带宽 < 参考带宽时,COST = 参考带宽 ÷ 链路带宽(单位:Mbps)。 - 实例:千兆以太网(1000Mbps)、百兆以太网(100Mbps)默认 COST 均为 1;十兆以太网(10Mbps)COST=10。
七、实战问题解决(MGRE 场景)
- 邻接关系无法建立:
若 Tunnel 接口默认设为 P2P 类型,需手动修改为 broadcast 或 P2MP 类型(配置命令:ospf network-type broadcast
)。 - DR/BDR 选举冲突:
分支站点路由器 DR 优先级设为 0(不参与选举),确保中心站点路由器成为唯一 DR,避免分支间冗余交互。