MED 是什么
MED(Multi-Exit Discriminator,多出口鉴别器)是可选非传递属性,数值小者优先,默认 0。它的用途是向同一个对端 AS 建议从哪个入口进来:在两条出口链路上发布不同 MED,对端比较时倾向于选择数值更小的那条。MED 只是建议,对端可以用优先级更高的属性覆盖。
非传递意味着什么
MED 只会传给你的直接 eBGP 邻居,邻居再向它的对端发布更新时不会带上这个值(除非它自己重新设置)。因此 MED 的影响范围止步于下一跳 AS,跨多个 AS 的流量引导要靠 AS-PATH 预置或与对端约定社区,不能指望 MED 穿透多层。
基本信息
| 属性类型 | 可选非传递 |
|---|---|
| 数值方向 | 小者胜 |
| 默认值 | 0 |
| 决策位置 | 第 6 位,且默认只在同一邻居 AS 的路径间比较 |
| 传播范围 | 可发给 eBGP 邻居,但不再跨 AS 继续透传 |
| 配置方向 | 针对 eBGP 邻居的 out 方向 |
典型使用场景
- 双运营商接入,希望对端从主用链路进入:主用链路发布 MED 50,备用发布 MED 100
- 同城双机房分担入向流量:按机房容量设置不同 MED,控制流量比例
- 数据中心双上行,规划入向走低时延链路
- 变更前调整某个网段的入向入口,而不用改对端配置
- 多 AS 场景下 MED 仅对同一对端 AS 有效,需与 AS-PATH 预置一起核对出口设计
- 对端有多个边界设备时,用 MED 引导它选择你希望的落地点
配置示例
配置示例
router bgp 65001
default-metric 100 # 重分发路由的默认 MED
!
ip prefix-list PFX-BIZ permit 192.168.100.0/24
route-map RM-MED permit 10
match ip address prefix-list PFX-BIZ # 只对指定前缀设值
set metric 50 # 命中前缀 MED 改为 50(越小越优)
!
router bgp 65001
neighbor 10.0.0.2 route-map RM-MED out # 对 eBGP 邻居的出向生效
!
show ip bgp neighbors 10.0.0.2 advertised-routes观察与核对
观察与核对
show ip bgp 10.1.1.0/24 # 输出中的 metric 列即 MED
show ip bgp neighbors 10.0.0.2 advertised-routes | include 10.1
# 再到对端设备查看同一前缀的 metric,确认收到的就是你设置的值与相邻属性对照
| 属性 | 作用方向 | 数值偏好 | 是否跨 AS 传递 |
|---|---|---|---|
| AS-PATH 预置 | 影响对端选路 | 路径短者优 | 随更新传递并累积 |
| MED | 建议对端入口 | 小者胜 | 可发邻居,不再透传 |
| LOCAL_PREF | 决定本 AS 出口 | 大者胜 | 仅在 AS 内 iBGP 传播 |
| Weight | 本机选路 | 大者胜 | 不出本机 |
MED 只在同一邻居 AS 的路径之间默认比较;若两条路径来自不同 AS,会跳过 MED 直接进入后续步骤。
MED 是建议而非强制:对端若用自己的 LOCAL_PREF 或开启 always-compare-med,设置值可能不产生预期效果,落地前先与对端确认比较规则。
验证分两步:本机看 advertised-routes 里该前缀的 metric 是否为设置值,再请对端确认它学到并采用了这条路径;只看本机输出无法证明入向流量已经改变。
多出口且对端只有一个 AS 号时,MED 是最直接的入向引导手段:它不改变路由可达性,只调整对端的入口偏好,出问题时撤销设置即可恢复,比修改对端策略更安全。
两个 AS 号相同的上游(同一运营商的不同落地设备)是最典型的 MED 使用场景;若发现两条路径的 AS_PATH 首段不同,说明它们来自不同 AS,此时应改用在出口侧做 AS-PATH 预置或与对端协商社区。
常见误区
| 想法 | 实际情况 | 正确做法 |
|---|---|---|
| 设了 MED 对端就按我的意愿走 | 对端可能用 LOCAL_PREF 或权重更高的属性覆盖 | 与对端确认比较规则后再设置 |
| MED 可以跨 AS 传递 | 非传递属性不随更新继续透传 | 跨多层用 AS-PATH 预置或社区约定 |
| 两条不同 AS 的路径会比较 MED | 默认仅同邻居 AS 之间比较 | 同 AS 双链路场景才以 MED 为主 |
| MED 值越大越优先 | 小者胜,方向容易记反 | 主用链路设小值 |