12. Link State Advertisements (链路状态通告)
本章详细定义 OSPF 的链路状态通告(LSA)格式。LSA 是 OSPF 协议的核心数据结构,描述网络拓扑信息。
章节概述 (Chapter Overview)
OSPF 定义了多种 LSA 类型:
- Type 1: Router-LSA
- Type 2: Network-LSA
- Type 3: Summary-LSA (网络)
- Type 4: Summary-LSA (ASBR)
- Type 5: AS-external-LSA
- Type 7: NSSA-external-LSA (RFC 3101)
12.1 LSA 通用头部 (LSA Header)
头部字段
| 字段 | 大小 | 说明 |
|---|---|---|
| LS Age | 16位 | LSA 年龄(秒) |
| Options | 8位 | 可选能力位 |
| LS Type | 8位 | LSA 类型 (1-7) |
| Link State ID | 32位 | LSA 标识符 |
| Advertising Router | 32位 | 产生此 LSA 的路由器 ID |
| LS Sequence Number | 32位 | 序列号 |
| LS Checksum | 16位 | 校验和 |
| Length | 16位 | LSA 总长度(字节) |
关键字段详解
LS Age
- 范围:0-3600 秒
- MaxAge = 3600 秒
- 每秒递增
- 达到 MaxAge 表示 LSA 过期
LS Sequence Number
- 初始值:0x80000001
- 最大值:0x7FFFFFFF
- 用于检测 LSA 更新
- 序列号越大表示越新
Options 字段
- E-bit: 支持外部路由
- MC-bit: 支持 MOSPF
- N/P-bit: NSSA 相关
- EA-bit: 外部属性
- DC-bit: 按需电路
12.2 Router-LSA (Type 1)
用途
- 描述路由器的链路和连接
- 每个路由器为每个区域生成一个
关键字段
| 字段 | 说明 |
|---|---|
| V-bit | 虚拟链路端点 |
| E-bit | AS 边界路由器 |
| B-bit | 区域边界路由器 |
| Number of links | 链路数量 |
| Links | 链路描述列表 |
链路类型
Type 1: 点到点链路
- Link ID = 邻居 Router ID
- Link Data = 接口地址
Type 2: 到中转网络的链路
- Link ID = DR 的接口地址
- Link Data = 本路由器接口地址
Type 3: 到末梢网络的链路
- Link ID = 网络地址
- Link Data = 网络掩码
Type 4: 虚拟链路
- Link ID = 邻居 Router ID
- Link Data = 接口地址
12.3 Network-LSA (Type 2)
用途
- 由 DR 生成
- 描述多路访问网络
- 列出连接到网络的所有路由器
关键字段
| 字段 | 说明 |
|---|---|
| Network Mask | 网络掩码 |
| Attached Router | 连接的路由器列表 |
Link State ID
- 设置为 DR 的接口 IP 地址
12.4 Summary-LSA (Type 3)
用途
- 由 ABR 生成
- 描述区域间的网络路由
- 通告到其他区域
关键字段
| 字段 | 说明 |
|---|---|
| Network Mask | 目的网络掩码 |
| Metric | 到达目的地的代价 |
| TOS | 服务类型(通常为 0) |
Link State ID
- 目的网络的网络号
12.5 ASBR-Summary-LSA (Type 4)
用途
- 由 ABR 生成
- 描述到 ASBR 的路由
- 使其他区域的路由器知道如何到达 ASBR
关键字段
| 字段 | 说明 |
|---|---|
| Metric | 到达 ASBR 的代价 |
Link State ID
- ASBR 的 Router ID
12.6 AS-external-LSA (Type 5)
用途
- 由 ASBR 生成
- 描述到 AS 外部目的地的路由
- 在整个 AS 内泛洪(除末梢区域)
关键字段
| 字段 | 说明 |
|---|---|
| Network Mask | 外部网络掩码 |
| E-bit | 外部路由类型 (0=Type2, 1=Type1) |
| Metric | 外部路由代价 |
| Forwarding address | 转发地址 |
| External Route Tag | 外部路由标签 |
外部路由类型
Type 1 External
- E-bit = 1
- 代价 = 内部代价 + 外部代价
- 度量可比较
Type 2 External
- E-bit = 0
- 代价 = 外部代价(默认)
- 仅比较外部代价
Forwarding Address
- 非零:转发到指定地址
- 零:转发到 Advertising Router
12.7 NSSA-external-LSA (Type 7)
用途
- 在 NSSA 中使用
- 类似 Type 5,但仅在 NSSA 内传播
- 由 ABR 转换为 Type 5
与 Type 5 的区别
- 泛洪范围:仅 NSSA
- 转换:ABR 将 Type 7 转为 Type 5
- P-bit:是否传播到其他区域
12.8 LSA 生成规则 (LSA Origination)
Router-LSA (Type 1)
生成时机
- 路由器启动时
- 接口状态变化
- 邻居状态变化
- 接口代价变化
Network-LSA (Type 2)
生成条件
- 路由器是 DR
- 至少有一个 Full 邻接的邻居
Summary-LSA (Type 3/4)
生成条件
- 路由器是 ABR
- 有跨区域的路由信息
AS-external-LSA (Type 5)
生成条件
- 路由器是 ASBR
- 有外部路由需要通告
12.9 LSA 刷新和老化 (LSA Refresh and Aging)
刷新机制
LSRefreshTime = 30 分钟
- LSA 生成者每 30 分钟刷新一次
- 递增序列号
- 重新泛洪
老化机制
MaxAge = 3600 秒(1 小时)
- LS Age 达到 MaxAge
- LSA 标记为删除
- 泛洪 MaxAge LSA
- 从 LSDB 中移除
年龄递增
InfTransDelay
- 每条链路的传输延迟
- 默认 1 秒
- LSA 每跳增加此延迟
12.10 LSA 比较 (LSA Comparison)
判断哪个 LSA 更新
规则顺序
-
LS Sequence Number 比较
- 较大的更新
-
LS Checksum 比较
- 序列号相同时
- 较大的校验和更新
-
LS Age 比较
- MaxAge 总是比非 MaxAge 更新
- 年龄差 > MaxAgeDiff (900秒)
- 较年轻的更新
12.11 LSA 格式对照表 (LSA Type Summary)
| LSA 类型 | 名称 | 生成者 | 泛洪范围 | 用途 |
|---|---|---|---|---|
| Type 1 | Router-LSA | 所有路由器 | 单个区域 | 描述路由器链路 |
| Type 2 | Network-LSA | DR | 单个区域 | 描述多路访问网络 |
| Type 3 | Summary-LSA | ABR | 单个区域 | 区域间网络路由 |
| Type 4 | ASBR-Summary | ABR | 单个区域 | 到 ASBR 的路由 |
| Type 5 | AS-external | ASBR | 整个 AS | 外部路由 |
| Type 7 | NSSA-external | ASBR | 单个 NSSA | NSSA 外部路由 |
技术要点总结 (Technical Summary)
关键概念
-
LSA 是拓扑描述的基本单元
- 每个 LSA 描述网络的一部分
- 通过泛洪同步到所有路由器
- 构成分布式链路状态数据库
-
分层 LSA 设计
- 区域内 LSA (Type 1, 2)
- 区域间 LSA (Type 3, 4)
- AS 外部 LSA (Type 5, 7)
-
可靠的更新机制
- 序列号检测更新
- 校验和验证完整性
- 定期刷新保证同步
实现要点
LSA 存储
- 按类型和 ID 索引
- 高效的查找结构
- 内存优化
LSA 处理
- 严格的验证
- 正确的比较逻辑
- 及时的刷新和老化
LSA 泛洪
- 可靠传输
- 避免循环
- 控制速率
参考资料 (References)
- 完整原文:RFC 2328 Section 12
- NSSA:RFC 3101
- Opaque LSA:RFC 2370
注意 (Note):LSA 格式是 OSPF 协议的核心。正确理解和实现各种 LSA 类型对于协议的正确运行至关重要。详细的字节级格式请参考原文 Appendix A。