MED 与多对端
MED(Multi-Exit Discriminator,多出口鉴别器)是给对端 AS 的「入口建议」:本端用出方向策略把数值通告出去,对端在同一邻居的多条链路之间比较,值小者优先。关键限制是 MED 只在同一个对端的多条入口之间有意义,不同对端的 MED 之间不做比较。因此对多个对端出口,正确做法是为每个对端单独挂一条 out 方向的 route-map。
基本信息
| 属性语义 | 建议对端从哪条链路进入,值小者优先 |
|---|---|
| 生效范围 | 同一邻居(对端 AS)的多条入口之间 |
| 实现方式 | per-neighbor 的 route-map out,逐对端设定 |
| 数值约定 | 与对端核对语义与默认值,避免各说各话 |
| 默认比较 | 默认只比较来自同一邻居 AS 的路径 |
典型使用场景
- 双链路接同一 ISP:希望对方主用 A 链路、备用 B 链路
- 多家运营商出口:每家独立设定入口偏好,互不影响
- 割接过渡期:临时抬高某条链路的 MED,把流量赶到备用链路
- 主备切换演练:验证对端是否按约定优先选择入口
- 排查「我发的 MED 没生效」:先确认对端是否在同一邻居内比较
多对端分别设定
多对端分别设定
route-map RM-MED-A permit 10
set metric 100 # 对 ISP-A 的入口偏好:值小者优先
!
route-map RM-MED-B permit 10
set metric 200 # 对 ISP-B 的入口偏好,独立设定
!
router bgp 65001
neighbor 10.0.0.2 route-map RM-MED-A out # 每个对端挂自己的 out 策略
neighbor 10.0.0.6 route-map RM-MED-B out
!
show ip bgp neighbors 10.0.0.2 advertised-routes | include 10.1.1.0相邻属性对照
| 属性 | 比较范围 | 方向性 |
|---|---|---|
| MED | 同一对端的多条入口之间 | 建议对端,本端不据此选路 |
| LOCAL_PREF | 本 AS 内所有路径之间 | 只在本地 AS 内有效,不传出 |
| AS_PATH 长度 | 所有收到的路径 | 对端可用 prepend 影响本端选择 |
| Weight | 本设备本地 | 厂商私有,不参与对外比较 |
两端对 MED 的默认处理可能不同:有的实现只比较来自同一邻居 AS 的 MED,有的把缺失 MED 视为 0,因此「不写 MED」和「写 0」在某些平台上等价,落地前先与对端核对。
MED 在决策列表中排在 LOCAL_PREF 之后:对端的入向策略(例如按前缀设 LOCAL_PREF)会优先于本端给的 MED,看自己这边的配置无法判断最终入口。
变更后建议用 advertised-routes 确认本端实际发出的度量,再请对端在其 BGP 表中核对所选入口,形成双侧闭环。