第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)。


七、思考

  1. 路由优先级(Preference)和度量值(Metric)各在什么阶段比较?
  2. 华为设备中,OSPF、Static、RIP 的默认 Preference 分别是多少?
  3. 如果 OSPF 到 10.0.1.0/24 的 Cost=50,静态路由到同一个网段 Preference=60,路由器会选哪个?
  4. 两条 OSPF 路由,Cost 分别为 10 和 20,Preference 都是 10,会怎么选?
  5. 等价负载分担(ECMP)需要满足哪些条件?
  6. 修改 Preference 会影响路由表中该协议的全部路由吗?只想影响某一条路由应该怎么做?

下篇预告:第38篇《最长匹配原则_路由查表的核心规则》——掌握最长匹配原则——路由查表的核心规则。