OSPF协议:核心概念与配置要点解析
OSPF协议:核心概念与配置要点解析
OSPF(Open Shortest Path First)是一种非常重要的链路状态路由协议
链路状态协议
- 每个路由器不广播整个路由表。
- 每个路由表负责描述自己直连链路的状态(如:连接到哪些网络、邻居路由器是谁、链路开销等),并将这些信息封装在LSA(链路状态通告)中。
- 这些LSA会在区域内泛洪,使得区域内的每个路由最终都拥有一个完全相同的链路状态数据库。
- 路由器基于这个数据库,使用Dijkstra(一种经典的最短路径算法)独立计算出一个以自己为根的、无环的最短路径树,从而得到到达所有已知目标网络的最优路径(路由表)。
快速收敛:
- 链路状态发生变化会触发快速更新(仅发送变化的LSA),迅速重新计算路由,收敛速度快。
- 30分钟周期性更新,确保数据库中包含最新的链路状态记录,证lsdb(链路状态数据库)的同步,提高可靠性。
分层设计(区域):
- 核心优势!将大型网络划分为更小的管理单元——区域。
- 骨干区域:必须是 Area 0。所有其他非骨干区域必须直接连接到 Area 0。区域间路由信息必须通过骨干区域传递。
- 减少 LSA 泛洪范围:大多数 LSA 只在区域内泛洪,大大减少了路由器的 LSDB 大小和 SPF 计算复杂度。
- 提高稳定性:一个区域内的拓扑变化不会影响其他区域内的路由器进行 SPF 计算(区域边界路由器会进行汇总和过滤)。
- 优化资源使用:降低路由器 CPU 和内存消耗。
路由器类型:
- 内部路由器:所有接口都在同一个区域内。
- 区域边界路由器:连接多个区域(其中一个是 Area 0),负责汇总区域内的路由信息(3 类 LSA)并注入到骨干区域,反之亦然。
- 骨干路由器:至少有一个接口在 Area 0。
- 自治系统边界路由器:将 OSPF 域外部的路由(如静态路由、RIP、EIGRP、BGP 路由)重分布到 OSPF 域中(5 类/7 类 LSA)。
通信类型:
- 区域内通信——在同一个区域内的路由器之间的通信。
- 区域间通信——不同区域的路由器断之间的通信。
- 区域外部通信——OSPF域内路由器之间域另一个自治系统内的各区域及路由器进行任务分工。
度量值:
- OSPF 使用 开销 作为度量值。
- 开销主要基于接口的带宽计算(参考带宽 / 接口带宽,参考带宽默认 100 Mbps)。
- 开销值越低,路径越优。
- 路径总开销是到达目标网络路径上所有出站接口开销的总和。
DR/BDR选举的详细流程
-
邻居发现(Hello 协议)
- 路由器通过发送 Hello 包发现同一网段上的 OSPF 邻居。
- Hello 包中包含字段:
Router ID
、Neighbor List
、Priority
、DR
、BDR
-
参与选举的条件
- 只有 OSPF 邻居状态进入 2-Way 或更高 的路由器才参与选举。
- 每个路由器的 OSPF 接口优先级(默认=1,范围 0-255):
- 优先级=0 → 不参与选举(永远为 DROther)
- 优先级>0 → 参与选举
-
选举规则(严格优先级顺序)
- 最高接口优先级
- 比较所有邻居的
Priority
值(数值越高越优先)。
- 比较所有邻居的
- 最高 Router ID(若优先级相同)
- 手动配置的 Router ID > 最大 Loopback IP > 最大活动物理接口 IP
- 最高接口优先级
-
选举过程(非抢占性)
- 始化选举(网络首次启动时):
- 路由器在 Hello 包中宣告自己为
DR=0.0.0.0
,BDR=0.0.0.0
。 - 等待 Wait Timer(默认=40秒),收集所有邻居的 Hello 包。
- 根据收集到的邻居优先级和 RID,选举出:
- **BDR先选举:**从所有宣告自己为 BDR 或优先级>0的路由器中选最优者。
- **DR再选举:**从所有宣告自己为 DR 或优先级>0的路由器中选最优者(通常 BDR 升级为 DR)。
- 路由器在 Hello 包中宣告自己为
- 最终结果:
- 最优者 → DR
- 次优者 → BDR
- 其余 → DROther
- 关键特性:非抢占性
- 一旦选举完成,新加入的高优先级路由器不会抢占现有 DR/BDR。
- 除非 DR/BDR 失效(Dead Timer 超时),否则角色不变。
- 始化选举(网络首次启动时):
实验:
一、实验拓扑
二、实验需求
- 按照图示配置IP地址
- 按照图示分区配置OSPF,实现全网互通
- 路由器使用环回口作为 Router-id,ABR 的环回口宣告进骨干区域
- 测试,查看路由表和关系表
三、实验步骤
-
按照图示配置IP地址
[R1]int g0/0 [R1-GigabitEthernet0/0]ip add 10.1.12.1 24 [R1-GigabitEthernet0/0]int g0/1 [R1-GigabitEthernet0/1]ip add 10.1.14.1 24 [R1-GigabitEthernet0/1]int lo0 [R1-LoopBack0]ip add 1.1.1.1 32 [R1-LoopBack0]qu
[R2]int g0/0 [R2-GigabitEthernet0/0]ip add 10.1.12.2 24 [R2-GigabitEthernet0/0]int g0/1 [R2-GigabitEthernet0/1]ip add 10.1.23.2 24 [R2-GigabitEthernet0/1]int lo0 [R2-LoopBack0]ip add 2.2.2.2 32 [R2-LoopBack0]qu
[R3]int g0/0 [R3-GigabitEthernet0/0]ip add 10.1.23.3 24 [R3-GigabitEthernet0/0]int g0/1 [R3-GigabitEthernet0/1]ip add 10.1.35.3 24 [R3-GigabitEthernet0/1]int lo0 [R3-LoopBack0]ip add 3.3.3.3 32 [R3-LoopBack0]qu
[R4]int g0/0 [R4-GigabitEthernet0/0]ip add 10.1.14.4 24 [R4-GigabitEthernet0/0]int lo0 [R4-LoopBack0]ip add 4.4.4.4 32 [R4-LoopBack0]qu
[R5]int g0/0 [R5-GigabitEthernet0/0]ip add 10.1.35.5 24 [R5-GigabitEthernet0/0]int lo0 [R5-LoopBack0]ip add 5.5.5.5 32 [R5-LoopBack0]qu
-
按照图示分区配置OSPF,实现全网互通
#进入ospf 1,配置router-id #进入area 0 #宣告网段10.1.12.0、1.1.1.1 #进入area 1 #宣告网段10.1.14.0[R1]ospf 1 router-id 1.1.1.1 [R1-ospf-1]area 0 [R1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255 [R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 [R1-ospf-1-area-0.0.0.0]dis th #area 0.0.0.0network 1.1.1.1 0.0.0.0network 10.1.12.0 0.0.0.255 # return [R1-ospf-1-area-0.0.0.0]area 1 [R1-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255 [R1-ospf-1-area-0.0.0.1]dis th #area 0.0.0.1network 10.1.14.0 0.0.0.255 # return [R1-ospf-1-area-0.0.0.1]qu [R1-ospf-1]qu [R1]
#进入ospf 1,配置router-id #进入area 0 #宣告网段10.1.12.0、10.1.23.0、2.2.2.2[R2]ospf 1 [R2]ospf 1 router-id 2.2.2.2 [R2-ospf-1]area 0 [R2-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255 [R2-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255 [R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0 [R2-ospf-1-area-0.0.0.0]dis th #area 0.0.0.0network 2.2.2.2 0.0.0.0network 10.1.12.0 0.0.0.255network 10.1.23.0 0.0.0.255 # return [R2-ospf-1-area-0.0.0.0]qu [R2-ospf-1]qu
#进入ospf 1,配置router-id #进入area 0 #宣告网段10.1.23.0、3.3.3.3 #进入area 2 #宣告网段10.1.35.0[R3]ospf 1 router-id 3.3.3.3 [R3-ospf-1]area 0 [R3-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255 [R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0 [R3-ospf-1-area-0.0.0.0]dis th #area 0.0.0.0network 3.3.3.3 0.0.0.0network 10.1.23.0 0.0.0.255 # return [R3-ospf-1-area-0.0.0.1]area 2 [R3-ospf-1-area-0.0.0.2]network 10.1.35.0 0.0.0.255 [R3-ospf-1-area-0.0.0.2]dis th #area 0.0.0.2network 10.1.35.0 0.0.0.255 # return [R3-ospf-1-area-0.0.0.2]qu [R3-ospf-1]qu
#进入ospf 1,配置router-id #进入area 1 #宣告网段10.1.14.0、4.4.4.4[R4]ospf 1 router-id 4.4.4.4 [R4-ospf-1]area 1 [R4-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255 [R4-ospf-1-area-0.0.0.1]network 4.4.4.4 0.0.0.0 [R4-ospf-1-area-0.0.0.1]dis th #area 0.0.0.1network 4.4.4.4 0.0.0.0network 10.1.14.0 0.0.0.255 # return [R4-ospf-1-area-0.0.0.1]qu [R4-ospf-1]qu
#进入ospf 1,配置router-id #进入area 2 #宣告网段10.1.35.0、5.5.5.5[R5]ospf 1 router-id 5.5.5.5 [R5-ospf-1]area 2 [R5-ospf-1-area-0.0.0.2]network 10.1.35.0 0.0.0.255 [R5-ospf-1-area-0.0.0.2]network 5.5.5.5 0.0.0.0 [R5-ospf-1-area-0.0.0.2]dis th #area 0.0.0.2network 5.5.5.5 0.0.0.0network 10.1.35.0 0.0.0.255 # return [R5-ospf-1-area-0.0.0.2]qu [R5-ospf-1]qu
-
查看邻居关系表
[R1]display ospf peerOSPF Process 1 with Router ID 1.1.1.1Neighbor Brief InformationArea: 0.0.0.0 Router ID Address Pri Dead-Time State Interface2.2.2.2 10.1.12.2 1 31 Full/BDR GE0/0Area: 0.0.0.1 Router ID Address Pri Dead-Time State Interface4.4.4.4 10.1.14.4 1 31 Full/BDR GE0/1
[R2]display ospf peerOSPF Process 1 with Router ID 2.2.2.2Neighbor Brief InformationArea: 0.0.0.0 Router ID Address Pri Dead-Time State Interface1.1.1.1 10.1.12.1 1 30 Full/DR GE0/03.3.3.3 10.1.23.3 1 39 Full/BDR GE0/1
[R3]display ospf peerOSPF Process 1 with Router ID 3.3.3.3Neighbor Brief InformationArea: 0.0.0.0 Router ID Address Pri Dead-Time State Interface2.2.2.2 10.1.23.2 1 36 Full/DR GE0/0Area: 0.0.0.2 Router ID Address Pri Dead-Time State Interface5.5.5.5 10.1.35.5 1 40 Full/BDR GE0/1
[R4]display ospf peerOSPF Process 1 with Router ID 4.4.4.4Neighbor Brief InformationArea: 0.0.0.1 Router ID Address Pri Dead-Time State Interface1.1.1.1 10.1.14.1 1 37 Full/DR GE0/0
[R5]display ospf peerOSPF Process 1 with Router ID 5.5.5.5Neighbor Brief InformationArea: 0.0.0.2 Router ID Address Pri Dead-Time State Interface3.3.3.3 10.1.35.3 1 35 Full/DR GE0/0
-
查看路由表
[R1]dis ip routing-table Destinations : 20 Routes : 20Destination/Mask Proto Pre Cost NextHop Interface 0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0 1.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0 2.2.2.2/32 O_INTRA 10 1 10.1.12.2 GE0/0 3.3.3.3/32 O_INTRA 10 2 10.1.12.2 GE0/0 4.4.4.4/32 O_INTRA 10 1 10.1.14.4 GE0/1 5.5.5.5/32 O_INTER 10 3 10.1.12.2 GE0/0 10.1.12.0/24 Direct 0 0 10.1.12.1 GE0/0 10.1.12.1/32 Direct 0 0 127.0.0.1 InLoop0 10.1.12.255/32 Direct 0 0 10.1.12.1 GE0/0 10.1.14.0/24 Direct 0 0 10.1.14.1 GE0/1 10.1.14.1/32 Direct 0 0 127.0.0.1 InLoop0 10.1.14.255/32 Direct 0 0 10.1.14.1 GE0/1 10.1.23.0/24 O_INTRA 10 2 10.1.12.2 GE0/0 10.1.35.0/24 O_INTER 10 3 10.1.12.2 GE0/0 127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0 127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0 127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0 224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0 224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0 255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
[R2]dis ip routing-table Destinations : 20 Routes : 20Destination/Mask Proto Pre Cost NextHop Interface 0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0 1.1.1.1/32 O_INTRA 10 1 10.1.12.1 GE0/0 2.2.2.2/32 Direct 0 0 127.0.0.1 InLoop0 3.3.3.3/32 O_INTRA 10 1 10.1.23.3 GE0/1 4.4.4.4/32 O_INTER 10 2 10.1.12.1 GE0/0 5.5.5.5/32 O_INTER 10 2 10.1.23.3 GE0/1 10.1.12.0/24 Direct 0 0 10.1.12.2 GE0/0 10.1.12.2/32 Direct 0 0 127.0.0.1 InLoop0 10.1.12.255/32 Direct 0 0 10.1.12.2 GE0/0 10.1.14.0/24 O_INTER 10 2 10.1.12.1 GE0/0 10.1.23.0/24 Direct 0 0 10.1.23.2 GE0/1 10.1.23.2/32 Direct 0 0 127.0.0.1 InLoop0 10.1.23.255/32 Direct 0 0 10.1.23.2 GE0/1 10.1.35.0/24 O_INTER 10 2 10.1.23.3 GE0/1 127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0 127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0 127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0 224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0 224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0 255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
[R3]dis ip routing-table Destinations : 20 Routes : 20Destination/Mask Proto Pre Cost NextHop Interface 0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0 1.1.1.1/32 O_INTRA 10 2 10.1.23.2 GE0/0 2.2.2.2/32 O_INTRA 10 1 10.1.23.2 GE0/0 3.3.3.3/32 Direct 0 0 127.0.0.1 InLoop0 4.4.4.4/32 O_INTER 10 3 10.1.23.2 GE0/0 5.5.5.5/32 O_INTRA 10 1 10.1.35.5 GE0/1 10.1.12.0/24 O_INTRA 10 2 10.1.23.2 GE0/0 10.1.14.0/24 O_INTER 10 3 10.1.23.2 GE0/0 10.1.23.0/24 Direct 0 0 10.1.23.3 GE0/0 10.1.23.3/32 Direct 0 0 127.0.0.1 InLoop0 10.1.23.255/32 Direct 0 0 10.1.23.3 GE0/0 10.1.35.0/24 Direct 0 0 10.1.35.3 GE0/1 10.1.35.3/32 Direct 0 0 127.0.0.1 InLoop0 10.1.35.255/32 Direct 0 0 10.1.35.3 GE0/1 127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0 127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0 127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0 224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0 224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0 255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
[R4]dis ip routing-table Destinations : 18 Routes : 18Destination/Mask Proto Pre Cost NextHop Interface 0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0 1.1.1.1/32 O_INTER 10 1 10.1.14.1 GE0/0 2.2.2.2/32 O_INTER 10 2 10.1.14.1 GE0/0 3.3.3.3/32 O_INTER 10 3 10.1.14.1 GE0/0 4.4.4.4/32 Direct 0 0 127.0.0.1 InLoop0 5.5.5.5/32 O_INTER 10 4 10.1.14.1 GE0/0 10.1.12.0/24 O_INTER 10 2 10.1.14.1 GE0/0 10.1.14.0/24 Direct 0 0 10.1.14.4 GE0/0 10.1.14.4/32 Direct 0 0 127.0.0.1 InLoop0 10.1.14.255/32 Direct 0 0 10.1.14.4 GE0/0 10.1.23.0/24 O_INTER 10 3 10.1.14.1 GE0/0 10.1.35.0/24 O_INTER 10 4 10.1.14.1 GE0/0 127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0 127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0 127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0 224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0 224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0 255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
[R5]dis ip routing-table Destinations : 18 Routes : 18Destination/Mask Proto Pre Cost NextHop Interface 0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0 1.1.1.1/32 O_INTER 10 3 10.1.35.3 GE0/0 2.2.2.2/32 O_INTER 10 2 10.1.35.3 GE0/0 3.3.3.3/32 O_INTER 10 1 10.1.35.3 GE0/0 4.4.4.4/32 O_INTER 10 4 10.1.35.3 GE0/0 5.5.5.5/32 Direct 0 0 127.0.0.1 InLoop0 10.1.12.0/24 O_INTER 10 3 10.1.35.3 GE0/0 10.1.14.0/24 O_INTER 10 4 10.1.35.3 GE0/0 10.1.23.0/24 O_INTER 10 2 10.1.35.3 GE0/0 10.1.35.0/24 Direct 0 0 10.1.35.5 GE0/0 10.1.35.5/32 Direct 0 0 127.0.0.1 InLoop0 10.1.35.255/32 Direct 0 0 10.1.35.5 GE0/0 127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0 127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0 127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0 224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0 224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0 255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
-
在PC_4上 ping PC_5
[R4]ping 5.5.5.5 Ping 5.5.5.5 (5.5.5.5): 56 data bytes, press CTRL+C to break 56 bytes from 5.5.5.5: icmp_seq=0 ttl=252 time=2.119 ms 56 bytes from 5.5.5.5: icmp_seq=1 ttl=252 time=2.179 ms 56 bytes from 5.5.5.5: icmp_seq=2 ttl=252 time=1.936 ms 56 bytes from 5.5.5.5: icmp_seq=3 ttl=252 time=1.791 ms 56 bytes from 5.5.5.5: icmp_seq=4 ttl=252 time=2.031 ms--- Ping statistics for 5.5.5.5 --- 5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss round-trip min/avg/max/std-dev = 1.791/2.011/2.179/0.137 ms [R4]%Jul 9 20:22:33:614 2025 R4 PING/6/PING_STATISTICS: Ping statistics for 5.5.5.5: 5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss, round-trip min/avg/max/std-dev = 1.791/2.011/2.179/0.137 ms.