OSPF协议

作者:Suchadar日期:2025/12/23

一、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 网络手动配置转换而来(如帧中继网络模拟点到点连接)

4.OSPF的三种通信量(多区域)

-域内通信量(Intra-Area Traffic)

这是同一 OSPF 区域内部的路由器之间交换的流量,也是 OSPF 网络中最基础、占比最高的流量类型。

  • 承载内容
    • 邻居发现与建立:Hello 报文(用于维持邻居 / 邻接关系)。
    • 链路状态同步:LSU(链路状态更新)、LSAck(链路状态确认)、LSR(链路状态请求)报文,传输的是Type 1(路由器 LSA) 和 Type 2(网络 LSA)。
  • 特点
    • 仅在区域内部传播,不会跨越 ABR(区域边界路由器)。
    • 基于链路状态数据库(LSDB)的完全同步,区域内所有路由器的 LSDB 内容一致,能保证路由计算的准确性。
    • 触发更新机制:仅当链路状态变化时才发送 LSU,平时仅靠 Hello 报文保活,流量开销低。

-域间通信量(Inter-Area Traffic)

这是不同 OSPF 区域之间,由 ABR 负责转发的流量,用于传递跨区域的路由信息。

  • 承载内容
    • 由 ABR 生成Type 3(网络汇总 LSA),将一个区域的路由信息汇总后,发布到其他区域。
    • 特殊场景下还会包含Type 4(ASBR 汇总 LSA),用于告知其他区域 ASBR(自治系统边界路由器)的位置。
  • 特点
    • 只能通过ABR 转发,非骨干区域的路由信息必须经过骨干区域(Area 0)传递。
    • 支持路由汇总和过滤,ABR 可以对 Type 3 LSA 进行聚合,减少其他区域的 LSDB 大小和路由表条目。
    • 遵循 “非骨干区域必须与骨干区域直接相连” 的规则,否则需要配置虚链路来承载这类流量。

-外部通信量

这是OSPF 自治系统(AS)与外部网络之间的流量,由 ASBR 负责引入和发布外部路由。

  • 承载内容
    • ASBR 将外部路由(如静态路由、RIP 路由)转换为Type 5(自治系统外部 LSA),发布到整个 OSPF 域。
    • 对于 NSSA(非纯末梢区域),则使用Type 7(NSSA 外部 LSA),再由 ABR 转换为 Type 5 LSA 传递到其他区域。
  • 特点
    • 可以跨越所有 OSPF 区域传播(除非被过滤)。
    • 外部路由分为两类:E1 路由(计算总开销时包含内部 OSPF 开销 + 外部开销)、E2 路由(仅使用外部开销,默认类型)。
    • 优先级低于区域内和区域间路由,OSPF 在选路时会优先选择 Intra-Area > Inter-Area > External 路由。

PS:链路状态通告LSA(1-7):同步OSPF链路状态数据库

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

1.基础配置命令

配置目的命令格式说明
启动 OSPF 路由进程Router ospf process-idprocess-id为 OSPF 进程号(1-65535),仅在本地路由器生效,不同路由器可相同
指定 OSPF 运行接口及区域Network address inverse-mask area area-idaddress:接口的 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 numbertype number为接口类型 + 编号(如 Ethernet 0/0),显示接口的 OSPF 网络类型、Hello 间隔、DR/BDR 信息等
查看 OSPF 邻居关系表Show ip ospf neighbor显示邻居路由器的 IP、状态(如 FULL,代表邻接关系已建立)、接口等信息
查看OSPF数据库Show ip ospf database查看LSDB内的所有LSA数据信息

五、补充说明

路由器 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

1Router>enable                                                     进入特权模式
2Router#configure terminal                                         进入全局模式
3Router(config)#interface f0/0                                     切换接口
4Router(config-if)#ip address 192.168.10.2 255.255.255.0           配置接口IP
5Router(config-if)#no shutdown                                     开启接口
6Router(config-if)#exit                                            退出(返回全局模式)
7Router(config)#interface f0/1
8Router(config-if)#ip address 192.168.20.1 255.255.255.0
9Router(config-if)#no shutdown 
10Router(config-if)#exit 
11Router(config)#interface f1/0
12Router(config-if)#ip address 192.168.70.2 255.255.255.0
13Router(config-if)#no shutdown 
14Router(config-if)#exit 

④R1

1Router>enable 
2Router#configure terminal 
3Router(config)#interface f0/0
4Router(config-if)#ip address 192.168.20.2 255.255.255.0
5Router(config-if)#no shutdown 
6Router(config-if)#exit 
7Router(config)#interface f0/1
8Router(config-if)#ip address 192.168.30.1 255.255.255.0
9Router(config-if)#no shutdown 
10Router(config-if)#exit 

⑤R2

1Router>enable 
2Router#configure 
3Router(config)#interface f0/0
4Router(config-if)#ip address 192.168.30.2 255.255.255.0
5Router(config-if)#no shutdown 
6Router(config-if)#exit 
7Router(config)#interface f0/1
8Router(config-if)#ip address 192.168.40.1 255.255.255.0
9Router(config-if)#no shutdown 
10Router(config-if)#exit 

⑥R3

1Router>enable 
2Router#configure 
3Router(config)#interface f0/0
4Router(config-if)#ip address 192.168.40.2 255.255.255.0
5Router(config-if)#no shutdown 
6Router(config-if)#exit 
7Router(config)#interface f0/1
8Router(config-if)#ip address 192.168.50.1 255.255.255.0
9Router(config-if)#no shutdown 
10Router(config-if)#exit 
11Router(config)#interface f1/0
12Router(config-if)#ip address 192.168.60.1 255.255.255.0
13Router(config-if)#no shutdown 
14Router(config-if)#exit 

⑦R4

1Router>enable 
2Router#configure terminal 
3Router(config)#interface f0/1
4Router(config-if)#ip address 192.168.60.2 255.255.255.0
5Router(config-if)#exit 
6Router(config)#interface f0/0
7Router(config-if)#ip address 192.168.70.1 255.255.255.0
8Router(config-if)#no shutdown 
9Router(config-if)#exit

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

①R1

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

②R2

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.20.0 0.0.0.255 area 0
3Router(config-router)#network 192.168.30.0 0.0.0.255 area 0
4Router(config-router)#exit

③R3

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.30.0 0.0.0.255 area 0
3Router(config-router)#network 192.168.40.0 0.0.0.255 area 0
4Router(config-router)#exit

④R4

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.40.0 0.0.0.255 area 0
3Router(config-router)#network 192.168.50.0 0.0.0.255 area 0
4Router(config-router)#network 192.168.60.0 0.0.0.255 area 0
5Router(config-router)#exit

⑤R5

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.60.0 0.0.0.255 area 0
3Router(config-router)#network 192.168.70.0 0.0.0.255 area 0
4Router(config-router)#exit

3.测试

4.查看ospf设置

Router#show ip ospf 查看ospf配置

Router#show ip ospf neighbor 查看邻居关系表

多区域

1.配置PC机IP

①PC0

②PC1

③PC2

2.配置路由器IP

①R0

1Router(config)#interface f0/0
2Router(config-if)#ip address 192.168.1.1 255.255.255.0
3Router(config-if)#no shutdown 
4Router(config-if)#exit 
5Router(config)#interface f0/1
6Router(config-if)#ip address 192.168.2.1 255.255.255.0
7Router(config-if)#no shutdown 
8Router(config-if)#exit 
9Router(config)#interface f1/0
10Router(config-if)#ip address 192.168.5.1 255.255.255.0
11Router(config-if)#no shutdown 
12Router(config-if)#exit 

②R1

1Router(config)#interface f0/0
2Router(config-if)#ip address 192.168.2.2 255.255.255.0
3Router(config-if)#no shutdown 
4Router(config-if)#exit 
5Router(config)#interface f1/0
6Router(config-if)#ip address 192.168.3.1 255.255.255.0
7Router(config-if)#no shutdown 
8Router(config-if)#exit 

③R2

1Router(config)#interface f0/1
2Router(config-if)#ip address 192.168.5.2 255.255.255.0
3Router(config-if)#no shutdown 
4Router(config-if)#exit 
5Router(config)#interface f0/0
6Router(config-if)#ip address 192.168.6.1 255.255.255.0
7Router(config-if)#no shutdown 
8Router(config-if)#exit 

④R3

1Router(config)#interface f0/0
2Router(config-if)#ip address 192.168.3.2 255.255.255.0
3Router(config-if)#no shutdown 
4Router(config-if)#exit 
5Router(config)#interface f0/1
6Router(config-if)#ip address 192.168.4.1 255.255.255.0
7Router(config-if)#no shutdown 
8Router(config-if)#exit 

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

①R0

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.1.0 0.0.0.255 area 0
3Router(config-router)#network 192.168.2.0 0.0.0.255 area 0
4Router(config-router)#network 192.168.5.0 0.0.0.255 area 0
5Router(config-router)#exit 

②R1

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.2.0 0.0.0.255 area 0
3Router(config-router)#network 192.168.3.0 0.0.0.255 area 2

③R2

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.6.0 0.0.0.255 area 1
3Router(config-router)#network 192.168.5.0 0.0.0.255 area 0

④R3

1Router(config)#router ospf 1
2Router(config-router)#network 192.168.3.0 0.0.0.255 area 2
3Router(config-router)#network 192.168.4.0 0.0.0.255 area 2

4.测试

完成通讯


OSPF协议》 是转载文章,点击查看原文


相关推荐


基于 Gradio 构建神经网络 GUI 实验平台:感知器 / BP/Hopfield/AlexNet/VGG/ResNet 一站式实现
晞微2025/12/15

引言 神经网络实验往往需要编写大量代码、调试参数、手动可视化结果,对于初学者而言门槛较高。传统的命令行式实验方式不仅操作繁琐,还难以直观展示算法效果。本文基于Gradio框架,构建了一个集经典神经网络(感知器、BP、Hopfield) 和深度学习模型(AlexNet/VGG/ResNet) 于一体的可视化 GUI 实验平台,无需编写代码,仅通过界面交互即可完成各类神经网络实验,大幅降低了实验门槛。 本平台支持以下核心实验: 感知器二分类实验BP 神经网络非线性函数拟合实验Hopfield


C++ 波澜壮阔 40 年:从 C with Classes 到现代 C++ 的进化史诗
雾忱星2025/12/7

🔥@晨非辰Tong: 个人主页 👀专栏:《数据结构与算法入门指南》、《C++学习之旅》 💪学习阶段:C语言、数据结构与算法初学者 ⏳“人理解迭代,神理解递归。” 文章目录 引言一、波澜壮阔的C++“发家”历史1. 1 C with Classes (1979-1983)-起源1.2 早期发展:C++的"++"从何来(1983-1989)1.3 标准化与成熟(1990-1998)1.4 现代化浪潮(2011-至今) 二、推荐C++学习参考网站、好用书籍


微服务项目开发环境
努力-坚持2025/11/28

一、微服务项目开发环境 搭建微服务项目开发环境: 注册中心nacos:登录然后查看注册服务 配置中心nacos:登录然后查看配置 消息队列RabbitMQ:管理界面,登陆后查看消息队列 Redis:


程序员副业 | 2025年12月复盘
嘟嘟MD2026/1/2

本文首发于公众号:嘟爷创业日记 。 我已经坚持日更600天+,欢迎过来追剧~ 大家好,我是嘟嘟MD,一个10年程序员,现在离职创业,有700天了,我每个月都会写一篇总结复盘,让大家可以近距离看看一个离职程序员都在干什么,今天这篇是十二月份的总结,大概2000字,略长,有空的可以翻翻,希望对大家有一丢丢的借鉴作用! 一、月度大事 今天先把12月的复盘写了, 改天再把25年的复盘整理哈,这一年还是经历了很多事情,需要好好总结复盘 1:公众号运营+B站视频运营 公众号和B站视频运营目前还是最高


Java是当今最优雅的开发语言
richxu202510012026/1/10

我认为Java是当今最优雅的开发语言! 天然成熟的生态 !! 项目内部代码都各种积木化(模块化) (离不开spring boot的加持) 我也曾用过Delphi ,C#,Python 开发 ! 随感而发,不喜勿喷        #嵌入式 #电子信息 #编程 #软件设计与开发 #找工作 #后端开发 #单片机 #小红书#Java


【Python爬虫实战】用 Flet 把爬虫做成手机 App
MoonPointer-Byte2026/1/18

有没有想过,把你写的爬虫装进手机里? 比如: 想听歌时,后台自动爬取音乐的资源并播放; 想搜图时,后台自动爬取 高清图接口并下载; 想看人时,一键聚合搜索社交用户数据。 今天我们将实战一个MoonMusic。它的核心不是 UI,而是强大的异步数据采集层。 🔧 核心技术栈 数据采集 (Crawler): httpx (异步 HTTP 请求), BeautifulSoup4 (HTML 解析) 并发控制 (Concurrency): asyncio (协程调度) 数据可视

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客