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头部)。
  • 交互流程

    1. 主从选举:通过比较Router ID,确定主路由器(Master)控制DBD交换顺序。
    2. DBD交换:主从路由器交替发送DBD报文,携带本地LSDB的LSA摘要。

  • 作用:请求缺失的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请求。


  • 作用:携带具体的LSA信息,用于更新邻居的LSDB。

  • 关键字段

    字段 说明
    LSA数量(# LSAs) 报文中包含的LSA条目数量。
    LSA列表 一个或多个完整的LSA条目(包含链路状态类型、ID、序列号等)。
  • 触发条件

    • 收到LSR请求时,发送对应的LSA。
    • 网络拓扑变化时,主动洪泛更新的LSA。

  • 作用:确认收到LSU报文,确保可靠性。

  • 关键字段

    字段 说明
    LSA头部列表 需要确认的LSA的头部信息(类型、链路状态ID、通告路由器等)。
  • 交互方式

    • 显式确认:单独发送LSAck报文。
    • 隐式确认:通过回复LSU报文捎带确认(较少使用)。

三、OSPF报文交互流程

以邻居关系建立和LSDB同步为例:

  1. Hello报文:发现邻居并协商参数(区域ID、认证、Hello/Dead间隔等)。
  2. DBD报文:交换LSDB摘要,确定主从关系。
  3. LSR/LSU/LSAck:请求、发送和确认缺失的LSA,最终同步LSDB。
  4. SPF计算:所有路由器独立运行Dijkstra算法,生成路由表。

四、常见问题与排查

  • 邻居关系卡在ExStart/Exchange状态

    • 原因:接口MTU不匹配或DBD报文丢失。
    • 解决:检查两端MTU配置,确保一致(ip ospf mtu-ignore可跳过MTU检查)。
  • LSA无法洪泛

    • 原因:区域划分错误或LSA过滤配置不当。
    • 解决:确认区域设计(如NSSA区域是否允许Type 7 LSA)。

posted @ 2025-04-01 14:05  再熬夜是狗呀  阅读(238)  评论(0)    收藏  举报