目录
[1、Hello 报文(发现和维护邻居)](#1、Hello 报文(发现和维护邻居))
一、概念
OSPF(Open Shortest Path First)是一种基于链路状态的内部网关协议(Interior Gateway Protocol,IGP),用于在单个自治系统(Autonomous System,AS)中分发IP路由信息。OSPF由IETF开发,基于网络层运作,采用 IP 协议号 89 ,归类于链路状态路由协议。主要目的是在大型网络中提供更高效的路由选择和更快的收敛速度
五种报文:Hello 报文(发现和维护邻居)、DD报文(数据库描述)、LSR报文(链路状态请求)、LSU报文(链路状态更新)、LSAck报文(链路状态确认)
七个状态:Down(初始状态)、Attempt(尝试状态,仅 NBMA 网络有)、Init(初始化状态)、2 - Way(双向通信状态)、ExStart(预启动状态)、Exchange(交换状态)、Loading(加载状态)、Full(完全邻接状态)
6种LSA类型:Router LSA(类型 1)、Network LSA(类型 2)、Network Summary LSA(类型 3)、ASBR Summary LSA(类型 4)、Autonomous System External LSA(类型 5)、NSSA External LSA(类型 7)
5种路由器类型:内部路由器(Internal Router)、区域边界路由器(Area Border Router,ABR)、骨干路由器(Backbone Router)、自治系统边界路由器(Autonomous System Boundary Router,ASBR)、指定路由器(Designated Router,DR)和备份指定路由器(Backup Designated Router,BDR)
二、特性
1.基于链路状态而非距离矢量 :OSPF通过维护网络的链路状态数据库(LSDB),构建全网拓扑图,并使用Dijkstra算法计算最短路径且天然无环保证。
2.分层设计(区域划分) :骨干区域(连接所有非骨干区域)、普通区域(必须连接到骨干区域)、特殊区域(减少路由表大小和LSA传播范围,适合资源受限的场景。)
3.支持多路径路由 :OSPF可以在多个等价路径间进行负载均衡
4.认证机制 :支持明文和MD5等方式进行路由认证,增强安全性。
5.支持多播地址 :OSPF使用224.0.0.5和224.0.0.6多播地址进行通信。
6.支持多种网络类型 :点对点(Point-to-Point)、广播网络(Broadcast)、非广播多访问网络(NBMA)
7.路由类型的多样性 : 内部路由、区域间路由、外部路由
6.支持IPv4和IPv6:OSPFv2用于IPv4网络,OSPFv3用于IPv6网络,支持新一代协议的需求。
三、工作原理
1、邻居发现与建立

- 发送 Hello 报文:OSPF 路由器会在启用了 OSPF 协议的接口上定期发送 Hello 报文,发送周期通常为 10 秒。通过 Hello 报文,路由器可以发现直连链路上的其他 OSPF 路由器,并建立邻居关系。
- 建立过程中,状态机从down-->Init-->2-way
- 双向通信检查:路由器在收到邻居发送的 Hello 报文后,会检查报文中是否包含自己的标识符。如果发现自己的标识符在对方的 Hello 报文中,就表明这两个路由器之间建立了双向通信链路。
2、链路状态数据库同步

- 交换数据库描述报文(DD):邻居关系建立后,路由器会向邻居发送数据库描述报文,将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器。
- 状态机从Exstart-->Exchange-->Loading
- 请求链路状态更新:收到数据库描述报文后,若路由器发现自己缺少其中某些链路状态项目,则会发送链路状态请求报文。对方收到链路状态请求报文后,会将其所缺少的链路状态项目的详细信息封装在链路状态更新报文(LSU)中发送回去。
- 确认与更新:收到链路状态更新报文后,路由器将这些信息添加到自己的链路状态数据库中,随后发回链路状态确认报文。
- 状态机从Loading-->Full
3、路由计算
- 构建最短路径树:当所有路由器的链路状态数据库达到同步后,每台路由器都会以自己为根,使用 Dijkstra 算法构建一棵最短路径树。这棵树表示了从该路由器到网络中其他各个节点的最短路径。
- 生成路由表:根据最短路径树,路由器可以计算出到达各个目的网络的最优路由,并将这些路由信息添加到路由表中,用于指导数据包的转发。
网络拓扑变化处理
- 检测链路变化:路由器会持续监测其连接的链路状态,当链路状态发生变化时,如链路断开或恢复,路由器会更新自己的链路状态数据库,并向邻接路由器发送链路状态更新报文。
- 洪泛机制:链路状态更新报文会通过洪泛机制在整个 OSPF 区域内扩散,确保每台路由器都能及时了解到网络拓扑的最新状态。其他路由器收到更新报文后,会更新自己的链路状态数据库,并重新进行路由计算,以适应网络拓扑的变化。
四、报文解析
实验拓扑如下

1、Hello 报文(发现和维护邻居)
建立邻居前AR1会基于接口每10秒周期发送OSPF Hello数据包,Hello报文解析如下:
Open Shortest Path First --> 开放最短路径优先
OSPF Header --> OSPF报头
Version: 2 --> 版本:2
Message Type: Hello Packet (1) --> 消息类型:Hello Packet(1)
Packet Length: 44 --> 数据包长度:44
Source OSPF Router: 192.168.1.1 --> 源OSPF路由器:192.168.1.1
Area ID: 0.0.0.0 (Backbone) --> 区域ID:0.0.0.0(主干)
Checksum: 0x794b [correct] --> 校验和:0x794b[正确]
Auth Type: Null (0) --> 身份验证类型:空(0)
Auth Data (none): 0000000000000000 --> 认证数据(无):0000000000000000
OSPF Hello Packet --> OSPF Hello数据包
Network Mask: 255.255.255.0 --> 网络掩码:255.255.255.0
Hello Interval [sec]: 10 --> 问候间隔[秒]:10
Options: 0x02, (E) External Routing --> 选项:0x02,(E)外部路由
Router Priority: 1 --> 路由器优先级:1
Router Dead Interval [sec]: 40 --> 路由器死区间隔[秒]:40
Designated Router: 192.168.1.1 --> 指定路由器:192.168.1.1
Backup Designated Router: 0.0.0.0 --> 备份指定路由器:0.0.0.0
---------------------------------------------------------------------------------
当邻居建立完成后,OSPF Hello数据包会新增一行
Active Neighbor: 192.168.1.2 --> 活动邻居:192.168.1.2
2、DD报文(数据库描述)
192.168.1.2 向 192.168.1.1 发送DD报文
Open Shortest Path First
OSPF Header
OSPF DB Description --> OSPF数据库描述
Interface MTU: 0 --> 接口MTU:0
Options: 0x02, (E) External Routing --> 选项:0x02,(E)外部路由
DB Description: 0x07, (I) Init, (M) More, (MS) Master --> DB描述:0x07,(I)初始化,(M)更多,(MS)主
.... 0... = (R) OOBResync: Not set --> ....0...=(R)OOB同步:未设置
.... .1.. = (I) Init: Set --> ....1..=(I)初始化:设置
.... ..1. = (M) More: Set --> .... ..1.=(M)更多:设置
.... ...1 = (MS) Master: Yes --> 主:是
DD Sequence: 225 --> DD序列:225
192.168.1.1 向 192.168.1.2 回应DD报文
Open Shortest Path First
OSPF Header
OSPF DB Description
Interface MTU: 0
Options: 0x02, (E) External Routing
DB Description: 0x00
.... ...0 = (MS) Master: No --> 主:否
DD Sequence: 225
LSA-type 1 (Router-LSA), len 48 --> LSA类型1(路由器LSA),长度48
.000 0000 0000 1001 = LS Age (seconds): 9 --> .000 0000 1001=LS年龄(秒):9
0... .... .... .... = Do Not Age Flag: 0 --> 0... .... .... .... = 请勿年龄标记:0
Options: 0x02, (E) External Routing --> 选项:0x02,(E)外部路由
LS Type: Router-LSA (1) --> LS类型:路由器LSA(1)
Link State ID: 192.168.1.1 --> 链路状态ID:192.168.1.1
Advertising Router: 192.168.1.1 --> 链路状态ID:192.168.1.1
Sequence Number: 0x80000003 --> 序列号:0x80000003
Checksum: 0x4eac --> 校验和:0x4eac
Length: 48 --> 长度:48
3、LSR报文(链路状态请求)
192.168.1.2 向 192.168.1.1 发送链路状态请求报文
Open Shortest Path First
OSPF Header
Link State Request --> 链接状态请求
LS Type: Router-LSA (1) --> LS类型:路由器LSA(1)
Link State ID: 192.168.1.1 --> 链路状态ID:192.168.1.1
Advertising Router: 192.168.1.1 --> 广告路由器:192.168.1.1
4、LSU报文(链路状态更新)
192.168.1.2 向 192.168.1.1 发送链路状态更新报文
Open Shortest Path First
OSPF Header
LS Update Packet --> LS更新数据包
Number of LSAs: 1 --> LSA数量:1
LSA-type 1 (Router-LSA), len 48 --> LSA类型1(路由器LSA),长度48
.000 0000 0000 0001 = LS Age (seconds): 1 --> = LS Age (seconds): 1
0... .... .... .... = Do Not Age Flag: 0 --> = 请勿年龄标记:0
Options: 0x02, (E) External Routing --> 选项:0x02,(E)外部路由
LS Type: Router-LSA (1) --> LS类型:路由器LSA(1)
Link State ID: 192.168.1.2 --> 链路状态ID:192.168.1.2
Advertising Router: 192.168.1.2 --> 广告路由器:192.168.1.2
Sequence Number: 0x80000004 --> 序列号:0x80000004
Checksum: 0xe2a4 --> 校验和:0xe2a4
Length: 48 --> 长度:48
Flags: 0x00 --> 标志:0x00
Number of Links: 2 --> 链接数量:2
Type: Transit ID: 192.168.1.1 Data: 192.168.1.2 Metric: 1 --> 类型:传输ID:192.168.1.1数据:192.168.1.2度量:1
Link ID: 192.168.1.1 - IP address of Designated Router --> 链路ID:192.168.1.1-指定路由器的IP地址
Link Data: 192.168.1.2 --> 链路数据:192.168.1.2
Link Type: 2 - Connection to a transit network --> 链路类型:2-连接到交通网络
Number of Metrics: 0 - TOS --> 指标数量:0-TOS
0 Metric: 1 --> 度量:1
Type: Stub ID: 2.2.2.2 Data: 255.255.255.255 Metric: 0 --> 类型:桩号:2.2.2.2数据:255.255.255.255公制:0
Link ID: 2.2.2.2 - IP network/subnet number --> 链路ID:2.2.2.2-IP网络/子网编号
Link Data: 255.255.255.255 --> 链接数据:255.255.255.255
Link Type: 3 - Connection to a stub network --> 链接类型:3-连接到存根网络
Number of Metrics: 0 - TOS --> 指标数量:0-TOS
0 Metric: 0 --> 度量:0
5、LSAck报文(链路状态确认)
Open Shortest Path First
OSPF Header
LSA-type 1 (Router-LSA), len 48 --> LSA类型1(路由器LSA),长度48
.000 0000 0000 0001 = LS Age (seconds): 1 --> = LS年龄(秒):1
0... .... .... .... = Do Not Age Flag: 0 --> = 请勿年龄标记:0
Options: 0x02, (E) External Routing --> 选项:0x02,(E)外部路由
LS Type: Router-LSA (1) --> LS类型:路由器LSA(1)
Link State ID: 192.168.1.1 --> 链路状态ID:192.168.1.1
Advertising Router: 192.168.1.1 --> 广告路由器:192.168.1.1
Sequence Number: 0x80000005 --> 序列号:0x80000005
Checksum: 0x90fc --> 校验和:0x90fc
Length: 48 --> 长度:48
LSA-type 2 (Network-LSA), len 32 --> LSA类型2(网络LSA),长度32
.000 0000 0000 0001 = LS Age (seconds): 1 --> = LS年龄(秒):1
0... .... .... .... = Do Not Age Flag: 0 --> = 请勿年龄标记:0
Options: 0x02, (E) External Routing --> 选项:0x02,(E)外部路由
LS Type: Network-LSA (2) --> LS类型:网络LSA(2)
Link State ID: 192.168.1.1 --> 链路状态ID:192.168.1.1
Advertising Router: 192.168.1.1 --> 广告路由器:192.168.1.1
Sequence Number: 0x80000001 --> 序列号:0x80000001
Checksum: 0x9813 --> 校验和:0x9813
Length: 32 --> 长度:32
五、LSA解析
1、一类LSA
- 产生者:由每个 OSPF 路由器自己产生。
- 内容描述 :
- 详细描述路由器自身的链路状态信息。包括路由器所有接口的 IP 地址、子网掩码、网络类型(如点对点、广播型等)。
- 每个接口所连接的链路开销(Cost),这个开销是基于接口带宽等因素计算出来的,用于衡量到达其他网络的代价。例如,在一个高速以太网接口上,链路开销可能较低,而在一个低速的串行链路接口上,链路开销可能较高。
- 还会标识出接口是否是虚连接(Virtual - Link)等特殊链路状态。
- 传播范围:仅限于产生该 LSA 的路由器所属的 OSPF 区域内部。这有助于保持区域内拓扑信息的完整性,且不会将不必要的信息扩散到其他区域。
- 作用:是构建区域内拓扑结构的基石。所有路由器通过交换一类 LSA,能够了解区域内每个路由器自身及其直连链路的状态,为后续计算区域内的最短路径树(SPT)提供最基本的信息。
2、二类LSA
- 产生者:由广播型网络(如以太网)或非广播多路访问(NBMA)网络中的指定路由器(DR)产生。
- 内容描述 :
- 主要描述一个网段(在广播型或 NBMA 网络环境中)内的拓扑信息。包括该网段内所有与 DR 相连的路由器的 Router - ID(路由器标识符)。
- 这个网段的链路开销信息,也就是从 DR 到网段内各个路由器的链路开销。
- 例如,在一个以太网网段中有多个路由器,DR 产生的二类 LSA 会列出所有连接到该网段的路由器的 Router - ID,以及从 DR 到这些路由器的链路开销,以此来描绘该网段内的拓扑结构。
- 传播范围:在产生它的 OSPF 区域内部传播。用于在区域内通告广播型或 NBMA 网络的拓扑信息,让区域内的路由器能够更好地了解这类网络的内部连接情况。
- 作用:用于补充广播型或 NBMA 网络中的拓扑信息。和一类 LSA 配合使用,使区域内的路由器能够更精确地构建网段内的拓扑结构,对于计算区域内的最短路径有着重要作用。特别是在有多台路由器连接的广播型或 NBMA 网络中,二类 LSA 能够清晰地展示这些路由器之间的连接关系。
3、三类LSA
- 产生者:由区域边界路由器(ABR)产生。
- 内容描述 :
- 主要是对其他区域的网络拓扑信息进行汇总通告。它包含了目标网络的 IP 地址范围(如一个汇总后的子网)、子网掩码以及到达目标网络的链路开销。
- 例如,ABR 连接区域 0 和区域 1,它会将区域 1 中的网络拓扑信息汇总成三类 LSA,然后通告给区域 0 中的路由器,告知区域 0 中的路由器区域 1 中有哪些网络可以到达,以及到达这些网络的大概代价。
- 传播范围:在产生它的 ABR 所属的其他区域传播。它的作用是将一个区域的拓扑信息跨区域通告,使得不同区域的路由器能够了解其他区域的网络情况。
- 作用:用于实现区域间的路由信息通告。通过三类 LSA,非源区域的路由器可以获取到其他区域的网络汇总信息,从而进行区域间的路由选择,是 OSPF 多区域网络中区域间通信的重要信息载体。
4、四类LSA
- 产生者:同样是由区域边界路由器(ABR)产生。
- 内容描述 :
- 主要是通告自治系统边界路由器(ASBR)的位置信息。它包含了 ASBR 的 Router - ID 以及到达 ASBR 的链路开销。
- 例如,在一个包含多个区域的 OSPF 网络中,当区域 2 中有一个 ASBR,区域 1 中的路由器要想与外部网络通信,就需要通过区域边界路由器产生的四类 LSA 来了解这个 ASBR 的位置和到达它的代价。
- 传播范围:在产生它的 ABR 所属的其他区域传播。主要是为了让非 ASBR 所在区域的路由器能够找到 ASBR,从而实现与外部网络的通信。
- 作用:用于引导区域内的路由器找到自治系统边界路由器(ASBR),在 OSPF 网络与外部网络进行通信的过程中起到了关键的导航作用。
5、五类LSA
- 产生者:由自治系统边界路由器(ASBR)产生。
- 内容描述 :
- 主要描述从 OSPF 自治系统(AS)外部引入的路由信息。包括外部网络的 IP 地址范围(如一个外部子网)、子网掩码以及到达外部网络的链路开销(有两种类型:类型 1 和类型 2,类型 1 考虑内部和外部链路开销,类型 2 只考虑外部链路开销)。
- 例如,ASBR 连接 OSPF 网络和一个外部的非 OSPF 网络(如 BGP 网络),它会产生五类 LSA 来通告外部网络的信息,如外部网络的网段是 172.16.0.0/16,子网掩码是 255.255.0.0,以及到达这个外部网络的链路开销。
- 传播范围:在整个 OSPF 自治系统内传播。因为它涉及到外部网络的路由信息,需要让整个 OSPF 网络中的路由器都有可能获取到这些信息,以便选择合适的路径与外部网络通信。
- 作用:用于在 OSPF 自治系统内部通告外部网络的路由信息,使得 OSPF 网络中的路由器能够了解如何与外部网络进行通信,是实现 OSPF 网络与外部网络互联的重要手段。
6、七类LSA
- 产生者:是在非纯末梢区域(Not - So - Stub Area,NSSA)中由 ASBR 产生
- 内容描述 :
- 外部网络信息:七类 LSA 包含外部网络的 IP 地址范围(如子网)、子网掩码等信息。这与五类 LSA 类似,都是为了让路由器能够了解外部网络的拓扑结构。例如,如果外部网络有一个网段是 172.16.0.0/16,这些信息会包含在七类 LSA 中。
- 链路开销信息:它默认采用类似五类 LSA 中类型 2 的开销计算方式,即只考虑外部链路开销。不过,网络管理员也可以根据实际情况进行配置调整。链路开销用于衡量到达外部网络的代价,路由器会根据这些开销信息来选择最优的路径到达外部网络。
- 转发地址(Forwarding Address):七类 LSA 还可能包含转发地址信息。转发地址是一个重要的概念,它用于指定当数据包需要转发到外部网络时,应该使用的下一跳 IP 地址。这个地址的设置可以根据具体的网络拓扑和路由策略来确定,有助于优化数据包的转发路径。
- 传播范围:仅在产生它的 NSSA 区域内传播,以及在 NSSA 区域的 ABR(区域边界路由器)将其转换为五类 LSA 后,才会传播到其他区域。这就限制了外部路由信息的传播范围,使得 NSSA 区域在引入外部路由时更加灵活,并且可以避免不必要的外部路由信息扩散到整个 OSPF 网络。
- 作用 :
- 引入外部路由的灵活性:七类 LSA 允许 NSSA 区域在不影响其他区域的情况下引入外部路由。这在一些网络场景中非常有用,比如企业的某个分支机构所在的区域需要连接外部合作伙伴的网络,通过将该区域配置为 NSSA 区域,使用七类 LSA 来通告外部路由,可以使这个分支机构的网络独立地处理外部路由信息,而不会让这些信息对企业内部的其他 OSPF 区域造成干扰。
- 与其他区域的协作:虽然七类 LSA 主要在 NSSA 区域内传播,但通过 ABR 的转换,它可以与其他区域进行协作。当 ABR 将七类 LSA 转换为五类 LSA 后,外部路由信息可以以一种更合适的方式在其他区域传播,从而实现整个 OSPF 网络与外部网络的通信。
:
六、配置案例
实验拓扑如下:

两台路由器分别为AR1和AR2,AR1的GE0/0/0口配置192.168.1.1/24,lo口配置1.1.1.1/32,AR2的GE0/0/0口配置192.168.1.2/24,lo口配置2.2.2.2/32,两台路由器配置在同一个OSPF区域0并宣告自身的接口ip及lo口ip
华为&华三
AR1
interface GigabitEthernet0/0/0
ip address 192.168.1.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 192.168.1.1 0.0.0.0
AR2
interface GigabitEthernet0/0/0
ip address 192.168.1.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 192.168.1.2 0.0.0.0
-------------------------------------------------------------------
路由引入
ospf 1
default-route-advertise always
import-route static | bgp | ospf | isis | rip
-------------------------------------------------------------------
华为查看OSPF邻居
display ospf peer brief
华三查看OSPF邻居
display ospf peer
查看OSPF路由
display ospf routing
锐捷
AR1
interface GigabitEthernet0/0
ip address 192.168.1.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
router ospf 1
network 192.168.1.1 0.0.0.0 area 0
network 1.1.1.1 0.0.0.0 area 0
AR2
interface GigabitEthernet0/0
ip address 192.168.1.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
router ospf 1
network 192.168.1.2 0.0.0.0 area 0
network 2.2.2.2 0.0.0.0 area 0
-------------------------------------------------
路由引入
router ospf 1
default-information originate
redistribute static | bgp | ospf | isis | rip
-------------------------------------------------
查看邻居
Ruijie#show ip ospf neighbor
查看OSPF路由
Ruijie#show ip ospf route
七、常见故障排查
1、检查物理链路是否正常
2、检查互联两个端口是否同在OSPF区域内宣告
3、检查互联两个端口ip地址是否存在错误、掩码是否一致
4、检查OSPF的hello计时器是否一致
5、检查互联两个端口是否阻止了OSPF组播(224.0.0.5/6)
6、检查两端OSPF网络类型(广播/点对点/NBMA)
7、检查互联两个端口明文/MD5认证类型及密钥是否一致
8、检查DR\BDR优先级是否合理,避免全0导致选举失败
9、检查互联两个端口MTU是否一致
10、尝试重置OSPF进程(华为&华三:reset ospf process | 锐捷:clear ip ospf process)