第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 大,可能走其他路径
七、最佳实践总结
- 统一参考带宽:全网必须一致
- 参考带宽覆盖最高速链路:确保最高速链路的 Cost 不为 0
- 谨慎手动配置:手动 Cost 会覆盖自动计算,维护成本高
- 定期检查:新增高速链路后,确认 Cost 是否符合预期
- Loopback 接口 Cost = 0:Loopback 接口的 Cost 固定为 0
八、思考
- OSPF 默认的参考带宽是多少?如果需要在一个千兆网络中使用 OSPF,建议将参考带宽设为多少?
- 如果参考带宽设得过大,可能导致什么问题?
- 手动配置的 Cost 与自动计算的 Cost 哪个优先级更高?
- 一个包含 100M、1G、10G 链路的混合网络中,如果所有设备都使用默认参考带宽,OSPF 会如何选路?
- 在跨厂商 OSPF 互联场景中,为什么需要确保参考带宽一致?
下篇预告:第66篇《OSPF 等价负载分担 ECMP》——理解 OSPF 如何在多条等价链路上分担流量。