Автор: Юшков Тарас (taras at mpls-exp.ru)

Архитектура MPLS

Данная статья описывает архитектуру мультипротокольной коммутации по меткам (MPLS - Multi-Protocol Label Switching). Архитектура MPLS регламентируется в документе IETF "Multiprotocol Label Switching Architecture" (RFC3031).


Основные понятия

В традиционных сетях IP, в общем случае, маршрутизация пакетов осуществляется на основе IP адреса назначения (destination IP address). Каждый маршрутизатор в сети обладает информацией о том, через какой интерфейс и какому соседу необходимо перенаправить пришедший IP-пакет.
Мультипротокольная коммутация по меткам предлагает несколько другой подход. Каждому IP-пакету назначается некая метка. Маршрутизаторы принимают решение о передаче пакета следующему устройству на основании значения метки. Метка добавляется в составе MPLS заголовка, который добавляется между заголовком кадра (второй уровень OSI) и заголовком пакета (третий уровень модели OSI). Пример на рис. N1.

Рис. N1. Место MPLS заголовка в кадре.
Формат MPLS заголовка представлен на рис. N2.

Рис. N2. Формат MPLS-метки.
Описание полей MPLS-заголовка:
В рамках архитектуры MPLS различают следующие типы устройств:

Процесс коммутации по меткам (label switching)

Рассмотрим схему, приведённую на рис N4. MPLS-домен образован двумя LSR-ами и двумя E-LSR-ами. К домену подключены два маршрутизатора использующие традиционную IP-маршрутизацию.

Рис. N4. Пример прохождения пакета через MPLS-домен.
Рассмотрим путь следования IP-пакета от маршрутизатора А к маршрутизатору В через MPLS домен. Адресом источника IP-пакета является 10.1.1.1 (на рисунке обозначено "s"). Адресом назначения IP-пакета является 10.2.1.1 (на рисунке обозначено "d"). Заголовки кадров не приведены. Таблицы IP-маршрутизации и MPLS-коммутации приведены в табл. N1-5. В таблицах приведены только используемые в примере записи.
Табл. N1. Edge LSR1 (IP маршрутизация)

Табл. N2. LSR1 (коммутация по меткам)
подсеть
выходной
интерфейс
метка
10.2.1.0/24
int1
1000

входной
интерфейс
метка
выходной
интерфейс
метка
int0
1000
int2
330
Табл. N3. LSR2 (коммутация по меткам)

Табл. N4. Edge LSR2 (коммутация по меткам)
входной
интерфейс
метка
выходной
интерфейс
метка
int1
330
int2
pop/540

входной
интерфейс
метка
выходной
интерфейс
метка
int0
540
необходим анализ таблици IP маршрутизации


Табл. N5. Edge LSR2 (IP маршрутизация)


подсеть
выходной
интерфейс
метка
10.2.1.0/24 int1
нет

Этап N1 - маршрутизатор А пересылает обыкновенный IP-пакет в сторону E-LSR.
Этап N2 - E-LSR получает IP-пакет и на основе таблиц IP-маршрутизации (табл. N1) определяет, что данному пакету должна быть назначена метка 1000 (на рисунке обозначено "l") и пакет должен быть переслан в сторону LSR1. Данный процесс называется "назначение метки" (label imposing).

Примечание: Образование таблиц MPLS-коммутации рассмотрено далее.

Этап N3 - LSR1 получает IP-пакет с меткой 1000 и на основе таблицы MPLS-коммутации (табл. N2) определяет, что метка пакета должна быть сменена на 330 и пакет должен быть переслан в сторону LSR2. Данный процесс называется переписывание метки (label swapping).
Этап N4 - LSR2 получает IP-пакет с меткой 330 и на основе таблицы MPLS-коммутации (табл. N3) определяет, что пакет должен быть переслан в сторону LSR2 без меток (значение pop). Возможен так же вариант, когда LSR2 пересылает пакет в сторону E-LSR с меткой (в нашем случае 540). Если пакет следует по этапу N4 то такое поведение называется Penultimate Hop Popping. Поведение LSR в соответствии с этапом N4а является классическим для MPLS.
Этап N5 - E-LSR получает IP-пакте (как с меткой, так и без) и на основании таблиц IP-маршрутизации (табл. N5) или MPLS-коммутации (табл. N6) определяет, что данный пакет должен быть переслан, как обыкновенный IP-пакет (без метки) в сторону маршрутизатора В. Если пакет был получен без метки (Penultimate Hop Popping), то E-LSR должен выполнять только анализ таблицы IP-маршрутизации. Если пакет получен с меткой, то маршрутизатор должен сначала проанализировать таблицу MPLS-коммутации, на основании её определить, что для данного пакета необходимо выполнить анализ таблицы IP-маршрутизации. И только после анализа таблицы IP-маршрутизации определяется тот сосед, которому должен быть переслан пакет. Именно для исключения промежуточного анализа таблицы MPLS-коммутации на E-LSR-е применяется Penultimate Hop Popping.

Label Switch Path

В примере, приведённом выше, IP-пакет проследовал через "маршрут коммутации по меткам" - Label Switch Path (LSP). LSP - это последовательность устройств в MPLS домене, через которые проследовал пакет с меткой при фиксированном размере стека меток. Принципиально важно в определении LSP, то что, на всем пути размер стека не меняется. То есть, если где-то на пути следования пакета к одной метке добавляется другая (в стеке получается две метки), то LSR-ы коммутирующие по второй (внешней метке) из LSP исключаются. Подробно такие случаи будут рассмотрены далее. Для нашего примера LSP это последовательность: E-LSR, LSR1, LSR2, E-LSR. При использовании PHP, строго говоря, второй E-LSR не должен быть включён в LSP, так как при пересылке ему стек меток был пуст. Но для PHP допускается исключение.

Примечание: Иногда LSP описывают последовательностью меток и выходных интерфейсов, в этом случае LSP из примера: 1000(int1), 330(int2), 540(int2) или LSP: 1000(int1), 330(int2), null(int2)  - в случае использования PHP.

На LSR для каждой "входящей" метки на основе таблицы MPLS-коммутации однозначно определяется "выходящая" метка и интерфейс, через который пакет должен быть переслан. Поэтому, первая метка, устанавливаемая E-LSR-ом, однозначно определяет весь маршрут следования пакета через MPLS домен. Этот маршрут и называется LSP.

Forwarding Equivalence Classes

E-LSR каждому LSP в соответствие устанавливает некоторое множество подсетей. Пакеты, предназначенные этим подсетям, передаются E-LSR-ом по одному LSP. В примере, описанном выше, подсети 10.2.1.0/24 соответствует LSP: E-LSR, LSR1, LSR2, E-LSR. Таким образом, уже на E-LSR становиться однозначно понятно по какому маршруту будет коммутироваться пакет. Множество подсетей, поставленное в соответствии конкретному LSP, называется Forwarding Equivalence Classes (FEC).

Архитектура E-LSR/LSR

LSR выполняет два процесса: маршрутизации и коммутации по меткам. Процесс маршрутизации функционирует на базе внутреннего протокола маршрутизации (например, OSPF). Процесс маршрутизации получает маршрутную информацию от соседей и формирует таблицу маршрутизации. Таблица маршрутизации используется для маршрутизации обыкновенных IP-пакетов.
Процесс коммутации функционирует на базе протокола обмена метками между соседями (Label Distribution Protocol). Протокол обмена метками согласует конкретные значения меток для создания целостных маршрутов коммутации по меткам (LSP). Подробно функционирование данного протокола рассмотрено в отдельной статье. Процесс коммутации по меткам при составлении таблиц коммутации использует так же таблицу IP-маршрутизации. Взаимосвязь процессов коммутации по меткам и IP-маршрутизации приведена на рис. N5. Описание основных функций выполняемых E-LSR/LSR-ами приведено в табл. N5.

Рис. 5. Взаимосвязь процессов MPLS-коммутации и IP-маршрутизации на LSR/E-LSR.

Табл. N5. Основные функции выполняемые E-LSR/LSR-ами.
Функция
Англоязычное название
Описание
Традиционная маршрутизация IP-пакетов IP routing
Входящие IP-пакеты маршрутизируются на основе таблицы маршрутизации.
Назначение метки label imposing Если устройство функционирует в качестве E-LSR, то для входящего IP-пакета на базе таблицы IP-маршрутизации определяется метка, которая должна быть назначена, и выходной интерфейс, через который должен быть переслан пакет (1)
Коммутация по метке label swapping Входящие IP-пакеты с метками обрабатываются процессом коммутации по меткам, который на основании таблицы коммутации по меткам определяет, какое из следующих действий будет выполнено:
  • Пересылка пакета со сменой метки через определённый интерфейс (label swapping). При этой операции возможно назначение дополнительных меток в "стек".
  • Снятие метки и одно из следующих действий.
    • если метка была последняя в стеке, то пакет передаётся процессу маршрутизации IP-пакетов (2) (традиционная коммутация) или пересылается через определённый интерфейс (коммутации с PHP) (3).
    • если метка была не последняя в стеке, то пакет пересылается через определённый интерфейс.

Примечание: выходной интерфейс определяется на основе таблицы коммутации по меткам.
Снятие метки label poping
Снятие метки (PHP)
label poping with PHP

Примеры таблиц маршрутизации и коммутации.

Примеры таблиц IP-маршрутизации и MPLS-коммутации приведены в табл. N6-7.
Табл. N6. Пример таблицы IP-маршрутизации на E-LSR.
Адрес подсети
Адрес next-hop
Исходящий интерфейс
Метка
Комментарий
10.1.2.0/24
10.1.3.1
Serial1
нет
Запись для традиционной IP-маршрутизации
10.1.4.0/24 10.1.5.1 Serial2
100
Записи, в соответствии с которыми, пакету предназначенному для сети 10.1.4.0/24 или 10.3.0.0/16 будет назначена метка 100. Пакет с меткой будет переслан через интерфейс Serial1 (label imposing). Заметим, что подсети 10.1.4.0/24 и 10.3.0.0/16 образуют единый FEC.
10.3.0.0/16 10.1.5.1 Serial2 100
10.1.6.0/24 10.1.7.1 Serial3
300/200
Запись, в соответствии с которой, пакету предназначенному для сети 10.1.6.0/24 будут назначены две метки 300, 200 в стеке, и пакет с метками будет переслан через интерфейс Serial1 (label imposing)

Табл. N7. Пример таблицы MPLS-коммутации на E-LSR/LSR.
Входящий интерфейс
Входящая метка
Исходящий интерфейс
Исходящая метка
Комментарий
Serial1
100
Serial3
200
Обыкновенная коммутация (label swapping)
Ethernet2
100
Serial2
305/200
Коммутация с добавлением меток в стек (label swapping)
Serial2
300
Serial3
pop
Снятие метки и пересылка пакета через интерфейс Serial3. Данный вариант возможен в двух случаях:
  • снимается не последняя метка;
  • снимается последняя метка и LSR использует PHP.
Serial3
245

pop
Снятие метки и передача IP-пакета процессу маршрутизации

Необходимо отметить, что уникальность меток обеспечиваться только на уровне интерфейса. То есть для двух разных входных интерфейсов могут встречаться одинаковые значения меток (в таблице коммутации первая и вторая запись). Таким образом, пакет, пришедший с меткой 100 с интерфейса Serial1 и пакет, пришедший с меткой 100 с интерфейса Ethernet2, проследуют по разным LSP. Уникальной комбинацией является входящий интерфейс и метка. И для этой уникальной комбинации однозначно определяется выходной интерфейс и операция, которая должна быть произведена над меткой. Такой подход позволяет образовывать целостные LSP между E-LSR-ам.

Примечание: различные производители могут по-разному реализовывать архитектуру LSR/E-LSR. Например, возможно использовать объединённую таблицу IP-маршрутизации и MPLS-коммутации. Или использовать три таблицы: одна только для традиционной IP-маршрутизации, другая для назначения меток, третья для MPLS-коммутации. Приведённая в данном документе архитектура LSR/E-LSR лишь абстрактная модель.

Отличия MPLS от Frame Relay и ATM

Как можно понять из описания архитектуры MPLS, все это отдаленно напоминает Frame Relay или ATM. Действительно, MPLS в некотором смысле, базируется на этих идеях. Архитектура MPLS допускает использование в качестве LSR коммутаторов Frame Relay или ATM, при условии поддержки последними протокола назначения меток (LDP). Но коммутаторы ATM и Frame Relay имеют ключевое отличие от классических LSR. Суть его в следующем. LSR-ы могут две разные входные метки отображать в одну выходную при процедуре замены метки (label swapping). Даллее приведены примеры таблицы коммутации классического LSR (табл. N8) и Frame Relay коммутатора (табл. N9).
Табл. N8. Таблица MPLS-коммутации классического LSR
Входной интерфейс
Входящая метка
Выходной интерфейс
Выходная метка
Serial1
1000
Serial3
4000
Serial2
2000
Serial3
4000

Табл. N9. Таблица MPLS-коммутации для Frame Ralay коммутатора
Входной интерфейс
Входная метка (DLCI)
Выходной интерфейс
Выходная метка (DLCI)
Serial1
1000
Serial3
3000
Serial2
2000
Serial3
4000

Как видно из примера классический LSR объединяет два LSP в один, а Frame Relay коммутатор оставляет оба LSP следовать параллельно. Данный подход Frame Relay/ATM коммутаторов несколько сужает возможность их применения врамках архитектуры MPLS, хотя и не запрещает это делать. Классические LSR (производящие коммутацию по меткам) называют merge capatible LSR, а LSR на базе Frame Relay или ATM коммутации называют non-merge capatible LSR.
Еще в литературе встречаются понятия: frame-based LSR - это про обыкновенные LSR и cell-based LSR - это про non-merge capatible LSR (то есть ATM/FrameRelay).
Дальнейшее изложение будет сфокусировано на merge capatible LSR, так как всяко за ними будущее. Все реверансы в сторону non-merge capatible LSR, на мой взгляд, делаются для достижения совместимости с существующими сетями ATM и Frame Relay.

Документация

  1. "Multiprotocol Label Switching Architecture" (RFC3031)
  2. "MPLS Label Stack Encoding" (RFC3032)