计算机网络自顶向下方法41——网络层 自治系统内部的路由选择:开放最短路优先(OSPF)设置OSPF链路权值
自治系统内部路由选择:OSPF 深度解析
OSPF(开放最短路径优先)是当今互联网中用于自治系统内部路由选择 的事实标准协议。它是一个使用链路状态算法的内部网关协议。
一、OSPF 概述:从RIP的局限中进化
1. RIP的局限性
在OSPF之前,RIP是主要的IGP。但RIP(基于DV算法)存在严重缺陷:
最大跳数限制(15):不适合大型网络。
收敛速度慢:遭遇“计数到无穷”问题,网络拓扑变化后需要分钟级才能稳定。
带宽浪费:即使网络无变化,也定期广播整个路由表。
2. OSPF的设计目标
为克服RIP的缺点,OSPF被设计为:
开放:协议规范是公开的,打破了厂商锁定。
高效:快速适应网络变化(如链路故障)。
基于链路状态:使用Dijkstra算法计算无环最短路径。
支持大规模网络:通过分层设计消除规模限制。
二、OSPF 的核心工作机制
1. 链路状态通告与洪泛
发现邻居:路由器通过发送和接收Hello报文来发现和维护与邻居的关系。
构建LSA:每个路由器为其每个链路生成一个链路状态通告,描述:
链路另一端的路由器(或网络)。
该链路的度量值(开销)。
可靠洪泛:路由器将其LSA洪泛到整个OSPF区域。为确保可靠性,收到LSA的路由器必须发送确认,并向除来源外的所有接口转发。
2. 构建拓扑图与计算路由
链路状态数据库:每个路由器收集所有LSA,构建出一个完全相同的、完整的网络拓扑图(链路状态数据库)。
执行SPF算法:每个路由器以自己为根,在LSDB上独立运行Dijkstra最短路径优先算法,计算出一棵到达AS内所有网络的最短路径树。
生成路由表:根据SPF树,路由器将最佳路径(下一跳和接口)填入其IP路由表。
下图直观地展示了OSPF从邻居发现到生成路由表的完整工作流程:

三、OSPF 的高级特性与分层设计:区域
为了将洪泛流量限制在局部并减少路由器必须维护的状态,OSPF支持分层路由,将大型网络划分为区域。
1. 区域结构
骨干区域:必须存在,称为区域0。所有其他区域必须连接到区域0。
非骨干区域:如区域1、区域2等。它们之间的通信必须通过区域0。
2. 路由器角色
内部路由器:所有接口都在同一个区域内的路由器。
区域边界路由器:连接一个或多个区域到骨干区域的路由器。它为其连接的每个区域维护独立的LSDB。
骨干路由器:至少有一个接口在区域0的路由器。
AS边界路由器:与其他AS(如通过BGP)交换路由信息的路由器。
3. 分层的优势
减少洪泛范围:LSA的洪泛被限制在一个区域内。
减少LSDB大小和SPF计算开销:内部路由器只需知道其所在区域的完整拓扑,而不需要知道其他区域的细节。
提高稳定性:一个区域内的拓扑变化不会导致其他区域内的路由器执行SPF计算。
四、设置OSPF链路权值(开销)
OSPF链路开销是路径选择决策的核心。它不像RIP那样只计算跳数,而是基于带宽等更合理的因素。
1. 开销的计算
OSPF使用一个参考带宽除以链路的实际带宽来计算开销。在Cisco路由器上,默认参考带宽为100 Mbps。
开销 = 参考带宽 / 链路带宽举例:
100 Mbps以太网:开销 = 100 / 100 = 1
10 Mbps以太网:开销 = 100 / 10 = 10
T1 (1.544 Mbps):开销 = 100 / 1.544 ≈ 65
对于高于100 Mbps的链路(如千兆以太网),此公式会导致开销为1(不理想)。因此,在实践中,管理员通常会手动调整参考带宽或直接手动配置开销值。
2. 手动配置链路权值
网络管理员可以(也经常需要)手动为每条链路分配开销值。
策略目标:
流量工程:通过设置不同的权值,可以影响流量的路径,从而避免拥塞或实现负载均衡。
成本控制:优先使用低成本的链路(如公司自有光纤,而不是昂贵的租用线路)。
配置示例:管理员可能将主链路的开销设为10,备份链路的开销设为50。这样,只要主链路正常,流量就不会走备份链路。
五、OSPF 优势总结
快速收敛:链路状态变化能快速洪泛,并触发局部SPF计算。
无环路由:基于Dijkstra算法,保证计算出的路径无环。
可扩展性:通过区域划分,支持构建超大型企业网络。
灵活的路由选择:基于可配置的链路开销,支持复杂的路由策略。
安全性:支持邻居间报文认证,防止恶意路由注入。
多路径支持:支持到同一目的地的多条等开销路径,实现负载均衡。
总结
OSPF将链路状态路由理论的强大与应对现实世界网络挑战的工程实践完美结合。其分层区域设计解决了可扩展性问题,其基于带宽的度量提供了比RIP更智能的路由决策,而其快速收敛机制确保了网络的健壮性。正是这些特性,使OSPF成为中大型企业网络和ISP网络内部路由毋庸置疑的首选。
