MED 的比较条件
MED 并不是无条件参与比较:默认只在「来自同一邻居 AS」的多条路径之间比较,路径来自不同 AS 时直接跳过 MED 进入后续步骤。这个限制源于 MED 的设计意图——它只描述某个对端 AS 内部的入口偏好,跨 AS 比较没有意义。
基本信息
| 比较条件 | 路径的邻居 AS(AS_PATH 最左侧一段)相同 |
|---|---|
| 不同邻居 AS | 默认跳过 MED 比较 |
| 缺失值 | 默认按 0 处理,不改变比较方向 |
| 例外开关 | always-compare-med 跨 AS 也比较;deterministic-med 固定比较顺序 |
| 适用设备 | Cisco IOS 支持上述开关,其他厂商命名与默认值可能不同 |
| 验证 | show ip bgp <前缀> 观察候选路径的 metric 与路径来源 |
典型使用场景
- 同 AS 双链路:对端是同一运营商时,MED 是主要的入向引导手段
- 多运营商环境:需要跨 AS 比较时,明确评估是否开启 always-compare-med
- 排障确认:判断某条路径为何没被选中,先看是否根本轮不到 MED 比较
- 多设备一致性核对:全网开关状态不一致时,各设备可能推出不同结论
- 变更前预演:先在实验环境确认对端是否按 MED 选择入口
场景判断
场景判断
# 同一邻居 AS 65002 的两条路径:比较 MED
# A: 65002 65010, MED 50
# B: 65002 65020, MED 10 → B 胜(MED 小)
#
# 邻居 AS 分别为 65002 / 65003:默认不比较 MED,进入 eBGP/iBGP 与 IGP 度量步骤
show ip bgp 10.1.1.0/24
#
# 跨 AS 也比较(需全网一致,谨慎启用)
router bgp 65001
bgp always-compare-med规则细节
| 场景 | 是否比较 MED | 说明 |
|---|---|---|
| 同一邻居 AS 的两条路径 | 比较 | MED 小者胜,属性继续参与后续步骤 |
| 不同邻居 AS 的两条路径 | 不比较 | 默认跳过,注意 AS_PATH 起点是否同一 AS |
| 一条路径没有 MED | 按 0 处理 | 缺值不等于最优,仍与显式 0 等价 |
| 联盟内路径 | 依实现 | 部分厂商对联盟路径单列处理,需按平台确认 |
跨 AS 比较 MED 需要全网一致开启开关,否则不同设备可能得出不同结论,导致流量走非预期出口。
判断是否属于「同一邻居 AS」,看的是候选路径 AS_PATH 最左侧的一段,而不是路由的起源 AS。