四张表,五种报文,六类LSA:在OSPF单区域中有两种LSA,在多区域中有四种LSA;123457
七种邻居之间的状态
一、RIP 的不足
RIP 协议在实际应用中存在明显局限,具体如下:
不足类型 | 具体表现 |
---|---|
路径评估不合理 | 以跳数作为度量值,可能选择非最优路径。例如,RTA 到 10.2.0.0 网络,跳数为 1 的 64Kbps 链路传输需 32 秒,而跳数为 2 的 2Mbps 链路仅需 3 秒,但 RIP 会优先选择跳数少的链路 |
网络尺度受限 | 最大跳数为 16,超过则认为网络不可达,限制了网络直径 |
收敛速度慢 | 采用定期更新(默认 30 秒),失效计时器 180 秒,清除计时器 240 秒,拓扑变化后收敛延迟大 |
资源消耗高 | 定期发送全部路由表,大网络中带宽浪费严重。例如,两台各有 1000 条路由的路由器,单向更新至少消耗 160Kb 带宽 |
二、OSPF的定义与特点
-
OSPF英文全称Open Shortest Path First (开放式最短路径优先)
-
OSPF是IETF开发的一种链路状态路由协议,使用基于带宽的度量值;
-
使用 SPF 算法,从算法上保证了无路由环路;
-
通过邻居关系维护路由,减少定期更新的带宽消耗;
-
收敛速度快,适用于大中型网络;
-
报文封装于 IP,协议号 89,使用组播地址 224.0.0.5(所有 OSPF 路由器)和 224.0.0.6(DR/BDR)。
三、OSPF的工作原理
(一)协议模型与核心流程
1.OSPF基本协议模型
OSPF 的工作遵循 "建立邻居→发起 LSA→洪泛同步 LSDB→SPF 计算路由" 的流程,具体如下:
-
建立邻居:通过 Hello 报文发现和维护邻居,形成邻居表;
-
发起 LSA:描述直连网段及拓扑,生成链路状态通告(LSA),存入本地链路状态数据库(LSDB);
-
洪泛同步:LSA 在区域内洪泛,确保同一区域内所有路由器的 LSDB 一致;
-
计算路由:以自身 LSA 为根进行 SPF 计算,生成最优路由加入路由表。

2.OSPF四张表

(二)OSPF基本概念
1.Router ID(RID):
-
32 位无符号整数,唯一标识自治系统内的路由器;
-
可手工配置,或自动选取最大 Loopback(回环) 接口 IP(无则选最大 UP 接口 IP)。推荐手工配置
2.链路状态---LS
-
包括直连网段状态(网段、掩码、接口开销);
-
直连拓扑状态(邻居 RID、连接接口、开销);
-
接口开销 = 参考带宽(默认 100Mbps)/ 接口带宽,Loopback 接口默认开销为 1。

3.链路状态通告---LSA
-
-- 按一定格式封装后的链路状态信息。
-
每30分钟更新一次。
4.链路状态数据库---LSDB
-
-- 每台OSPF路由器都有一个LSDB,用于存储LSA。
-
-- 同一个区域中的OSPF路由器的LSDB一致。
-
LSA封装在LSU报文中,在区域内洪泛,最终达到区域内LSDB一致。
-
LSA在洪泛过程中内容保持不变。

5.开销---SPF
-
以自身 LSA 1 为根计算最优路径,各路由器独立计算,互不影响;
-
路由开销为到达目标网段的出接口开销和。
-
接口开销 = 参考带宽(默认 100Mbps)/ 接口带宽,Loopback 接口默认开销为 1。

6.OSPF网络类型
-
Broadcast广播多路访问 :以太网接口 (局域网中使用)
-
NBMA(Non-Broadcast Multi-Access,非广播多点访问网络):帧中继接口
-
P2MP(Point-to-MultiPoint,点到多点)
-
P2P(Point-to-Point,点到点 ):PPP HDLC接口 (广域网中使用)
-
一条链路上的网络类型需要相同
-
在一个广播多路访问网络中,网络内所有设备的接口必须属于同一网络号(即处于同一网段)。
7.OSPF的报文
OSPF 报文类型 | 作用 |
---|---|
Hello(除此之外都有序号) | 建立并维护邻居关系 |
Database Description(DD) | 汇总数据库内容(仅 LSA 头部) |
Link State Request(LSR) | 请求缺失或更新的链路状态信息 |
Link State Update(LSU) | 链路状态更新信息 (LSA 头部 + 内容) |
Link State Acknowledge(LSAck) | 确认 LSU 报文 |
(1)包含在各种报文中的 LSA 信息
Packet 类型 | LSA 信息 |
---|---|
Database Description | LSA 头部信息,包括 LS Type、LS ID、Advertising Router 和 LS Sequence Number |
LS Request | 只有 LS Type、LS ID 和 Advertising Router 简化 LSA 头部 |
LS Update | 完整的 LSA 信息,包括 LSA 头部和具体的链路状态信息 |
LS Ack | LSA 头部信息,包括 LS Type、LS ID、Advertising Router 和 LS Sequence Number |
(2)OSPF报文的目的地址
- OSPF报文直接封装在IP报文中,协议号为89

(3)LSA 报文头部解释

LSA 报文头部为 32Bits 结构,各字段含义如下:
字段 | 说明 |
---|---|
LS age | 用于计时,LSA 自发起时开始递增,到达最大老化时间(3600 秒)后从 LSDB 中清除 |
Options | 包含一些可选参数,用于标识 LSA 的特性和支持的功能等 |
LS type | 标识 LSA 的类型,如 LSA 1 为路由器链路状态通告,LSA 2 为传送网络链路状态通告等 |
Link State ID | 链路状态 ID,根据 LSA 类型的不同,其表示的含义有所差异,用于唯一标识特定的链路状态信息 |
Advertising Router | 发起该 LSA 的路由器的 Router ID,标识 LSA 的来源 |
LS sequence number | 序列号,用于判断 LSA 的新旧,序列号越大表示 LSA 越新,帮助接收方确定是否需要更新本地 LSDB |
LS checksum | 校验和,用于检验 LSA 在传输过程中是否发生错误,确保数据的完整性 |
Length | 表示 LSA 的长度,包括头部和具体的链路状态信息的总长度 |
(三)OSPF的基本概念(续)
8.维持邻居关系(点对点)
-
邻居之间通过交换Hello报文,确认邻居是否工作正常
-
周期性发送Hello报文,以30s为周期,过期时间为四个周期120s
-
如果在一定的时间间隔内,收不到邻居发来的Hello报文,就认为邻居已经失效,从邻居表中删除。
9.维持邻居关系(广播多路访问网络)
-
周期性发送Hello报文,以10s为周期,过期时间为四个周期40s
-
采用DR/BDR建立邻接关系,可以降低需要维护的邻接关系数量
10.DR/BDR 选举(广播多路访问网络):
在拓扑建立完成之后,发送链路通告之前
-
目的:减少邻接关系数量(原需 n (n-1)/2,采用 DR/BDR 后大幅减少为R = 2 (n-2) + 1);
-
首先比较Hello报文中携带的优先级:优先级最高的被选举为DR,优先级次高的被选举为BDR;优先级为0的不参与选举
-
优先级一致的情况下,比较Router IDRouter ID越大越优先
-
保持稳定原则:当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选举的DR/BDR成为新的DR/BDR。
11.邻居关系无法建立原因总结
参数 | 配置要点 |
---|---|
router id | 每台 OSPF 路由器的 router id 必须唯一 |
area id | 同一网段的所有端口应当配置在同一区域内 |
Interface network-type | 同一网络接口的类型要相同,即 hello 时间与 hellodown 时间双方要一致 |
network mask | 除了点到点网络之外,同一网段的所有端口应当配置相同的掩码 |
authentication type | 同一区域的验证类型必须一致 |
authentication data | 同一网段的验证码必须一致 |
extern option | 配置 stub 区域或者 NSSA 时,区域内的所有路由器都需要指定 stub 特性或者 NSSA 特性 |
peer | NBMA 网络上的邻居需要手动指定 |
12.邻居关系
-
DOWN、Init(初始化)、two-way(双方都知道对方为邻居),ExStart(预启动)和Exchange(已确认主从),Loading(加载)和Full(更新完毕)
-
DRother路由器停留在 two-way 状态
1.DOWN、Init(初始化)、two-way

2.ExStart(预启动)和Exchange(已确认主从)

I:双方处于初始化状态
M:说明后面还有更多的DD报文
MS:参与主从的选举
3.Loading和Full

-
OSPF协议包具备超时重传机制
-
OSPF协议包具备序列号,对重复包不做处理;除Hello报文
13.泛洪新LSA
当有新的LSA生成或收到时,这条新的LSA应当被泛洪。泛洪新的LSA时,只需要使用LS Update报文和LS Ack报文。
-
当RTA有新的LSA要泛洪时,RTA向RTB发送一个LS Update报文,在 这个报文里包含这条LSA。
-
收到新的LSA以后,RTB向RTA泛洪一个LS Ack报文进行确认。
-
泛洪新的LSA不影响邻居状态
-
在广播和NBMA网络中,链路状态发生变化时,先通知DR和BDR, 主要是通过DR路由器发送更新报文。

14.LSA 洪泛与老化
-
LSA不老化的缺点:当网络长时间中断,故障网络中的设备发起 的LSA长时间无效,但仍然存储在LSDB中,浪费设备内存。
-
洪泛机制:新 LSA 生成后,通过 LSU 报文洪泛,接收方用 LSAck 确认;收到 LSA 时,比较序列号,序列号大则更新 LSDB 并转发;
-
老化机制:LSA 自发起计时,最大老化时间 3600 秒,超时从 LSDB 清除;每 30 分钟(老化时间一半)重新发起 LSA,序列号 + 1,老化时间重置为 0。

四、OSPF多区域
(一)单区域 OSPF 的缺点
单区域 OSPF 虽然配置简单,适用于小型网络,但在网络规模扩大时存在明显局限性,主要体现在以下几个方面:
-
链路状态数据库(LSDB)庞大:单区域内所有路由器的 LSDB 完全一致,随着网络中路由器数量、网段数量的增加,LSDB 会急剧膨胀,占用大量设备内存资源,增加存储压力。
-
SPF 计算效率低:当网络规模大、拓扑复杂时,SPF 计算会变得非常耗时,占用大量 CPU 资源,影响路由器处理业务的效率。
-
收敛速度变慢:网络拓扑发生变化时(如链路故障、新增设备),相关的链路状态通告(LSA)需要在整个区域内泛洪。单区域范围越大,LSA 泛洪的路径越长、涉及的设备越多,导致全网路由收敛的时间延长,影响网络稳定性。
-
缺乏故障隔离能力:单区域内任何一处拓扑变化都会引发全网 LSA 泛洪和 SPF 重新计算,局部故障可能扩散至整个区域,导致网络波动范围扩大,增加故障排查难度。
-
不适应大规模网络:对于包含大量路由器和复杂拓扑的大中型网络,单区域无法通过区域划分分担路由计算和管理压力,难以满足网络扩展性和可维护性需求。
(二)OSPF 区域划分
1.基本概念
-
OSPF 区域:将 OSPF 路由域划分为多个区域,用 Area ID(32 位,数字或 IP 表示)标识;
-
骨干区域(Area 0):所有区域必须连接到骨干区域,确保路由互通。防环路的产生
2.路由器角色
-
区域内部路由器:仅属于一个区域,所有接口在同一区域;
-
骨干路由器:至少有一个接口在 Area 0;
-
区域边界路由器(ABR):连接多个区域(至少含 Area 0),负责区域间路由传递;
-
自治系统边界路由器(ASBR):连接 OSPF 路由域与其他自治系统,引入外部路由。