L2.5 MPLS, L2VPN, L3VPN, EVPN, Segment Routing

Это «операторская кухня» — то, на чём работают сети провайдеров, телеком-операторов и крупнейших дата-центров. MPLS живёт между L2 и L3 (отсюда полушуточное «L2.5»): он не маршрутизирует по IP и не коммутирует по MAC, а переключает пакеты по меткам. Поверх него строят виртуальные частные сети (VPN) для тысяч клиентов на одной физической инфраструктуре.

🟡 Калибровка глубины: этот модуль — обзорный, «знать, что есть, и уметь нагуглить». Цель — чтобы ты понимал концепции и термины (метка, LSP, VRF, RD/RT, EVPN, VXLAN, Segment Routing), мог поддержать разговор на собеседовании и не пугался, увидев это в проде. Зубрить операторские конфиги LDP/RSVP-TE наизусть не нужно: в облачном DevOps, к которому ты идёшь, это почти не применяется. Но VXLAN/EVPN — растущая тема и в дата-центрах, и рядом с Kubernetes, поэтому ей уделим больше внимания.
Что узнаешь

1. Зачем придумали MPLS

В 1990-х классическая IP-маршрутизация была медленной: на каждом роутере для каждого пакета делался дорогой longest-prefix-match по огромной таблице. MPLS предложил иначе: на входе в сеть пакету один раз присваивается короткая метка (label), а дальше роутеры переключают его, глядя только на метку — простой и быстрый lookup по таблице меток, как по индексу.

Сегодня железо умеет делать IP-lookup на полной скорости, и «MPLS ради скорости» уже неактуально. Но MPLS остался — по другой причине: метки создают «туннели», поверх которых удобно строить сервисы, не зависящие от IP-адресации клиентов: VPN, Traffic Engineering, QoS-классы, быстрое перенаправление при отказе (FRR).

Главная мысль: сегодня MPLS — это не про скорость, а про сервисы и изоляцию. «Один провайдер, одна физическая сеть — сотни клиентов, каждый думает, что сеть его собственная.»

2. Анатомия метки и коммутация

MPLS-метка вставляется между L2-заголовком (Ethernet) и L3-заголовком (IP) — поэтому «L2.5». Это 32-битная вставка (shim header):

Где живёт MPLS-метка и из чего состоит (32 бита)
Ethernet MPLS label(s) IP payload (TCP/UDP…) Label (20 бит) — номер метки TC (3) Sbottom TTL (8) Label — что коммутировать. TC — класс (QoS). S — «последняя метка в стеке». TTL — как у IP. Меток может быть несколько — это «стек меток» (label stack), верхняя обрабатывается первой.
Метка не заменяет IP — она «оборачивает» пакет на время прохода через MPLS-домен.

Три операции и роли устройств

ТерминЧто значит
LER (Edge / PE)граница MPLS-домена: навешивает метку на входе (push), снимает на выходе
LSR (Core / P)ядро: переключает по метке (swap), не смотрит в IP
pushдобавить метку (вход в домен)
swapзаменить метку на следующую (транзит)
popснять метку (выход)
LSPLabel-Switched Path — однонаправленный «туннель» из меток через домен
Путь пакета через MPLS-домен: push → swap → pop
CE-A PE1LER push PLSR swap PE2LER pop CE-B IP [label 17] [label 22] IP PE1 навесил метку 17 → P заменил на 22 → PE2 снял и отдал чистый IP. Часто PE2 снимает метку заранее на предпоследнем хопе — это PHP (Penultimate Hop Popping).
Ядро (P) никогда не смотрит в IP клиента — только меняет метки. В этом скорость и изоляция.

MPLS-стек «на проводе»:

── кадр с двумя метками (типично для L3VPN) ── Ethernet ... MPLS Label: 22 Exp: 0 S: 0 TTL: 63 # транспортная метка (как дойти до PE2) MPLS Label: 301 Exp: 0 S: 1 TTL: 63 # VPN-метка (какой VRF/клиент) — S=1 = дно стека IP: src 10.10.0.5 → dst 10.10.0.9 # адреса клиента (могут пересекаться у разных клиентов!)

3. Как раздаются метки: LDP (и RSVP-TE)

Чтобы все роутеры согласовали, «какая метка ведёт к какому префиксу», нужен протокол распределения меток. Самый распространённый — LDP (Label Distribution Protocol): он привязывает метки к IGP-маршрутам (OSPF/IS-IS). То есть IGP строит топологию, а LDP «навешивает» на неё метки.

🟡 Достаточно знать: «IGP даёт топологию, LDP раздаёт метки по ней; RSVP-TE — когда нужно рулить путём вручную». Современный тренд — заменять оба на Segment Routing (см. §8).

4. L3VPN: VRF, Route Distinguisher, Route Target

Самый востребованный сервис на MPLS — MPLS L3VPN. Провайдер подключает множество клиентов; у каждого свои IP-адреса, и они могут пересекаться (все любят 10.0.0.0/8). Как держать их изолированными на одном железе? Три понятия:

ПонятиеЧто делает
VRF (Virtual Routing and Forwarding)отдельная таблица маршрутизации на роутере «для этого клиента» — как виртуальный роутер внутри роутера
RD (Route Distinguisher)префикс-уникализатор: делает пересекающиеся 10.0.0.0/8 разных клиентов уникальными (RD:префикс), чтобы BGP их различал
RT (Route Target)BGP-community «кому импортировать»: управляет, какие VRF видят какие маршруты (отсюда и hub-and-spoke, и any-to-any топологии)

Маршруты клиентов переносятся между PE-роутерами по MP-BGP (multiprotocol BGP, address-family VPNv4) — да, тот самый BGP из модуля 7, расширенный для VPN. Внутри ядра — MPLS-метки.

L3VPN: два клиента с одинаковыми IP изолированы через VRF
Клиент A 10.0.0.0/8 Клиент B 10.0.0.0/8 (!) PE1VRF-A, VRF-B MPLS coreMP-BGP VPNv4 PE2VRF-A, VRF-B RD делает 10.0.0.0/8 клиента A ≠ 10.0.0.0/8 клиента B RT решает, какой VRF импортирует какие маршруты Клиенты не видят друг друга, хотя адреса совпадают. Это и продаёт провайдер.
VRF = изоляция таблиц, RD = уникализация префиксов в BGP, RT = политика «кто кого видит».
# как это выглядит на PE (обзорно — не для зубрёжки) PE1(config)# vrf definition CLIENT-A PE1(config-vrf)# rd 65000:100 # Route Distinguisher PE1(config-vrf)# route-target export 65000:100 PE1(config-vrf)# route-target import 65000:100 PE1(config)# interface gi0/1 PE1(config-if)# vrf forwarding CLIENT-A # порт клиента A в его VRF PE1# show ip route vrf CLIENT-A # отдельная таблица клиента

5. L2VPN, VPLS, pseudowire — «протянуть L2»

Иногда клиенту нужен не L3-сервис, а «как будто один общий коммутатор» между удалёнными площадками — один broadcast-домен, свой L2. Это семейство L2VPN:

Проблема классического VPLS — он «учит» MAC-адреса в data-plane (как обычный свитч), плохо масштабируется и плохо дружит с резервированием. Эту проблему и решил EVPN.

6. EVPN + VXLAN — современная замена и мост в облако

EVPN (Ethernet VPN) — это «правильный» способ переносить L2 (и L3) поверх сети, где MAC-адреса распространяются через BGP (control plane), а не учатся вслепую. Чаще всего EVPN работает в паре с VXLAN — инкапсуляцией, которая заворачивает Ethernet-кадр в UDP-пакет и тащит его поверх обычной IP-сети.

VXLAN: L2-кадр едет внутри UDP поверх IP (overlay над underlay)
Outer IP/UDPunderlay (как доехать) VXLAN hdrVNI (сегмент) Оригинальный Ethernet-кадр (L2 клиента)MAC src/dst + IP + payload VNI (24 бита) = до 16 млн сегментов вместо 4094 VLAN. VTEP — устройство, которое заворачивает/разворачивает VXLAN. EVPN/BGP раздаёт, где какой MAC.
Underlay — обычная IP-сеть (часто Spine-Leaf на OSPF/BGP). Overlay — виртуальные L2-сегменты поверх неё.

Почему это важно именно тебе, идущему в DevOps:

🌉 Когда в Kubernetes «поды на разных нодах не пингуются», частая причина — VXLAN/MTU: инкапсуляция добавляет ~50 байт, и если MTU underlay не учли, большие пакеты режутся. Тот самый MTU из модуля про OSPF — снова он.

7. Segment Routing — куда всё движется

Segment Routing (SR) — современная эволюция MPLS. Идея: вместо того чтобы каждый роутер хранил состояние туннелей (как в LDP/RSVP-TE), весь путь кодируется списком «сегментов» прямо в заголовке пакета на входе. Ядро не держит per-flow состояние — оно просто исполняет инструкции из пакета. Это проще, масштабируемее и идеально дружит с SDN-контроллерами.

🟡 Тебе достаточно фразы на собесе: «Segment Routing заменяет LDP/RSVP-TE: путь задаётся списком сегментов в заголовке, ядро не хранит состояние. Бывает SR-MPLS и SRv6.» Этого хватит для понимания трендов.

8. Мост в DevOps: где ты это встретишь

ТехнологияГде встретишь в DevOps/облаке
VXLANoverlay-сети Kubernetes (Flannel, Calico vxlan), сети дата-центров, OpenStack Neutron
EVPNфабрики Spine-Leaf под облаком/кластерами, мульти-ДЦ растяжка L2
VRFLinux network namespaces / VRF (ip vrf) — изоляция таблиц на сервере; multi-tenant сети
MP-BGPтот же BGP (модуль 7), на котором держится EVPN; Calico умеет EVPN-подобные схемы
MPLS L3VPNлинки между офисами/ДЦ от провайдера (ты будешь «клиентом» такого сервиса)
🌉 Что отсюда реально пригодится в DevOps

Не операторские конфиги LDP, а модель «overlay поверх underlay» (VXLAN/EVPN) и понятие VRF как изоляции таблиц. Это прямо ложится на сети Kubernetes и мульти-облако. Остальное — эрудиция для собеседования и спокойствия в разговоре с сетевиками-операторами.

9. Вопросы с собеседования

❓ Почему MPLS называют «L2.5»?
Метка вставляется между L2 (Ethernet) и L3 (IP). MPLS не коммутирует по MAC и не маршрутизирует по IP — он переключает по меткам, «между» уровнями.
❓ Зачем в L3VPN нужны RD и RT, в чём разница?
RD делает пересекающиеся IP-префиксы разных клиентов уникальными для BGP (уникализатор). RT — community, управляющее импортом/экспортом маршрутов между VRF (политика видимости). RD — про уникальность, RT — про то, кто кого видит.
❓ Чем EVPN лучше классического VPLS?
EVPN распространяет MAC-адреса через BGP (control plane), а не учит их вслепую в data-plane. Отсюда лучшая масштабируемость, active-active multihoming, быстрая сходимость, меньше флуда.
❓ Что такое VXLAN и при чём тут Kubernetes?
VXLAN заворачивает L2-кадр в UDP поверх IP (overlay), VNI даёт до 16 млн сегментов. Многие CNI (Flannel, Calico) используют VXLAN для связи подов между нодами. Частая боль — MTU из-за оверхеда инкапсуляции.

10. Частые заблуждения

заблуждение 1 «MPLS — это шифрование/безопасный VPN». Нет. MPLS VPN изолирует трафик (separation), но НЕ шифрует. Для конфиденциальности поверх нужен IPsec (см. трек VPN).
заблуждение 2 «MPLS нужен ради скорости». Устаревший аргумент. Сегодня — ради сервисов: VPN, TE, FRR, классы QoS.
заблуждение 3 «VXLAN и VLAN — одно и то же». VLAN — 12 бит (4094), локально L2. VXLAN — 24 бита (16М), поверх IP, тянется через всю маршрутизируемую сеть.
заблуждение 4 Игнорируют MTU при overlay. VXLAN/MPLS добавляют байты. Не учёл — большие пакеты молча режутся, «работает, но местами тормозит». Всегда планируй MTU underlay с запасом.
Ключевое за этот урок