OSPF(Open Shortest Path First,开放式最短路径优先)是一种基于链路状态的内部网关协议(IGP),广泛应用于中大型网络中。它通过维护网络拓扑信息,使用 SPF(最短路径优先)算法计算最优路由,具有收敛快、无环路、支持大型网络等特点。以下从核心原理 和实验设计两部分详细说明。
一、OSPF 核心原理
1. 基本定位与特点
- 链路状态路由协议:与 RIP 等距离矢量协议不同,OSPF 路由器不传递 "路由条目",而是交换 "链路状态信息"(如接口带宽、连接关系、开销等),并基于这些信息独立计算路由。
- 适用场景:大型企业网、运营商骨干网等,最大可支持数千台路由器。
2. 区域划分(Area)
OSPF 通过 "区域" 划分减小路由计算复杂度,核心设计是 "骨干区域 + 非骨干区域":
- 骨干区域(Area 0):所有非骨干区域必须直接或间接连接到 Area 0,负责区域间路由的传递,确保全网路由互通。
- 非骨干区域(Area 1、2...):用于缩小单区域内的链路状态数据库(LSDB)规模,降低 SPF 计算压力。
- 特殊区域:为进一步优化,可配置 Stub(末梢区域)、Totally Stub(完全末梢区域)、NSSA(非完全末梢区域)等,限制 LSA(链路状态通告)的传播。
解释说明:
ospf进行选举,选为DR的路由器(具体怎么选举可以不必深入探究)就是骨干区域(可以有很多个路由器), 但是一个ospf系统只有一个骨干区域,非骨干区域必须要有至少一个路由器连接骨干区域,另外那个连接着骨干和非骨干的路由器配置的时候需要宣告两个区域的网段。
OSPF实验
二,实验目的:
实现全网互通,相比于RIP具有收敛快、无环路、支持大型网络等特点
三,实验拓扑图:

四,实验需求:
1.拓扑图中有三个区域,区域0为骨干区域,其他为非骨干区域。lo表示路由器的回环地址(一个虚拟的接口 相比于接口更稳定)。
2.配置每个路由器的IP地址(具体怎么划分更便捷看其他文章)
3.了解OSPF的配置以及区分network
五,实验步骤
步骤一:配置路由器的每个IP地址以及回环地址
R4:其余四个路由器也是一样的
python
[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 255.255.255.255
[R4-LoopBack0]quit
步骤二:配置OSPF
R4:
python
[R4]ospf 1 router-id 4.4.4.4
##启用OSPF进程,指定路由器ID
[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]%Jul 10 10:17:34:458 2025 R4 OSPF/5/OSPF_NBR_CHG: OSPF 1 Neighbor 10.1.14.1(GigabitEthernet0/0) changed from LOADING to FULL.
[R4-ospf-1-area-0.0.0.1]quit
R1:值得注意的是R1和R3跨两个区域所以要配置两个区域(区域0和区域1)每个区域不同的网段
python
[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]quit
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255
R2:每个回环地址也需要宣告
python
[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
R3:
python
[R3]osPF 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[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]network 10.1.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]QUIT
[R3-ospf-1]area 2
[R3-ospf-1-area-0.0.0.2]network 10.1.35.0 0.0.0.255
R5:
python
[R5]ospf 1 router-id 5.5.5.5
[R5-ospf-1]area 2
[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]network 10.1.35.0 0.0.0.255
步骤三:验证
通过R4去PingR5的IP地址
python
[R4]ping 10.1.35.5
Ping 10.1.35.5 (10.1.35.5): 56 data bytes, press CTRL+C to break
56 bytes from 10.1.35.5: icmp_seq=0 ttl=252 time=2.000 ms
56 bytes from 10.1.35.5: icmp_seq=1 ttl=252 time=2.000 ms
56 bytes from 10.1.35.5: icmp_seq=2 ttl=252 time=2.000 ms
56 bytes from 10.1.35.5: icmp_seq=3 ttl=252 time=2.000 ms
56 bytes from 10.1.35.5: icmp_seq=4 ttl=252 time=2.000 ms
--- Ping statistics for 10.1.35.5 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 2.000/2.000/2.000/0.000 ms