探索 OSPF 协议:构建高效网络的基石
文章目录
-
目录
文章目录
前言
一.OSPF协议概述
二.OSPF相关概念
🕤 2.1 基本思想
🕤 2.2 SPF算法
🕤 2.3 区域划分编辑
三.OSPF工作原理
编辑
🕤 3.1 DR/BDR选举
四.OSPF网络类型
🕤4.1 BMA
🕤4.2 P2P
🕤4.3 P2MP
🕤4.4 NBMA
五.OSPF数据包结构分析
🕤 5.1 首部公有信息
🕤 5.2 Hello 报文
🕤 5.3 数据库描述报文 (DBD)
🕤 5.4 链路状态请求报文 (LSR)
🕤 5.5 链路状态更新报文 (LSU)
🕤 5.6 链路状态通告报文 (LSA)
5.6.1 首部公有信息
5.6.2 类型 1:Router
5.6.3 类型 2:Network
5.6.4 类型 3:Sum-Net
5.6.5 类型 5:External
5.6.6 类型 4:Sum-Asbr
5.6.7 类型 7 :NSSA
六.OSPF 路由优化
🕤6.1 特殊区域
6.1.1 末梢区域:Stub
6.1.2 完全末梢区域
6.1.3 非完全末梢区域:NSSA
6.1.4 完全的非完全末梢区域
🕤6.2 路由汇总
6.2.1 域间汇总
6.2.2 域外汇总
七.OSPF不规则区域
🕤7.1 远离骨干的非骨干区域
7.1.2 虚链路技术
8.1.2 多进程双向重发布
前言
在复杂庞大的网络世界,高效稳定的路由协议对数据传输与网络稳定至关重要。开放式最短路径优先(OSPF)协议,广泛应用于大型企业、数据中心和 ISP 网络,凭借链路状态算法、区域划分等特性,解决了传统协议在大规模网络中的难题,如收敛慢、易成环路、难以适应复杂拓扑等。本文将深入探索 OSPF 协议的原理、特性、应用场景及配置方法,助力构建更健壮高效的网络基础设施。
一.OSPF协议概述
早期网络规模较小时,RIP 等距离矢量路由协议因原理简单、配置容易而被广泛采用。但随着网络规模迅速扩大,RIP 收敛慢、难以适配复杂拓扑等缺陷逐渐暴露。为解决大规模网络的路由难题,IETF 开发了链路状态路由协议 OSPF,保障网络稳定高效运行。
对比维度 | OSPF | RIP |
收敛速度 | 周期更新10s | 周期更新30s |
防环机制 | SPF算法/星型拓扑 | 水平分割/毒性逆转触发更新 |
选路方式 | 以带宽作为开销值 | 以跳数作为开销 |
数据更新量 | 区域内更新/路由汇总/特殊区域 | 更新完整路由表信息 |
二.OSPF相关概念
🕤 2.1 基本思想
OSPF将整个网络世界抽象成一个有向的加权图,参与链路状态选路的路由器监听所连接链路的网络状态,并将本地的链路状态信息发送给其它路由器,路由器将这些信息存入链路状态数据库LSDB中,每台路由器根据LSDB构建出完整的网络拓扑,路由器在构建的网络拓扑上计算出从自身出发到达任意网络的最短路径,从而建立自己的路由表。
🕤 2.2 SPF算法
初始设定:路由器 A 为根节点,A 到自身距离标记为0,到B,C,D的距离为无穷大(∞)。
- 更新状态节点:A(0,以确定),B(∞,未确定),C(∞,未确定),D(∞,未确定)
第一轮探索(A探索邻居B/C):A 到 B 距离为 1;A 到 C 距离为2;比较后将B纳入最短路径树。
- 更新状态节点:A(0,以确定),B(1,以确定),C(∞,未确定),D(∞,未确定)
第二轮探索(B探索邻居D):此时 C 距离 A 为 2 ,D 距离 A 为 2 ,任选 D 纳入最短路径树。
- 更新状态节点:A(0,已确定) ,B(1,已确定) ,C(∞,未确定) ,D(2,已确定)
第三轮探索(D探索邻居C和网络1): A 经 D 到 C 的距离为 2 + 2 = 4 ,而之前 A 到 C 距离暂为 2 ,保持 A 到 C 距离为 2 ,A 经 D 到网络 1 的距离为 2 + 1 = 3 。
- 将 C 和网络 1 纳入最短路径树,最终得到右侧的最短路径树,各节点到 A 的最短距离及路径确定 。
🕤 2.3 区域划分
OSPF 区域划分能降低网络复杂度,将网络分割成多个独立区域,每个区域独立运行SPF算法,区域内路由器仅处理本区域链路状态信息,缩小了链路状态数据库规模。同时,区域划分限制了链路状态通告(LSA)的泛洪范围,区域拓扑变化时,LSA 更新仅在本区域传播,减轻了带宽压力与路由器负载,保障网络快速收敛和稳定运行。
不同区域中路由器承担的角色
- 区域内路由器:所有接口均位于同一区域内,专注于处理本区域的链路状态信息,确保区域内通信的高效稳定,如:AR1/AR6/AR12
- 区域边界路由器(ABR):连接多个不同区域,负责汇总和过滤区域间的链路状态信息,在不同区域之间传递路由信息,是实现区域间通信的关键节点。如:AR7/AR9
- 自治系统边界路由器(ASBR):连接 OSPF 自治系统与外部网络,负责将外部路由信息引入 OSPF 网络,并向外部网络通告 OSPF 网络内的路由信息,实现了 OSPF 网络与外部网络的互联互通。如:AR8
丰富多彩的区域类型
-
骨干区域(Backbone Area):骨干区域的 ID 为 0.0.0.0,它就像OSPF网络的 “中枢神经”,负责在不同的非骨干区域之间传递路由信息,保证区域间的连通性。
-
非骨干区域(Normal Area):非骨干区域通过区域边界路由器(ABR)与骨干区域相连且都有专属区域ID,用户可以根据不同需求将非骨干区域配置为下面四种不同特殊区域。
-
末梢区域(Stub Area):该区域不接收其它自治系统(AS)的路由信息,ABR 会为其生成一条默认缺省路由,使区域内设备能通过默认路由访问其它(AS)的网络。
-
完全末梢区域(Totally Stub Area):在末梢区域的基础上拒绝访问其它非骨干区域的路由信息进而简化路由信息,ABR会为其生成一条默认缺省路由,使区域内设备能够访问其它AS和非骨干区域网络。
-
非完全末梢区域(Not-So-Stubby Area, NSSA):NSSA 区域内的 ASBR 可以将外部路由引入本区域,以特殊的路由信息在区域内传播,在区域边界处再转换为普通的外部路由传播到其他区域,ABR会为其生成一条特殊的默认缺省路由使区域内设备能够访问其它AS网络。
-
完全非完全末梢区域(Totally NSSA):它在完全末梢区域的基础上,拒绝访问其它非骨干区域的路由信息进而简化路由信息,ABR会为其生成一条特殊的默认缺省路由使区域内设备能够访问其它AS网络,因此在该区域种会存在两条特殊的默认缺省路由,一条用于访问非骨干区域网络,一条用于访问其它AS区域网络。
注:编号3-6为特殊区域需要手动配置,此处先做了解,后文会重点介绍。
三.OSPF工作原理
建立和维护邻居关系
路由器通过发送 Hello 报文来发现邻居。Hello 报文每10s以组播形式发送到组播地址224.0.0.5。
- Init 状态:当路由器收到邻居发送的 Hello 报文,但在该报文中没有看到自己的路由器 ID 时,就会进入 Init 状态。这意味着路由器已经收到了来自邻居的 Hello 报文,确认了对端邻居的存在,但还不确定邻居是否也收到了自己发送的 Hello 报文。
- 2-Way 状态:当路由器收到邻居发送的 Hello 报文,并且报文中包含了自己的路由器 ID 时,就进入了 2 - Way 状态。这表明两台路由器之间已经建立了双向通信,邻居关系初步形成。
hello/死亡时间 | 如果邻居之间不相同,则影响邻居关系建立 |
特殊区域标记 | 如果邻居双方特殊区域标记不同,则将无法建立邻居关系 |
网络掩码 | 如果邻居双方网络掩码不同,则邻居关系无法建立(只针对MA网络,p2网络不核查) |
认证 | 邻居双方认证类型不同,认证数据不同则无法建立邻居关系 |
注:处于MA和NBMA网络种的路由器2-Way状态在进入链路状态数据库同步前会先基于Hello报文种的信息进行DR/BDR的选举,此处先知道即可,后文会详细介绍DR/BDR。
链路状态数据库同步
邻居路由器之间通过交换数据库描述(DBD)报文、链路状态请求(LSR)报文和链路状态更新(LSU)报文等,来同步链路状态数据库,最终建立邻接关系。只有建立了邻接关系的路由器才能进行路由信息的交换。
- ExStart 状态:(1)路由器在 2 - Way 状态之后,为了进行链路状态数据库的同步,会进入 ExStart 状态。该状态下,两台路由器会通过交换数据库描述(DBD)报文来确定彼此的数据库版本信息,并选举出主从关系。ID 较大的路由器成为主路由器,负责控制数据库描述报文的交换过程。主从关系确定后,进入Exchange 状态。
- Exchange 状态:进入 Exchange 状态后,路由器开始正式交换 DBD 报文。DBD 报文中包含了链路状态数据库的摘要信息,通过交换 DBD 报文,路由器可以了解邻居的链路状态数据库内容。
- Loading 状态:该状态下,路由器根据Exchange状态交换的DBD报文识别本地缺少的链路状态信息(LSA),并发送链路状态请求报文(LSR)向对端请求缺少的链路状态信息然后接受邻居的LSU报文来更新加载自己的链路状态数据库,双方的状态同步完成后进入 Full 状态。
🕤 3.1 DR/BDR选举
在 OSPF(开放式最短路径优先)协议中,DR(指定路由器)和 BDR(备份指定路由器)是在广播型网络或非广播多路访问(NBMA)网络中选举出来的特殊路由器,用于优化网络中链路状态信息的传播和路由计算。
DR 和 BDR 定义
- DR(Designated Router)指定路由器:在广播型网络(如以太网)或非广播多路访问(NBMA)网络中,被选举出来负责收集链路状态信息,并向区域内其他路由器传播的路由器。简言之,DR 充当网络内链路状态信息的 “分发中心”。
- BDR(Backup Designated Router)备份指定路由器:作为 DR 的备份,当 DR 因故障无法工作时,BDR 会迅速接替其工作,继续承担链路状态信息的收集与分发任务,保障网络的持续稳定运行。
选举 DR 和 BDR 的原因
- 降低网络流量负载:在MA和NBMA网络中,如果没有 DR 和 BDR,每台路由器都需与其他所有路由器建立邻接关系,并相互交换链路状态信息,导致大量的链路状态通告(LSA)在网络中传播,极大消耗网络带宽。选举 DR 和 BDR 后,各路由器只需与 DR 和 BDR 建立邻接关系,由 DR 负责收集和分发链路状态信息,减少 LSA 的传输数量,降低网络流量负载。
- 提升收敛速度:网络拓扑变化时,DR 能快速将变化信息通知给其他路由器,加快整个网络的收敛速度。同时,BDR 作为备份,可在 DR 故障时迅速接管工作,减少网络因故障导致的中断时间。
DR/BDR按照如下规则逐一选举
- 接口优先级最大的作为DR,次之的作为BDR
- 邻居ID最大的作为DR,次之的作为BDR
DR/BDR特性:
- 非抢占:若存在DR/BDR设备,即使新加入的设备优先级更大也不会抢占原有DR成为新DR。
- 只有优先级大于 0 的设备才能进行DR/BDR选举。
四.OSPF网络类型
根据数据链路层协议的类型,OSPF 将网络分为 4 种类型:广播,P2P(点到点),P2MP(点到多点)和 NBMA (非广播多路访问)。因此在默认情况下,不同类型呢的网络接口有其默认的 OSPF 接口网络类型。
以下接口为例:
- 以太网接口的 OSPF 网络类型为广播
- 串行链路接口的 OSPF 网络类型为 P2P
- ATM (异步传输模式)接口的 OSPF 网络类型为 NBMA
- 没有一种数据链路层协议默认对应 P2MP 类型,因此 P2MP 类型只能由工程师强制更改
工程师有时需要根据网络中的实际情况对接口的 OSPF 网络类型进行更改,如下:
- 如果接口的 OSPF 网络类型为 NBMA,但网络不是全互联的,那么工程师必须将接口的 OSPF 网络类型更改为P2NP。这样一来,两台不能直接可达的路由器就可以通过它们都直接可达的一台路由器来交换路由信息。
- 当网络中的部分路由器不支持组播,或者根据网络规划中的安全规则不允许传播组播时,工程师可以将接口的 OSPF 网络类型更改为NBMA。
- 当同一个网段内只有两台路由器参与 OSPF 的运行时,工程师可以将相应的接口OSPF 网络类型更改为P2P。
拓扑图如下:
我们可以在路由器命令行中输入如下命令查看接口所处的网络类型:
[R1]display ospf interface GigabitEthernet 0/0/0
🕤4.1 BMA
在网络里,像咱们办公室或者家里的局域网,很多电脑、打印机等设备都连在同一个网络里,能互相发广播消息,还能互相通信,这就是 BMA 网络类型,大家都在一个 “大广场” 里交流信息 。
知识点 | 相关信息及分析 |
---|---|
DR / BDR | 在 BMA 网络中路由器会进行DR和BDR选举并与DR设备建立邻接关系 |
Hello 间隔 | 表示每隔 10 秒发送 Hello 报文,用于发现和维护邻居关系 |
Dead 间隔 | 若 40 秒内未收到邻居 Hello 报文则认为邻居失效,一般为 Hello 间隔 4 倍 |
Poll 间隔 | 在邻居处于 Down 状态时,每 120 秒发送 Hello 报文探测,加快邻居关系恢复 |
Retransmit | 未收到链路状态确认报文时,5 秒后重传链路状态更新报文 |
开销(Cost) | OSPF 根据接口带宽计算开销,千兆以太网接口(BMA 网络典型)默认开销为 1,用于计算最短路径 |
注:值得注意的是不同类型的网络中 hello报文更新以及死亡时间是不同的,此外是否进行DR/BDR选举也和网络类型有关。
🕤4.2 P2P
P2P 就是 “点到点” 。打个比方,就像你和朋友打电话,你们俩直接通话,中间没有其他人帮忙转接或者管理。在网络里,P2P 网络类型也是这样,就两台设备直接连起来,比如两个路由器用一根线直接连起来。
可以使用下面的命令公式将 R1 设备的 G0/0/1接口类型改为 P2P
[R1-GigabitEthernet0/0/1]ospf network-type p2p
[R7-GigabitEthernet0/0/0]ospf network-type p2p
更改接口的 OSPF网络类型会导致OSPF邻居关系断开并重新建立,等待AR1AR7之间的OSPF邻居关系重新建立后,再次查看AR1G0/0/接口的 OSPF 网络类型:
AR1 G0/0接口的OSPF网络类型已经被更改P2P,并且我们还可以从阴影部分看到它的邻居(AR7G0/0/1按口)的I地址。
在更改接口的 OSPF网络类型时,工程师必须同时对建立邻居的两个接口进行更改使两台路由器以相同的OSPF网络类型建立邻居关系。在上述将广播类型更改为P2P型的示例中,若我们只将AR1G0/0/接口的OSPF网络类型更改为P2P,而将AR7G00接口保留为广播,两台路由器仍可以建立邻居关系并进入Full状态,但它们无法学习对方的OSPF由信息。对此兴趣的读者可以自行验证,
知识点 | 详情 |
---|---|
Hello 间隔 | 10 秒,用于发现和维护邻居关系 |
Dead 间隔 | 40 秒,未在该时间收到 Hello 报文则判定邻居失效,一般为 Hello 间隔 4 倍 |
重点:通过对比BMA网络中的接口信息不难发现,P2P网络中缺少DR/BDR设备的信息,这也是P2P网络与BMA网络的不同点,在P2P网络中只有双方设备,因此无需进行DR/BDR选举。
注:环回接口默认的接口类型为 P2P
🕤4.3 P2MP
P2MP讲解链接在此
🕤4.4 NBMA
NMBA讲解链接在此
五.OSPF数据包结构分析
本章节的数据包结构分析将基于下面的这张拓扑图的骨干区域进行分析

🕤 5.1 首部公有信息
版本号(Version) | 目前广泛使用的是 OSPFv2,对应版本号为 2。 |
报文类型(Type) | 标记报文的类型,OSPF协议定义了 5 种报文 |
报文长度 | 指明整个OSPF首部的长度。 |
路由器 ID(Router ID) | OSPF协议中路由器的标识符,该标识唯一。 |
区域 ID(Area ID) | OSPF协议中报文所属区域的标识符。 |
校验和(Checksum) | 用于检测 OSPF 报文在传输过程中是否出现错误。 |
认证类型 | 存储OSPF认证相关数据。 |
认证数据 | 存储和OSPF认证相关的密码等信息 |

🕤 5.2 Hello 报文
邻居发现与维护:路由器通过启用 OSPF 的接口周期性发送 Hello 报文,可发现同一网络中运行 OSPF 的其他路由器,建立邻居关系。还会按照固定时间间隔持续发送,用于监测邻居状态,若在规定的 Router Dead Interval 内未收到邻居 Hello 报文,便判定邻居失效。
字段 | 含义与作用 |
---|---|
OSPF 首部 | 包含版本号、报文类型、报文长度、路由器 ID、区域 ID、校验和、认证类型、认证数据等公有信息,是报文的基础标识部分,用于识别报文基本属性、来源及保障传输正确性与安全性;这部分内容在上面的4.1章节详细介绍 |
网络掩码 | 表示发送该 Hello 报文接口所在网络的子网掩码,用于判断邻居路由器是否处于同一网络,若掩码不同,可能无法建立邻居关系 |
Hello 报文间隔 | 指定路由器发送 Hello 报文的时间间隔,一般默认为 10 秒(在广播和点到点网络中)或 30 秒(在非广播多路访问网络中),用于邻居间周期性的状态检测和维护 |
选项 | 包含一些标志位,用于标识路由器支持的功能特性等,如是否支持外部路由、是否支持 NSSA 区域等,不同标志位组合可表明路由器具备的不同能力 |
路由器优先级 | 取值范围 0 - 255 ,用于 DR/BDR 选举,优先级越高,在选举中越容易被选为 DR 或 BDR,0 表示不参与选举 |
路由器故障间隔 | 也叫 Dead Interval,通常为 Hello 报文间隔的 4 倍,若在该间隔内未收到邻居的 Hello 报文,就认为邻居路由器故障 |
指定路由器(DR) | 在广播或 NBMA 网络中选举出的路由器,负责收集链路状态信息并向区域内其他路由器传播,减少链路状态信息交换次数;未选举前使用0.0.0.0填充 |
备份指定路由器(BDR) | 作为 DR 的备份,当 DR 出现故障时,BDR 接替其工作,继续承担链路状态信息收集与分发任务;未选举前使用0.0.0.0填充 |
邻居路由器 | 记录本路由器已知的邻居路由器的 Router ID,用于维护邻居关系列表 ,跟踪邻居状态 |

🕤 5.3 数据库描述报文 (DBD)
数据库同步:在 OSPF 邻接关系初始化阶段发挥关键作用,用于描述本端设备的链路状态数据库(LSDB)概要信息 ,实现邻居路由器间数据库同步。通过交互 DD 报文,路由器能了解对端拥有的 LSA 情况。
字段 | 含义与作用 |
---|---|
接口MTU | 报文发送接口所连接网络的最大传输单元;0代表路由器不考虑MTU值对OSPF报文的限制 |
选项 | 用于OSPF路由器之间交换各自的能力等级 |
“ I ” 标志位 | 该位置 1 代表:该报文是描述链路状态数据库摘要的第一个数据库描述报文 |
“ M ” 标志位 | 该位置 1 代表:后续还有其它的数据库描述报文 |
“ MS ” 标志位 | 该位置 1 代表:发送该报文的路由器在数据库交换过程中是主方 |

🕤 5.4 链路状态请求报文 (LSR)
LSA 请求:在邻接关系初始化,交换 DD 报文后使用。当路由器根据 DD 报文得知对端有新的或更新的 LSA(链路状态通告)时,会向邻居发送 LSR 报文,请求获取特定的 LSA 详细信息,以实现自身链路状态数据库的同步更新 。
字段 | 含义 | 说明 |
---|---|---|
LS Type | 链路状态类型 | Router-LSA (1) ,表示请求的是路由器链路状态通告,是 OSPF 中用于描述路由器自身链路状态信息的 LSA 类型 |
Link State ID | 链路状态 ID | 10.0.0.2 ,在 Router - LSA 中,一般表示产生该 LSA 的路由器的 Router ID ,这里代表对应 Router - LSA 所描述的路由器标识 |
Advertising Router | 通告路由器 | 10.0.0.2 ,指产生并通告该链路状态信息的路由器的 Router ID ,即发送此 LSA 的路由器标识 |

🕤 5.5 链路状态更新报文 (LSU)
LSA 请求:在邻接关系初始化,交换 DD 报文后使用。当路由器根据 DD 报文得知对端有新的或更新的 LSA(链路状态通告)时,会向邻居发送 LSR 报文,请求获取特定的 LSA 详细信息,以实现自身链路状态数据库的同步更新 。

🕤 5.6 链路状态通告报文 (LSA)
链路状态通告报文作用于向其它邻接路由器传递拓扑和路由信息
5.6.1 首部公有信息
在 OSPF(开放最短路径优先)协议中,LSA(链路状态通告)三元组是唯一标识一条 LSA 的关键要素,具体如下:
三元组要素 | 说明 |
---|---|
Link - State Type(链路状态类型) | 用于区分 LSA 的种类,不同类型的 LSA 描述不同的网络信息 |
Link - State ID(链路状态 ID) | 其含义依据 LSA 类型有所不同(LSA分为6种后文会重点讲解) |
Advertising Router(通告路由器) | 产生并向外通告这条 LSA 的路由器的 Router |
仍然通过下面这张图谱中的路由器 R1 来具体分析一下LSA三元组。

我们可以在路由器 R1 的命令行界面中输入如下命令查看OSPF的链路状态数据库(LSDB):
[R1]display ospf lsdb

解析:
图中的 Area:0.0.0.0 表示以下显示的是 Area 0 的 LSA 。从中我们可以看出,当前 Area 中共有 5 个 LSA ,其中包含 4 个 类型为 1 类的 LSA 和 1 个类型为 2 类的 LSA,以下参数需要重点专注:
- LinkState ID :是对 LSA 的描述,也是 LSA 报文头中的链路状态 ID 字段。不同类型的 LSA 的这个字段含义不同,其中类型为 1 类的 LSA 的这个字段为生成这个 LSA 的 OSPF 路由器的 ID,类型为 2 类的 LSA 这个字段为DR的接口 IP 地址。
- AdvRouter:指明了生成这个 LSA 的 OSPF 路由器。
LSA 类型 | 名称 | Link State ID 含义 |
---|---|---|
Type 1 | Router LSA | 产生该 LSA 的路由器的 Router ID |
Type 2 | Network LSA | 广播型网络或 NBMA 网络中 DR 的接口 IP 地址 |
Type 3 | Summary LSA for Network | 目的网络的网络地址 |
Type 4 | Summary LSA for ASBR | ASBR 的 Router ID |
Type 5 | External LSA | 外部网络的网络地址 |
Type 7 | NSSA External LSA | NSSA 外部网络的网络地址 |
注:上述解析只是帮助大家更好的理解,下面将根据不同种类的LSA在只有骨干区域运行OSPF协议的基础上,添加其它区域运行OSPF协议。
5.6.2 类型 1:Router
每台运行 OSPF 协议的路由器都会生成 1 类 LSA,用来描述自身的链路状态信息,包括路由器的接口、链路类型、链路开销以及所连接的邻居路由器等。通过这些信息,其他路由器可以了解到该路由器在网络中的位置和连接情况。
我们可以在路由器 R1 的命令行种输入如下命令查看 链路状态数据库;SDB中路由器ID为10.0.0.3发送的 1 类LSA (Router)的详细信息:
[R1]display ospf lsdb router 10.0.0.3

不难发现 1 类 LSA中会包含路由器的接口处于哪个链路类型中,在OSPF协议中接口所处的链路类型主要分为以下四种,链路类型与Link ID 和 Data 的对应关系如下:
链路类型 | Link ID 含义 | Data 含义 |
---|---|---|
Point-to-Point | 邻居路由器的接口 IP 地址 | 本地路由器在该链路上的接口 IP 地址 |
TransNet | DR 的接口 IP 地址 | 本地路由器在该链路上的接口 IP 地址 |
StubNet | 末梢网络的网络地址 | 该末梢网络的子网掩码 |
Virtual Link | 虚连接另一端路由器的 Router ID | 本地路由器的 Router ID |
解析:
根据上述参数描述,我们再次观察 AR1 生成的类型 1 LSA ,其中包含两条链路信息:
- 与 G0/0/0接口相关的链路,其类型为TransNet,因此 Link ID 为 DR 的 IP地址,Data 为G0/0/0接口IP。
- 与Loopback0接口相关的链路,其类型为StubNet,因此 Link ID 为 Loopback0 接口的IP地址,Data为Loopbaak 0 接口的子网掩码。
5.6.3 类型 2:Network
在MA网络中, 1 类 LSA 仅仅描述了DR设备发送该 LSA 的接口的IP地址,至于这个MA网络的其它情况(如:这个MA网络的掩码是多少,除了DR设备是否还存在其它设备)都无法通过 1 类LSA直观的看到,因此需要 2 类 LSA 对 1 类 LSA 进行一个补充。
2 类 LSA 由 DR(指定路由器)产生,用于向本区域内的其他路由器描述其所连接的广播型网络或 NBMA 网络的拓扑信息。包括网络中所有连接到该网络的路由器的接口 IP 地址等,这样其他路由器就可以了解到该网络的具体构成和连接情况。

字段 | 含义 |
---|---|
LS Type | 固定为 2,表示这是 Network LSA。 |
Link State ID | 所描述的广播型网络或 NBMA 网络中 DR 的接口 IP 地址。 |
Network Mask | 网络的子网掩码,用于标识该网络的地址范围。 |
Attached Router | 列出连接到该网络的所有路由器的 Router ID,包括 DR 和 BDR 以及其他普通路由器。 |
5.6.4 类型 3:Sum-Net
3 类 LSA 由 ABR(区域边界路由器)产生,用于在不同区域间传递路由信息。ABR 会将某个区域内的路由信息汇总成 3 类 LSA 发布到其他区域,包含了目标网络的地址、掩码和开销等信息,这样其他区域的路由器就可以了解到本区域外部的网络可达信息以及到达这些网络的路径情况。
我们在 路由器 R7 以及 R1 上配置好 Area 1 区域的OSPF 后,在路由器R2的命令中查看链路状态数据库会发现多了一条3类LSA的信息,如下所示:

我们可以使用如下命令查看3类LSA的内容:
[R2]dis ospf lsdb summary

注: 路由器R2在解析3类LSA中的红框部分内容就知道172.16.1.0这个网段的存在且该网段的掩码为255.255.255.0,之后R2要向该网段发送数据时,会将数据甩给ABR(图中R1)再由ABR转发

5.6.5 类型 5:External
为了演示 5 类 LSA ,我们将路由器 AR2 作为 OSPF 域的 ASBR ,为了简单的实现外部路由的引入,我们添加一台路由器 AR9 与 AR 2相连,并在 AR9 上创建多个环回接口来模拟 OSPF 外部目的 IP 网段。
拓扑图
在完成路由器 AR9 的相关配置后,我们可以在路由器 AR2 上输入如下命令来完成以外部路由的类型 1 方式引入静态路由(外部路由会在后文特殊区域章节中讲述):
[R2-ospf-10]import-route static type 1
注:在引入外部路由之前需要先在 ASBR 设备上配置去往外部引入网段的静态路由
在ASBR AR2上成功引入外部路由后,我们可以在 Area 0中的其它路由器上观察这 3 条 OSPF 路由。我们以 AR1 为例,如下图展示:

5 类 LSA 由自治系统边界路由器(ASBR)产生,其功能是向整个 OSPF 自治系统通告来自外部路由协议(像 BGP、RIP 等)或者静态路由的网络信息,这样自治系统内的路由器就能了解到外部网络的可达性,从而实现与外部网络的通信。
在这部分,我们可以通过下面的命令查看并确认 5 类 LSA,命令如下:

[R1]display ospf lsdb ase 8.8.8.8

字段 | 含义 | 解释 |
---|---|---|
Type | 类型 | 标识 LSA 类型为 External,即 5 类 LSA,用于通告外部路由信息 |
Ls id | 链路状态 ID | 8.8.8.8 ,代表外部网络地址 |
Adv rtr | 通告路由器 | 10.0.0.2 ,产生该 LSA 的 ASBR(自治系统边界路由器)的 Router ID |
Options | 可选功能 | E 表示支持外部路由相关功能 |
Net mask | 网络掩码 | 255.255.255.255 ,外部网络 8.8.8.8 的子网掩码 |
E type | 外部路由类型 | 1 ,表示第一类外部路由(E1),计算路由开销时会结合内部开销与外部开销 |
Forwarding Address | 转发地址 | 0.0.0.0 ,表示数据包应转发到通告路由器(ASBR) |
在 OSPF 中,外部引入路由分为两种类型:类型 1 外部路由(E1)和类型 2 外部路由(E2)。它们的种子度量值计算方式有所不同,具体如下:
类型分类:
- E1型外部路由:域内设备到达域外目标网段总开销=内部网段到达ASBR的开销+种子度量值
- E2型外部路由:域内设备到达域外目标网段总开销=种子度量值
- 种子度量值默认为1,可以在重发布时修改
在 OSPF(开放最短路径优先)中,种子度量值(Seed Metric )是在进行路由重发布时用到的一个概念 。当把外部路由信息(比如从其他路由协议,像 RIP、EIGRP 等,或者其他 OSPF 进程)引入到 OSPF 网络中时,由于不同路由协议度量值计算方式和评判标准差异巨大,OSPF 会放弃外部路由原来的开销值,给这些引入的路由赋予一个特定的初始度量值,这个值就是种子度量值 。
根据上图 5 类 LSA 内容展示,我们可以知道外部引入路由的类型为 1 类,此时我们可以通过Area1区域内的 AR7 设备验证我们的猜想。

图中蓝色框图部分得知 AR7 设备到达172.16.0.0网段的开销值=2,代表 AR7 到达 ASBR 设备 AR2 的开销值=2,根据 1 类外部路由的计算方式可得知,AR7 到达外部网段8.8.8.8的开销值=到达ASBR的开销值+种子度量值=2+1=3,也就是图中红框部分显示的cost=3。
5.6.6 类型 4:Sum-Asbr
由区域边界路由器(ABR)产生,用于向除 ASBR 所在区域之外的其他区域,宣告自治系统边界路由器(ASBR)的位置 。当 ASBR 将外部路由引入到 OSPF 自治系统时,其他区域的路由器需要知道 ASBR 的位置,才能通过它访问外部网络。
[R1]dis ospf lsdb asbr 10.0.0.2

5.6.7 类型 7 :NSSA
类型 7 会在后文特殊区域:非完全末梢区域 NSSA 中单独讲解。
六.OSPF 路由优化
特殊区域作为OSPF减少LSA的更新手段之一。
🕤6.1 特殊区域
6.1.1 末梢区域:Stub
OSPF Stub区域中存在一种路由优化的方式即该区域不允许出现 4 类 LSA 和 5 类 LSA。在这个配置任务中,我们重点是对 Area 2 进行配置,实现 Area 2 与其它区域之间的通信,并观察Stub区域中的LSA。
配置过程:
在 AR4 和 AR5 上更改 Area 2 为 Stub区域:
[R4-ospf-10-area-0.0.0.2]stub
[R5-ospf-10-area-0.0.0.2]stub
等待 AR4 和 AR5 重新建立邻居关系,我们再次查看 AR5 的链路状态数据库:

根据 Stub区域的定义,ABR不会将 4 类 和 5 类 LSA通告到 Stub 区域(Area 2),但是它会将 3 类 LSA 通告到 Stub 区域,并且产生一个新的 3 类 LSA ,将一条默认路由通告到Stub区域中,如红框部分所示。

6.1.2 完全末梢区域
对于单一 ABR 的非骨干区域来说,一条默认路由就可以满足这个区域的通信需求,完全末梢区域会在末梢区域拒绝接收 4 类 和 5 类 LSA的基础上进一步拒绝接收 3 类 LSA,只会生成一条默认的 3 类 缺省路由。
[R4-ospf-10-area-0.0.0.2]stub no-summary
[R5-ospf-10-area-0.0.0.2]stub no-summary
配置完成后查看 AR5 的 OSPF链路状态数据库,此时中剩下一条 3 类缺省LSA

在AR5上查看OSPF路由表

6.1.3 非完全末梢区域:NSSA
与 OSPF Stub 区域类似,NSSA 区域中不允许出现 4 类 LSA 和 5 类 LSA。但与 Stub 区域不同的是,NSSA 区域可以引入外部路由,在NSSA区域中,引入的外部路由会以 7 类 LSA 的形式出现。
注: Stub 区域适用于不需要通过配置的区域引入外部路由的情况,NSSA 区域适用于需要通过配置的区域引入外部路由进而向其它区域泛洪 5 类 和 4 类 LSA 的情况(参考下面的案例,需要通过Area3 区域内的 R6 设备引入外部路由)。
为了更好的效果演示,我们需要在路由器 AR6 上引入外部路由 6.6.6.6/32,我们使用如下方法引入外部路由:
[R6]ip route-static 6.6.6.6 255.255.255.255 null 0
[R6]ospf 10
[R6-ospf-10]import-route static type 1
在 ASBR AR6 上成功引入外部路由后,我们可以在其它 OSPF 区域中的路由器上观察这条 OSPF 路由,下面以 AR1 为例:

接着,我们将 Area3 更改为 NSSA 区域,并观察 Area 3 以及其它区域的 LSA 变化为了将OSPF Area 3 更改为 NSSA 区域,我们需要做如下配置:
[R3-ospf-10-area-0.0.0.3]nssa
[R6-ospf-10-area-0.0.0.3]nssa
等待 AR3 与 AR6 重新建立 OSPF 邻居关系后,我们再次查看 AR6 的 LSDB ,如下所示:

根据 NSSA 区域定义, NSSA 区域不存在 4 类 和 5 类 LSA ,ASBR AR6 所引入的外部路由(6.6.6.6)以 7 类 LSA 的形式存在。 接着,查看 AR6 的 OSPF 路由表,此时 AR6 中没有任何 ASE(外部路由),多了一条 NSSA 路由(0.0.0.0/0),如下所示:

路由器 AR3 作为 ABR ,在将 NSSA 区域中的外部路由通告到其它区域之前,会将 NSSA 区域中的 7 类 LSA 转换为 5 类 LSA, 下面,我们来查看下 7 类 LSA 的具体信息:

我们可以在ABR AR3 上使用如下命令查看 AR3 的身份信息:
[R3]dis ospf brief

红框部分字段显示了 AR3 当前身份:AREA AS NSSA ,也就是说 AR3 作为 ABR,ASBR,并且 AR3 有接口属于 NSSA 区域。AR3的身份中还包含了 ASBR ,这是因为 AR3 作为 NSSA 区域的 ABR ,会将 7 类 LSA 转换为 5 类 LSA,并将这个 5 类 LSA 通告到其它 OSPF 区域中,以此通告外部路由。

继续在其它路由器 AR1 上观察与 6.6.6.6 相关的 LSA:

从图中红框的部分展示结果可见,该条 5 类 LSA 通告了 6.6.6.6 这条外部路由,进一步验证了 AR3 已经将 7 类 LSA 转换为 5 类 LSA,并将其通告到其它区域中。
6.1.4 完全的非完全末梢区域
我们可以进一步缩小 NSSA 区域内路由器的路由表,将 NSSA 区域更改为 Totally NSSA 区域,也就是说,ABR 只会向 Totally NSSA 区域中通告一条自己生成的默认路由,并隐藏其它区域的 OSPF 路由。
[R3-ospf-10-area-0.0.0.3]nssa no-summary
[R6-ospf-10-area-0.0.0.3]nssa no-summary
重新建立邻居后,我们再次查看 AR6 的 LSDB,如下所示:

我们可以对比之前的 AR6 链路状态数据库,可以发现当前 AR6 上所有的 3 类 LSA 全部消失,只剩下一个默认的 3 类 缺省LSA,AR3 不再向 NSSA 区域通告其它 3 类 LSA,同时会生成一条 7 类 缺省 LSA。

🕤6.2 路由汇总
6.2.1 域间汇总
域间汇总是指区域边界路由器(ABR)将一个区域内的路由信息进行汇总后,再通告到其他区域 。ABR 基于某个区域的 1 类(路由器链路状态通告,LSA1 )和 2 类(网络链路状态通告,LSA2 )LSA 计算出最佳路由,然后在向其他区域共享这些路由信息时,把多条具体的路由汇总成一条或几条汇总路由进行传递

为了演示效果,我们在 AR7 设备上手动创建两个演示环回接口分别为192.168.1.0/24 和192.168.2.0/24,创建完成后通过 OSPF 协议发布后,先查看下 ABR AR1 的 LSDB ,如下:

根据图中链路状态数据库展示,我们刚刚新创建的演示环回接口的路由信息被 ABR 设备以 3类 LSA 的形式泛洪到区域 Area0中,下面我们进行域间汇总的配置,例如,想要汇总 Area1 中的路由信息,就进入到 Area1中进行配置。
[R1-ospf-10-area-0.0.0.1]abr-summary 192.168.0.0 255.255.252.0

我们在进行域间汇总之后,对比 ABR 设备的链路状态数据库可见,原有的两条 LSA 被汇总成为了一条。
6.2.2 域外汇总
和域间汇总演示配置一致,我们先在 AR9 上创建两个演示环回接口:192.168.3.0/24 和 192.168.4.0/24,创建完之后在 ASBR 设备 AR2上引入外部路由。

我们按照下面的配置,将外部路由进行引入,之后查看下:
# ASBR 设备上先配置静态路由
[R2]ip route-static 192.168.3.0 24 172.16.4.8
[R2]ip route-static 192.168.4.0 24 172.16.4.8
# ASBR 设备引入外部路由
[R2-ospf-10]import-route static type 2

根据上图可以发现,ASBR设备已经将外部路由引入到,下面我们进行域外汇总,并验证结果:
[R2-ospf-10]asbr-summary 192.168.0.0 255.255.248.0

七.OSPF不规则区域
🕤7.1 远离骨干的非骨干区域
在 OSPF协议中,区域分为骨干区域(Area 0 )和非骨干区域 。远离骨干的非骨干区域,指未与骨干区域(Area 0)直接相连的非骨干区域,是一种不规则区域。

图中 Area 4 是远离骨干的非骨干区域。正常情况下,非骨干区域应与骨干区域直接相连,通过区域边界路由器(ABR)与骨干区域交互路由信息 。但在此图中,Area 4 没有直接连接到骨干区域 Area 0 。
首先将 Area 3 区域的OSPF配置完成,接着查看 AR7 和 AR1 的链路状态数据库,如下所示

分析 R1 链路状态数据库,发现 R1 设备并未收到来自 Area4 区域 AR13 设备通告的LSA ,下面接着分析 R7 设备的链路状态数据库,如下所示:

此时看见 R7 链路状态数据库中存在 Area 4 区域通告的 LSA ,为何 AR4 能收到 AR13 的 LSA信息,而 AR1 收不到呢?原因是:Area 4 属于不规则区域,带来的通信障碍导致 AR1 获取不到任何 LSA 信息。
7.1.2 虚链路技术
虚链路是在两台 ABR(区域边界路由器)之间,通过将骨干区域(Area 0)与远离骨干的非骨干区域(Area 5 )之间的非骨干区域(Area 1)在逻辑上虚拟成骨干区域的一部分。

#在需要 Area 1 区域中配置 ASBR 设备(AR7)寻找 ABR 设备(AR1)作为保证人
[R7]ospf 10
[R7-ospf-10]area 1
[R7-ospf-10-area-0.0.0.1]vlink-peer 10.0.0.1
# AR1 同意作为担保人
[R1]ospf 10
[R1-ospf-10]area 1
[R1-ospf-10-area-0.0.0.1]vlink-peer 10.0.0.7

当完成虚链路的配置,等待邻居关系的重新建立之后,重新查看 AR1 的链路状态数据库可以发现,AR1 在 区域 Area 1 中收到了通告172.16.5.0 网段的路由信息的 3 类 LSA。


与未配置虚链路时 AR7 链路状态数据库展示图对比,在配置完虚链路之后,原先作为ASBR 设备的 AR7 在逻辑上被虚拟成了 ABR 也就同时拥有了 3 个区域的 LSA 信息。
8.1.2 多进程双向重发布
在一台设备上若同时启动多个 OSPF 进程,不同的进程将宣告不同的接口,拥有各自的数据库,且不共享。仅将计算所得路由加载于同一张路由表中,再利用 ASBR 将 LSA(链路状态通告)翻译并传输,使得各个进程之间的网络能够有效地互通。
- 多进程:在一台设备上同时启动多个 OSPF 进程,每个进程拥有独立的数据包、数据库,数据库间不共享,仅将计算所得的路由加载于同一张路由表中。不同的 OSPF 进程维护各自独立的链路状态数据库(LSDB)和路由表,就好像是不同的路由协议在运行27。
- 双向重发布:在运行了不同协议或不同进程的边界设备(ASBR,自治系统边界路由器)上,将一种协议或进程按照另一种协议或进程的规则发布出去,实现路由信息在不同进程之间的双向传递1。

我们先在 ASBR 设备上创建一个新的 ospf 进程 20 用来宣告 Area 4 区域的路由信息。
[R7]ospf 20 router-id 10.0.0.7
[R7-ospf-20]area 4
[R7-ospf-20-area-0.0.0.4]network 172.16.5.0 0.0.0.255
接着,我们在 ASBR 设备 AR7 上将进程 20 与进程 30 之间的路由信息进行双向发布。
[R7]ospf 10
[R7-ospf-10]import-route ospf 20
[R7]ospf 20
[R7-ospf-20]import-route ospf 10

多进程双向重发布配置完成后,AR1 设备的链路状态数据库在 Area1区域收到了通告172.16.5.0网段路由信息的 5 类 LSA
注:虚链路技术是将非骨干区域虚拟成骨干区域,从逻辑上将远离骨干的非骨干区域虚拟成非骨干区域,因此会收到通告路由信息的 3 类 LSA。
拓展:使用重发布技术引入的路由优先级默认为150,下面分析下原因。
拓扑图中 AR14 设备上存在一个演示网段192.168.1.0,ASBR设备作为图中的 ASBR 设备会将演示网段的路由信息沿着绿色箭头方向重发布到 RIP 区域同时沿着该方向传递,同时会沿着紫色箭头方向重发布演示网段信息到 OSPF 区域并沿着该方向传递。
同样作为 ASBR 设备的 AR15 会从 RIP 区域 以及 OSPF 区域收到演示网段的路由信息,此时,由于 OSPF 协议的路由优先级默认为10 > RIP 协议的路由优先级100,因此优先会将OSPF区域收到路由信息重发布到 RIP 区域,如此一来,AR12会存在两条去往演示网段的路由信息,造成负载均衡。
基于上述情况,重发布技术将引入的路由优先级默认修改为150,该优先级大于所有IGP协议的优先级,从而解决路由回馈的问题。