О протоколах OSPF,BGP, VxLan
Введение. Зачем нужны эти три протокола?
Современная корпоративная и провайдерская сеть строится на трёх китах маршрутизации и инкапсуляции, которые решают принципиально разные задачи, но в реальном датацентре часто работают вместе. Прежде чем погружаться в детали каждого, важно понять, какую именно проблему каждый из них решает и почему ни один из них не заменяет двух других.
OSPF (Open Shortest Path First)
Это IGP — Interior Gateway Protocol, протокол внутренней маршрутизации. Его задача — обеспечить полную связность IP-маршрутов внутри одной административной зоны (одного предприятия, одного датацентра, одной автономной системы). OSPF быстро сходится после изменений топологии, поддерживает иерархию через концепцию областей (areas) и считает кратчайшие пути на основе метрики стоимости (cost), вычисляемой по алгоритму Дейкстры. OSPF — это «нервная система» внутренней сети.
BGP (Border Gateway Protocol)
Это EGP — Exterior Gateway Protocol, протокол маршрутизации между автономными системами. BGP — это протокол всего интернета: именно он соединяет провайдеров, операторов связи и крупные корпоративные сети друг с другом. В отличие от OSPF, BGP не считает «кратчайший путь» в технологическом смысле — он реализует политику маршрутизации, позволяя владельцу сети управлять тем, через какие соседние AS пускать трафик, какие маршруты анонсировать наружу и какие принимать. В современных датацентрах BGP всё чаще используется и как IGP — это архитектура BGP-only fabric (например, в Clos/Spine-Leaf топологиях).
VXLAN (Virtual eXtensible LAN)
Это технология сетевой инкапсуляции — оверлей (overlay), позволяющий передавать L2-кадры Ethernet поверх IP-сети (underlay). VXLAN решает фундаментальную проблему классического VLAN: ограничение в 4096 сегментов, а также невозможность растягивать L2-домен через L3-маршрутизацию. С VXLAN можно построить логические L2-сегменты (24-битный VNI даёт более 16 миллионов идентификаторов) поверх любой IP-инфраструктуры — между разными датацентрами, между стойками внутри ДЦ, между регионами облака.
Как они работают вместе
В современном датацентре типичная архитектура выглядит так: underlay-сеть между Spine- и Leaf-коммутаторами строится на BGP (часто eBGP с разными номерами AS на каждом коммутаторе) или на OSPF. Поверх этого underlay строится VXLAN-оверлей, плоскость управления которого реализована через MP-BGP EVPN (это семейство адресов BGP для распространения MAC- и IP-маршрутов). Таким образом, все три протокола работают одновременно: OSPF/BGP обеспечивают IP-связность, VXLAN инкапсулирует пользовательский трафик, а EVPN распространяет информацию о MAC-адресах и хостах между VTEP-устройствами.
ПРИМЕЧАНИЕ. Эта лекция построена так, чтобы каждый раздел можно было читать независимо, но рекомендуется изучать в указанном порядке: OSPF даёт фундамент понимания link-state протоколов, BGP — это путь от IGP к политике, а VXLAN/EVPN объединяет всё в современную фабрику.
Модуль 1. OSPF — протокол link-state маршрутизации
1.1. Принципы работы и место в иерархии
OSPF (Open Shortest Path First) — это link-state протокол маршрутизации, разработанный IETF и описанный в RFC 2328 (OSPFv2 для IPv4) и RFC 5340 (OSPFv3 для IPv6). Под «link-state» понимается принцип, при котором каждый маршрутизатор не получает готовые маршруты от соседей (как в distance-vector протоколах вроде RIP), а получает информацию о состоянии всех связей в сети и самостоятельно строит граф топологии, после чего применяет к нему алгоритм Дейкстры для вычисления кратчайших путей.
Принципиальное отличие link-state от distance-vector состоит в том, что каждый маршрутизатор имеет полную картину топологии своей области (area). Это даёт три ключевых преимущества: быструю сходимость (convergence) при изменениях, отсутствие маршрутных петель в пределах area, и возможность принимать решения на основе всего графа, а не только мнения соседа.
Базовый цикл работы OSPF
Маршрутизатор обнаруживает соседей через Hello-пакеты, рассылаемые на multicast-адреса 224.0.0.5 (все OSPF-маршрутизаторы) и 224.0.0.6 (только DR/BDR на multi-access сегментах).
Между соседями устанавливается отношение adjacency, в ходе которого они обмениваются базами данных состояния каналов (LSDB — Link-State Database).
Каждое изменение топологии — например, упавший интерфейс — порождает LSA (Link-State Advertisement), который flood-ится по всей area.
Получив новый LSA, маршрутизатор обновляет LSDB и запускает алгоритм SPF (Дейкстры) для перерасчёта дерева кратчайших путей.
Результат SPF-расчёта помещается в RIB (Routing Information Base), а оттуда лучшие маршруты попадают в FIB (Forwarding Information Base).
1.2. Hello-протокол и установление соседства
Hello-пакет — это сердце OSPF. Он рассылается каждые HelloInterval секунд (по умолчанию 10 на point-to-point и broadcast-сегментах, 30 — на NBMA). Если маршрутизатор не слышит Hello от соседа в течение DeadInterval (по умолчанию 4 × HelloInterval), соседство считается потерянным, и LSA об этом флудятся по сети.
Параметры, которые ДОЛЖНЫ совпадать для установления соседства
Area ID — оба маршрутизатора должны быть в одной OSPF-области на этом интерфейсе.
Subnet и netmask — соседи должны быть в одной IP-подсети (исключение: интерфейсы типа point-to-point).
HelloInterval и DeadInterval — таймеры должны быть идентичны.
Authentication — если включена, тип и ключ должны совпадать.
Stub area flag — если area объявлена как stub на одном маршрутизаторе, она должна быть stub на всех.
MTU — совпадение MTU проверяется при обмене DBD-пакетами; несовпадение приведёт к застреванию на состоянии EXSTART/EXCHANGE.
Состояния соседства
Процесс установления adjacency проходит через несколько состояний, и при диагностике важно понимать, на каком этапе застряла сессия:
Состояние
Что происходит
Down
Hello не получены в течение DeadInterval
Attempt
NBMA-сегмент: маршрутизатор пытается явно слать unicast Hello
Init
Получен Hello от соседа, но в нём не было нашего RID
2-Way
Получен Hello, в котором сосед перечисляет нас. На broadcast-сегментах далее выбирается DR/BDR; non-DR-роутеры могут остаться в 2-Way с другими non-DR
ExStart
Master/Slave определены, генерируется первый DBD
Exchange
Обмен DBD-пакетами — описанием LSDB
Loading
Запросы LSR/ответы LSU для недостающих LSA
Full
База синхронизирована, соседство полностью установлено
ПРИМЕЧАНИЕ. Если соседство застряло в состоянии EXSTART/EXCHANGE — это почти всегда несовпадение MTU между интерфейсами. Команды диагностики: «show ip ospf neighbor» (Cisco) или «get router info ospf neighbor» (FortiGate).
1.3. Типы сетей в OSPF
OSPF различает несколько типов сетей, и от типа зависит то, как формируются adjacency, нужны ли DR/BDR и как анонсируются маршруты.
Тип сети
DR/BDR
Hello timer
Применение
Point-to-Point
Нет
10 сек
Прямая линия между двумя роутерами
Broadcast (Ethernet)
Да
10 сек
LAN-сегмент с несколькими роутерами
Non-Broadcast (NBMA)
Да
30 сек
Frame Relay full-mesh
Point-to-Multipoint
Нет
30 сек
Hub-and-spoke без полной mesh
Loopback
Не применимо
—
Анонсируется как /32 host-маршрут
DR и BDR — зачем нужны
На multi-access сегменте (Ethernet с тремя и более маршрутизаторами) flooding LSA становится проблемой: если каждый маршрутизатор будет устанавливать full adjacency с каждым, количество adjacencies растёт квадратично (n × (n-1) / 2). Для решения этой проблемы выбираются Designated Router (DR) и Backup Designated Router (BDR). Все остальные маршрутизаторы (DROther) устанавливают full adjacency только с DR и BDR, а с другими DROther остаются в состоянии 2-Way.
Когда DROther хочет анонсировать LSA, он отправляет его на 224.0.0.6 (только DR/BDR), DR ретранслирует его всем через 224.0.0.5. Это сводит трафик flooding-а к линейному.
Выбор DR/BDR происходит по двум критериям: сначала по OSPF priority интерфейса (по умолчанию 1, 0 означает «никогда не быть DR»), затем по Router-ID. Процесс non-preemptive: если в сегмент позже придёт маршрутизатор с более высоким priority/RID, он не вытеснит уже выбранного DR.
1.4. Router-ID и его значение
Router-ID — это уникальный 32-битный идентификатор OSPF-процесса, имеющий формат IPv4-адреса (но это именно идентификатор, а не маршрутизируемый адрес). Алгоритм выбора RID при отсутствии явной конфигурации:
Если задан явный «router-id X.X.X.X» — используется он.
Иначе — самый высокий IP-адрес среди up-loopback интерфейсов.
Иначе — самый высокий IP-адрес среди up-физических интерфейсов.
Лучшая практика — всегда явно задавать RID, привязывая его к адресу loopback-интерфейса. Loopback не падает при отказе физического интерфейса, и адрес остаётся стабильным. Изменение RID требует перезапуска OSPF-процесса (clear ip ospf process), что вызовет переустановление всех соседств.
1.5. Areas и иерархия OSPF
OSPF масштабируется через концепцию areas (областей). В пределах одной area все маршрутизаторы имеют идентичную LSDB. Между areas обмен происходит через ABR (Area Border Router) — маршрутизатор, имеющий интерфейсы в нескольких areas. Backbone area (Area 0) — обязательная центральная область; все остальные areas должны подключаться к ней либо напрямую, либо через виртуальные линки (virtual links).
Типы areas
Тип area
LSA Type 5 (External)
LSA Type 3 (Inter-Area)
LSA Type 7 (NSSA)
Standard (нормальная)
Разрешены
Разрешены
Не применяется
Stub
Запрещены, заменяются default
Разрешены
Не применяется
Totally Stubby
Запрещены, заменяются default
Запрещены, заменяются default
Не применяется
NSSA
Запрещены
Разрешены
Разрешены, конвертируются в Type 5 на ABR
Totally NSSA
Запрещены
Запрещены, заменяются default
Разрешены
Зачем нужны разные типы area
Stub и Totally Stubby используются для уменьшения размера LSDB на устройствах в удалённых филиалах или на маршрутизаторах с ограниченной памятью. Если филиал имеет только один путь наружу через ABR, нет смысла знать о всех external маршрутах — достаточно default-маршрута. NSSA (Not-So-Stubby Area) — гибрид: позволяет редистрибьюцию из других протоколов внутри area (через LSA Type 7), но блокирует внешние LSA из других area-ов. Применяется, когда в stub-area нужно подключить, например, BGP-сессию или статический маршрут наружу.
1.6. Типы LSA — фундамент LSDB
LSA — это блок информации, описывающий часть топологии. Их существует 11 типов, но на практике в IPv4 OSPFv2 используются 1, 2, 3, 4, 5 и 7. Знание типов LSA необходимо для глубокой диагностики, потому что команда «show ip ospf database» выводит именно по типам.
Тип
Название
Что описывает
Где flood-ится
1
Router LSA
Все интерфейсы и стоимости одного маршрутизатора
Внутри area
2
Network LSA
Multi-access сегмент с DR; список присоединённых роутеров
Внутри area, генерирует только DR
3
Summary LSA (Inter-Area)
Маршрут из другой area, генерируемый ABR
В соседнюю area
4
Summary ASBR LSA
Положение ASBR относительно ABR
В соседнюю area
5
External LSA
Внешний маршрут, редистрибутированный ASBR
По всем areas, кроме stub/NSSA
7
NSSA External LSA
Аналог Type 5 внутри NSSA
Внутри NSSA, конвертируется в Type 5 на ABR
Метрики external маршрутов: E1 vs E2
При редистрибьюции внешних маршрутов в OSPF можно выбрать тип метрики:
E2 (по умолчанию) — метрика остаётся той, что задана при редистрибьюции, и не увеличивается при прохождении через сеть. Используется, когда внутренняя стоимость пути не важна по сравнению с внешней.
E1 — к метрике external добавляется внутренняя стоимость пути от вычислителя до ASBR. Применяется, когда хочется выбирать external маршрут с учётом «своей» стоимости.
При наличии нескольких маршрутов: E1 предпочтительнее E2, при равенстве типа — меньшая метрика, при равенстве метрик — ближайший ASBR.
1.7. Алгоритм SPF и метрика стоимости
Алгоритм Дейкстры (SPF) строит дерево кратчайших путей от вычисляющего маршрутизатора (root) до всех остальных узлов LSDB. Стоимость пути — сумма стоимостей интерфейсов выхода вдоль маршрута. Стоимость одного интерфейса по умолчанию вычисляется как:
cost = reference-bandwidth / interface-bandwidth
Reference-bandwidth по умолчанию равна 100 Мбит/с, что было разумно в 90-х, но в современных сетях с 10G/40G/100G интерфейсами это создаёт проблему: все эти линки получают cost=1 (округление к минимуму), и OSPF не может различить более быстрые от менее быстрых. Поэтому при наличии 10G+ интерфейсов обязательно нужно увеличить reference-bandwidth до 100000 (100 Гбит/с) или 1000000 командой «auto-cost reference-bandwidth». Очень важно сделать это согласованно на всех маршрутизаторах area, иначе пути будут считаться по-разному.
iSPF и partial SPF
Полный пересчёт SPF для большой LSDB может занимать сотни миллисекунд CPU и потенциально приводить к временным петлям в момент сходимости. Современные реализации используют incremental SPF (iSPF) — пересчитывают только изменённую часть дерева. Кроме того, partial SPF применяется при изменении только Summary LSA (Type 3), когда внутренняя топология area не изменилась.
1.8. OSPF на FortiGate — практические нюансы
В контексте FortiGate OSPF имеет несколько практических особенностей, которые регулярно встречаются при эксплуатации:
Конфигурация через CLI
config router ospf set router-id 10.0.0.1 set default-information-originate enable config area edit 0.0.0.0 next end config network edit 1 set prefix 10.0.0.0 255.255.255.0 set area 0.0.0.0 next end config ospf-interface edit "wan1_ospf" set interface "wan1" set hello-interval 10 set dead-interval 40 set network-type point-to-point next endend
OSPF поверх IPSec VPN
Один из частых сценариев — запуск OSPF поверх IPSec-туннелей для динамического выбора резервного пути. Здесь критически важно: IPSec-интерфейс должен быть с режимом «net-device disable» в interface-mode (route-based VPN), интерфейс должен иметь IP-адрес, и тип сети рекомендуется ставить point-to-point (не broadcast — это породит ненужные DR-выборы и multicast-проблемы внутри туннеля).
Аутентификация
OSPFv2 поддерживает три типа аутентификации: Null (без аутентификации), Simple Password (передаётся открытым текстом, годится только для защиты от случайных ошибок) и MD5/HMAC-SHA (криптографическая, рекомендуется для продакшен-сетей). Аутентификация настраивается per-interface и должна совпадать у обеих сторон.
1.9. Диагностика и устранение проблем OSPF
Сосед застрял в Init или 2-Way
Проверьте multicast: на L2-сегменте может быть включён IGMP snooping без OSPF-исключения, который блокирует 224.0.0.5/6.
Проверьте ACL на интерфейсах — мог быть случайно заблокирован OSPF (IP protocol 89).
При 2-Way между двумя non-DR в broadcast-сегменте — это нормально, full adjacency в multi-access сегменте устанавливается только с DR/BDR.
Сосед застрял в EXSTART/EXCHANGE
Несовпадение MTU — самая частая причина. Команда «mtu-ignore» на интерфейсе позволяет обойти проверку, но это маскирует проблему.
Дубль Router-ID — два маршрутизатора с одинаковым RID не могут установить полное соседство.
Маршруты не появляются в RIB
Проверьте «show ip ospf database» — есть ли соответствующий LSA в LSDB.
Если LSA есть, но маршрута нет — возможно, проблема с next-hop reachability (RFC 2328 требует, чтобы next-hop был в той же area или был достижим через intra-area путь).
Проверьте Administrative Distance: если есть тот же префикс через статический маршрут или другой протокол с меньшим AD, OSPF-маршрут будет в RIB, но не в FIB.
Постоянные пересчёты SPF
Flapping интерфейс генерирует серии LSA. Современные реализации используют SPF throttling — нарастающие задержки между расчётами. Включите OSPF flooding throttling и LSA pacing.
Проверьте логи на «SPF run» — частые запуски указывают на нестабильность underlay.
Модуль 2. BGP — протокол маршрутизации интернета и фабрики ДЦ
2.1. BGP в контексте: AS, eBGP, iBGP
BGP — Border Gateway Protocol, версия 4 (BGPv4) описана в RFC 4271. Это path-vector протокол: вместо распространения состояния каналов, как OSPF, или вектора расстояния, как RIP, BGP передаёт в каждом анонсе полный список автономных систем (AS_PATH), через которые префикс был получен. Это даёт два важных свойства: естественную защиту от петель (получив анонс с собственным AS в пути, маршрутизатор отбрасывает его) и базу для применения политики маршрутизации.
Автономная система (AS)
AS — это совокупность IP-сетей и маршрутизаторов под единым административным управлением, имеющая единую политику маршрутизации по отношению к внешнему миру. Номера AS бывают:
Публичные 16-битные: 1–64495, выдаются IANA через RIR-ы (RIPE, ARIN, APNIC и т.д.).
Приватные 16-битные: 64512–65534, для использования внутри организации.
Публичные 32-битные: 131072–4199999999, появились в 2007 году (RFC 6793) из-за исчерпания 16-битного пространства.
Приватные 32-битные: 4200000000–4294967294.
eBGP против iBGP
BGP-сессии бывают двух типов в зависимости от того, между какими AS они установлены:
Параметр
eBGP (External)
iBGP (Internal)
Между чем устанавливается
Между разными AS
Внутри одной AS
TTL по умолчанию
1 (нужен ebgp-multihop, если не сосед)
255
Изменение AS_PATH
Свой AS добавляется при анонсе
AS_PATH не изменяется
Изменение NEXT_HOP
Меняется на исходящий интерфейс
Не меняется (нужен next-hop-self)
Анонс маршрутов
Маршруты анонсируются всем
Полученное по iBGP не анонсируется другим iBGP-соседям (split horizon)
Administrative Distance (Cisco)
20
200
Правило split horizon в iBGP и его следствия
Маршрут, полученный по iBGP-сессии, не может быть переанонсирован другому iBGP-соседу. Это правило защищает от петель внутри AS, но порождает требование: все iBGP-маршрутизаторы должны иметь сессии «каждый-с-каждым» (full mesh). При наличии N маршрутизаторов это N×(N-1)/2 сессий — для 100 устройств это уже 4950 сессий. Решений два:
Route Reflector (RR) — выделенный маршрутизатор-рефлектор, которому разрешено переанонсировать iBGP-маршруты другим клиентам. Описан в RFC 4456.
Confederation — разделение AS на под-AS, между которыми работает квази-eBGP. Менее распространён.
2.2. Установление BGP-сессии
BGP работает поверх TCP на порту 179. Это принципиальное отличие от OSPF (raw IP protocol 89) и обеспечивает надёжную доставку — но и вносит зависимость от IP-связности между BGP-соседями. Сессия проходит через несколько состояний:
Состояние
Что происходит
Idle
Начальное состояние; ожидание команды или таймера
Connect
Попытка установить TCP-соединение; ждём успеха TCP handshake
Active
TCP-соединение не установилось, повторяем попытки. ВНИМАНИЕ: «Active» НЕ означает работающую сессию!
OpenSent
TCP установлен, отправлено OPEN-сообщение, ждём OPEN от соседа
OpenConfirm
OPEN получены и приняты с обеих сторон, ждём KEEPALIVE
Established
Сессия активна, маршруты обмениваются через UPDATE
ПРИМЕЧАНИЕ. Состояние «Active» — частый источник недоразумений. Если сессия зависла в Active, это значит, что TCP не устанавливается. Проверьте: ACL на пути, listening на порту 179, корректность IP-адреса соседа, маршрутизацию до соседа, eBGP-multihop при необходимости.
Параметры в OPEN-сообщении
При установлении сессии стороны обмениваются следующим:
Версия BGP (всегда 4).
Свой AS-номер.
Hold Time — таймер удержания. Если за это время не пришёл KEEPALIVE или UPDATE, сессия сбрасывается. Принимается минимум из двух предложенных. По умолчанию 180 секунд, KEEPALIVE отсылается каждые Hold/3 = 60 секунд.
BGP Identifier (RID) — уникальный 32-битный идентификатор.
Optional Parameters — capabilities (multi-protocol extensions, route refresh, 4-byte AS, graceful restart и т.д.).
2.3. Атрибуты пути (Path Attributes)
BGP — это путь принятия решений на основе атрибутов. Каждый префикс приходит в BGP с набором атрибутов, и алгоритм выбора лучшего пути рассматривает их в строго определённом порядке. Знание атрибутов и их влияния — основа работы с BGP.
Категории атрибутов
Категория
Свойство
Примеры
Well-known mandatory
Должны присутствовать в каждом UPDATE
ORIGIN, AS_PATH, NEXT_HOP
Well-known discretionary
Могут присутствовать, все BGP их понимают
LOCAL_PREF, ATOMIC_AGGREGATE
Optional transitive
Опциональны, передаются дальше даже если не поняты
COMMUNITY, AGGREGATOR
Optional non-transitive
Опциональны, не передаются за пределы AS если не поняты
MED, CLUSTER_LIST, ORIGINATOR_ID
Ключевые атрибуты подробно
ORIGIN — указывает источник анонса. Принимает три значения: IGP (i, маршрут анонсирован командой network внутри AS), EGP (e, устаревший), Incomplete (?, маршрут получен через redistribution). При прочих равных IGP предпочтительнее EGP, EGP — Incomplete.
AS_PATH — список AS, через которые префикс был получен. Используется для предотвращения петель и как один из критериев выбора лучшего пути (короче — лучше). Существует несколько подтипов: AS_SEQUENCE (упорядоченный список), AS_SET (неупорядоченное множество, образуется при агрегации). При выборе пути учитывается длина AS_SEQUENCE; AS_SET считается за единицу.
NEXT_HOP — IP-адрес следующего hop-а. В eBGP по умолчанию устанавливается в адрес интерфейса, через который пришёл UPDATE. В iBGP не меняется при передаче дальше — поэтому, если eBGP-сосед анонсирует префикс и ваш граничный роутер передаёт его в iBGP, без «next-hop-self» внутренние роутеры могут получить недостижимый next-hop.
LOCAL_PREF — локально значимый атрибут, существующий только внутри AS. Используется для управления выбором исходящего пути из AS. Чем выше — тем предпочтительнее. По умолчанию 100. Применяется при наличии нескольких eBGP-соседей: повышение LOCAL_PREF на одном из них заставит весь iBGP-облако предпочитать этот выход.
MED (Multi-Exit Discriminator) — обратное LOCAL_PREF: используется для подсказки соседней AS, какой из ваших пограничных маршрутизаторов предпочесть для входящего трафика. Чем ниже — тем предпочтительнее. По умолчанию не передаётся между AS, но передаётся до соседней AS. Учитывается обычно только если AS_PATH совпадает по первому AS.
COMMUNITY — 32-битный тег, прикрепляемый к маршруту. Используется как сигнальный механизм для применения политик. Стандартные well-known communities: NO_EXPORT (не передавать за пределы AS), NO_ADVERTISE (не передавать никому), NO_EXPORT_SUBCONFED. Кастомные значения формата AS:VALUE используются провайдерами для управления маршрутами клиентами (например, «не анонсировать в AS X»).
2.4. Алгоритм выбора лучшего пути BGP
Когда маршрутизатор имеет несколько BGP-маршрутов до одного префикса, он применяет следующий упорядоченный алгоритм. Каждый шаг применяется к набору кандидатов, и если он выделяет одного победителя, остальные шаги пропускаются. Этот порядок необходимо знать наизусть для понимания и управления BGP.
Самый высокий WEIGHT (Cisco-специфичный, локально для маршрутизатора, по умолчанию 0).
Самый высокий LOCAL_PREF.
Маршрут, originated на этом маршрутизаторе (network/aggregate).
Самый короткий AS_PATH.
Самый низкий ORIGIN (IGP < EGP < Incomplete).
Самый низкий MED (только при сравнении путей с одинаковым первым AS, по умолчанию).
eBGP предпочтительнее iBGP.
Самый низкий IGP-cost до NEXT_HOP.
Если ECMP включён и атрибуты совпадают — нагрузка балансируется.
Старший маршрут (oldest), если eBGP — для стабильности.
Самый низкий BGP Router ID соседа.
Самый короткий CLUSTER_LIST (для RR).
Самый низкий IP-адрес соседа.
ПРИМЕЧАНИЕ. На практике первые четыре пункта определяют выбор в 95% случаев. WEIGHT и LOCAL_PREF — основные инструменты управления исходящим трафиком, AS_PATH prepend и MED — управления входящим.
2.5. Управление маршрутами: route-map, prefix-list, AS-path filter
BGP без политики — это простой обмен полным интернетом, что для большинства сетей бессмысленно или опасно. Управление осуществляется через несколько типов фильтров и инструментов.
Prefix-list
Список разрешённых/запрещённых префиксов с возможностью указания диапазона длины маски. Применяется для входящих и исходящих анонсов. Например:
ip prefix-list CUSTOMERS seq 10 permit 192.0.2.0/24ip prefix-list CUSTOMERS seq 20 permit 198.51.100.0/24 le 32ip prefix-list CUSTOMERS seq 30 deny 0.0.0.0/0 le 32router bgp 65001 neighbor 10.0.0.1 prefix-list CUSTOMERS in
«le 32» означает «эта подсеть и все более специфичные»; «ge X le Y» — диапазон длин.
AS-Path Access List
Регулярные выражения по AS_PATH. Часто используется для фильтрации транзитных маршрутов или для приёма только маршрутов от конкретных AS:
ip as-path access-list 1 permit ^65002$ip as-path access-list 1 permit ^65002_router bgp 65001 neighbor 10.0.0.1 filter-list 1 in
Знак ^ — начало строки, $ — конец, _ — разделитель (пробел, начало, конец). Шаблон «^65002$» означает «маршруты, originated в AS 65002»; «^65002_» — «маршруты, проходящие через 65002 как первого соседа».
Route-map — самый мощный инструмент
Route-map — это упорядоченный список match/set операций, позволяющий и фильтровать, и модифицировать атрибуты маршрутов:
route-map IN_FROM_ISP1 permit 10 match ip address prefix-list IMPORTANT_PREFIXES set local-preference 200route-map IN_FROM_ISP1 permit 20 match as-path 1 set local-preference 150route-map IN_FROM_ISP1 permit 30router bgp 65001 neighbor 10.0.0.1 route-map IN_FROM_ISP1 in
Здесь маршруты, попавшие в IMPORTANT_PREFIXES, получают LOCAL_PREF 200; маршруты с определённым AS_PATH получают 150; остальные принимаются с дефолтным LOCAL_PREF 100. Важно: последняя строка «permit 30» без match — это catch-all, без неё всё бы блокировалось.
2.6. iBGP-масштабирование: Route Reflectors
Route Reflector (RR) — это решение проблемы full-mesh iBGP. Идея: один или несколько маршрутизаторов получают статус RR, и им разрешено переанонсировать iBGP-маршруты другим клиентам — но с соблюдением правил против петель.
Правила распространения для RR
Маршруты от eBGP-соседа RR анонсирует всем клиентам и всем не-клиентам (обычные iBGP-соседи).
Маршруты от iBGP-клиента RR анонсирует всем другим клиентам, всем не-клиентам и всем eBGP-соседям.
Маршруты от не-клиента (обычный iBGP-сосед) RR анонсирует только клиентам и eBGP, но НЕ другим не-клиентам.
Защита от петель: ORIGINATOR_ID и CLUSTER_LIST
При рефлекции RR добавляет два атрибута:
ORIGINATOR_ID — RID того маршрутизатора, который изначально анонсировал маршрут. Если RR получит обратно маршрут с собственным ORIGINATOR_ID — отбросит.
CLUSTER_LIST — список Cluster-ID-шников RR-кластеров, через которые прошёл маршрут. Если в нём встречается собственный Cluster-ID — маршрут отбрасывается.
В типичной топологии с двумя RR для отказоустойчивости оба назначаются с одинаковым Cluster-ID, и они оба становятся клиентами друг друга. Каждый клиент имеет сессии с обоими RR.
2.7. BGP в датацентре: Spine-Leaf и BGP unnumbered
За последнее десятилетие BGP вышел за рамки маршрутизации между AS и стал стандартом underlay для современных датацентров. Архитектура Clos (Spine-Leaf) с BGP вместо OSPF доминирует в крупных DC по нескольким причинам:
Чёткая иерархия и предсказуемые точки сходимости. SPF в OSPF на 200+ узлах нагружает CPU; BGP не пересчитывает граф, а распространяет изменения построчно.
Возможность точечного управления маршрутами через политику — для multi-tenant сред.
Плоскость управления EVPN строится поверх MP-BGP — единая инфраструктура и для underlay, и для overlay.
eBGP-fabric с уникальными AS на каждом коммутаторе
Типичная схема для Spine-Leaf:
Каждый Spine — отдельный AS (или один общий AS для всех Spine).
Каждый Leaf — отдельный AS (часто из приватного 4-байтного диапазона 4200000000+).
Между Spine и Leaf — eBGP-сессии.
Никакого full-mesh iBGP, никаких RR, никаких areas — просто иерархия eBGP.
BGP unnumbered (RFC 5549 / 8950)
В классическом BGP каждой сессии нужен IPv4-адрес соседа, что в фабрике с сотнями линков становится мучением для адресации. RFC 8950 определяет «unnumbered BGP»: сессия устанавливается через IPv6 link-local адреса, обнаруживаемые автоматически (обычно через IPv6 ND), а IPv4-маршруты передаются с next-hop в виде IPv6-адреса. Это позволяет полностью отказаться от ручной адресации underlay-линков.
2.8. BGP-сессия с провайдером: типичная конфигурация
Для иллюстрации соберём типичный пример настройки BGP-сессии с двумя ISP для базовой избыточности. Предполагается, что у предприятия AS 65001, два ISP — AS 64500 и AS 64501. Цель: предпочитать ISP1 для исходящего трафика, объявлять только свой агрегированный префикс 203.0.113.0/24 наружу.
router bgp 65001 bgp router-id 10.255.255.1 bgp log-neighbor-changes no bgp default ipv4-unicast neighbor 198.51.100.1 remote-as 64500 neighbor 198.51.100.1 description ISP1 neighbor 198.51.100.1 password SecretKey1 neighbor 198.51.100.1 timers 10 30 neighbor 198.51.100.5 remote-as 64501 neighbor 198.51.100.5 description ISP2 neighbor 198.51.100.5 password SecretKey2 address-family ipv4 network 203.0.113.0 mask 255.255.255.0 neighbor 198.51.100.1 activate neighbor 198.51.100.1 prefix-list ANNOUNCE out neighbor 198.51.100.1 prefix-list FROM_ISP1 in neighbor 198.51.100.1 route-map ISP1_IN in neighbor 198.51.100.5 activate neighbor 198.51.100.5 prefix-list ANNOUNCE out neighbor 198.51.100.5 prefix-list FROM_ISP2 in neighbor 198.51.100.5 route-map ISP2_IN in exit-address-familyip prefix-list ANNOUNCE permit 203.0.113.0/24route-map ISP1_IN permit 10 set local-preference 200route-map ISP2_IN permit 10 set local-preference 100
Ключевые моменты этой конфигурации:
MD5-аутентификация (password) — обязательна для интернет-сессий.
«no bgp default ipv4-unicast» отключает автоактивацию IPv4 — каждый AF активируется явно. Лучшая практика для корректной работы с multi-protocol BGP.
Prefix-list «ANNOUNCE» гарантирует, что мы анонсируем только свой агрегат и ничего больше — защита от случайных утечек.
Prefix-list «FROM_ISPx» защищает от приёма мусора — например, своих собственных префиксов от ISP, default-маршрута от тех, кто не должен его слать.
LOCAL_PREF 200 на ISP1 делает его предпочтительным для исходящего трафика.
Управление входящим трафиком через AS-path prepend
Для управления входящим трафиком LOCAL_PREF не годится — он локален. Используется AS-path prepend: при анонсе наружу к менее предпочтительному ISP несколько раз добавляем свой AS, чтобы AS_PATH стал длиннее, и удалённые AS предпочитали короткий путь через другого ISP:
route-map ISP2_OUT permit 10 match ip address prefix-list ANNOUNCE set as-path prepend 65001 65001 65001
Эта техника не гарантирует — некоторые удалённые AS могут предпочитать ISP2 по своим политикам — но в большинстве случаев работает.
2.9. Безопасность BGP
BGP исторически создавался без серьёзных мер безопасности, и это до сих пор источник проблем в интернете — утечки маршрутов, перехваты префиксов (BGP hijacking). Базовые меры защиты, которые должны быть на каждой сессии:
MD5/TCP-AO аутентификация — защита от случайных подключений и базовая защита от подделки.
TTL-Security (GTSM) — для eBGP-соседей с одного hop-а ставим TTL=255 на исходящих и проверяем TTL≥254 на входящих. Это блокирует попытки удалённой подделки.
Maximum-prefix — ограничение количества принимаемых префиксов от соседа. Предотвращает заливку памяти при ошибке у соседа.
Prefix-list IN — никогда не принимаем bogon-ы (RFC 1918, 0.0.0.0, multicast и т.д.) и свои собственные префиксы.
RPKI (Resource Public Key Infrastructure, RFC 6480) — криптографическая проверка того, что AS, анонсирующий префикс, имеет на это право. Маршрут с invalid статусом отбрасывается.
Модуль 3. VXLAN — оверлейная инкапсуляция для современных датацентров
3.1. Зачем нужен VXLAN: ограничения VLAN
VLAN (IEEE 802.1Q) — фундамент сегментации L2-сетей с конца 90-х. Однако в эпоху облачных и мульти-тенантных датацентров классический VLAN сталкивается с тремя серьёзными проблемами.
Проблема 1: 4096 идентификаторов
Тег VLAN ID занимает 12 бит, что даёт 4096 значений (с учётом резерваций — около 4094 пригодных). Для датацентра-провайдера, обслуживающего тысячи клиентов, каждому из которых нужен изолированный сегмент — это критическое ограничение. VXLAN использует 24-битный VNI (VXLAN Network Identifier) → более 16 миллионов сегментов.
Проблема 2: L2-домен не растягивается через L3
Чтобы две стойки в разных частях ДЦ или две географически разнесённые площадки обменивались L2-кадрами (например, для миграции виртуальной машины с сохранением IP), классически нужен L2-туннель — Q-in-Q, MPLS-VPLS или растянутый STP. Это сложно в эксплуатации, ограниченно по масштабу и склонно к авариям. VXLAN инкапсулирует L2-кадр в UDP-пакет и передаёт через любую IP-сеть.
Проблема 3: STP и flooding
Большие L2-домены страдают от STP — он блокирует резервные линки, ограничивает использование ECMP и медленно сходится. ARP/Broadcast флудятся по всему сегменту. VXLAN сам по себе не решает проблему flooding (он его передаёт), но в связке с EVPN MAC-обучение становится плоскостью управления, а не плоскостью данных, и flood-учиться больше не нужно.
3.2. Формат пакета и инкапсуляция
VXLAN определён в RFC 7348. Формат инкапсулированного кадра:
+-----------------+----------------+----------------+----------------+| Outer Ethernet | Outer IP (UDP) | VXLAN Header | Original L2 || (новый MAC) | UDP dst 4789 | VNI 24 bit | Frame (full) |+-----------------+----------------+----------------+----------------+Outer Ethernet: 14 байт (или 18 с тегом VLAN underlay)Outer IP: 20 байт (IPv4) или 40 байт (IPv6)UDP: 8 байт (порт назначения 4789)VXLAN: 8 байт ----Накладные: 50 байт для IPv4 + Ethernet underlay
VXLAN-заголовок (8 байт)
Bit: 0 8 31 +--------+--------+--------+--------+ |R|R|R|R|I|R|R|R| Reserved | Flags + Reserved +--------+--------+--------+--------+ | VNI (24 бита) |Reserved| +--------+--------+--------+--------+I-флаг = 1 указывает, что VNI валиден.VNI (Network Identifier) = идентификатор виртуальной сети.
Зачем UDP, а не GRE или TCP
UDP выбран по двум причинам. Во-первых, он stateless и не накладывает накладных на промежуточные устройства. Во-вторых — и это ключевое — поле Source Port в UDP используется как инструмент для ECMP-балансировки. Source Port в outer UDP вычисляется как хеш от заголовков inner-кадра (src/dst MAC, src/dst IP, src/dst L4-порт). Это даёт промежуточным маршрутизаторам underlay возможность распределять разные потоки по разным линкам ECMP, не зная о VXLAN, — они балансируют по 5-tuple внешнего пакета, и хеш разный для разных внутренних сессий.
ПРИМЕЧАНИЕ. MTU underlay должен быть увеличен на 50 байт (или 70 для IPv6/QinQ) относительно MTU клиентских интерфейсов. Если стандартный Ethernet MTU = 1500, то underlay должен поддерживать 1550 или больше. На практике обычно используется jumbo frame 9000–9216 байт.
3.3. VTEP — точка инкапсуляции
VTEP (VXLAN Tunnel Endpoint) — это устройство (или функция в устройстве), выполняющее инкапсуляцию VXLAN на исходящем направлении и декапсуляцию — на входящем. VTEP-ом может быть:
Hardware VTEP — top-of-rack коммутатор (например, Cisco Nexus 9000, Arista 7050, H3C S6800), Spine-Leaf коммутаторы фабрики.
Software VTEP — гипервизор (vSphere ESXi с NSX, KVM с OVS), серверный software switch.
Gateway VTEP — устройство на границе VXLAN-домена, переводящее трафик между VXLAN и не-VXLAN сегментами (например, классический VLAN или внешний L3).
VTEP идентифицируется IP-адресом — обычно loopback-адресом коммутатора. Все остальные VTEP в фабрике должны иметь IP-связность до этого адреса (это и есть underlay).
Маппинг VLAN ↔ VNI
На клиентской стороне VTEP видит обычный 802.1Q VLAN-тегированный или access трафик. Внутри VTEP-а есть таблица маппинга VLAN ID ↔ VNI: какой кадр из какого VLAN-а нужно инкапсулировать в какой VNI. Это позволяет на каждом VTEP использовать собственное локальное VLAN-пространство, потому что значимый идентификатор сегмента — VNI, а VLAN — лишь локальный «вешалка» для интерфейсов.
3.4. Плоскость управления: проблема BUM-трафика
Базовый VXLAN (RFC 7348) не определяет, как VTEP-ы узнают друг о друге и как обрабатывают BUM-трафик (Broadcast, Unknown unicast, Multicast). Есть три исторических подхода.
Подход 1: Multicast underlay (классический)
Каждому VNI ставится в соответствие multicast-группа (например, 239.1.1.1 для VNI 10000). Все VTEP-ы, обслуживающие этот VNI, подписываются на эту группу. BUM-трафик инкапсулируется в VXLAN с outer destination = multicast-адрес группы. В underlay должен работать PIM (обычно PIM-SM или Bidir-PIM), что усложняет архитектуру и плохо масштабируется через несколько ДЦ.
Подход 2: Ingress Replication (Head-end Replication)
VTEP, отправляющий BUM, дублирует пакет — по одной копии для каждого удалённого VTEP-а, обслуживающего тот же VNI, — и отправляет каждую копию unicast-ом. Никакой PIM не нужен, underlay упрощается. Минус: при большом количестве VTEP-ов на VNI исходящая полоса VTEP-источника может стать узким местом. Список VTEP-ов на VNI должен быть известен (статически или через плоскость управления).
Подход 3: EVPN — современная плоскость управления
MP-BGP EVPN (RFC 7432, RFC 8365) — это address family BGP, специально разработанный для оверлей-сетей. Он распространяет:
Тип 2 (MAC/IP Advertisement) — анонсы локально известных MAC-адресов и связанных IP.
Тип 3 (Inclusive Multicast Ethernet Tag) — анонс участия VTEP-а в конкретном VNI; используется для построения списка VTEP для ingress replication.
Тип 4 (Ethernet Segment) — для multi-homing.
Тип 5 (IP Prefix Route) — для распространения IP-префиксов (а не только хост-маршрутов).
С EVPN VTEP-ы узнают MAC-адреса не из data plane (из flooding-а), а из control plane — заранее. Это полностью устраняет flood-and-learn: ARP может быть подавлен на VTEP-е (ARP suppression), unknown unicast становится редкостью. Это ключевая причина перехода на EVPN: фабрика становится тихой, и L2-домен можно растягивать на десятки VTEP-ов без эффекта broadcast storm.
3.5. EVPN: типы маршрутов и их применение
Тип
Название
Назначение
1
Ethernet Auto-Discovery
Multi-homing: AD per ES и AD per EVI
2
MAC/IP Advertisement
Анонс MAC-адреса и опционально привязанного IP (хост-маршрут)
3
Inclusive Multicast
Анонс участия VTEP в EVI; список для BUM replication
4
Ethernet Segment
DF election при multi-homing
5
IP Prefix
Анонс IP-префикса (subnet) — для L3 EVPN
Тип 2: MAC/IP Advertisement — главный рабочий тип
Когда хост подключается к VTEP-у и отправляет первый кадр (или GARP, или DHCP), VTEP узнаёт его MAC и опционально IP (по ARP-снупингу). VTEP анонсирует это как EVPN Type 2 во все BGP-EVPN сессии. Маршрут содержит:
Route Distinguisher (RD) — обеспечивает уникальность в BGP-таблице.
Ethernet Segment Identifier (ESI) — идентификатор сегмента (для multi-homing).
Ethernet Tag ID — служебный, обычно 0.
MAC-адрес и его длина.
IP-адрес (опционально).
Label1 — VNI для L2-операций.
Label2 — VNI для L3-операций (если рекламируется и IP).
Route Target (RT) extended community — определяет, в какой VRF/EVI импортировать маршрут.
Symmetric vs Asymmetric IRB
Когда EVPN выполняет L3-маршрутизацию между VNI на VTEP-е, существует два режима:
Asymmetric IRB — на VTEP-источнике делается route-and-bridge: пакет маршрутизируется в нужный VNI и отправляется уже в новом VNI. На VTEP-приёмнике — только bridge. Минус: на VTEP-источнике должны быть все целевые VNI.
Symmetric IRB — используется специальный transit VNI (L3VNI) для маршрутизации между сегментами. На источнике bridge → route → encap в L3VNI. На приёмнике decap → route → bridge в целевом VNI. Плюс: масштабируется лучше, на каждом VTEP не нужно держать все VNI. Это де-факто стандарт в современных EVPN-фабриках.
3.6. Архитектура underlay для VXLAN-EVPN
Underlay — это IP-сеть, по которой бегают инкапсулированные VXLAN-пакеты. Требования к underlay:
Полная IP-связность между всеми VTEP loopback-ами (обычно /32).
Поддержка ECMP — желательно много путей, чтобы хеш по UDP-порту реально распределял.
MTU 9000+ для поддержки jumbo-фреймов.
Быстрая сходимость — BFD на underlay-протоколе.
Варианты underlay-протокола
Протокол
Плюсы
Минусы
OSPF
Простота, известность, быстрая сходимость
SPF на крупных фабриках нагружает CPU; иерархия areas сложнее, чем нужно для простой Clos
IS-IS
TLV-расширения, поддержка SR, не зависит от IP
Менее распространён в DC-команды
eBGP
Линейная масштабируемость, плоскость управления = плоскость данных (тот же BGP для underlay и overlay)
Больше конфигурации, нужны разные AS на коммутаторах
Спайн-Лиф (Clos) топология
Стандартная архитектура современного DC выглядит так:
Несколько Spine-коммутаторов (2, 4 или 8 — для отказоустойчивости и масштабирования полосы).
Множество Leaf-коммутаторов (top-of-rack).
Каждый Leaf соединён с КАЖДЫМ Spine.
Spine между собой НЕ соединены.
Серверы подключаются к Leaf (одному или паре через MLAG/EVPN multi-homing).
Эта топология нерекурсивная — между любыми двумя Leaf ровно 2 hop-а через Spine. Полоса между любыми двумя Leaf ограничена только количеством Spine-ов и uplink-ов. ECMP-балансировка использует все доступные Spine.
3.7. Multi-homing хостов: ESI-LAG
Один из ключевых преимуществ EVPN — поддержка all-active multi-homing хостов к нескольким Leaf-коммутаторам без проприетарного MLAG. Хост подключается к двум (или более) Leaf-ам через LAG (LACP). Со стороны Leaf обе пары порта собираются в Ethernet Segment с общим ESI (10-байтный идентификатор).
Принципы работы:
Оба Leaf анонсируют MAC-адреса хоста через EVPN Type 2 с одним и тем же ESI.
Удалённые VTEP-ы видят оба анонса и могут балансировать трафик на уровне ECMP.
Для BUM-трафика выбирается Designated Forwarder (DF) — один Leaf, который ретранслирует BUM в сторону хоста, чтобы тот не получил дубль.
DF-election происходит через EVPN Type 4 на основе ESI и BGP RID.
Преимущество перед MLAG: не нужны пары вендорских коммутаторов с проприетарным sync-протоколом (vPC, MC-LAG, MLAG). EVPN multi-homing работает между коммутаторами разных вендоров — это часть стандарта.
3.8. Конфигурация EVPN-VXLAN: пример на FRR/Cumulus
Для иллюстрации соберём минимальную конфигурацию Leaf-коммутатора в EVPN-VXLAN фабрике с использованием FRR (Free Range Routing) — наиболее распространённой реализации в open-source мире и в Cumulus Linux/NVIDIA Onyx.
! /etc/frr/frr.conf! Underlay BGP — eBGP unnumbered к двум Spinerouter bgp 4200000001 bgp router-id 10.255.255.1 neighbor SPINES peer-group neighbor SPINES remote-as external neighbor swp51 interface peer-group SPINES neighbor swp52 interface peer-group SPINES address-family ipv4 unicast network 10.255.255.1/32 neighbor SPINES activate exit-address-family ! Overlay EVPN — то же peer-group, но другой AF address-family l2vpn evpn neighbor SPINES activate advertise-all-vni exit-address-family! VXLAN-интерфейсы и маппинг VLAN ↔ VNI! (часть конфигурации в /etc/network/interfaces)! VRF для L3 EVPNvrf TENANT_A vni 10000 exit-vrf
В /etc/network/interfaces определяются мост и VNI-интерфейсы:
auto vni10001iface vni10001 bridge-access 100 vxlan-id 10001 vxlan-local-tunnelip 10.255.255.1auto bridgeiface bridge bridge-ports vni10001 swp1 swp2 bridge-vlan-aware yes bridge-vids 100
3.9. Эксплуатационные нюансы
MTU — самая частая проблема
Если underlay MTU не увеличен, а клиентские интерфейсы шлют 1500 байт, то после инкапсуляции пакет станет 1550 байт, и underlay-коммутатор с MTU 1500 его отбросит (или, если установлен DF-бит, отправит ICMP «Fragmentation Needed» — а если не установлен, фрагментирует, что в VXLAN тоже плохо). Симптомы: ping проходит (короткие пакеты), а реальные сессии ломаются (TCP-handshake часто маленький, а потом обмен данными — большие пакеты). Решение: на underlay везде установить MTU не менее 1550, а лучше 9000+.
ARP suppression
Когда VTEP получил EVPN Type 2 с MAC и IP, он знает соответствие. Когда локальный хост шлёт ARP-запрос для удалённого IP, VTEP может ответить сам, не флудя ARP в overlay. Это критично для масштабируемости — без ARP suppression в большом VNI с тысячами хостов broadcast-трафик может задавить фабрику. ARP suppression обычно включается per-VNI или глобально.
Storm Control и BUM-rate-limiting
Даже с EVPN остаются legitimate источники BUM: DHCP-discover, IPv6 ND, нестандартные приложения с broadcast. Обязательно настраивайте storm-control на L2-портах — в момент сбоя приложения или вирусной активности это спасёт фабрику.
BFD на underlay
Стандартный BGP timer 30-90 секунд — это вечность для современного DC. Включите BFD для underlay BGP-сессий с интервалами 50–300 мс. Сходимость в случае отказа Spine-Leaf линка должна быть в субсекундной зоне.
EVPN ARP/ND moves и host mobility
Когда виртуальная машина мигрирует с одного хоста на другой (vMotion, kvm-live-migration), её MAC переезжает на другой VTEP. EVPN отслеживает это через sequence number в Type 2 — VTEP, к которому VM пришёл, увеличивает seq, и его анонс перебивает старый. В нормальной работе это занимает секунды. Если ваш гипервизор шлёт GARP при миграции — переключение почти мгновенное.
Заключение. Где какой протокол использовать
Изучив три технологии в деталях, можно сформулировать четкие рекомендации по их применению в реальных проектах.
Когда использовать OSPF
Корпоративная сеть с десятками-сотнями маршрутизаторов под единым управлением.
Кампусная сеть с иерархией core-distribution-access.
WAN-сеть филиалов с MPLS L3 VPN или IPSec, где OSPF работает как PE-CE протокол.
Underlay для небольшой VXLAN-фабрики (до 50–100 устройств), где простота важнее масштабируемости.
Когда использовать BGP
Подключение к двум и более ISP — в принципе обязательно.
Маршрутизация между датацентрами компании, особенно при разных AS.
Underlay крупных DC-фабрик (Spine-Leaf от 50+ узлов) — eBGP-fabric с уникальными AS.
Плоскость управления EVPN — MP-BGP всегда.
Любая сеть, где требуется тонкое управление политикой маршрутизации, route-leaking между VRF, регулирование симметрии трафика.
Когда использовать VXLAN/EVPN
Multi-tenant датацентр — изоляция сегментов, потребность в более чем 4096 VLAN.
Растяжение L2-домена через L3-фабрику или между ДЦ.
Поддержка VM-mobility без изменения IP-адреса.
Замена устаревшей архитектуры с STP и проприетарным MLAG на современную фабрику с EVPN multi-homing.
Любая частная облачная инфраструктура (OpenStack, VMware NSX, Kubernetes с Calico-VXLAN).
Финальная архитектура современного датацентра
Если бы пришлось проектировать DC «с нуля» на сегодняшний день, типовой стек выглядел бы так:
Физическая топология: Clos Spine-Leaf, 2–8 Spine-ов в зависимости от масштаба, 100G линки между Spine и Leaf.
Underlay: eBGP unnumbered, каждый Leaf — собственный AS из 4-байтного приватного диапазона, Spine-ы — общий или индивидуальный AS, BFD на всех сессиях.
Overlay: VXLAN с VNI per tenant per L2-сегмент.
Плоскость управления overlay: MP-BGP EVPN, та же сессия, что underlay (multi-AF), Type 2 + Type 5 + Type 3.
Multi-homing хостов: EVPN ESI-LAG (без MLAG).
L3-маршрутизация overlay: Symmetric IRB с L3VNI per VRF (per tenant).
Внешний выход: пара Border Leaf с external eBGP к ISP/WAN-устройствам.
OSPF в этой архитектуре не используется в underlay — для крупных DC он уступает eBGP. OSPF остаётся актуален в кампусной сети, в WAN-филиалах и в небольших серверных сегментах. BGP — везде, где есть граница между административными зонами или где нужна политика. VXLAN/EVPN — везде, где нужна виртуализация L2 поверх L3.
Эти три протокола не конкуренты, а слои современной сети. Понимание каждого по отдельности — необходимое условие, но настоящая инженерная компетенция начинается там, где видишь, как они работают вместе.
- Конец лекции —