2. The Link-state Database: Organization and Calculations (链路状态数据库:组织与计算)
本章描述 OSPF 链路状态数据库的组织结构以及如何使用该数据库计算路由表。
章节概述 (Chapter Overview)
本章涵盖以下主要主题:
- 路由器和网络的表示方法
- 最短路径树的构建
- 外部路由信息的使用
- 等价多路径的实现
2.1 Representation of Routers and Networks (路由器和网络的表示)
核心概念 (Core Concepts)
图论表示 (Graph Representation)
- 自治系统被建模为有向图 (AS modeled as directed graph)
- 顶点 (Vertices):路由器和网络
- 边 (Edges):路由器接口
- 代价 (Cost):每条边的权重
路由器表示 (Router Representation)
- 路由器 ID:32 位唯一标识符
- 接口列表:连接到网络的接口
- 邻居关系:与相邻路由器的连接
- 链路状态:每个接口的状态信息
网络类型 (Network Types)
| 网络类型 | 英文 | 特征 | 示例 |
|---|---|---|---|
| 点到点网络 | Point-to-Point | 连接两个路由器 | T1 线路, PPP |
| 广播网络 | Broadcast | 多路访问,支持广播 | Ethernet, Token Ring |
| NBMA 网络 | Non-Broadcast Multi-Access | 多路访问,不支持广播 | Frame Relay, X.25 |
| 点到多点网络 | Point-to-MultiPoint | 作为点到点链路集合处理 | 部分网状 Frame Relay |
2.1.1 Representation of Non-broadcast Networks (非广播网络的表示)
NBMA 网络特性 (NBMA Network Characteristics)
- 不支持链路层广播或组播
- 需要手动配置邻居
- 需要选举指定路由器 (DR) 和备份指定路由器 (BDR)
- 必须具有完全网状连接或使用点到多点模式
配置要求 (Configuration Requirements)
- 邻居列表配置
- DR 优先级设置
- Hello 间隔和 Dead 间隔
- 轮询间隔 (Poll Interval)
2.1.2 An Example Link-state Database (链路状态数据库示例)
本节通过具体示例展示链路状态数据库的结构和内容。
示例网络拓扑 (Example Network Topology)
- 多个路由器互连
- 不同类型的网络
- 区域划分
- 虚拟链路
LSA 类型 (LSA Types)
| LSA 类型 | 名称 | 描述 | 泛洪范围 |
|---|---|---|---|
| Type 1 | Router-LSA | 路由器链路状态 | 区域内 |
| Type 2 | Network-LSA | 网络链路状态 | 区域内 |
| Type 3 | Summary-LSA (网络) | 区域间网络路由 | 单个区域 |
| Type 4 | Summary-LSA (ASBR) | ASBR 路由 | 单个区域 |
| Type 5 | AS-external-LSA | 外部路由 | 整个 AS |
2.2 The Shortest-path Tree (最短路径树)
Dijkstra 算法 (Dijkstra's Algorithm)
算法步骤 (Algorithm Steps)
- 初始化:将自身设为根节点
- 候选列表:维护待处理顶点列表
- 选择最小代价顶点
- 更新邻居代价
- 重复直到所有顶点处理完毕
代价计算 (Cost Calculation)
- 接口代价:基于带宽或手动配置
- 路径代价:沿路径所有接口代价之和
- 默认代价公式:
Cost = 参考带宽 / 接口带宽
树的构建 (Tree Construction)
- 根节点:执行计算的路由器
- 内部节点:AS 内的路由器和网络
- 叶节点:外部路由(AS-external-LSA)
关键术语 (Key Terms)
| 术语 | 英文 | 定义 |
|---|---|---|
| SPF 树 | SPF Tree | 以路由器为根的最短路径树 |
| 候选列表 | Candidate List | 待添加到树的顶点 |
| 父节点 | Parent | 树中的前驱节点 |
| 距离 | Distance | 从根到节点的代价 |
| 下一跳 | Next Hop | 到达目的地的第一个路由器 |
2.3 Use of External Routing Information (外部路由信息的使用)
外部路由类型 (External Route Types)
Type 1 外部路由 (Type 1 External)
- 代价 = 内部代价 + 外部代价
- 可比较的度量
- 适用于相同 AS 内的 IGP
Type 2 外部路由 (Type 2 External)
- 代价 = 外部代价(内部代价仅用于打破平局)
- 不可比较的度量
- 适用于不同 AS 的 EGP
- OSPF 默认类型
ASBR (Autonomous System Boundary Router)
ASBR 角色 (ASBR Role)
- 引入外部路由到 OSPF
- 产生 AS-external-LSA
- 可以是任何 OSPF 路由器
- 通过 Type 4 Summary-LSA 通告
路由重分发 (Route Redistribution)
- 从其他协议导入路由
- 设置外部路由类型
- 配置路由标记 (Route Tag)
- 设置转发地址 (Forwarding Address)
2.4 Equal-cost Multipath (等价多路径)
ECMP 概念 (ECMP Concept)
基本原理 (Basic Principles)
- 到达同一目的地的多条等价路径
- 路径代价完全相同
- 流量在多条路径间分配
- 提高带宽利用率和冗余性
实现方式 (Implementation Methods)
| 方法 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| 逐包轮询 | Per-packet round-robin | 简单 | 可能导致乱序 |
| 逐流分配 | Per-flow distribution | 保持顺序 | 需要流识别 |
| 基于哈希 | Hash-based | 高效、确定性 | 可能不均衡 |
配置参数 (Configuration Parameters)
- 最大路径数:系统支持的最大 ECMP 路径数
- 负载均衡算法:选择流量分配方法
- 代价阈值:允许的代价差异范围
路由表条目 (Routing Table Entries)
多路径表示 (Multipath Representation)
- 单个目的地前缀
- 多个下一跳接口
- 相同的路由代价
- 相同的路由类型
技术要点总结 (Technical Summary)
关键数据结构 (Key Data Structures)
- 链路状态数据库 (LSDB):存储所有 LSA
- SPF 树:最短路径树结构
- 路由表:最终的转发表
- 邻居表:相邻路由器信息
重要算法 (Important Algorithms)
- Dijkstra SPF:计算最短路径
- LSA 泛洪:分发链路状态信息
- 路由计算:从 SPF 树生成路由表
- ECMP 选择:多路径负载均衡
性能考虑 (Performance Considerations)
- SPF 计算复杂度:O(N log N)
- 数据库大小:影响内存使用
- 收敛时间:拓扑变化到路由更新
- 扩展性:大型网络的区域划分
参考资料 (References)
- 完整原文:RFC 2328 Section 2
- Dijkstra 算法:E. W. Dijkstra, "A Note on Two Problems in Connexion with Graphs"
注意 (Note):本文档基于 RFC 2328 官方规范。完整的技术细节、算法伪代码和规范性语言请参考原文档。