BGP Error: Multi-Exit Discriminator (MED) comparison failure across AS
Трафик между автономными системами распределяется неоптимально: маршрутизатор выбирает путь с более высоким значением метрики MED или игнорирует анонсированный соседом MED. В отладке BGP Best Path регистрируется:
%BGP-7-PATH_EVAL: 10.100.0.0/16 path 1 (AS 65100, MED 10) vs path 2 (AS 65200, MED 50)
%BGP-7-PATH_EVAL: MED not compared - paths from different Neighbor ASes
%BGP-7-PATH_EVAL: Path 2 chosen due to older age / lower RID- Асимметричная входящая/исходящая загрузка внешних каналов связи.
- Игнорирование приоритетов резервных линков (Backup links) с настроенным атрибутом MED.
- Непредсказуемая смена Best Path в зависимости от очередности поступления BGP UPDATE (Non-deterministic MED).
1. Архитектурные правила сравнения MED (RFC 4271)
По умолчанию в алгоритме выбора лучшего пути BGP:
- Атрибут MED (Multi-Exit Discriminator, метрика 4) сравнивается только между маршрутами, полученными из одной и той же соседней автономной системы (Neighbor AS).
- Если маршруты получены от разных AS, шаг сравнения MED пропускается, и решение принимается на основе типа пути (eBGP > iBGP), метрики IGP до Next-Hop или наименьшего BGP Router ID.
2. Включение глобального сравнения MED между разными AS
Если необходимо, чтобы маршрутизатор сравнивал MED вне зависимости от того, от какой AS пришел анонс:
# Cisco IOS-XE
router bgp 65001
bgp always-compare-med
# Junos
set protocols bgp path-selection always-compare-med
# Arista EOS
router bgp 65001
bgp always-compare-med3. Устранение недетерминированного поведения (Deterministic MED)
Если получен одинаковый префикс от нескольких маршрутизаторов одной и той же AS, но порядок их прихода влияет на Best Path, включите детерминированную группировку:
# Cisco IOS-XE
router bgp 65001
bgp deterministic-med
# Arista EOS
router bgp 65001
bgp deterministic-med4. Обработка отсутствующего атрибута MED (Missing MED as Worst)
По стандарту RFC 4271, если в BGP Update отсутствует MED, он считается равным 0 (наивысший приоритет). Для безопасного сравнения назначьте отсутствующему MED наихудшее значение (4 294 967 294):
# Cisco IOS-XE
router bgp 65001
bgp bestpath med missing-as-worst Частые вопросы (FAQ)
Является ли MED транзитивным атрибутом?
Нет, MED является non-transitive (не транзитивным) опциональным атрибутом. Он передается в соседнюю AS, но соседняя AS не имеет права ретранслировать полученный MED в сторонние автономные системы.
В чем опасность включения 'bgp always-compare-med' в транзитной AS?
Включение always-compare-med в сетях с несколькими eBGP-апстримами может вызывать постоянные колебания маршрутов (BGP routing oscillations) и образовывать микропетли, если в AS отсутствует полная iBGP-сетка (Full Mesh).
Как принудительно обнулить входящий MED на стыке с провайдером?
С помощью входящей Route-Map: route-map RM_SET_MED permit 10 -> set metric 0, применив ее директивой neighbor <IP> route-map RM_SET_MED in.
Какое место занимает MED в алгоритме BGP Best Path Selection?
MED проверяется на 6-м шаге: после Weight, Local Preference, Locally Originated, AS_PATH length и Origin Code (IGP < EGP < Incomplete).