XYCOVO CONSOLE KURISU · WEB 渗透 / AI 辅助攻防 ONLINE
#008 · 2025-06-15✓ PASS

OSPF 进阶

深入掌握 OSPF 高级核心:六种 LSA 类型详解、五种报文格式、特殊区域优化、不规则区域解决方案与选路原则。
网络ospflsa路由协议AUTHOR: KURISU

OSPF(Open Shortest Path First)是典型的链路状态型路由协议。本文聚焦 OSPF 的高级核心内容——LSA 类型体系、报文交互机制、网络优化及不规则区域解决方案。


一、OSPF LSA 详解

1.1 LSA 与 LSDB

链路状态(Link State) 是每台路由器对自己激活了 OSPF 协议的接口信息的描述。路由器将网络中所有洪泛的链路状态信息收集起来,存入 LSDB(链路状态数据库) 中。所有路由器的 LSDB 在同一个区域内是相同的。每台路由器独立运行 SPF 算法,以自己为根节点,得到一棵无环的最短路径树。

在 OSPFv2 中,LSA 共有 11 种类型,本文重点学习最核心的 6 种。

1.2 LSA 头部格式

LSA 头部共 20 字节,每个字段含义如下:

字段说明
链路状态老化时间 (LS Age)LSA 的生存时间,初始为 0,最大 3600 秒
链路状态类型 (LS Type)LSA 的类型编号
链路状态 ID (Link State ID)根据类型不同含义不同
通告路由器 (Advertising Router)产生该 LSA 的路由器的 Router-ID
链路状态序列号 (LS Sequence Number)初始 0x80000001,每次更新 +1,终点 0x7FFFFFFF
链路状态校验和 (Checksum)用于校验 LSA 完整性
长度 (Length)LSA 的总字节长度

“链路状态类型”、“链路状态 ID”、“通告路由器” 三个字段唯一标识了一个 LSA(LSA 三元组)。

1.3 判断 LSA 新旧关系

  1. 序列号越大,LSA 越新
  2. 序列号相同,校验和更大的更新
  3. 校验和也相同,则比较老化时间:
    • 若某 LSA 老化时间为 3600 秒,则无条件加载
    • 若差值大于 15 分钟,老化时间小的更新
    • 若差值小于 15 分钟,则两条相同

周期链路刷新机制:每 30 分钟向外通告本地产生的 LSA 信息。当老化时间到达 1800 秒时,始发路由器重新创建并向外洪泛。

1.4 Type-1 LSA:Router LSA

  • 产生者:每台运行 OSPF 的路由器
  • 传播范围:区域内
  • 携带信息:路由器直连接口状况和接口 Cost
  • LS ID:通告者的 Router-ID

每台路由器都会产生 Type-1 LSA,描述自己的”家门口的状况”。如果路由器有多个接口属于不同区域,将为每个区域单独产生一个 Type-1 LSA

关键标志位:

比特位含义
V 位 (Virtual Link Endpoint)该路由器为虚链路端点
E 位 (External)该路由器为 ASBR
B 位 (Border)该路由器为 ABR(区域边界路由器)

Router LSA 中通过 Link(链路) 来描述直连接口,每个 Link 包含:

参数说明
链路类型 (Link Type)P2P、TransNet、StubNet、Virtual Link
链路 ID (Link ID)根据链路类型不同含义不同
链路数据 (Link Data)根据链路类型不同含义不同
度量值 (Metric)Cost 值

1.5 Type-2 LSA:Network LSA

  • 产生者:MA 网络中的 DR
  • 传播范围:区域内
  • 携带信息:MA 网络的掩码及接入该网络的所有路由器的 Router-ID
  • LS ID:DR 接口的 IP 地址

在 MA 网络中,DR 负责产生 Type-2 LSA,列出连接到该 MA 网络的所有路由器,补充 Type-1 LSA 无法描述的 MA 网络掩码信息。Type-1 LSA + Type-2 LSA 共同完整描述了区域内部拓扑

1.6 Type-3 LSA:Network Summary LSA

  • 产生者:ABR(区域边界路由器)
  • 传播范围:ABR 相邻的单区域
  • 携带信息:域间路由信息(目标网段和开销)
  • LS ID:路由信息的目标网络号

3 类 LSA 传递的是域间路由信息。关键点:

  • 传递方式类似距离矢量型协议,通告者就是到达目标网段的下一跳
  • 跨区域传递时需要通告者转换(由下一个 ABR 重新产生)
  • 需要通过 1 类和 2 类 LSA 计算拓扑来寻找通告者位置

1.7 Type-5 LSA:AS External LSA

  • 产生者:ASBR
  • 传播范围:整个 OSPF 域(除特殊区域外)
  • 携带信息:域外路由信息
  • LS ID:外部路由的目标网络号

5 类 LSA 传递域外路由信息。通过重发布(import-route)将其他协议路由导入 OSPF 网络。

种⼦度量值(seed-metric):路由导入后,舍弃原网络开销,赋予一个规定值。OSPF 默认种⼦度量值为 1,可在重发布时修改。

度量值类型

类型E 位计算方式
Metric-Type-1E=0本地到达 ASBR 开销 + 种子度量值
Metric-Type-2E=1(默认)所有设备都等于种子度量值

转发地址(Forwarding Address, FA):当 FA 不为 0.0.0.0 时,流量发往 FA 而非通告 ASBR,用于规避次优路径问题。

1.8 Type-4 LSA:ASBR Summary LSA

  • 产生者:与 ASBR 同区域的 ABR
  • 传播范围:除去 ASBR 所在区域的单区域
  • 携带信息:ASBR 的位置信息
  • LS ID:ASBR 的 Router-ID

4 类 LSA 格式与 3 类 LSA 一致,但通告的是 ASBR 的 RID 而非目标网段,掩码为全 0。用于其他区域寻找 ASBR 的位置。

1.9 Type-7 LSA:NSSA External LSA

  • 产生者:NSSA 区域的 ASBR
  • 传播范围:NSSA 区域内
  • 携带信息:域外路由信息(与 5 类格式一致)
  • LS ID:域外路由的目标网络号

7 类 LSA 是 5 类 LSA 在 NSSA 区域中的”马甲”,离开 NSSA 区域后由 ABR 转换成 5 类 LSA。路由标记为 O_NSSA,优先级 150。

7 类 LSA 的 FA 地址默认使用通告者(ASBR)的环回接口地址。

1.10 LSA 总结表

LSA 类型名称LS ID通告者传播范围携带信息
Type-1Router通告者 RID区域内每台路由器单区域直连拓扑
Type-2NetworkDR 接口 IPDR单区域MA 网络拓扑补充
Type-3Sum-Net目标网络号ABR(跨区转换)ABR 相邻单区域域间路由
Type-4Sum-AsbrASBR 的 RIDABR(跨区转换)除 ASBR 所在区域ASBR 位置
Type-5External域外目标网络号ASBR整个 OSPF 域域外路由
Type-7NSSA域外目标网络号ASBR(NSSA 内)NSSA 区域域外路由(NSSA)

二、OSPF 报文格式

2.1 OSPF 协议概述

OSPF 是跨层封装的协议,没有四层封装,报文内容直接包含在 IP 协议的数据内容中。OSPF 的协议号是 89

OSPF 报文共分为五种:HelloDBDLSRLSULSAck

2.2 OSPF 报文头部

五种 OSPF 报文共有的参数信息,24 字节:

字段说明
VersionOSPFv2 恒为 2
Type1-Hello, 2-DD, 3-LSR, 4-LSU, 5-LSAck
Packet Length整个报文长度(字节数)
Router ID路由器的 OSPF Router-ID
Area ID所属区域 ID(32 bit)
Checksum校验和
Authentication Type认证类型
Authentication Data认证数据

2.3 Hello 报文

Hello 报文完成周期性的发现、建立以及保活邻居关系,包括 DR 和 BDR 的选举。

限制邻居关系建立的参数

  1. 子网掩码(MA 网络中需一致,华为特有检查)
  2. Hello 间隔(缺省 P2P/Broadcast 为 10s,NBMA/P2MP 为 30s)
  3. Dead 间隔(缺省为 Hello 间隔的 4 倍)
  4. Options 字段(特殊区域标记)
  5. 认证

DR/BDR 选举:通过 Router Priority 字段决定,缺省为 1。优先级为 0 则不参与选举。

2.4 DBD 报文(DD)

数据库描述报文,三个作用:

  1. 使用未携带数据的 DBD 包进行主从关系选举
  2. 使用携带数据的 DBD 包进行目录信息共享(LSA 头部)
  3. 进行隐式确认

关键字段:

字段说明
I 位 (Initial)主从选举时为 1,选举完成后置 0
M 位 (More)后续还有 DD 报文
MS 位 (Master)Master 置 1,Slave 置 0
DD Sequence Number由 Master 决定序列号

2.5 LSR 报文

链路状态请求报文,基于 DBD 包请求本地未知的 LSA 信息。通过 LSA 三元组(链路状态类型、链路状态 ID、通告路由器)唯一标识请求的 LSA。

2.6 LSU 报文

链路状态更新报文,真正携带 LSA 信息的数据包。一个 LSU 报文可包含多个 LSA。

MA 网络中组播地址:

  • 224.0.0.6:非 DR/BDR 向 DR、BDR 发送 LSU
  • 224.0.0.5:DR 向所有 OSPF 路由器泛洪 LSU

2.7 LSAck 报文

链路状态确认报文,完成显性确认工作。包含所确认的 LSA 的头部。

2.8 OSPF 接口网络类型

网络类型OSPF 工作方式HelloDeadDR/BDR
Broadcast(以太网)Broadcast10s40s需要选举
P2P(PPP、HDLC)P2P10s40s不需要
环回接口P2P(华为)--不需要
P2MPP2MP30s120s不需要
NBMA(帧中继)NBMA30s120s需要选举

互通接口的网络类型必须一致,否则可能导致路由计算错误。


三、OSPF 优化

3.1 路由汇总

OSPF 的汇总称为区域汇总,分为两类:

域间路由汇总:在 ABR 上对 3 类 LSA 进行汇总。

[r1-ospf-1-area-0.0.0.2]abr-summary 192.168.0.0 255.255.252.0

域间路由汇总只能汇总 ABR 自身通过 1 类、2 类 LSA 学习到的路由。

域外路由汇总:在 ASBR 上对 5 类/7 类 LSA 进行汇总。

[r4-ospf-1]asbr-summary 172.16.0.0 255.255.252.0

汇总后开销:

  • Type 2:等于明细路由最大开销值 +1
  • Type 1:等于明细路由最大开销值

3.2 特殊区域

OSPF 特殊区域分为两大类、四小类:

第一大类条件

  1. 不能是骨干区域
  2. 不能存在虚链路
  3. 不能存在 ASBR

末梢区域(Stub):拒绝 4 类和 5 类 LSA,自动生成指向骨干的 3 类缺省路由。

[r5-ospf-1-area-0.0.0.2]stub  # 区域内所有设备都需配置

完全末梢区域(Totally Stub):在 Stub 基础上进一步拒绝 3 类 LSA,仅保留 3 类缺省。

[r1-ospf-1-area-0.0.0.2]stub no-summary  # 仅 ABR 配置

第二大类条件

  1. 不能是骨干区域
  2. 不能存在虚链路
  3. 存在 ASBR

非完全末梢区域(NSSA):拒绝 4 类和 5 类 LSA,域外路由以 7 类 LSA 形式传递,自动生成 7 类缺省。

[r4-ospf-1-area-0.0.0.1]nssa  # 区域内所有设备都需配置

完全 NSSA(Totally NSSA):在 NSSA 基础上进一步拒绝 3 类 LSA,产生 3 类缺省。

[r3-ospf-1-area-0.0.0.1]nssa no-summary  # 仅 ABR 配置

3.3 各区域允许的 LSA 类型

区域类型1 类2 类3 类4 类5 类7 类
普通区域
Stub
Totally Stub仅缺省
NSSA
Totally NSSA仅缺省

四、不规则区域解决方案

4.1 问题场景

OSPF 要求所有非骨干区域必须与 Area 0 直接相连,骨干区域唯一且不能被分割。实际部署中可能出现:

  1. 远离骨干的非骨干区域
  2. 不连续的骨干区域

虚链路是专门解决 OSPF 不规则区域的技术,是一种虚拟的、逻辑的链路。

配置方法:

[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3
[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2

注意

  • 虚链路只跨越一个非骨干区域
  • 虚链路建立的邻居关系不在 OSPF 邻居表中存放
  • 基于开销值小的物理链路建立,本地存在物理链路则虚链路永不中断
  • Vlink 所在的非骨干区域不能传递聚合路由(避免环路)

4.3 多进程双向重发布

这是解决不规则区域最常用的方式。在 ASBR 上将不同 OSPF 进程的路由信息互相导入。

[r3]ospf 1
[r3-ospf-1]import-route ospf 2

[r3]ospf 2
[r3-ospf-2]import-route ospf 1

经过双向重发布后全网设备均能学习到所有 OSPF 路由,不存在选路不佳和环路问题。


五、OSPF 选路原则

5.1 路由优先级

OSPF 内部路由默认优先级 10;域外路由(O_ASE / O_NSSA)默认优先级 150

5.2 选路规则

  1. 域内优于域间:1 类/2 类 LSA 学习到的 > 3 类 LSA 学习到的(即使开销更大)
  2. 域间优于域外:3 类 LSA > 5 类/7 类 LSA(即使开销更大)
  3. Type 1 永远优于 Type 2
  4. Type 2 选路:先比较种子度量值 → 再比较沿途累加开销
  5. Type 1 选路:比较总开销(种子度量值 + 沿途累加开销)
  6. 5 类和 7 类 LSA 在华为体系中的选路规则相同

5.3 开销值计算

Cost = 参考带宽 / 真实带宽

修改开销值的方法:

# 修改参考带宽(全网需要一致)
[r3-ospf-1]bandwidth-reference 1000

# 直接修改接口开销值(推荐)
[r3-GigabitEthernet0/0/0]ospf cost 1000

六、OSPF 防环机制

6.1 域间防环

  • 要求按星型拓扑部署(所有非骨干区域必须与 Area 0 直连)
  • 区域间水平分割:ABR 不会将从某个区域收到的 3 类 LSA 再注入回该区域
  • ABR 从非骨干区域收到的 3 类 LSA 不能用于区域间路由计算

6.2 域内防环

得益于 SPF(最短路径优先)算法。根据 LSDB 中的 LSA 信息转化为有向图,以本设备为根节点转化为最短路径树(无环树形结构),将路径信息加载到路由表中。


七、拓展配置

7.1 手工认证

# 接口认证
[r5-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456

# 区域认证
[r3-ospf-1-area-0.0.0.0]authentication-mode md5 1 cipher 123456

# 虚链路认证
[r4-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 md5 1 cipher 123456

7.2 加快收敛

# 修改 Hello 时间(死亡时间自动 4 倍匹配)
[r5-GigabitEthernet0/0/0]ospf timer hello 5

# 修改死亡时间
[r1-GigabitEthernet0/0/0]ospf timer dead 20

7.3 缺省路由

缺省类型产生方式标记优先级
3 类缺省特殊区域自动生成OSPF10
5 类缺省default-route-advertiseO_ASE150
7 类缺省NSSA 区域自动或手动下发O_NSSA150
# 下发 5 类缺省
[r2-ospf-1]default-route-advertise always

# 下发 7 类缺省
[r4-ospf-1-area-0.0.0.1]nssa default-route-advertise

← #007 路由策略…#009 Burp Suite 实战笔记:… →