Skip to main content

Appendix A: OSPF Data Formats (OSPF 数据格式)

本附录详细描述 OSPF 协议使用的所有数据包和 LSA 的字节级格式。


附录概述 (Appendix Overview)

本附录包含:

  • OSPF 包头格式
  • 各类 OSPF 包的详细格式
  • 各类 LSA 的详细格式
  • 字段位置和大小的精确定义
note

本附录提供实现者所需的完整数据格式规范。所有字段均以网络字节序(大端序)传输。


A.1 OSPF 包头格式 (OSPF Packet Header)

通用头部结构

所有 OSPF 包共享的 24 字节头部:

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | Type | Packet length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明

字段大小说明
Version8 bitsOSPF 版本号(2)
Type8 bits包类型(1-5)
Packet length16 bits包总长度(字节)
Router ID32 bits发送路由器的 ID
Area ID32 bits区域标识
Checksum16 bits校验和
AuType16 bits认证类型
Authentication64 bits认证数据

A.2 OSPF 包类型 (OSPF Packet Types)

包类型列表

Type名称用途
1Hello邻居发现和维护
2Database Description数据库摘要交换
3Link State Request请求特定 LSA
4Link State Update泛洪 LSA
5Link State Acknowledgment确认 LSA

A.3 Hello 包格式 (Hello Packet)

格式结构

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HelloInterval | Options | Rtr Pri |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RouterDeadInterval |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Designated Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Backup Designated Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |

关键字段

  • Network Mask: 接口网络掩码
  • HelloInterval: Hello 间隔(秒)
  • Options: 可选能力位
  • Rtr Pri: 路由器优先级
  • RouterDeadInterval: 死亡间隔(秒)
  • Designated Router: DR 的 Router ID
  • Backup Designated Router: BDR 的 Router ID
  • Neighbor: 邻居路由器 ID 列表

A.4 Database Description 包格式 (DD Packet)

格式结构

包含 LSA 头部列表,用于数据库同步。

关键字段

  • Interface MTU: 接口 MTU
  • Options: 可选能力
  • I-bit: 初始包标志
  • M-bit: 更多包标志
  • MS-bit: 主从标志
  • DD sequence number: 序列号
  • LSA Headers: LSA 头部列表

格式结构

包含请求的 LSA 标识符列表。

请求字段

每个请求包含:

  • LS Type: LSA 类型
  • Link State ID: LSA ID
  • Advertising Router: 通告路由器 ID

格式结构

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| # LSAs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+- -+
| LSAs |
+- -+
| ... |

字段说明

  • # LSAs: LSA 数量
  • LSAs: 完整的 LSA 列表

格式结构

包含 LSA 头部列表(仅头部,无内容)。

用途

确认收到的 LSA,不包含 LSA 内容以节省带宽。


A.8 LSA 头部格式 (LSA Header)

通用 LSA 头部(20 字节)

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS age | Options | LS type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS checksum | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

A.9 Router-LSA 格式 (Type 1)

格式结构

包含路由器的链路列表。

关键字段

  • V-bit: 虚拟链路端点
  • E-bit: AS 边界路由器
  • B-bit: 区域边界路由器
  • # links: 链路数量
  • Link entries: 链路条目列表

链路条目格式

每个链路包含:

  • Link ID: 链路标识
  • Link Data: 链路数据
  • Type: 链路类型(1-4)
  • # TOS: TOS 数量
  • Metric: 链路代价

A.10 Network-LSA 格式 (Type 2)

格式结构

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attached Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |

字段说明

  • Network Mask: 网络掩码
  • Attached Router: 连接的路由器 ID 列表

A.11 Summary-LSA 格式 (Type 3/4)

格式结构

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | metric |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TOS | TOS metric |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |

字段说明

  • Network Mask: 目的网络掩码(Type 3)或 0(Type 4)
  • Metric: 到达目的地的代价
  • TOS: 服务类型(通常为 0)

A.12 AS-external-LSA 格式 (Type 5)

格式结构

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|E| 0 | metric |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Forwarding address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| External Route Tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

关键字段

  • Network Mask: 外部网络掩码
  • E-bit: 外部路由类型(0=Type2, 1=Type1)
  • Metric: 外部路由代价
  • Forwarding address: 转发地址
  • External Route Tag: 外部路由标签

数据格式要点 (Key Points)

字节序

网络字节序(大端序)

  • 所有多字节字段使用大端序
  • 最高有效字节在前

对齐

32 位对齐

  • 所有 OSPF 包和 LSA 长度必须是 4 字节的倍数
  • 必要时填充

校验和

Fletcher Checksum

  • 使用 Fletcher 校验和算法
  • 覆盖整个 OSPF 包(除认证字段)

参考资料 (References)


注意 (Note):本附录提供数据格式的概要。实现时必须参考 RFC 2328 原文 Appendix A 的完整详细规范,确保所有字段位置、大小和语义完全准确。