ospf报文详解
OSPF协议通过5种报文类型实现邻居发现、链路状态同步和路由计算。所有OSPF报文共享公共报文头,后续根据不同报文类型携带特定数据。以下是各报文的详细解析:
一、OSPF公共报文头
每个OSPF报文以24字节的头部开始,结构如下:

| 字段 | 长度(字节) | 说明 |
|---|---|---|
| 版本(Version) | 1 | OSPF版本(OSPFv2为2,OSPFv3为3)。 |
| 类型(Type) | 1 | 报文类型(1=Hello,2=DBD,3=LSR,4=LSU,5=LSAck)。 |
| 报文长度(Length) | 2 | 整个报文(含头部)的总长度(单位:字节)。 |
| Router ID | 4 | 发送该报文的路由器ID(唯一标识)。 |
| Area ID | 4 | 报文所属的区域ID(Area 0为骨干区域)。 |
| 校验和(Checksum) | 2 | 用于校验报文完整性(不包含认证字段)。 |
| 认证类型(Auth Type) | 2 | 0=无认证,1=明文认证,2=MD5认证(OSPFv3使用IPv6原生安全机制)。 |
| 认证数据(Auth Data) | 8 | 明文密码或MD5摘要(根据认证类型填充)。 |
二、OSPF报文类型详解
1. Hello报文(Type 1)
-
作用:发现并维护邻居关系,确认邻居存活。
![]()
-
关键字段:
字段 说明 网络掩码(Network Mask) 发送接口的子网掩码(必须与邻居一致)。 Hello间隔(HelloInterval) 发送Hello报文的时间间隔(默认10秒)。 Dead间隔(RouterDeadInterval) 邻居失效时间(默认40秒)。 邻居列表(Neighbors) 已收到的邻居Router ID列表。 优先级(Priority) 用于DR/BDR选举(默认1,0表示不参与选举)。 DR/BDR的Router ID 当前网络的DR和BDR的Router ID。 -
触发条件:
- 周期性发送(默认每10秒)。
- 接口激活时立即发送。
-
组播地址:
- 广播网络:224.0.0.5(所有OSPF路由器)。
- DR/BDR与邻居通信:224.0.0.6(仅DR/BDR监听)。
2. DBD报文(Database Description,Type 2)
-
作用:描述本地LSDB的摘要信息,用于同步链路状态数据库。
![]()
-
关键字段:
字段 说明 接口MTU(MTU) 发送接口的最大传输单元(需与邻居一致)。 序列号(Sequence) 用于保证DBD报文顺序传输。 I/M/MS位 - I位:是否为第一个DBD报文。
- M位:是否还有后续报文。
- MS位:主从关系(1=主,0=从)。LSA头部列表 本地LSDB中所有LSA的摘要(仅包含LSA头部)。 -
交互流程:
- 主从选举:通过比较Router ID,确定主路由器(Master)控制DBD交换顺序。
- DBD交换:主从路由器交替发送DBD报文,携带本地LSDB的LSA摘要。
3. LSR报文(Link State Request,Type 3)
-
作用:请求缺失的LSA详细信息。
![]()
-
关键字段:
字段 说明 LSA类型(LS Type) 请求的LSA类型(如Type 1、Type 5等)。 链路状态ID(Link State ID) 标识特定LSA的ID(如路由器ID或网络地址)。 通告路由器(Advertising Router) 生成该LSA的路由器的Router ID。 -
触发条件:当路由器收到DBD报文后,发现本地LSDB缺少某些LSA时,发送LSR请求。
4. LSU报文(Link State Update,Type 4)
-
作用:携带具体的LSA信息,用于更新邻居的LSDB。
![]()
-
关键字段:
字段 说明 LSA数量(# LSAs) 报文中包含的LSA条目数量。 LSA列表 一个或多个完整的LSA条目(包含链路状态类型、ID、序列号等)。 -
触发条件:
- 收到LSR请求时,发送对应的LSA。
- 网络拓扑变化时,主动洪泛更新的LSA。
5. LSAck报文(Link State Acknowledgment,Type 5)
-
作用:确认收到LSU报文,确保可靠性。
-
关键字段:
字段 说明 LSA头部列表 需要确认的LSA的头部信息(类型、链路状态ID、通告路由器等)。 -
交互方式:
- 显式确认:单独发送LSAck报文。
- 隐式确认:通过回复LSU报文捎带确认(较少使用)。
三、OSPF报文交互流程
以邻居关系建立和LSDB同步为例:
- Hello报文:发现邻居并协商参数(区域ID、认证、Hello/Dead间隔等)。
- DBD报文:交换LSDB摘要,确定主从关系。
- LSR/LSU/LSAck:请求、发送和确认缺失的LSA,最终同步LSDB。
- SPF计算:所有路由器独立运行Dijkstra算法,生成路由表。
四、常见问题与排查
-
邻居关系卡在ExStart/Exchange状态:
- 原因:接口MTU不匹配或DBD报文丢失。
- 解决:检查两端MTU配置,确保一致(
ip ospf mtu-ignore可跳过MTU检查)。
-
LSA无法洪泛:
- 原因:区域划分错误或LSA过滤配置不当。
- 解决:确认区域设计(如NSSA区域是否允许Type 7 LSA)。





浙公网安备 33010602011771号