关键词: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 参考带宽的配置要求
修改参考带宽时需要特别注意:
- 区域内所有路由器必须使用相同的参考带宽,否则 Cost 计算结果不一致,可能导致选路错误甚至路由环路
- 修改参考带宽后,所有接口的 Cost 会重新计算,可能触发 SPF 重算
- 建议在网络规划阶段确定参考带宽,并在所有路由器上统一配置
# 配置参考带宽(单位: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 的累加是单向的:

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 链路。
排查:
- 检查两台路由器的参考带宽配置:
[R1] display ospf
Reference-Bandwidth: 100 (Mbps) # 默认值
[R2] display ospf
Reference-Bandwidth: 10000 (Mbps) # 已修改
-
根因:R1 使用默认参考带宽 100 Mbps,R2 使用 10000 Mbps。在 R1 上,1G 和 10G 接口的 Cost 均为 1;在 R2 上,1G 接口 Cost = 10,10G 接口 Cost = 1。两端 Cost 计算不一致,导致选路错误。
-
修复:在所有路由器上统一参考带宽:
# 所有路由器上执行
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 是出方向的,链路两端可以不同 |
思考
- 为什么 OSPF Cost 的最小值是 1 而不是 0?如果允许 Cost 为 0 会导致什么问题?
- 当参考带宽设置为 10^12 时,100 Mbps 接口的 Cost 是多少?这个值是否合理?
- OSPF Cost 是出方向的(Outgoing Cost),这意味着链路两端的 Cost 可以不同。这种设计有什么优势和需要注意的地方?
下篇预告:第66篇:OSPF 等价负载分担 ECMP