MPLS
MPLS (Multi-Protocol Label Switching, RFC 3031) — технология передачи данных по меткам, а не по IP-адресам. Работает между L2 и L3 (иногда называют «Layer 2.5»). Основа магистральных провайдерских сетей (backbone), корпоративных WAN, MPLS VPN, VPLS. Изобретена Cisco/IETF в конце 90-х.
Идея
Обычная IP-маршрутизация: каждый роутер смотрит destination-IP, находит в таблице лучший маршрут (longest prefix match) — дорогая операция.
MPLS: пакету добавляется короткая метка (label). Роутеры смотрят только метку, свапают её и пересылают — тупой быстрый lookup. Метки короче IP → таблица меньше, поиск быстрее.
Заголовок
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label (20 bits) | TC |S| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Label — 20 бит, значение 0-1048575. Первые 16 зарезервированы.
- TC — Traffic Class (QoS), 3 бита.
- S — Bottom of Stack, 1 бит. Метки можно вкладывать (label stack).
- TTL — 8 бит, как в IP.
Итого 4 байта. Может быть много меток подряд — label stack.
LSR и LER
- LSR (Label Switch Router) — внутренние маршрутизаторы, свапают метки.
- LER (Label Edge Router) — на границе MPLS-домена. Ingress-LER навешивает метку, egress-LER снимает.
Life of a packet
- Пакет входит в MPLS-сеть на Ingress LER.
- LER классифицирует пакет по FEC (Forwarding Equivalence Class) — «куда идёт группа пакетов». Обычно FEC = destination-IP-префикс.
- LER навешивает метку соответствующую FEC → пакет.
- Пакет идёт через LSR'ы. Каждый LSR смотрит метку, находит в LFIB (Label Forwarding Information Base): «эта метка → замени на такую, отправь через такой интерфейс».
- На Egress LER метка снимается (PHP — Penultimate Hop Popping — часто снимается за один хоп до конца).
- Пакет идёт обычным IP-routing'ом дальше.
Label distribution
Как роутеры узнают какие метки использовать? Через протоколы распределения меток:
| Протокол | Что делает |
|---|---|
| LDP (Label Distribution Protocol, RFC 5036) | Классический. Метки за префиксами из IGP |
| RSVP-TE (Traffic Engineering) | Резервирует полосу вдоль конкретного пути — можно строить туннели по QoS |
| BGP-LU (Labeled Unicast, RFC 8277) | Метки через BGP — для inter-AS MPLS |
| SR-MPLS (Segment Routing) | Современный, метки как «инструкции» в SR-заголовке. Меньше состояния в сети |
MPLS VPN — L3VPN
Классический use-case провайдера. Провайдер продаёт «MPLS VPN» — соединяет несколько офисов клиента изолированно от других:
Client A office 1 ──┐ ┌── Client A office 2
│ Provider │
Client B office 1 ──┼── MPLS ──────┼── Client B office 2
│ Backbone │
Client C office 1 ──┘ └── Client C office 2
Технически: VRF (Virtual Routing and Forwarding) — отдельная routing-таблица per клиент. Метки MPLS + MP-BGP для передачи маршрутов VRF-к-VRF. Обозначается как «L3VPN» или «RFC 4364».
VPLS — L2VPN
VPLS (Virtual Private LAN Service) — провайдер эмулирует один Ethernet между разбросанными офисами клиента. Клиент видит «один LAN» — MAC'и с других офисов доступны напрямую. Реализуется через MPLS pseudowires.
Traffic Engineering
MPLS-TE — можно принудительно направить трафик по конкретному пути (не по кратчайшему IGP), учитывая полосу, задержку, требования резервирования. Классика для провайдеров с мультипутями:
- «90% VoIP-трафика → через low-latency путь через ДЦ 1».
- «Резервный путь: если основной упал — за 50 мс переключиться на backup через ДЦ 2».
MPLS vs IP vs Ethernet
| IP-routing | MPLS | Ethernet-switching | |
|---|---|---|---|
| Метка | Destination IP | MPLS label | Destination MAC |
| Размер lookup | 32/128 бит longest prefix | 20 бит exact match | 48 бит exact match |
| Свободный выбор пути | По IGP | Явно можно | STP-tree |
| VPN | Через IPsec/GRE | Native L3VPN | VLAN, ограниченно |
Кто использует
- Провайдеры интернета — все крупные (Ростелеком, МТС, Vodafone, AT&T, Verizon).
- Корпоративные WAN — банки, ритейл, госкомпании.
- Data center backbones — до появления EVPN/VXLAN.
Будущее — Segment Routing
MPLS постепенно вытесняется Segment Routing (SR):
- SR-MPLS — использует MPLS-labels как «сегменты», но без LDP/RSVP-TE — путь целиком закодирован в стеке.
- SRv6 — то же самое, но метки заменены на IPv6-адреса. Не требует MPLS вообще.