OSPF(开放最短路径优先)
OSPF和RIP对比
| 对比项 | OSPF | RIP |
|---|---|---|
| 协议类型 | 链路状态协议 | 距离矢量协议 |
| 选路依据 | Cost,通常与带宽有关 | 跳数 |
| 最大路径范围 | 无 15 跳限制 | 最大 15 跳,16 跳表示不可达 |
| 收敛速度 | 快,拓扑变化可触发更新 | 较慢,默认约每 30 秒周期更新 |
| 网络规模 | 适合中大型网络 | 适合小型网络 |
| 更新内容 | 主要泛洪 LSA,维护拓扑信息 | 定期发送路由信息 |
| 环路处理 | SPF 算法,较少产生环路 | 依赖水平分割、路由中毒、抑制计时器等机制 |
| 分层能力 | 支持 Area 区域划分和路由汇总 | RIPv2 支持简单汇总,但无区域层次 |
| 资源消耗 | 较高,需要维护 LSDB、运行 SPF | 较低,配置和维护简单 |
| 支持 VLSM/CIDR | 支持 | RIPv1 不支持;RIPv2 支持 |
| 认证 | 支持 | RIPv2 支持,RIPv1 不支持 |
OSPF 的缺点
-
占用更多 CPU 和内存,尤其在 LSDB 大、拓扑频繁变化时。
-
初始 LSDB 同步、SPF 计算会带来一定开销。
-
多区域设计不合理时,可能增加运维难度;Area 0 连通性要求也会限制网络设计。
-
广播网络中 DR/BDR 选举与邻接问题是常见故障点。
RIP 的缺点
-
最多支持 15 跳,无法用于大型或层级较深的网络。
-
只按跳数选路,无法准确反映带宽、时延、链路质量,可能选到性能较差的路径。
-
收敛慢,故障后可能短暂形成路由环路或出现"计数到无穷"问题。
-
周期性发送路由更新,会持续占用带宽。
-
RIPv1 是有类路由协议,不支持 VLSM、CIDR,也不携带子网掩码。
-
不支持区域化,路由规模扩大后可扩展性较差。
一句话:OSPF 的主要代价是复杂和资源消耗;RIP 的主要问题是规模小、收敛慢、选路不够精确。
邻居表,LSDB,OSPF路由表
- 邻居表(Neighbor Table):记录已发现、已建立邻接关系的 OSPF 邻居。通过 Hello 报文维护。
- 链路状态数据库(LSDB):保存 本区域内所有路由器产生的 LSA, 反映区域拓扑。正常情况下,同一区域 LSDB 应一致。
- OSPF 路由表:路由器以 LSDB 为输入运行 SPF 后生成 ,保存最终用于转发的最优路由。
SPF 算法
每台 OSPF 路由器都根据 LSDB 构建拓扑树,以自身为根运行 Dijkstra 算法,逐步选择到各节点累计 Cost 最小的路径,最终将最优结果写入 OSPF 路由表。Cost 越小,路径越优。
Router ID 选取
Router ID 是 32 位、点分十进制格式的路由器唯一标识,不等同于接口 IP。
通常优先级为:
-
手工配置的 Router ID。
-
Loopback 接口中最大的 IP 地址。
-
物理接口中最大的 IP 地址。
Router ID 在 OSPF 进程启动时确定;若后续接口 IP 变化,通常需重启 OSPF 进程才会重新选取。
DR,BDR
**DR(Designated Router,指定路由器)和 BDR(Backup Designated Router,备份指定路由器)**用于 OSPF 的多路访问网络,核心目的是减少邻接关系数量和 LSA 泛洪量。
适用网络类型:
-
Broadcast(广播):如以太网,自动发现邻居,需选举 DR/BDR。
-
NBMA:如传统 Frame Relay,需选举 DR/BDR。
-
Point-to-Point、Point-to-Multipoint:不选举 DR/BDR。
没有 DR/BDR 时,若同一二层网络有 n 台路由器,需要建立 n(n-1)/2 个邻接关系;有 DR/BDR 后,DROther 路由器主要与 DR、BDR 建立完全邻接,显著减少同步和泛洪开销。
DROther ── Full ── DR
│ │
└──── Full ── BDR ─┘
DROther 与 DROther:通常保持 2-Way,不建立 Full 邻接
| 角色 | 主要职责 |
|---|---|
| DR | 维护多访问网络的 LSDB 同步;生成 Type 2 Network LSA;接收其他路由器的 LSA 后再泛洪给所有路由器。 |
| BDR | 与所有路由器保持 Full 邻接,持续同步 LSDB;平时不代替 DR 泛洪,DR 故障时立即接任。 |
| DROther | 普通路由器,向 224.0.0.6 发送 LSU 给 DR/BDR;从 DR 接收泛洪的更新。 |
报文与组播地址:
-
224.0.0.5:AllSPFRouters,所有 OSPF 路由器。DR 向该地址泛洪 LSA。 -
224.0.0.6:AllDRouters,DR 和 BDR。DROther 将需要泛洪的 LSU 发往此地址。
选举规则
-
接口 OSPF Priority 最大者当选 DR。
-
若 Priority 相同,Router ID 最大者当选。
-
Priority 为
0的接口不能成为 DR/BDR,但仍可成为 OSPF 邻居。 -
先选 BDR,再选 DR。
-
选举默认不抢占:已有 DR/BDR 不会因为后来出现了更高优先级或更大 Router ID 的设备而自动更换。
DR 故障时,BDR 立即升为 DR,再从其他符合条件的 DROther 中选举新的 BDR。因此 BDR 能降低 DR 故障时的收敛时间。
注意:DR/BDR 是每个多路访问网段、每个 OSPF 区域独立选举的,不是全网只有一台 DR 或 BDR。同一台路由器可以在一个网段是 DR,在另一个网段是 DROther。
常见排错点:
-
邻居停留在
2-Way:DROther 之间通常正常,不代表故障。 -
多台路由器认为自己是 DR:检查二层隔离、Hello 报文是否互通、Area ID 和网络类型是否一致。
-
修改 Priority 后角色没变化:默认不抢占,需要重启 OSPF 进程或清除邻居关系后重新选举。
-
DR/BDR 选举异常:检查接口 Priority、Router ID、OSPF 网络类型、Hello/Dead 时间和二层组播能力。
LSA 与 LSDB
LSA(Link-State Advertisement,链路状态通告)是描述网络拓扑的一条信息 ,例如路由器接口、链路、网络前缀和开销等。LSDB 是大量 LSA 组成的数据库。
常见 LSA 类型:
-
Type 1:Router LSA,描述路由器在本区域内的链路。
-
Type 2:Network LSA,由 DR 产生 ,描述多路访问网络上的所有路由器。
-
Type 3:Summary LSA,由 ABR 产生,用于区域间路由 ,将所连接区域的路由以子网形式传给相邻区域。
-
Type 4:ASBR Summary LSA,指向 ASBR。
-
Type 5:AS External LSA,由 ASBR 产生,描述外部路由,知道这个外部路由的存在。
分为2种
-
O E1:外部类型 1,总代价 = 到 ASBR 的内部 Cost + 外部 Cost。 -
O E2:外部类型 2,主要比较外部 Cost,默认常见。 思科外部开销默认20
-
-
Type 7:NSSA External LSA,用于 NSSA 区域 。(在NSSA中替代 5类 LSA,其实性质和5类 LSA是一样的)
OSPF 网络类型
-
Broadcast(广播):以太网常见类型,支持自动发现邻居并选举 DR/BDR。
-
NBMA:如传统 Frame Relay,不支持广播,通常需要手工指定邻居,也会选举 DR/BDR。
-
Point-to-Point(点对点):点到点链路,不选 DR/BDR。
-
Point-to-Multipoint:一个接口连接多个点到点邻居,不选 DR/BDR。
DR/BDR 的作用是减少多路访问网络中的邻接和 LSA 泛洪数量。**DR 优先级最高者当选;优先级相同时 Router ID 最大者当选。**Priority 为 0 的接口不能成为 DR/BDR。
OSPF 报文类型与封装
OSPF 使用 IP 协议直接承载,不使用 TCP 或 UDP。
-
IP 协议号:
89 -
组播地址:
-
224.0.0.5:AllSPFRouters,所有 OSPF 路由器 -
224.0.0.6:AllDRouters,DR 和 BDR
-
-
TTL:通常为
1,报文一般不会被路由转发到其他网
| 类型 | 报文 | 作用 |
|---|---|---|
| Type 1 | Hello | 发现、建立和维护邻居关系;在 Broadcast/NBMA 网络中参与 DR/BDR 选举。 |
| Type 2 | DD / DBD(Database Description) | 交换 LSDB 中 LSA 的摘要信息,用于比较双方数据库。 |
| Type 3 | LSR(Link-State Request) | 请求本地缺少或版本较旧的 LSA 详细内容。 |
| Type 4 | LSU(Link-State Update) | 携带一个或多个完整 LSA,用于同步或泛洪链路状态信息。 |
| Type 5 | LSAck(Link-State Acknowledgment) | 确认已收到 LSA,保证 LSA 可靠泛洪。 |
OSPF 工作过程
-
通过 Hello 报文发现邻居,并检查 Area ID、认证、Hello/Dead 时间、网络掩码等参数是否匹配。
-
在 Broadcast /NBMA 网络中选举 DR 和 BDR。
-
邻居建立邻接关系后交换 DD (Database Description)报文。DD 只携带 LSA 的摘要,而非完整 LSA。
-
若发现自己缺少或拥有旧版 LSA,则发送 LSR(Link-State Request)请求。
-
对端使用 LSU(Link-State Update)发送完整 LSA。
-
接收方通过 LSAck 确认。
-
LSDB 同步 完成后,路由器运行 SPF 算法,生成 OSPF 路由。
区域与骨干区域
Area 0 是 OSPF 骨干区域 ,负责连接各非 骨干区域。一般要求所有非骨干区域必须直接或逻辑上连接到 Area 0,跨区域流量原则上经过 Area 0。
-
Internal Router(区域内路由):所有接口都在同一 OSPF 区域。
-
ABR(区域边界路由) :连接 Area 0 与其他区域,负责区域间路由通告与路由汇总。
-
ASBR(自治系统区域路由) :将外部路由重分发进入 OSPF。
无法物理连接 Area 0 时,可使用虚链路临时实现逻辑连接,但设计上应尽量避免。
划分区域的好处:
-
缩小 LSDB 和 SPF 计算范围 ,降低 CPU、内存消耗。
-
限制 LSA 泛洪,减少拓扑变化影响范围。
-
支持路由汇总,缩小路由表,方便管理。
-
提升 大规模网络的稳定性和收敛效率。
OSPF 路由类型
-
O:区域内路由(Intra-Area)。 -
O IA:区域间路由(Inter-Area)。 -
O E1:外部类型 1,总代价 = 到 ASBR 的内部 Cost + 外部 Cost。 -
O E2:外部类型 2,主要比较外部 Cost,默认常见。 -
O N1 / O N2:NSSA 区域引入的外部路由。
优先级通常为:区域内路由优于区域间路由,区域间路由优于外部路由。
LSDB 更新与老化
正常情况下:
-
LSA 的最大老化时间(MaxAge)是 1 小时,即 3600 秒;达到后会被刷新或清除。
-
LSA 通常每 30 分钟,即 1800 秒刷新一次,即使拓扑未变化,序列号也会更新。
拓扑发生变化时:
-
OSPF 立即产生新的 LSA 并触发泛洪更新,不需要等待 30 分钟。
-
相邻路由器收到更新后同步 LSDB,重新运行 SPF,尽快更新路由表。

除hello报文,都要经过DR路由器,没有就找BDR
OSPF协议配置
Router ID
router id 1.1.1.1
ospf 1 router-id 1.1.1.1
单区域 OSPF
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 10.0.0.0 0.0.0.255
多区域 OSPF
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 10.0.0.0 0.0.0.255
area 0.0.0.1
network 20.0.0.0 0.0.0.255
1. 查看与排障命令
| 目标 | 常用命令 | 关注点 |
|---|---|---|
| 查看邻居 | display ospf peer brief |
Area、邻居 RID、状态是否为 Full |
| 查看 OSPF 接口 | display ospf interface |
网络类型、Cost、DR/BDR、定时器 |
| 查看 OSPF 路由 | display ospf routing |
路由类型、下一跳、通告者、Area |
| 查看全局路由表 | display ip routing-table |
O_INTRA、O_INTER、O_ASE1/2 等 |
| 查看 LSDB | display ospf lsdb |
LSA 类型、LS ID、AdvRouter、序列号 |
| 查看进程/统计/错误 | display ospf brief、display ospf statistics、display ospf error |
进程状态与异常计数 |
| 排查过程 | debugging ospf event、debugging ospf packet、debugging ospf lsa、debugging ospf spf |
实验环境短时使用,完成后关闭调试 |
邻居正常建立的典型状态变化是:Down -> Init -> 2-Way -> ExStart -> Exchange -> Loading -> Full。其中 ExStart/Exchange 常见于 MTU 或主从协商问题。
2. OSPF 优化参数
网络类型与 DR/BDR
interface GigabitEthernet 0/0/0
ospf network-type { broadcast | nbma | p2mp | p2p }
ospf dr-priority 100
-
Broadcast 网络会选举 DR/BDR。
-
P2P 网络不选举 DR/BDR,点到点链路通常应使用 P2P 类型。
-
**两端网络类型必须匹配。**P2P 与 Broadcast 混用会导致华为设备无法建立邻居或路由计算异常。
-
DR/BDR 选举由接口优先级和 Router ID 决定;优先级为 0 的接口不参与选举。DR/BDR 默认不抢占,修改优先级后通常需要重建邻居才会重新选举。
Cost 与参考带宽
interface GigabitEthernet 0/0/0
ospf cost 100
ospf 1
bandwidth-reference 10000
可以直接配置接口 Cost,也可通过参考带宽统一计算。默认参考带宽常为 100 Mbps, 百兆与千兆接口的 Cost 都可能是 1,无法体现带宽差异。全网应统一调整参考带宽,否则不同设备计算的路径可能不一致。(无法做到负载均衡)
Hello 与 Dead 定时器 (一般不会动)
interface GigabitEthernet 0/0/0
ospf timer hello 10
ospf timer dead 40
同一链路两端的 Hello/Dead 定时器必须兼容。缩短定时器可加快故障发现,但会增加控制报文和 CPU 负担。
缺省路由
ospf 1
default-route-advertise
default-route-advertise always
default-route-advertise 在本机已有默认路由时发布默认路由;always 表示即使本机没有默认路由也强制发布。可同时设置 Cost、外部类型或路由策略。
OSPF高级特性及常用技术
1. 虚连接
虚连接用于两种不规范拓扑 :Area 0 被分割,或非骨干区域不能直接连接到 Area 0。它在一个非骨干 Transit Area 中建立逻辑的 P2P 骨干连接。
ospf 1
area 0.0.0.1
vlink-peer 3.3.3.3
两端必须在同一个 Transit Area 下相互指定对方 Router ID。虚连接是对拓扑设计的补救措施,会增加复杂度;优先通过物理/逻辑设计 保持连续骨干区域。使用 display ospf vlink 验证状态是否为 Full。
2. LSA 与路由类型
| LSA | 名称 | 产生者 | 传播范围 | 作用 |
|---|---|---|---|---|
| Type 1 | Router LSA | 区域内每台路由器 | 本区域 | 描述路由器直连链路、链路类型和 Cost |
| Type 2 | Network LSA | 广播/NBMA 网段的 DR | 本区域 | 描述该多路访问网络及相连路由器 |
| Type 3 | Summary LSA | ABR | 区域间 | 将一个区域的网段通告到其他区域 |
| Type 4 | ASBR Summary LSA | ABR | 区域间 | 描述到 ASBR Router ID 的可达性 |
| Type 5 | AS External LSA | ASBR | 除 Stub/NSSA 外的 OSPF 域 | 描述引入的外部路由 |
| Type 7 | NSSA External LSA | NSSA 内 ASBR | NSSA 内 | NSSA 内的外部路由,离开 NSSA 时可转换为 Type 5 |
LSA 头中的关键字段:LS Type 表示类型,Link State ID 的含义随 LSA 类型变化,Advertising Router 是始发路由器的 Router ID。
3. OSPF 路由优选
先比较路由类别,再比较 Cost。常见优选顺序为:
区域内路由(Intra Area)
区域间路由(Inter Area)
第一类外部路由(Type1 External) 1类NSSA路由: O N1; LSA 7类型1;
第二类外部路由(Type2 External) 2类NSSA路由: O N2; LSA 7类型2。
直连>O>O IA>ON1>OE1>ON2>OE2
-
区域内路由对应 Type 1/2 LSA。
-
区域间路由对应 Type 3 LSA。
-
E1/N1 的度量会叠加到达 ASBR 的内部 Cost;E2/N2 主要比较外部度量。
-
同类路由优先 Cost 更小的路径,可形成等价负载分担。
4. 特殊区域
| 区域 | 主要特征 | 限制/默认路由 | 常用配置 |
|---|---|---|---|
| Stub | 阻止 Type 4/5;保留 Type 1/2/3 | ABR 下发 Type 3 默认路由;区域内不能有 ASBR | 所有区域设备配置 stub |
| Totally Stub | 比 Stub 更彻底地压缩路由表 | 仅保留本区域 Type 1/2 和一条默认路由 | ABR stub no-summary,内部路由器 stub |
| NSSA | 阻止 Type 5,但允许本区域引入外部路由 | ASBR 产生 Type 7,ABR 可转换为 Type 5 | 区域设备 nssa,ABR 可配置默认路由通告 |
特殊区域通常位于网络边缘,并应直接或间接通过 ABR 连接骨干区域。Stub 与 NSSA 属性必须在该区域相关设备上保持一致,否则邻居无法建立

5. 路由汇总、过滤与路由引入
路由汇总
-
ABR 对区域内路由进行汇总:在对应 Area 视图配置
abr-summary。 -
ASBR 对引入的外部路由进行汇总:在 OSPF 视图配置
asbr-summary。 -
not-advertise可只抑制对外发布聚合前缀;汇总能减小 LSDB、路由表和 LSA 洪泛量,但会牺牲明细可见性。
ospf 1
area 0.0.0.1
abr-summary 192.168.0.0 255.255.252.0
ospf 1
asbr-summary 192.168.0.0 255.255.252.0
过滤计算结果与过滤 Type 3 LSA
两者位置和效果不同:
-
OSPF 视图的
filter-policy ... import:过滤本机计算后准备加入路由表的路由,不必删除 LSDB 中的 LSA。 -
Area 视图的
filter ... export/import:用于控制 Type 3 LSA 的区域间传播。
Type 3 LSA 过滤命令需要结合"当前 Area"判断方向。对本实验而言,2.2.2.2/32 是 AR4 从其他区域引入到 Area 2 的区域间路由,故应在 AR4 的 Area 2 使用 import,阻止 AR5 学习该三类 LSA:
acl number 2000
rule 5 deny source 2.2.2.2 0
rule 10 permit source any
ospf 1
area 0.0.0.2
filter 2000 import
其中反掩码 0 即 0.0.0.0,精确匹配 2.2.2.2/32。若设备使用前缀列表,可在同一 Area 2 使用对应的 filter-policy ip-prefix ... import。过滤完成后重启/刷新 OSPF 进程,再先确认 AR5 不存在该 OSPF 路由,最后确认 AR6 的 RIP 表不存在该路由。
双向路由引入
双向引入可实现协议间可达,但多边界设备容易发生路由回灌和环路,也可能出现次优路径。应规划引入点、初始 Cost 和路由 Tag;引入时打 Tag,在反向引入时通过策略拒绝带有该 Tag 的路由。
6. 安全与稳定性
认证
OSPF 可使用简单认证或 MD5/HMAC-MD5 认证:
interface GigabitEthernet 0/0/0
ospf authentication-mode simple plain 123
ospf authentication-mode md5 1 plain 123
同一链路两端的认证模式、密钥和密钥 ID 必须一致。生产环境避免明文口令,优先采用更强的认证方式。
静默接口
ospf 1
silent-interface GigabitEthernet 0/0/0
静默接口不发送 OSPF 报文,适用于连接终端的网段,避免无关设备获得路由信息;接口网段仍可由 OSPF 发布。不要把需要建立 OSPF 邻居的互联接口配置为静默接口。
7. 邻居无法建立的高频原因
按以下顺序检查通常最高效:
-
链路、IP 地址和掩码是否正确,接口是否 Up。
-
Router ID、Area ID 是否一致且未重复。
-
两端 OSPF 网络类型是否一致,NBMA 是否手工指定邻居。
-
Hello/Dead 定时器、认证方式和口令是否一致。
-
Stub/NSSA 区域属性及相关选项是否一致。
-
广播网络中 DR/BDR 选举是否正常;优先级全为 0 会停留在 2-Way。
-
ExStart/Exchange 状态重点检查 MTU ;同时检查 ACL 是否阻断 OSPF 报文。
8. OSPF 的可靠性机制
-
拓扑信息可靠 :每台路由器泛洪自身的 LSA ;同一区域路由器最终拥有一致的 LSDB,从而得到完整拓扑。
-
传递可靠 :先通过 Hello 建立邻居 ,再在邻居间同步 LSDB。
-
确认与重传:LSU 携带 LSA,接收端以 LSAck 确认;未收到确认时,发送方会超时重传。
-
计算可靠 :以一致的 LSDB 为基础运行 SPF 算法,计算最短路径树和最优路由。
9. OSPF 为什么通常不会产生路由环路
-
每个区域内的路由器都根据完整 LSDB 建立相同拓扑视图。
-
SPF 算法计算得到以本路由器为根的最短路径树,树中的路径不会重复经过节点,因此正常稳定状态下不会形成环路。
-
多区域网络以 Area 0 为骨干,非骨干区域原则上必须与 Area 0 连通,区域间通信经由骨干区域,形成层次化结构。
注意:OSPF 并非在任何收敛瞬间都绝对不会出现短暂转发环路。链路故障传播和各设备 SPF 重算存在时间差时,仍可能出现短暂微环路;稳定收敛后则不会。
10. 划分 OSPF 区域的好处
-
缩小每台路由器维护的 LSDB,减少内存占用。
-
限制 SPF 计算范围,降低 CPU 负担。
-
将 LSA 泛洪和拓扑变化限制在本区域内,提高稳定性。
-
ABR 可在区域边界做路由汇总,缩小路由表,降低转发与管理负担。
-
可使用 Stub、Totally Stub、NSSA、Totally NSSA 等区域类型,减少不必要的外部路由。
-
便于扩展,适合构建大规模网络。
11. 复习速记
RID 唯一,Area 0 连续。
建邻先看 Area、类型、认证、定时器、MTU。
看状态用 peer,看接口用 interface,看拓扑用 lsdb,看结果用 routing-table。
Type 1/2 区域内,Type 3 区域间,Type 4 找 ASBR,Type 5 外部,Type 7 NSSA 外部。
选路:直连 > O > O IA > N1 > E1 > N2 > E2。
汇总:ABR 用 abr-summary,ASBR 用 asbr-summary。
双向引入防回灌:规划边界、Cost 与 Tag。

