一、OSPF 基础概述
1. 技术背景(与 RIP 对比)
- RIP 存在的问题:最大跳数 15 限制、周期性发送全部路由(占带宽)、收敛慢、以跳数为度量、可能有环路、30 秒更新。
- OSPF 优势:无跳数限制(适合大规模组网)、组播更新变化路由、收敛快(触发更新)、以 COST 为度量、SPF 算法防环、30 分钟周期性更新(LSA)、应用广泛。
- 核心差异:OSPF 传递拓扑 + 路由信息,RIP 仅传递路由表。
2. OSPF 核心组件
(1)三张表
- 邻居表:记录邻居状态和关系。
- 拓扑表:即链路状态数据库(LSDB),存储全网拓扑信息。
- 路由表:由 SPF 算法计算生成的最优路由,可通过
dis ip routing-table pro ospf
查看。
(2)数据包(封装在 IP 中,协议号 89)
类型 |
作用 |
关键信息 |
Hello(类型 1) |
发现 / 建立 / 保活邻居 |
包含网络掩码、Hello 间隔(默认 10s)、Dead 间隔(默认 40s,为 Hello 的 4 倍)、路由器优先级(DR/BDR 选举)、DR/BDR 地址、邻居 Router ID 等;目标组播地址 224.0.0.5 |
DBD(类型 2) |
交换 LSDB 摘要 |
含 LSA 头部、DD 序列号(Master 控制)、I(初始化位)、M(更多报文位)、MS(主从位,Router ID 大的为主) |
LSR(类型 3) |
请求缺失 / 更新的 LSA |
通过 “LSA 三元组”(链路状态类型、ID、通告路由器)唯一标识请求的 LSA |
LSU(类型 4) |
发送完整 LSA 信息 |
可包含多个 LSA;MA 网络中,DROTHER 向 224.0.0.6(DR/BDR 监听)发送,DR 转发至 224.0.0.5(所有 OSPF 路由器监听) |
LSAck(类型 5) |
确认 LSU 接收 |
包含需确认的 LSA 头部 |
- 数据包头部:含版本(v2 为 2)、类型、报文长度、Router ID、区域 ID、校验和、认证信息等。
二、OSPF 工作机制
1. 邻居与邻接关系建立
- 邻居关系:通过 Hello 报文互认,达到 2-way 状态(稳定状态)。
- 邻接关系:邻居间 LSDB 同步后建立,需经历 Exstart(主从协商)、Exchange(LSDB 摘要交换)、Loading(LSA 请求与更新)、Full(同步完成,稳定状态)。
2. DR/BDR 选举
- 目的:在广播网络中减少邻接关系数量(避免
n(n-1)/2
的冗余关系)。
- 范围:每个网段独立选举。
- 规则:优先级(0-255,默认 1)高者优先;优先级相同则 Router ID 大的优先。
- 特性:无抢占性,需原 DR/BDR 失效或重置 OSPF 进程才会重新选举。
- 关系:DR 与 BDR、DR 与 DROTHER、BDR 与 DROTHER 为邻接(Full 状态);DROTHER 之间为邻居(2-way 状态)。
3. 状态机
- 邻居状态:Down(初始)→ Init(收到 Hello 但未互认)→ 2-way(互认,确认 DR/BDR)。
- 邻接状态:Exstart(主从协商)→ Exchange(LSDB 摘要交换)→ Loading(LSA 请求 / 更新)→ Full(LSDB 同步完成)。
- 关键条件:2-way 需掩码、区域 ID、Hello/Dead 时间等一致;Full 需 MTU 一致。
4. LSDB 更新机制
- 触发更新:网络拓扑变化时,通过 LSU 泛洪更新。
- 老化机制:LSA 老化时间最大 3600s(失效),1800s 周期重置;通过序列号(越大越新)和校验和(序列号相同时,和大的更新)判断 LSA 新旧。
三、LSA(链路状态通告)
1. LSA 头部(20 字节)
含链路状态类型、老化时间、可选项、链路状态 ID、通告路由器(Adv Router)、序列号、校验和、长度。
2. 主要 LSA 类型(6 种)
类型 |
名称 |
通告者 |
作用 |
传输范围 |
关键字段 |
1 |
Router LSA |
所有路由器 |
描述区域内直连链路(类型、开销等) |
本区域 |
LS ID:通告路由器的 Router ID;含链路类型(transnet/ P2P/stubnet/ Virtual) |
2 |
Network LSA |
DR |
描述 MA 网络的路由器及掩码 |
本区域 |
LS ID:DR 的 IP 地址;含网段掩码 |
3 |
Network Summary LSA |
ABR |
描述其他区域的网段路由 |
跨区域(需 ABR 转发) |
LS ID:其他区域的网段地址 |
4 |
ASBR Summary LSA |
ABR |
描述 ASBR 的位置 |
跨区域 |
LS ID:ASBR 的 Router ID |
5 |
AS External LSA |
ASBR |
描述引入的外部路由 |
所有区域(特殊区域除外) |
LS ID:外部路由的目的网络 |
7 |
NSSA External LSA |
NSSA 区域的 ASBR |
描述 NSSA 区域引入的外部路由 |
仅 NSSA 区域(经 ABR 转换为 5 类) |
LS ID:外部网段地址 |
四、OSPF 网络类型
类型 |
默认链路 |
报文发送方式 |
DR/BDR 选举 |
Hello 间隔 |
Dead 间隔 |
Broadcast |
以太网 |
组播 |
需要 |
10s |
40s |
P2P |
PPP |
组播 |
不需要 |
10s |
40s |
NBMA |
帧中继 |
单播(需手动指定邻居) |
需要 |
30s |
120s |
P2MP |
手动配置 |
模拟组播(需手动指定邻居) |
不需要 |
30s |
120s |
五、区域划分与路由器类型
1. 区域划分
- 骨干区域(Area 0):所有非骨干区域必须与之直接连接,防止环路。
- 非骨干区域:需通过 ABR 连接骨干区域。
- 特殊区域:优化路由表和 LSDB(如 Stub、NSSA 等)。
2. 路由器类型
- 区域内路由器(IR):所有接口在同一区域。
- 骨干路由器(BR):至少一个接口在骨干区域。
- 区域边界路由器(ABR):连接骨干与非骨干区域,生成 3/4 类 LSA。
- 自治系统边界路由器(ASBR):连接外部 AS,引入外部路由,生成 5/7 类 LSA。
六、开销(COST)计算
- 参考带宽:默认 100M,建议设为网络中最高链路带宽。
- 计算方式:链路带宽≥参考带宽时,COST=1;否则,COST = 参考带宽 / 链路带宽(Mb)。
- 示例:千兆以太网(1000M)、百兆以太网(100M)默认 COST 均为 1,十兆以太网为 10。
七、实验问题(MGRE 场景)
- 问题 1:Tunnel 接口为 P2P 类型时,无法建立邻接关系。
解决:改为 broadcast 或 P2MP 类型(ospf network-type broadcast
)。
- 问题 2:DR/BDR 选举混乱。
解决:将分支站点 DR 优先级设为 0,确保中心站点为唯一 DR。