OSPF协议

一、OSPF 协议概述

OSPF(Open Shortest Path First,开放式最短路径优先协议)是一种链路状态路由协议,隶属于内部网关协议(IGP,Interior Gateway Protocol)范畴,核心功能是实现自治系统(AS,Autonomous System)内部路由器之间的路由信息交换,为数据传输提供最优路径指引。

分层网络架构:通过 "区域(Area)" 和 "特殊角色路由器" 划分网络层级,有效解决单区域网络中路由信息泛滥、设备资源占用过高的瓶颈问题,提升网络扩展性。

最优路径计算:基于 "最短路径优先"(SPF,Shortest Path First)算法(又称 Dijkstra 算法)计算路由,能精准选择跳数、带宽等综合成本最低的路径。

优势特性:具备收敛速度快(网络拓扑变化后快速更新路由)、路由选择精确(考虑多维度链路成本)、支持大型网络(分层架构适配复杂网络环境)等优点,是企业级核心网络、运营商骨干网中应用最广泛的路由协议之一。

二、OSPF 工作过程

OSPF 的路由计算流程遵循 "从建立邻居到生成路由表" 的逻辑,具体分为 4 个关键步骤

|-----------------|-----------------------------------------------------------------------------------------------|---------------------------------------|
| 步骤 | 核心操作 | 说明 |
| 建立邻接关系 | 路由器之间通过 Hello 报文发现邻居,完成邻居身份验证、参数协商(如区域 ID、Hello 间隔等),最终建立稳定的邻接关系(Adjacency) | 邻接关系是 OSPF 信息交换的基础,仅邻接路由器之间会同步链路状态信息 |
| 构建链路状态数据库(LSDB) | 邻接路由器通过链路状态通告(LSA,Link State Advertisement)交换各自的链路状态信息(如接口 IP、链路成本、邻居信息等),并将这些信息存储到本地的 LSDB 中 | 整个区域内所有路由器的 LSDB 内容完全一致,确保路由计算的基础数据统一 |
| 生成最短路径树(SPT) | 路由器基于本地 LSDB,运行 Dijkstra 算法,以自身为根节点,计算到网络中所有其他目标网络的最短路径,形成最短路径树 | 最短路径树直观反映了 "自身到各目标网络" 的最优路径关系 |
| 生成路由表 | 从最短路径树中提取关键信息(目标网络地址、下一跳路由器、出接口、路径成本等),整理后生成本地的路由表,用于指导数据转发 | 路由表是路由器实际转发数据的 "导航表",后续会随网络拓扑变化动态更新 |

三、OSPF 关键配置要素

1.区域 ID(Area ID)

作用:唯一标识 OSPF 区域,用于区分不同区域的路由器,确保区域内路由信息正常交互、区域间路由信息通过骨干区域传递。

表示形式:

十进制数字:如 Area 0、Area 1、Area 100 等,是最常用的表示方式。

IP 地址格式:如 Area 0.0.0.0(等同于 Area 0)、Area 1.0.0.1,本质与十进制数字一一对应,仅格式不同。

特殊说明:区域内的路由器需配置相同的区域 ID,才能加入该区域并参与路由信息交换。

2.骨干区域(Area 0)

核心作用:作为 OSPF 分层网络的 "中枢",负责转发不同非骨干区域之间的路由信息,确保跨区域的通信正常实现。

强制规则:所有非骨干区域(如 Area 1、Area 2)必须直接与骨干区域 Area 0 相连;若某非骨干区域无法直接连接 Area 0,需通过 "虚链路(Virtual Link)" 间接关联,否则无法实现跨区域路由。

3.OSPF 支持的网络类型

OSPF 会根据接口连接的网络拓扑,自动适配不同的网络类型,不同网络类型的邻居发现方式、Hello 报文间隔、DR/BDR 选举规则不同,具体分类如下:

|--------------------------------------------|-------------------------------------------------------------------|----------------------------------|
| 网络类型 | 特点 | 典型应用场景 |
| 点到点网络(Point-to-Point) | 仅连接两个路由器,无 DR/BDR 选举;Hello 报文间隔 10 秒 | PPP 链路、HDLC 链路(如路由器之间的专线连接) |
| 广播多路访问网络(Broadcast Multi-Access,BMA) | 支持多台路由器通过共享介质通信(如以太网),需选举 DR(指定路由器)和 BDR(备份指定路由器);Hello 报文间隔 10 秒 | 以太网(交换机连接多台路由器)、令牌环网 |
| 非广播多路访问网络(Non-Broadcast Multi-Access,NBMA) | 支持多台路由器通信,但无广播能力,需手动指定邻居;Hello 报文间隔 30 秒 | 帧中继(Frame Relay)、ATM 网络 |
| 点到多点网络(Point-to-Multipoint) | 将一个接口逻辑划分为多个 "点到点" 链路,无需 DR/BDR 选举;Hello 报文间隔 30 秒 | 由 NBMA 网络手动配置转换而来(如帧中继网络模拟点到点连接) |

四、OSPF 基本配置命令与验证

1.基础配置命令

|-----------------|-------------------------------------------|-------------------------------------------------------------------------------------------------|
| 配置目的 | 命令格式 | 说明 |
| 启动 OSPF 路由进程 | Router ospf process-id | process-id为 OSPF 进程号(1-65535),仅在本地路由器生效,不同路由器可相同 |
| 指定 OSPF 运行接口及区域 | Network address inverse-mask area area-id | address:接口的 IP 地址或网段;inverse-mask:反掩码(如 255.255.255.0 的反掩码为 0.0.0.255);area-id:接口所属的 OSPF 区域 ID |

2.状态验证命令

|----------------|------------------------------------|---------------------------------------------------------------------------|
| 验证目的 | 命令格式 | 说明 |
| 查看路由器全局路由表 | Show ip route | 可查看所有路由协议(含 OSPF)生成的路由,OSPF 路由标记为 "O" |
| 查看 OSPF 全局配置信息 | Show ip ospf | 显示 OSPF 进程号、区域信息、路由器 ID、LSDB 摘要等全局参数 |
| 查看 OSPF 接口详细信息 | Show ip ospf interface type number | type number为接口类型 + 编号(如 Ethernet 0/0),显示接口的 OSPF 网络类型、Hello 间隔、DR/BDR 信息等 |
| 查看 OSPF 邻居关系表 | Show ip ospf neighbor | 显示邻居路由器的 IP、状态(如 FULL,代表邻接关系已建立)、接口等信息 |

五、补充说明

路由器 ID(Router ID):OSPF 区域内唯一标识路由器的逻辑地址,默认选择路由器所有 Loopback 接口中 IP 最大的地址;若无 Loopback 接口,则选择物理接口中 IP 最大的地址。也可通过Router-id x.x.x.x手动配置,建议手动指定以避免地址变化导致的问题。

DR/BDR 选举:仅在广播多路访问(BMA)和非广播多路访问(NBMA)网络中存在,DR 负责统一收发 LSA,BDR 在 DR 故障时自动接替 DR 角色,减少邻接关系重建次数,提升网络稳定性。选举基于接口的优先级(0-255,0 表示不参与选举),优先级相同则比较路由器 ID,数值越大越优先。

链路成本(Cost):OSPF 衡量链路优劣的指标,计算公式为Cost = 100M / 链路带宽(100M 为参考带宽,可通过auto-cost reference-bandwidth修改),带宽越高,Cost 值越小,路径越优先。

六、实验

1.配置PC机及各个路由器接口ip

①PC0

②PC1

③R0

复制代码
Router>enable                                                     进入特权模式
Router#configure terminal                                         进入全局模式
Router(config)#interface f0/0                                     切换接口
Router(config-if)#ip address 192.168.10.2 255.255.255.0           配置接口IP
Router(config-if)#no shutdown                                     开启接口
Router(config-if)#exit                                            退出(返回全局模式)
Router(config)#interface f0/1
Router(config-if)#ip address 192.168.20.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 
Router(config)#interface f1/0
Router(config-if)#ip address 192.168.70.2 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 

④R1

复制代码
Router>enable 
Router#configure terminal 
Router(config)#interface f0/0
Router(config-if)#ip address 192.168.20.2 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 
Router(config)#interface f0/1
Router(config-if)#ip address 192.168.30.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 

⑤R2

复制代码
Router>enable 
Router#configure 
Router(config)#interface f0/0
Router(config-if)#ip address 192.168.30.2 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 
Router(config)#interface f0/1
Router(config-if)#ip address 192.168.40.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 

⑥R3

复制代码
Router>enable 
Router#configure 
Router(config)#interface f0/0
Router(config-if)#ip address 192.168.40.2 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 
Router(config)#interface f0/1
Router(config-if)#ip address 192.168.50.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 
Router(config)#interface f1/0
Router(config-if)#ip address 192.168.60.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit 

⑦R4

复制代码
Router>enable 
Router#configure terminal 
Router(config)#interface f0/1
Router(config-if)#ip address 192.168.60.2 255.255.255.0
Router(config-if)#exit 
Router(config)#interface f0/0
Router(config-if)#ip address 192.168.70.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#exit

2.启动路由进程并公布网络

①R1

复制代码
Router(config)#router ospf 1                                    启用ospf,进程号为1
Router(config-router)#network 192.168.10.0 0.0.0.255 area 0     公布网段并设置为Area 0
Router(config-router)#network 192.168.20.0 0.0.0.255 area 0
Router(config-router)#network 192.168.70.0 0.0.0.255 area 0
Router(config-router)#exit                                      退出(返回到全局模式)

②R2

复制代码
Router(config)#router ospf 1
Router(config-router)#network 192.168.20.0 0.0.0.255 area 0
Router(config-router)#network 192.168.30.0 0.0.0.255 area 0
Router(config-router)#exit

③R3

复制代码
Router(config)#router ospf 1
Router(config-router)#network 192.168.30.0 0.0.0.255 area 0
Router(config-router)#network 192.168.40.0 0.0.0.255 area 0
Router(config-router)#exit

④R4

复制代码
Router(config)#router ospf 1
Router(config-router)#network 192.168.40.0 0.0.0.255 area 0
Router(config-router)#network 192.168.50.0 0.0.0.255 area 0
Router(config-router)#network 192.168.60.0 0.0.0.255 area 0
Router(config-router)#exit

⑤R5

复制代码
Router(config)#router ospf 1
Router(config-router)#network 192.168.60.0 0.0.0.255 area 0
Router(config-router)#network 192.168.70.0 0.0.0.255 area 0
Router(config-router)#exit

3.测试

4.查看ospf设置

复制代码
Router#show ip ospf                   查看ospf配置
复制代码
Router#show ip ospf neighbor         查看邻居关系表
相关推荐
ai_xiaogui18 小时前
All-in-One 软路由两年不宕机实战:PVE 备份技巧与 RAW 转 QCOW2 磁盘优化方案
智能路由器·all-in-one·家庭服务器wifi不稳定优化·pve虚拟机全量备份与增量备份·raid5磁盘阵列安全实战·pve 8.1.4 备份技巧·pve raw转qcow2教程
路溪非溪1 天前
UBUS基本使用总结
linux·网络·arm开发·智能路由器
zbtlink1 天前
定制边缘计算路由器:是必要升级,还是成本负担?
智能路由器
ICT技术最前线1 天前
如何配置IPv6静态路由?解决企业网络难题
智能路由器·ipv6·静态路由
zbtlink2 天前
专业路由器 vs 电脑软件WiFi,差异在哪?
网络·智能路由器
运维行者_3 天前
APM 性能监控是什么?从应用监控与网站监控了解基础概念
网络·数据库·云原生·容器·kubernetes·智能路由器·运维开发
JY.yuyu3 天前
华为VRP基础及操作
华为·智能路由器
ShiMetaPi4 天前
GM-3568JHF丨ARM+FPGA异构开发板系列教程:外设教程 04 WIFI
网络·arm开发·fpga开发·智能路由器·fpga
Ha_To4 天前
2025.12.16 Cisco 的HSRP,TCP与UDP协议
网络·智能路由器