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

关键词

OSPF、Cost、开销、带宽参考值、参考带宽、链路成本


一、OSPF 的度量标准:Cost

Cost(开销) 是 OSPF 选路的度量标准。SPF 算法选择 Cost 总和最小的路径作为最优路径。

1.1 Cost 的计算公式

Cost = 参考带宽(Reference Bandwidth)÷ 接口带宽(Interface Bandwidth)

默认参考带宽100 Mbps

1.2 常见接口的默认 Cost

接口类型 带宽 Cost(默认参考带宽 100Mbps)
100M 以太网 100 Mbps 100 ÷ 100 = 1
1000M 以太网 1000 Mbps 100 ÷ 1000 = 1
10GE 接口 10000 Mbps 100 ÷ 10000 = 1
40GE 接口 40000 Mbps 100 ÷ 40000 = 1
100GE 接口 100000 Mbps 100 ÷ 100000 = 1
E1 通道 2.048 Mbps 100 ÷ 2.048 ≈ 48
T1 通道 1.544 Mbps 100 ÷ 1.544 ≈ 64

二、默认 Cost 的致命问题

2.1 百兆及以上接口 Cost 都是 1

从上面的表格可以看出:当接口带宽 ≥ 100Mbps 时,默认计算出的 Cost 都是 1

这意味着:

RouterA ─── 1Gbps ─── RouterB
   │                       │
   │      100Mbps          │
   └───────────────────────┘

两条路径的 Cost 都是 1
OSPF 认为它们等价,做 ECMP 负载分担

但显然 1Gbps 路径远优于 100Mbps 路径!

2.2 解决方案:调整参考带宽

如果网络中存在百兆以上的链路,必须调整参考带宽,否则 OSPF 无法区分路径优劣。

ospf 1
 bandwidth-reference 10000    # 参考带宽改为 10000 Mbps(10Gbps)

调整后的 Cost:

接口类型 带宽 Cost(参考带宽 10000Mbps)
100M 以太网 100 Mbps 10000 ÷ 100 = 100
1000M 以太网 1000 Mbps 10000 ÷ 1000 = 10
10GE 10000 Mbps 10000 ÷ 10000 = 1
40GE 40000 Mbps 10000 ÷ 40000 ≈ 0(需注意)

2.3 参考带宽设置的坑

参考带宽不能设得太高,否则高速接口的 Cost 会变成 0——Cost 为 0 意味着 SPF 认为这条链路"免费"。

# 错误示例:参考带宽 100000(100Gbps)
bandwidth-reference 100000
# 10GE 的 Cost = 100000 ÷ 10000 = 10  ✅ 没问题
# 40GE 的 Cost = 100000 ÷ 40000 = 2.5 → 取整 2 ✅
# 100GE 的 Cost = 100000 ÷ 100000 = 1 ✅

最佳实践:参考带宽设为网络中最高链路带宽的 10 倍左右。例如千兆网络用 10000,万兆网络用 100000。


三、手动配置 Cost

如果不想依赖公式计算,也可以手动指定接口的 Cost

interface GigabitEthernet0/0/0
 ospf cost 100

手动配置的优先级高于自动计算。

3.1 优先级规则

手动 Cost > bandwidth-reference 计算

查看接口的 OSPF Cost:

display ospf interface GigabitEthernet0/0/0

OSPF Process 1 with Router ID 1.1.1.1
  Interface: 10.0.12.1 (GigabitEthernet0/0/0)
  Cost: 10                    ← 当前的 Cost 值
  State: DR                   Type: Broadcast
  Designated Router: 10.0.12.1
  Timers: Hello 10, Dead 40, Poll 120, Wait 40

四、Cost 与路由选路

4.1 SPF 如何用 Cost 计算最短路径

                    10.0.1.0/24
                         │
                     RouterA
                      /    \
                   Cost=1   Cost=100
                    /          \
                RouterB      RouterC
                   |            |
                Cost=1        Cost=1
                   |            |
                RouterD──── RouterD
                   Cost=1

RouterA 到 RouterD 的最短路径:
  路径 1:A → B → D,总 Cost = 1+1=2
  路径 2:A → C → D,总 Cost = 100+1=101  ← 不会选

→ 选择路径 1(Cost 最小)

4.2 通过调整 Cost 影响选路

# 想让流量走指定的路径,可以人工增大不希望走的路径 Cost
interface GigabitEthernet0/0/1
 ospf cost 1000    # 这条路径的 Cost 很高,OSPF 会优选其他路径

五、不同厂商的 Cost 计算差异

厂商 默认参考带宽 备注
华为 100 Mbps 可通过 bandwidth-reference 修改
Cisco 100 Mbps 可通过 auto-cost reference-bandwidth 修改
Juniper 根据接口自动计算 使用二进制调整值

跨厂商互联建议:确保所有设备的参考带宽一致,否则会选路不一致。


六、Cost 相关故障排查

6.1 次优路径

现象:流量走了更慢的链路。

排查思路

# 1. 查看两条路径的 Cost
display ospf interface brief

# 2. 检查参考带宽是否一致
display ospf 1 | include bandwidth

# 3. 检查是否有手动配置的 Cost
display current-configuration interface | include ospf cost

6.2 Cost 不对称

现象:去程和回程路径不一致。

# 检查两端接口的 Cost
RouterA:
  interface GE0/0/0: ospf cost 10

RouterB:
  interface GE0/0/0: ospf cost 100  ← 回程 Cost 大,可能走其他路径

七、最佳实践总结

  1. 统一参考带宽:全网必须一致
  2. 参考带宽覆盖最高速链路:确保最高速链路的 Cost 不为 0
  3. 谨慎手动配置:手动 Cost 会覆盖自动计算,维护成本高
  4. 定期检查:新增高速链路后,确认 Cost 是否符合预期
  5. Loopback 接口 Cost = 0:Loopback 接口的 Cost 固定为 0

八、思考

  1. OSPF 默认的参考带宽是多少?如果需要在一个千兆网络中使用 OSPF,建议将参考带宽设为多少?
  2. 如果参考带宽设得过大,可能导致什么问题?
  3. 手动配置的 Cost 与自动计算的 Cost 哪个优先级更高?
  4. 一个包含 100M、1G、10G 链路的混合网络中,如果所有设备都使用默认参考带宽,OSPF 会如何选路?
  5. 在跨厂商 OSPF 互联场景中,为什么需要确保参考带宽一致?

下篇预告:第66篇《OSPF 等价负载分担 ECMP》——理解 OSPF 如何在多条等价链路上分担流量。