为什么要把三者放在一起看
weight、LOCAL_PREF、MED 都用来影响选路,但作用域与方向完全不同:weight 只在本机有效,LOCAL_PREF 决定本 AS 从哪个出口出去,MED 则是建议相邻对端从哪个入口进来。写策略前先想清楚「要影响谁的哪个方向」,否则很容易把属性配到错误的方向上,看起来配了却完全没有效果。
属性对照
| 属性 | 作用域 | 方向 | 数值偏好 |
|---|---|---|---|
| Weight | 仅本机 | 本机决策 | 大者胜 |
| LOCAL_PREF | 本 AS(iBGP 传播) | 出 AS 方向 | 大者胜 |
| MED | 相邻对端 AS | 建议对端入 AS 方向 | 小者胜 |
| AS-PATH 预置 | 对端看到你的路径 | 出 AS 方向 | 路径短者优 |
基本信息
| 决策位置 | weight 第 1 位,LOCAL_PREF 第 2 位,MED 第 6 位 |
|---|---|
| 是否出本机 | weight 不出本机,LOCAL_PREF 只在本 AS 内,MED 可发给邻居 |
| 默认值 | weight 0(本地起源 32768)、LOCAL_PREF 100、MED 0 |
| 适用设备 | weight 为 Cisco 实现,其他属性为通用属性 |
| 验证方式 | show ip bgp <前缀> 查看 Weight / LocPrf / Metric 三列 |
典型使用场景
- 想让本机走某条出口:用 weight 或 LOCAL_PREF,两者都不要用在出向
- 想让整个 AS 走某个出口:用 LOCAL_PREF,并在出口设备统一设置
- 想让自己从对端的某个入口进来:用 MED 或 AS-PATH 预置,属出向
- 多运营商场景:预置用于跨 AS 引导,MED 用于同 AS 双链路
- 排障时先确认要改变的是自己出去的方向还是对方进来的方向
方向正确的用法
方向正确的用法
# 入向:影响本 AS 从哪个出口出去
route-map LP-IN permit 10
set local-preference 200 # 大者胜,抬高本 AS 对该路径的偏好
neighbor 10.0.0.2 route-map LP-IN in
!
# 出向:建议对端从哪条链路进来
route-map MED-OUT permit 10
set metric 50 # 小者胜,数值小表示更希望被选用
neighbor 10.0.0.2 route-map MED-OUT out
!
show ip bgp 10.1.1.0/24 # 核对 Weight / LocPrf / Metric 三列记忆方式:入向属性管「我怎么出去」,出向属性管「别人怎么进来」;weight 是本机私有的快速开关,不参与跨设备协同。
属性配到错误方向不会报错也不会生效,问题只在流量走向上体现,因此变更前明确方向、变更后同时核对两端视角。
决策顺序决定了三者的实际影响力:weight 在第 1 位、LOCAL_PREF 在第 2 位、MED 在第 6 位;只要前序属性已经分出胜负,后序属性设置得再精细也不会改变结果。