内部网关协议——OSPF 协议(开放最短路径优先)(链路状态路由协议)
核心定义
OSPF 是一种链路状态路由协议,用于在单个自治系统内决策路由。它的全称是开放最短路径优先。
开放:意味着它是公有的、非专有的,由IETF标准定义。
最短路径优先:指的是其使用的算法,即Dijkstra算法。
核心目标:发现并选择网络中的“最短路径”来传输数据。
OSPF 的基本工作原理
OSPF的工作过程可以概括为以下三个核心步骤:
1. 建立邻居关系
运行OSPF的路由器会向其直连网络发送Hello数据包。当两台路由器在同一个网段上,并且通过Hello包协商好一系列参数(如Area ID、Hello间隔等)后,它们就成为邻居。
2. 同步链路状态数据库
成为邻居后,路由器之间会进一步建立邻接关系。建立邻接的路由器会通过LSA 来交换并同步彼此的链路状态数据库。
LSA:是描述路由器本地链路状态(如接口、IP地址、代价、连接的邻居等)的信息单元。它是OSPF的核心信息载体。
LSDB:每个OSPF路由器都会收集网络中的所有LSA,并组成一个统一的链路状态数据库。在一个区域内的所有路由器,都拥有一个完全相同的LSDB。
3. 计算最优路由
当LSDB同步完成后,每台路由器都会以自己为根,使用SPF算法 独立地计算出一棵到达网络中所有节点的最短路径树。然后,根据这棵树将自己路由表。
这个过程可以用下图清晰地展示:

OSPF 的关键特性与概念
1. 区域
为了解决大型网络中LSDB过大、SPF计算频繁的问题,OSPF引入了分层区域的概念。
骨干区域:必须是Area 0。所有其他非骨干区域必须直接连接到骨干区域。骨干区域负责在不同区域间汇总和传播路由信息。
非骨干区域:如Area 1, Area 2等。它们通过骨干区域互联。
2. 路由器ID
一个32位的数字,用于在OSPF域中唯一标识一台路由器。
通常优先使用手动配置的ID,如果没有配置,则使用环回接口的最高IP地址,如果没有环回接口,则使用物理接口的最高IP地址。
3. 开销
OSPF使用“开销”作为路径选择的度量标准。
开销主要基于链路的带宽(默认计算公式:开销 = 参考带宽 / 接口带宽)。带宽越高,开销越小,路径越优。
4. 数据包类型
OSPF使用5种类型的数据包来运作:
Hello:用于发现和维持邻居关系。
DBD:描述发送方的LSDB目录,用于数据库同步。
LSR:向对方请求特定的LSA。
LSU:包含对方所请求的一个或多个完整的LSA。
LSAck:用于确认收到的LSA,确保可靠性。
5. 邻接与邻居
邻居:只是通过Hello包认识了对方。
邻接:是比邻居更深一层的关系,建立了邻接的路由器之间会同步LSDB。并不是所有邻居都会建立邻接(例如,在广播网络中,为了优化,会选举DR和BDR)。
6. DR 和 BDR
在广播网络(如以太网)中,为了避免路由器之间两两建立邻接关系(产生n*(n-1)/2个邻接),会选举一个指定路由器 和一个备份指定路由器。
所有其他路由器只与DR和BDR建立邻接关系,由DR负责将LSA泛洪到全网。
OSPF 的优点与缺点
优点:
快速收敛:当网络拓扑发生变化时,能非常快地重新计算路由。
无环路由:基于SPF算法计算出的路由是天然无环的。
可扩展性强:通过区域划分,可以支持大规模网络。
支持VLSM和CIDR:是现代无类路由协议。
度量值合理:使用开销作为度量值,更能反映真实网络性能。
缺点:
配置相对复杂:对管理员的技能要求较高。
CPU和内存消耗大:运行SPF算法和维护LSDB需要占用较多的路由器资源。
设计复杂:在多区域设计中,需要仔细规划区域和骨干区域的连接。
总结
OSPF是一个强大、复杂且高度可靠的内部网关协议。它通过交换链路状态信息、构建统一的拓扑数据库,并利用SPF算法计算出最优路径,从而实现高效、无环的网络路由。它是当今企业网和运营商网络中使用最广泛的IGP协议。
