第37篇:路由优先级(Preference)与度量值(Metric)
一、写在前面
路由表中可能同时存在多条去往同一目的地的路由,它们可能来自不同的路由协议(OSPF、静态、RIP、BGP),来自不同邻居,或者走的是不同的路径。
路由器怎么选?靠两轮比较:
| 轮次 | 比较什么 | 范围 | 结论 |
|---|---|---|---|
| 第一轮 | 路由优先级(Preference) | 跨协议比较 | 选出最优协议 |
| 第二轮 | 度量值(Metric) | 同协议内部比较 | 选出最优路径 |
很多新工程师常把这两个概念搞混。这篇彻底把它们讲清楚。
二、路由优先级(Preference)
2.1 定义
路由优先级(Preference) 用于比较不同路由协议学习到的同一条路由。
- 数值越小 → 优先级越高 → 路由越优
- 优先级是跨协议的"仲裁者"
2.2 华为设备默认优先级
| 路由来源 | 默认 Preference | 说明 |
|---|---|---|
| Direct(直连) | 0 | 最高优先级,不可修改 |
| OSPF | 10 | 链路状态协议,可靠性高 |
| IS-IS | 15 | 运营商常用 |
| Static(静态) | 60 | 管理员手工配置 |
| RIP | 100 | 距离矢量,可靠性较低 |
| OSPF ASE | 150 | OSPF 外部路由 |
| BGP | 255 | 最低优先级 |
| 未知 | 255 | 不可信路由 |
2.3 优先级的比较过程
路由器同时收到两条去 10.0.1.0/24 的路由:
来自 OSPF(Preference=10,Cost=100)
来自 Static(Preference=60,Cost=0)
第一步:比较 Preference → OSPF(10) < Static(60)
→ 选择 OSPF 路由(即使 Static 的 Cost=0 更小!)
结论:优先级先于度量值比较
2.4 修改优先级
# 修改静态路由的优先级(让静态路由优先于 OSPF)
[R1] ip route-static 10.0.1.0 255.255.255.0 192.168.12.2 preference 5
# OSPF 默认 10,静态改到 5 → 静态路由优先生效
三、度量值(Metric)
3.1 定义
度量值(Metric) 用于比较同一路由协议内到达同一目的地的多条路径。
- 数值越小 → 路径越优
- 不同协议的度量值不能直接比较(单位不同)
3.2 不同协议的度量值
| 协议 | 度量值 | 意义 |
|---|---|---|
| RIP | 跳数(Hop Count) | 经过的路由器数量 |
| OSPF | 开销(Cost) | 10^8 / 带宽(带宽越大 Cost 越小) |
| IS-IS | 开销(Cost) | 默认 10,或按带宽计算 |
| BGP | 多属性综合 | AS_PATH、Local_Pref、MED 等 |
3.3 OSPF Cost 计算
OSPF Cost = 参考带宽 / 接口带宽
参考带宽默认 100 Mbps(可修改)
10M 以太网: 100/10 = 10
100M 快速以太网: 100/100 = 1
1G 千兆以太网: 100/1000 = 0.1 → 取整为 1
10G 万兆: 100/10000 = 0.01 → 取整为 1
改参考带宽:
[R1] ospf 1
[R1-ospf-1] bandwidth-reference 10000 ← 改成 10000 Mbps
3.4 手动修改 Cost
# OSPF 中手动设置接口 Cost,影响选路
[R1-GigabitEthernet0/0/1] ospf cost 100
# RIP 中手动设置引入路由的跳数
[R1-rip-1] default metric 3
四、优先级 vs 度量值的比较流程
收到两条去同一目的地的路由
│
▼
路由优先级(Preference)是否相同?
│
├── 不同 → 选取 Preference 小的(优先级高)
│ 直接使用,不比较 Metric
│
└── 相同 → 再比较 度量值(Metric)
选取 Metric 小的(路径更优)
示例
| 路由来源 | Preference | Metric |
|---|---|---|
| OSPF 路径 1 | 10 | 10 |
| OSPF 路径 2 | 10 | 20 |
| Static | 60 | 0 |
Step 1:Preference 比较
OSPF(10) < Static(60) → OSPF 胜出
Step 2:Metric 比较(OSPF 内部)
OSPF 路径1(Metric=10) < OSPF 路径2(Metric=20)
→ 选择 OSPF 路径1
最终选择:OSPF 路径1
五、等价负载分担(ECMP)
当多条路由满足以下全部条件时,路由器会同时使用它们做等价负载分担:
| 条件 | 说明 |
|---|---|
| 目的网段相同 | 去同一个目的地 |
| Preference 相同 | 同一协议 |
| Metric 相同 | Cost 值相等 |
| 下一跳不同 | 走不同的下一跳 |
[R1] display ip routing-table 10.0.1.0
Destination/Mask Proto Pre Cost NextHop Interface
10.0.1.0/24 OSPF 10 10 192.168.12.2 GE0/0/1
10.0.1.0/24 OSPF 10 10 192.168.13.3 GE0/0/2
# 两条路由都被选中 → 流量通过 Hash 分担到两条链路上
配置 ECMP 最大条数
[R1] ip load-balance 4 ← 最大支持 4 条等价路由负载分担
六、常见误区
误区 1:认为 Static 的路由一定比 OSPF 优先
事实:在华为设备中,OSPF(10) < Static(60),所以 OSPF 更优先。要让静态优先于 OSPF,需要手动改静态的 Preference。
误区 2:认为 RIP 的 Metric 可以和 OSPF 的 Metric 直接比较
事实:RIP 的跳数和 OSPF 的 Cost 是不同维度的值,不能直接比较。必须先通过 Preference 选定协议,再比同协议的 Metric。
误区 3:改了 Preference 就万事大吉
注意:修改 Preference 会影响该协议的所有路由,而不是某一条。如果只想让某条路由更优先,可以用路由策略(Route-Policy)。
七、思考
- 路由优先级(Preference)和度量值(Metric)各在什么阶段比较?
- 华为设备中,OSPF、Static、RIP 的默认 Preference 分别是多少?
- 如果 OSPF 到 10.0.1.0/24 的 Cost=50,静态路由到同一个网段 Preference=60,路由器会选哪个?
- 两条 OSPF 路由,Cost 分别为 10 和 20,Preference 都是 10,会怎么选?
- 等价负载分担(ECMP)需要满足哪些条件?
- 修改 Preference 会影响路由表中该协议的全部路由吗?只想影响某一条路由应该怎么做?
下篇预告:第38篇《最长匹配原则_路由查表的核心规则》——掌握最长匹配原则——路由查表的核心规则。