OSPF 基础:区域、邻居与 LSA
OSPF(Open Shortest Path First)是企业内网最常用的动态路由协议。它让所有路由器共享完整的网络拓扑图,各自独立计算最短路径——网络变化时自动收敛,无需手动更新路由表。
OSPF vs RIP:为什么选 OSPF
特性 OSPF RIP
──────────────────────────────────────────────────────────────
算法 Dijkstra(最短路径) Bellman-Ford(距离向量)
度量标准 带宽(Cost) 跳数(最大15跳)
收敛速度 快(秒级) 慢(分钟级)
可扩展性 大型网络 最多15跳(小型网络)
无环路保证 有(完整拓扑图) Holddown/Split Horizon
认证支持 MD5/SHA 可选
标准 开放(RFC 2328) 开放(RFC 2453)
选 OSPF:企业内网 10+ 路由器,需要快速收敛,有大型层次化网络设计需求。
OSPF 核心概念
区域(Area)
OSPF 将网络分成区域(Area),减少 LSA 泛洪范围:
Area 0(骨干区域,必须存在)
┌─────────────────────┐
│ ABR ── ABR ── ABR │
└──┬──────────────────┬──┘
│ │
Area 1 Area 2
┌──────────┐ ┌──────────┐
│ 分支路由器│ │ 分支路由器│
└──────────┘ └──────────┘
Area 0:骨干区域,所有区域间流量必须经过骨干区域
ABR:区域边界路由器,连接不同区域
ASBR:自治系统边界路由器,引入外部路由(如静态路由、BGP)
Router-ID
每台 OSPF 路由器需要一个唯一 ID(32位,格式像 IP):
优先选择手动配置的 Router-ID
其次选择最高的回环接口 IP
最后选择最高的活跃物理接口 IP
最佳实践:手动配置 Router-ID(用回环接口 IP)
router ospf 1
router-id 1.1.1.1
OSPF 邻居建立过程
sequenceDiagram
participant R1
participant R2
Note over R1,R2: 初始状态:Down
R1->>R2: Hello(每10秒,含Router-ID/Area/网段/参数)
Note over R2: 收到Hello → Init状态
R2->>R1: Hello(含R1的Router-ID在邻居列表中)
Note over R1: 看到自己的ID → 2-Way状态(双向通信建立)
Note over R1,R2: 选举DR/BDR(广播网络)
R1->>R2: DBD(数据库描述,交换LSA摘要)
R2->>R1: DBD
Note over R1,R2: ExStart → Exchange状态
R1->>R2: LSR(请求缺少的LSA)
R2->>R1: LSU(发送完整LSA)
R1->>R2: LSAck(确认收到)
Note over R1,R2: Loading状态
Note over R1,R2: 数据库同步完成 → Full状态(邻接建立)
邻居状态速记:Down → Init → 2-Way → ExStart → Exchange → Loading → Full
Hello 报文参数(必须匹配才能建立邻居)
必须相同的参数:
✅ Area ID(区域号)
✅ Hello/Dead 间隔(默认 10s/40s,广播网络)
✅ 认证类型和密码
✅ MTU 大小(DBD 交换阶段)
✅ 子网掩码(广播网络)
可以不同的参数:
✓ Router-ID(不同就对了)
✓ 优先级(用于DR选举)
DR/BDR 选举(广播网络)
广播网络(以太网)上,OSPF 选举 DR/BDR 减少邻接数量:
没有 DR/BDR(5台路由器,需要 10 条邻接):
R1 ─ R2 ─ R3 ─ R4 ─ R5
├─────────────────────┤ 全网状
有 DR/BDR(同样5台,只需4+4条邻接):
所有路由器只与 DR 和 BDR 建立完全邻接(Full)
其他路由器之间保持 2-Way
DR 选举规则:
优先级最高(0-255,默认1)成为 DR
优先级相同 → Router-ID 最大的成为 DR
优先级 = 0 → 不参与选举
注意:DR/BDR 选举后不抢占(除非 DR 失效后 BDR 升为 DR,重新选 BDR)
LSA 类型速览
LSA 类型 名称 产生者 范围
─────────────────────────────────────────────────────────────
Type 1 Router LSA 每台路由器 本区域内
Type 2 Network LSA DR 本区域内
Type 3 Summary LSA ABR 其他区域(区域间路由)
Type 4 ASBR Summary ABR 通告 ASBR 位置
Type 5 AS External LSA ASBR 整个 OSPF 域(外部路由)
Type 7 NSSA External NSSA 区域的 ASBR NSSA 区域内
日常用到最多的:Type 1(路由器本身)、Type 3(区域间路由)、Type 5(外部路由如默认路由)
Linux 配置 OSPF(FRRouting)
# 安装 FRRouting(支持 OSPF/BGP/OSPF6 等)
apt install frr
# 启用 OSPF 守护进程
sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
systemctl restart frr
# 进入 FRR 命令行
vtysh
# 配置 OSPF
Router# configure terminal
Router(config)# router ospf
Router(config-router)# router-id 1.1.1.1
Router(config-router)# network 10.0.10.0/24 area 0
Router(config-router)# network 10.0.20.0/24 area 0
Router(config-router)# passive-interface eth0 # 不向 eth0 发 Hello(连终端设备的接口)
Router(config-router)# exit
# 查看 OSPF 邻居
Router# show ip ospf neighbor
# 查看 OSPF 路由
Router# show ip ospf route
# 查看 LSDB(链路状态数据库)
Router# show ip ospf database
CCNA 对应考点
考纲位置:Domain 3.4 — Configure and verify single area OSPFv2
高频考题: - OSPF 邻居建立的必要条件(Hello 参数匹配) - DR/BDR 选举规则(优先级 → Router-ID) - OSPF Cost 计算(100 Mbps = Cost 1,1 Gbps = Cost 1,需要调整 reference-bandwidth) - Area 0 的重要性(所有区域间路由必须经过骨干区域)
下一节:OSPF 配置与排错——OSPF 邻居建立了,但路由为什么还是不通?系统性排查 OSPF 故障的方法。