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      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Итого 4 байта. Может быть много меток подряд — label stack.

LSR и LER

Life of a packet

  1. Пакет входит в MPLS-сеть на Ingress LER.
  2. LER классифицирует пакет по FEC (Forwarding Equivalence Class) — «куда идёт группа пакетов». Обычно FEC = destination-IP-префикс.
  3. LER навешивает метку соответствующую FEC → пакет.
  4. Пакет идёт через LSR'ы. Каждый LSR смотрит метку, находит в LFIB (Label Forwarding Information Base): «эта метка → замени на такую, отправь через такой интерфейс».
  5. На Egress LER метка снимается (PHP — Penultimate Hop Popping — часто снимается за один хоп до конца).
  6. Пакет идёт обычным 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), учитывая полосу, задержку, требования резервирования. Классика для провайдеров с мультипутями:

MPLS vs IP vs Ethernet

IP-routingMPLSEthernet-switching
МеткаDestination IPMPLS labelDestination MAC
Размер lookup32/128 бит longest prefix20 бит exact match48 бит exact match
Свободный выбор путиПо IGPЯвно можноSTP-tree
VPNЧерез IPsec/GRENative L3VPNVLAN, ограниченно

Кто использует

Будущее — Segment Routing

MPLS постепенно вытесняется Segment Routing (SR):

См. также