第37篇:路由优先级(Preference)与度量值(Metric)
关键词:路由优先级、Preference、度量值、Metric、路由选路、最优路由
一、引言
路由表中可能同时存在多条到达同一目的网络的路由条目。路由器如何从这些候选路由中选择一条最优路由?这取决于两个关键参数:优先级(Preference)和度量值(Metric)。理解这两个参数的区别和协作关系,是掌握路由选路逻辑的核心。
二、核心概念
2.1 优先级(Preference):协议间的竞争
优先级用于比较不同路由协议(或路由来源)之间的优劣。当多条路由来自不同的协议时,优先级决定哪条优先生效。
| 路由来源 | 华为默认优先级 | 说明 |
|---|---|---|
| 直连路由(Direct) | 0 | 最高优先级,接口 UP 即生效 |
| OSPF(内部路由) | 10 | OSPF 域内路由 |
| IS-IS | 15 | IS-IS 协议路由 |
| 静态路由(Static) | 60 | 管理员可调整 |
| RIP | 100 | RIP 协议路由 |
| OSPF(外部路由,ASE/NSSA) | 150 | 从其他协议引入 OSPF 的路由 |
| BGP(IBGP/EBGP) | 255 | 最低优先级,IBGP 与 EBGP 默认相同 |
华为设备的优先级规则:值越小,优先级越高。这与 Cisco 的 Administrative Distance 概念一致。
2.2 度量值(Metric):协议内部的竞争
度量值用于比较同一协议内部不同路径的优劣。当多条路由来自同一协议时,度量值决定哪条路径更优。
| 协议 | Metric 含义 | 计算方式 | 优选方向 |
|---|---|---|---|
| RIP | 跳数 | 经过的路由器数量 | 越小越好 |
| OSPF | 成本(Cost) | 参考带宽 / 接口带宽 | 越小越好 |
| IS-IS | 度量值 | 可手动配置 | 越小越好 |
| BGP | 多属性 | 优先级/本地偏好/AS路径等 | 综合比较 |
| 静态 | 固定值 | 默认为 0,可手动设置 | 越小越好 |
2.3 路由选择的两个阶段
路由选择遵循先比优先级,再比度量值的顺序:

2.4 优先级 vs 度量值的类比
| 概念 | 类比 | 作用域 |
|---|---|---|
| 优先级 | 比较不同交通工具的"等级"(飞机 > 高铁 > 汽车) | 跨协议 |
| 度量值 | 比较同一交通工具的"路程"(近路 > 远路) | 协议内 |
三、技术细节
3.1 华为设备的路由优先级完整表
| 路由协议 | 默认优先级 | 可调整范围 |
|---|---|---|
| Direct | 0 | 不可调(固定) |
| OSPF-IntraArea | 10 | 1-255 |
| OSPF-InterArea | 10 | 1-255 |
| ISIS-Level1 | 15 | 1-255 |
| ISIS-Level2 | 15 | 1-255 |
| Static | 60 | 1-255 |
| RIP | 100 | 1-255 |
| OSPF-ASE/NSSA | 150 | 1-255 |
| BGP(IBGP/EBGP) | 255 | 1-255(preference external internal local 分别设置) |
华为的默认优先级为:直连 0、OSPF 10、IS-IS 15、静态 60、RIP 100、OSPF ASE/NSSA 150、IBGP/EBGP 255。 除直连路由(Direct)外,各路由协议的优先级都可以通过命令调整,取值范围多为 1-255(0 保留给直连路由);具体以设备命令手册为准。
3.2 调整静态路由优先级
# 默认静态路由优先级为 60
[HUAWEI] ip route-static 10.0.0.0 24 10.1.1.2
# 调整优先级为 80(数值大于 OSPF 的 10,优先级别反而更低)
[HUAWEI] ip route-static 10.0.0.0 24 10.1.1.2 preference 80
# 此时如果 OSPF 也学习到 10.0.0.0/24,OSPF 路由优先生效
# 因为 OSPF 优先级 10 < 静态路由优先级 80
3.3 OSPF Cost 计算
OSPF 的 Cost = 参考带宽 / 接口带宽(取整,最小值为 1)
| 接口速率 | 默认参考带宽(100Mbps) | Cost |
|---|---|---|
| 10 Mbps | 100/10 | 10 |
| 100 Mbps | 100/100 | 1 |
| 1 Gbps | 100/1000 → 0.1 | 1(取整) |
| 10 Gbps | 100/10000 → 0.01 | 1(取整) |
问题:100Mbps、1Gbps、10Gbps 的 Cost 都是 1,OSPF 无法区分。需要调整参考带宽。
# 调整 OSPF 参考带宽(单位 Mbps)
[HUAWEI] ospf 1
[HUAWEI-ospf-1] reference-bandwidth 10000 # 10Gbps 基准
# 调整后:
# 100Mbps → 10000/100 = 100
# 1Gbps → 10000/1000 = 10
# 10Gbps → 10000/10000 = 1
3.4 静态路由的 Cost 调整
# 默认 Cost 为 0
[HUAWEI] ip route-static 0.0.0.0 0 203.0.113.1
# 设置 Cost 为 10
[HUAWEI] ip route-static 0.0.0.0 0 203.0.113.1 cost 10
# 等价负载分担:两条静态路由相同 Cost
[HUAWEI] ip route-static 0.0.0.0 0 203.0.113.1
[HUAWEI] ip route-static 0.0.0.0 0 198.51.100.1
# 两条路由若 protocol/priority/cost 相同,则形成等价负载分担(默认允许)
四、实战配置与故障案例
4.1 案例一:调整优先级使静态路由优先生效
需求:管理员希望静态路由比 OSPF 优先级更高,即使 OSPF 也学到了同一目的网络,也使用静态路由。
# 默认情况:OSPF(10) > 静态(60)
# OSPF 路由优先生效
# 修改静态路由优先级为 5(高于 OSPF 的 10)
[HUAWEI] ip route-static 10.0.0.0 24 10.1.1.2 preference 5
# 验证
<HUAWEI> display ip routing-table 10.0.0.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 Static 5 0 D 10.1.1.2 GigabitEthernet0/0/1
# 静态(Pre=5)优先;OSPF 也学到了 10.0.0.0/24,但 Pre=10 > 5,不是最优路由,
# display ip routing-table 只显示当前被优选的路由(查看 OSPF 路由:display ip routing-table protocol ospf)
4.2 案例二:等价负载分担
需求:企业有两条 1Gbps 链路到数据中心,希望流量均衡分担。
# 方案1:等价静态路由(相同优先级和 Cost)
[HUAWEI] ip route-static 10.0.0.0 24 10.1.1.2
[HUAWEI] ip route-static 10.0.0.0 24 10.2.2.2
# 验证负载分担
<HUAWEI> display ip routing-table 10.0.0.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 2
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 Static 60 0 D 10.1.1.2 GigabitEthernet0/0/1
Static 60 0 D 10.2.2.2 GigabitEthernet0/0/2
# 两条路由的协议、优先级、Cost 相同,均下发 FIB(Flags=D),构成等价负载分担
# 等价路由的副行不重复显示目的网络,仅列出 Proto/Cost/Flags/NextHop/Interface
# 默认最大等价路径数视产品/版本而定(常见 4/8/16),以设备手册为准
# 调整等价路径数量:在对应协议视图下配置(并不是一条全局命令)
[HUAWEI] rip 1
[HUAWEI-rip-1] maximum load-balancing 4 # RIP 视图
[HUAWEI-rip-1] quit
[HUAWEI] ospf 1
[HUAWEI-ospf-1] maximum load-balancing 4 # OSPF 视图
[HUAWEI-ospf-1] quit
[HUAWEI] bgp 100
[HUAWEI-bgp] ipv4-family unicast
[HUAWEI-bgp-af-ipv4] maximum load-balancing ebgp 4 # BGP:EBGP/IBGP 分别设置
[HUAWEI-bgp-af-ipv4] maximum load-balancing ibgp 4
# 静态路由的等价路由条数由产品 IPv4 等价路由能力决定,调整命令以设备手册为准
4.3 案例三:OSPF Cost 不区分链路带宽
故障描述:目的网络有两条路径:100Mbps 链路 2 段、1Gbps 链路 3 段。OSPF 将流量导向 100Mbps 链路而非 1Gbps 链路,带宽更大的路径闲置,性能不达标。
# 检查 OSPF 路由
<HUAWEI> display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 OSPF 10 2 D 10.1.1.2 GigabitEthernet0/0/1
# 10.0.0.0/24 走 100M 链路所在路径(2 段,Cost=2)
# 1G 链路所在路径(3 段)Cost=3,不是最优,不进常规路由表显示
# 检查接口 Cost
<HUAWEI> display ospf interface GigabitEthernet0/0/1
OSPF Process 1 with Router ID 10.1.1.1
Interfaces
Interface: 10.1.1.1 (GigabitEthernet0/0/1)
Cost: 1 State: DROther Type: Broadcast MTU: 1500
<HUAWEI> display ospf interface GigabitEthernet0/0/2
OSPF Process 1 with Router ID 10.1.1.1
Interfaces
Interface: 10.2.1.1 (GigabitEthernet0/0/2)
Cost: 1 State: DROther Type: Broadcast MTU: 1500
# 两个接口的单段 Cost 都是 1:默认参考带宽 100Mbps 下,100M 与 1G 接口的 Cost 都是 1,
# 路径总 Cost 只由链路段数决定(2 段 vs 3 段),带宽差异完全体现不出来
# 根因:OSPF 参考带宽默认为 100Mbps,1Gbps 接口的 Cost = 100/1000 → 取整为 1,
# 与 100Mbps 接口相同;OSPF 选路只看 Cost,1G 路径段数多 Cost 大
# 解决方案一:调整参考带宽(所有 OSPF 路由器必须一致)
[HUAWEI] ospf 1
[HUAWEI-ospf-1] reference-bandwidth 10000
[HUAWEI-ospf-1] quit
# 调整后:100M 单段 Cost=100,1G 单段 Cost=10
# 100M 路径 = 2×100 = 200,1G 路径 = 3×10 = 30 → OSPF 自动优选 Cost 小的 1G 链路
# 解决方案二:手工配置端口OSPF COST
[HUAWEI] interface GigabitEthernet0/0/1
[HUAWEI-GigabitEthernet0/1/0]ospf cost 10
[HUAWEI-GigabitEthernet0/1/0]quit
[HUAWEI] interface GigabitEthernet0/0/2
[HUAWEI-GigabitEthernet0/1/0]ospf cost 100
[HUAWEI-GigabitEthernet0/1/0]quit
# 其他链路端口参考上面配置
# 调整后:100M 单段 Cost=100,1G 单段 Cost=10
4.4 案例四:优先级配错导致流量走次优路径
故障描述:配置了 OSPF 和 RIP 后,流量走了 RIP 路径而非 OSPF 路径,导致性能下降(RIP 路径经过更多跳数)。
# 检查路由表
<HUAWEI> display ip routing-table 10.0.0.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 RIP 5 3 D 10.1.1.2 GigabitEthernet0/0/1
# RIP(Pre=5) 生效;OSPF(Pre=10) 优先级更低,未进 RIB 常规显示
# 检查 RIP 配置
<HUAWEI> display current-configuration | include preference
preference 5
# 根因:管理员之前手动将 RIP 优先级调整为 5(值越小优先级越高)
# RIP(5) > OSPF(10),RIP 路由优先生效
# RIP 路径跳数多、延迟大,属于次优路径
# 解决方案:恢复 RIP 默认优先级(100),让 OSPF 优先
[HUAWEI] rip 1
[HUAWEI-rip-1] preference 100
[HUAWEI-rip-1] quit
# 验证:OSPF 路由生效
<HUAWEI> display ip routing-table 10.0.0.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 OSPF 10 20 D 10.2.2.1 GigabitEthernet0/0/2
# 恢复 RIP 默认优先级后,OSPF(Pre=10) 优于 RIP(100),OSPF 路由生效;RIP 路由不再进表
五、总结
| 参数 | 比较范围 | 优选规则 | 可调整 |
|---|---|---|---|
| 优先级(Preference) | 不同协议之间 | 值越小越优先 | 是(1-255,直连固定为 0) |
| 度量值(Metric) | 同一协议内部 | 值越小越优先 | 是 |
| 默认优先级排序(从高到低) | 对应优先级值 |
|---|---|
| 直连(0) > OSPF内部(10) > IS-IS(15) > 静态(60) > RIP(100) > OSPF外部(150) > BGP(255) | 值越小优先级越高 |
记忆口诀:直(0)O(10)I(15)静(60)R(100)B(255),值小优先。
| 调优场景 | 方法 |
|---|---|
| 静态路由让 OSPF 优先 | 提高静态优先级(设大值) |
| OSPF 区分链路带宽 | 调整 reference-bandwidth |
| 多链路负载分担 | 相同协议 + 相同 Cost |
| 指定路径优先 | 手动调整接口 Cost 或优先级 |
思考
- 如果 OSPF 路由优先级设为 200(低于 RIP 的 100),会发生什么?为什么通常不建议这样做?
- 等价负载分担是逐包分担还是逐流分担?对业务有什么影响?
- OSPF 参考带宽调整后,为什么需要确保所有路由器保持一致?
下篇预告:第38篇:最长匹配原则:路由查表的核心规则