跨 AS 比较 MED 的开关
MED 是为「同一个邻居 AS」提供入口选择建议的属性,BGP 默认只在来自同一邻居 AS 的多条路径之间比较 MED。always-compare-med 打破这条限制,允许对来自不同邻居 AS 的路径也比较 MED。它有多出口场景的实际用途,但会降低选路结果的可预测性:不同运营商之间的 MED 数值本是各自约定、互不相关的量,跨 AS 比较等于用不可比的数值做决定。
基本信息
| 默认行为 | 只比较来自同一邻居 AS 的路径 MED |
|---|---|
| 命令作用 | 允许跨邻居 AS 比较 MED 值 |
| 属性本质 | 给邻居 AS 的入向建议值,数值越小越优先 |
| 影响范围 | 全局开关,改变选路结果的可预测性 |
| 变更后生效 | 已学路由需软刷新才按新规则重算 |
| 常见误用 | 把不同运营商各自约定的 MED 数值当同一尺度比较 |
| 相关开关 | 与 missing-as-worst 配合决定 MED 缺失时的排序 |
典型使用场景
- 多出口多运营商:需要按 MED 统一排序时,前提是各方数值口径一致
- 内部多边界协同:内部设备需要比较来自多个边界设备的多条路径
- 排查选路与预期不符:确认是否某台设备开启了 always-compare-med
- 变更审计:全局开关必须在全网保持一致,否则设备之间的判断会分裂
- 与 missing-as-worst 组合:设计完整的 MED 排序规则时一起评估
配置与核对
配置与核对
router bgp 65001
bgp always-compare-med # 允许跨邻居 AS 比较 MED,全局生效
!
show ip bgp 10.1.0.0 # 看多条路径的 MED 值与选中的那条
show ip bgp neighbors 10.0.0.2 # 确认该邻居属于哪个 AS
show run | include always-compare-med # 审计全网是否一致配置MED 相关开关的作用
| 开关 | 作用 | 风险 |
|---|---|---|
| always-compare-med | 跨邻居 AS 也比较 MED | 数值口径不一致时选路结果不可预测 |
| missing-as-worst | 缺失 MED 视为最大值 | 未协商 MED 的邻居被整体排到最后 |
| 两者组合 | 跨 AS 排序叠加缺失值垫底 | 影响面叠加,必须全网统一配置 |
| route-map 设置 MED | 按前缀精细控制 | 依赖对端是否真的按 MED 选路 |
MED 是建议而不是命令:对端是否采纳、在什么优先级采纳,由对端的实现与配置决定。多运营商场景里把它当作唯一依据风险很高,通常还要配合 LOCAL_PREF、AS_PATH 等手段一起设计。
这类全局开关在同一 AS 内必须全网一致:一台开了、一台没开,内部对最优路径的判断就会分裂,表现为同一条路由在不同设备上选到了不同的下一跳,且各自都认为自己是正确的。
变更属于全网属性操作:先在实验环境验证选择结果,确认没有意外绕行或次优路径,再按窗口统一上线,并要求各设备配置与生效状态一致。