Автор: Тарас Юшков. Рубрики: Сети и телекоммуникации. Опубликовано: Март 31st, 2010

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

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

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

Заголовок кадра

MPLS заголовок

Заголовок IP пакета

IP пакет

Рис. №1. Место MPLS заголовка в кадре

Формат MPLS заголовка представлен на рис. №2.

0                                                    19 20               22 23 24                                    31

Метка

CoS

S

TTL

Рис. №2. Формат MPLS-метки

Описание полей MPLS-заголовка:
•  Метка — собственно метка по которой и осуществляется коммутация;
•  CoS — поле описывающее класс обслуживания пакета (аналог IP precedence);
•  TTL — time-to-live — аналог IP TTL;
•  S — Одному пакету может быть назначено несколько меток («стек» меток). S — поле-флаг обозначающий то что метка последняя в «стеке».
Пример изображён на рис №3.

Заголовок кадра

MPLS заголовок № 3

MPLS  заголовок № 2

MPLS заголовок № 1

Заголовок IP пакета

IP пакет

Рис №3. Пример назначения стека меток.

У последней метки в стеке значение поля «S» равно 1 (на рисунке это метка MPLS №1). У остальных меток (метка MPLS №2 и №3) значение поля «S» равно 0. Стек меток используется для реализации дополнительных возможностей сети на базе MPLS, например MPLS/VPN или MPLS/TrafficEnenirring.

В рамках архитектуры MPLS различают следующие типы устройств:
•  LSR — Label-Switch Router — маршрутизатор, поддерживающий коммутацию по меткам и традиционную IP-маршрутизацию.
•  Edge LSR — маршрутизатор, подключённый к устройствам, не осуществляющим коммутацию по меткам (устройства могут используют другую политику маршрутизации или вообще не поддерживают MPLS).
•  MPLS domain — MPLS-домен — группа соединённых устройств осуществляющих коммутацию по меткам, находящихся под единым административным подчинением и функционирующих в соответствии с единой политикой маршрутизации. MPLS домен образуется LSR-ами, а на границе домена размещаются устройства E-LSR.

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

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

Рис. №4. Пример прохождения пакета через MPLS-домен

Рассмотрим путь следования IP-пакета от маршрутизатора А к маршрутизатору В через MPLS домен. Адресом источника IP-пакета является 10.1.1.1 (на рисунке обозначено «s»). Адресом назначения IP-пакета является 10.2.1.1 (на рисунке обозначено «d»). Заголовки кадров не приведены. Таблицы IP-маршрутизации и MPLS-коммутации приведены в табл. №1-5. В таблицах приведены только используемые в примере записи.

Табл. №1. Edge LSR1 (IP маршрутизация)   Табл. №2. LSR1 (коммутация по меткам)
подсеть выходной
интерфейс
метка
10.2.1.0/24 int1 1000
 
входной
интерфейс
метка выходной
интерфейс
метка
int0 1000 int2 330
Табл. №3. LSR2 (коммутация по меткам)   Табл. №4. Edge LSR2 (коммутация по меткам)
входной
интерфейс
метка выходной
интерфейс
метка
int1 330 int2 pop/540
 
входной
интерфейс
метка выходной
интерфейс
метка
int0 540 необходим анализ таблици IP маршрутизации
    Табл. №5. Edge LSR2 (IP маршрутизация)
   
подсеть выходной
интерфейс
метка
10.2.1.0/24 int1 нет

Этап №1 — маршрутизатор А пересылает обыкновенный IP-пакет в сторону E-LSR.
Этап №2 — E-LSR получает IP-пакет и на основе таблиц IP-маршрутизации (табл. №1) определяет, что данному пакету должна быть назначена метка 1000 (на рисунке обозначено «l») и пакет должен быть переслан в сторону LSR1. Данный процесс называется «назначение метки» (label imposing).
Этап №3 — LSR1 получает IP-пакет с меткой 1000 и на основе таблицы MPLS-коммутации (табл. №2) определяет, что метка пакета должна быть сменена на 330 и пакет должен быть переслан в сторону LSR2. Данный процесс называется переписывание метки (label swapping).
Этап №4 — LSR2 получает IP-пакет с меткой 330 и на основе таблицы MPLS-коммутации (табл. №3) определяет, что пакет должен быть переслан в сторону LSR2 без меток (значение pop). Возможен так же вариант, когда LSR2 пересылает пакет в сторону E-LSR с меткой (в нашем случае 540). Если пакет следует по этапу №4 то такое поведение называется Penultimate Hop Popping. Поведение LSR в соответствии с этапом №4а является классическим для MPLS.
Этап №5 — E-LSR получает IP-пакте (как с меткой, так и без) и на основании таблиц IP-маршрутизации (табл. №5) или MPLS-коммутации (табл. №6) определяет, что данный пакет должен быть переслан, как обыкновенный 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-маршрутизации приведена на рис. №5. Описание основных функций выполняемых E-LSR/LSR-ами приведено в табл. №5.

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

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

— если метка была последняя в стеке, то пакет передаётся процессу маршрутизации IP-пакетов (2) (традиционная коммутация) или пересылается через определённый интерфейс (коммутации с PHP) (3).

— если метка была не последняя в стеке, то пакет пересылается через определённый интерфейс.


Примечание: выходной интерфейс определяется на основе таблицы коммутации по меткам.

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

Примеры таблиц IP-маршрутизации и MPLS-коммутации приведены в табл. №6-7.
Табл. №6. Пример таблицы 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)

Табл. №7. Пример таблицы 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 (табл. №8) и Frame Relay коммутатора (табл. №9).
Табл. №8. Таблица MPLS-коммутации классического LSR

Входной интерфейс Входящая метка Выходной интерфейс Выходная метка
Serial1 1000 Serial3 4000
Serial2 2000 Serial3 4000

Табл. №9. Таблица 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)

 

Поделиться

Опубликовать в Facebook
Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Мы в социальных сетях

Читать ProITClub в TwitterЧитать ProITClub в RSSЧитать ProITClub в п&##1086;чтовой подпискеЧитать ProITClub в Живом ЖурналеЧитать ProITClub в LinkedInЧитать ProITClub в LinkedIn
Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

Есть 2 коммент. к “Архитектура MPLS”

  1. Константин Чубаров:

    Спасибо, очень интересно для меня.
    Можно немного попродробнее прометки: как генерятся, по каким правилам? какой диапазон меток?

    • Тарас Юшков:

      На самом деле про работу LDP будет отдлеьная статья, там рассмотрен вопрос распространения меток. В двух словах:
      Между соседями возможно использования двух режимов обмена информацией о метках:

      * Downstream On Demand — с запросом;
      * Downstream Unsolicited — без запроса.

      При режиме Downstream On Demand LSR должен запрашивать метку для создания LSP (для FEC) от соседнего LSR, который является next-hop-ом для этого FEC. При режиме Downstream Unsolicited LSR для каждого FEC находящегося у него в таблице IP-маршрутизации назначает метку и рассылает ее всем своим соседям. Если для соседнего LSR исходный LSR является next-hop-ом, то метка устанавливается в таблицу коммутации.
      Метка это число, как конкретно выбирается из множества целых неотрицательных чисел я не знаю. Каждый производитель волен придумывать свое.

Написать комментарий

Вы должны войти чтобы добавить сообщение.