关键词:OSPF、Cost、开销计算、带宽参考值、参考带宽、接口开销、路径选择

第65篇:OSPF 开销计算与带宽参考值

一、引言

OSPF 使用 Cost(开销)作为路由选路的度量标准。每条 OSPF 链路的 Cost 基于接口带宽计算,带宽越高,Cost 越低,该链路在 SPF 计算中就越容易被选为最优路径。

理解 OSPF 的 Cost 计算机制,特别是参考带宽(Reference Bandwidth)的概念,对于正确引导 OSPF 的选路行为至关重要。在现代高速网络中,默认的参考带宽往往不足以区分千兆和万兆链路的差异,需要进行调整。

二、核心概念

2.1 Cost 的基本计算方式

OSPF 接口 Cost 的计算公式:

Cost = Reference-Bandwidth / Interface-Bandwidth

其中: - Reference-Bandwidth:参考带宽,OSPF 进程级别参数 - Interface-Bandwidth:接口的实际带宽

2.2 默认参考带宽与问题

华为 OSPF 的默认参考带宽为 100 Mbps:

接口带宽 默认 Cost 说明
10 Gbps 1 100/10000 = 0.01,向上取整为 1
1 Gbps 1 100/1000 = 0.1,向上取整为 1(与10G相同!)
100 Mbps 1 100/100 = 1
10 Mbps 10 100/10 = 10
1 Mbps 100 100/1 = 100

问题:当参考带宽为 100 Mbps 时,所有带宽 >= 100 Mbps 的接口 Cost 均为 1,无法区分百兆、千兆、万兆等高速链路的差异。这导致 OSPF 在高速链路间无法做出基于带宽的选路决策。

2.3 参考带宽的调整

为了解决高速链路 Cost 相同的问题,需要将参考带宽提升到更高的值:

参考带宽 100Mbps Cost 1Gbps Cost 10Gbps Cost 100Gbps Cost
10^8 (默认) 1 1 1 1
10^9 10 1 1 1
10^10 100 10 1 1
10^11 1000 100 10 1
10^12 10000 1000 100 10

推荐将参考带宽设置为 10^11 或更高,以确保万兆及以下带宽的链路都有足够的 Cost 区分度。

三、技术细节

3.1 OSPF Cost 的范围与约束

属性 值
Cost 最小值 1
Cost 最大值 16777215(2^24-1,3字节)
Cost 为 0 不允许,自动调整为 1
Cost 精度 整数

关键约束:OSPF Cost 使用 3 字节(24 bit)存储,最大值为 16777215。这意味着单条路径上最多可以串联约 1600 万条 Cost 为 1 的链路而不溢出。

3.2 参考带宽的配置要求

修改参考带宽时需要特别注意:

  1. 区域内所有路由器必须使用相同的参考带宽,否则 Cost 计算结果不一致,可能导致选路错误甚至路由环路
  2. 修改参考带宽后,所有接口的 Cost 会重新计算,可能触发 SPF 重算
  3. 建议在网络规划阶段确定参考带宽,并在所有路由器上统一配置
# 配置参考带宽(单位:Mbps)
ospf 1
 reference-bandwidth 10000    # 设置为10Gbps

# 或更大的值
ospf 1
 reference-bandwidth 100000   # 设置为100Gbps

3.3 手动配置接口 Cost

除了基于带宽自动计算,也可以手动指定接口的 OSPF Cost:

# 手动设置接口Cost
interface GigabitEthernet 0/0/1
 ospf cost 100

# 查看接口Cost
display ospf interface GigabitEthernet 0/0/1

手动配置 Cost 的场景: - 需要基于非带宽因素(如延迟、可靠性)调整选路 - 链路带宽无法正确获取时 - 需要进行流量工程或路径引导时

3.4 Cost 与路径选择

SPF 算法选择到达目的节点累计 Cost 最小的路径。Cost 的累加是单向的:

Cost 与路径选择 - 图示

R1 到达 R3 的 Cost = 10 + 20 = 30

注意:OSPF 的 Cost 是出方向(Outgoing)的,即链路 Cost 归属于发出 LSA 的接口。R1→R2 的 Cost 是 R1 侧接口的 Cost,R2→R1 的 Cost 是 R2 侧接口的 Cost。两端可以不同。

四、实战配置/案例分析

4.1 参考带宽调整配置

# 在所有OSPF路由器上统一配置参考带宽
sysname R1
ospf 1 router-id 1.1.1.1
 reference-bandwidth 100000    # 100Gbps

# 配置完成后验证各接口Cost
display ospf interface
 # 100Gbps接口 Cost = 1
 # 10Gbps接口 Cost = 10
 # 1Gbps接口 Cost = 100
 # 100Mbps接口 Cost = 1000

4.2 案例分析:参考带宽不一致导致次优路由

故障现象:网络中有 1Gbps 和 10Gbps 两条并行链路,流量优先走了 1Gbps 链路而非 10Gbps 链路。

排查:

  1. 检查两台路由器的参考带宽配置:
[R1] display ospf
 Reference-Bandwidth: 100 (Mbps)    # 默认值

[R2] display ospf
 Reference-Bandwidth: 10000 (Mbps)  # 已修改
  1. 根因:R1 使用默认参考带宽 100 Mbps,R2 使用 10000 Mbps。在 R1 上,1G 和 10G 接口的 Cost 均为 1;在 R2 上,1G 接口 Cost = 10,10G 接口 Cost = 1。两端 Cost 计算不一致,导致选路错误。

  2. 修复:在所有路由器上统一参考带宽:

# 所有路由器上执行
ospf 1
 reference-bandwidth 100000

4.3 案例分析:利用 Cost 引导流量

需求:主链路为 10Gbps,备份链路为 1Gbps,正常情况下流量走主链路,主链路故障时自动切换。

# 主链路(R1→R2, 10Gbps)
interface GigabitEthernet 0/0/1
 ospf cost 10          # 低Cost,优先使用

# 备份链路(R1→R3, 1Gbps)
interface GigabitEthernet 0/0/2
 ospf cost 100         # 高Cost,备份使用

通过手动设置 Cost,确保主链路始终被优先选择。当主链路故障时,OSPF 自动将流量切换到备份链路。

五、总结

要点 说明
Cost 公式 Reference-Bandwidth / Interface-Bandwidth
默认参考带宽 100 Mbps
推荐参考带宽 10^10 ~ 10^12,确保高速链路有区分度
Cost 范围 1 ~ 16777215
配置一致性 区域内所有路由器参考带宽必须相同
手动 Cost 可覆盖自动计算,用于路径引导
方向性 Cost 是出方向的,链路两端可以不同

思考

  1. 为什么 OSPF Cost 的最小值是 1 而不是 0?如果允许 Cost 为 0 会导致什么问题?
  2. 当参考带宽设置为 10^12 时,100 Mbps 接口的 Cost 是多少?这个值是否合理?
  3. OSPF Cost 是出方向的(Outgoing Cost),这意味着链路两端的 Cost 可以不同。这种设计有什么优势和需要注意的地方?

下篇预告:第66篇:OSPF 等价负载分担 ECMP