Данная статья описывает
архитектуру мультипротокольной коммутации по меткам (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-заголовка:
Метка - собственно метка по которой и осуществляется коммутация;
CoS - поле описывающее класс обслуживания пакета (аналог IP precedence);
TTL - time-to-live - аналог IP TTL;
S - Одному пакету может быть назначено несколько меток ("стек" меток). S - поле-флаг обозначающий то что метка последняя в "стеке". Пример изображён на рис N3.
Рис
N3. Пример назначения стека меток.
У последней метки в стеке значение поля "S" равно 1 (на рисунке это метка MPLS N1). У остальных меток (метка MPLS N2 и N3) значение поля "S" равно 0. Стек меток используется для реализации дополнительных возможностей сети на базе MPLS, например MPLS/VPN или MPLS/TrafficEnenirring.
В рамках архитектуры MPLS различают следующие типы устройств:
LSR - Label-Switch Router - маршрутизатор, поддерживающий коммутацию по меткам и традиционную IP-маршрутизацию.
Edge LSR - маршрутизатор, подключённый к устройствам, не осуществляющим коммутацию по меткам (устройства могут используют другую политику маршрутизации или вообще не поддерживают MPLS).
MPLS domain - MPLS-домен - группа соединённых устройств осуществляющих коммутацию по меткам, находящихся под единым административным подчинением и функционирующих в соответствии с единой политикой маршрутизации. MPLS домен образуется LSR-ами, а на границе домена размещаются устройства E-LSR.
Рассмотрим схему, приведённую на рис 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 (коммутация по меткам) |
|
||
Табл. N3. LSR2 (коммутация по меткам) |
|
Табл. N4. Edge LSR2 (коммутация по меткам) |
|
||
|
|
Табл. N5. Edge LSR2 (IP маршрутизация) |
|
|
Этап 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.
В примере, приведённом выше, 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.
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).
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 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. Данный вариант возможен в двух случаях:
|
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 в некотором смысле, базируется на этих
идеях. Архитектура 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.
Автор: Юшков Тарас
(taras at mpls-exp.ru)
Данная статья рассматривает
преимущества применения MPLS в IP сети.
Рассмотрим схему сети представленную на рисунке.
Рис.
N1. Схема организации маршрутизации.
MPLS домен образован двумя LSR-ами и двумя E-LSR-ами. Внутри домена для маршрутизации используется протокол OSPF. OSPF запущен только на внутренних соединения MPLS-домена и технологические интерфейсах маршрутизаторов (loopback). E-LSR-ы образуют единую автономную систему BGP. Между E-LSR-ами установлена IBGP сессия. E-LSR-ы подключены к обыкновенным маршрутизаторам А и В. Маршрутизаторы А и В образуют разные автономные системы BGP. Между E-LSR1 и маршрутизатором А установлена EBGP сессия. И между E-LSR2 и маршрутизатором В установлена так же установлена EBGP cecия. Маршрутизатор А передают E-LSR1 по EBGP таблицу маршрутизации (допустим это будет таблица Интернет). Дальше маршрутная информация от E-LSR1 по IBGP передаётся E-LSR2 и далее по EBGP передаётся маршрутизатору В. Таким образом таблица маршрутизации Интернет будет присутствовать на маршрутизаторах А, В, E-LSR1 и E-LSR2.
Примечание: BGP на маршрутизаторах E-LSR1 и E-LSR2 настроен таким образом, что атрибут next-hop у сетей передаваемых по IBGP устанавливается адресом передающего E-LSR-а, не внешнего соседа по EBGP (маршрутизатор А или В). Так же на маршрутизаторах E-LSR отключена синхронизация таблицы BGP и OSPF.
При такой конфигурации маршрутизатору В не будет доступна сеть Интернет, так как LSR1 и LSR2 не имеют таблицы маршрутизации Интернет и не смогут маршрутизировать пакеты предназначенные для сети Интернет. Рассмотрим таблицу маршрутизации E-LSR2 (пока без MPLS).
N |
Протокол |
Подсеть |
Next-hop |
Выходной интерфейс |
Комментарий |
1 |
BGP |
60.50.0.0/16 |
E-LSR1 |
нет |
Маршруты на сети Интернет. В примере представлены две. На самом далее объем маршрутной информации более 100 тысяч записей |
|
... |
... |
... |
... |
|
2 |
BGP |
160.40.0.0/16 |
E-LSR1 |
нет |
|
3 |
OSPF |
E-LSR1 |
LSR2 |
int3 |
Маршрут на E-LSR1. Предполагается, что сеть построена так, что маршрут от E-LSR2 до E-LSR1 через LSR2 более приоритетен. |
4 |
BGP |
192.10.10.0/24 |
routerB |
int10 |
Данный маршрут получен по EBGP от маршрутизатора В. |
При попытке E-LSR
маршрутизировать пакет пришедший от маршрутизатора В и
предназначенный для сети 60.50.0.0/16 произойдёт следующее:
В таблице маршрутизации будет найдена запись N1, которая соответствует подсети 60.50.0.0/16.
Так как запись N1 не содержит выходящего интерфейса, но содержит адрес next-hop, то E-LSR будет искать адрес E-LSR1 в таблице маршрутизации (рекурсивный поиск).
В результате будет найдена запись N3 и пакет будет переслан через int3 в сторону LSR2.
Так как LSR2 не обладает маршрутной информацией о сети 60.50.0.0/16 (на LSR2 нет BGP), то данный пакет будет уничтожен.
Рассмотрим, что произойдёт, если между LSR-ами и E-LSR-ами будет включён MPLS. В этом случае таблица IP-маршрутизации на E-LSR2 будет иметь следующий вид.
N |
Протокол |
Подсеть |
Next-hop |
Выходной интерфейс |
Выходная метка |
Комментарий |
1 |
BGP |
60.50.0.0/16 |
E-LSR1 |
int3 |
100 |
Маршруты на сети Интернет. В примере представлены две. На самом деле объем маршрутной информации более 100 тысяч записей |
|
|
... |
|
|
|
|
2 |
BGP |
160.40.0.0/16 |
E-LSR1 |
int3 |
100 |
|
3 |
OSPF |
E-LSR1 |
LSR2 |
int3 |
100 |
Маршрут на E-LSR1. Предполагается, что сеть построена так, что маршрут от E-LSR2 до E-LSR1 через LSR2 более приоритетен. |
4 |
BGP |
192.10.10.0/24 |
routerB |
int10 |
|
Данный маршрут получен по EBGP от маршрутизатора В. |
При включении MPLS,
внутри MPLS домена будет осуществляться построение LSP с
использованием внутреннего протокола маршрутизации - OSPF и протокола
распространения меток - LDP. Для E-LSR2 маршрутизатор E-LSR1 будет
доступен через LSP начинающийся меткой 100 и интерфейсом int3 (запись
N3). В записях N1 и 2 будет назначена метка 100 и выходной интерфейс
int3, так как данные подсети так же доступны через E-LSR1. То есть,
если пакет будет переслан от E-LSR2 с меткой 100 через интерфейс
int3, то пакет будет доставлен до E-LSR1 без использования
IP-маршрутизации. LSR2 будет использовать процесс и таблицу
коммутации по меткам. Таким образом, LSR2 передаст пакет для сети
60.50.0.0/16, не осуществляя IP-маршрутизацию. Заметим, что все
подсети Интернет, доступные через E-LSR1 будут образовывать на E-LSR2
единый FEC, так как при прохождении через MPLS домен от E-LSR2 до
E-LSR1 они будут использовать один LSP.
Использование MPLS
позволяет освободить LSR-ы от необходимости обладать всей маршрутной
информацией. Им достаточно только владеть маршрутной информацией о
сетях внутри домена, что бы обеспечить корректное построение LSP. В
нашем случае объем маршрутных таблиц на E-LSR будет составлять более
100 тысяч записей, объем же таблиц MPLS-коммутации на LSR будет на
несколько порядков меньше, и зависит только от количества
устройств и соединений в MPLS домене.
Вернёмся к схеме, описанной в предыдущем разделе. Для устройств E-LSR, LSR можно выделить следующие основные функции:
Функция |
Устройство |
Комментарий |
Построение LSP |
LSR/E-LSR |
Устройства LSR/E-LSR должны использовать внутренний протокол маршрутизации и протокол LDP для построения LSP. |
Обработка отказов внутри MPLS домена |
LSR/E-LSR |
При изменении внутренней топологии сети происходит изменение LSP, таблиц внутренней IP-маршрутизации и MPLS-коммутации. Устройства, присоединённые к MPLS домену не "видят" изменений внутри домена, так как таблицы маршрутизации внешних сетей не изменяются (за редким исключением) |
Обмен маршрутной информацией c устройствами вне MPLS домена |
E-LSR |
При изменении топологии сети за пределами MPLS домена, обновления передаются только через E-LSR-ы. Никаких изменений LSP, таблиц внутренней IP-маршрутизации и MPLS-коммутации не происходит. LSR-ы не "видят" изменений за пределами домена. |
Резюмируя
информацию, представленную в таблице можно сказать следующее:
Устройства за пределами MPLS домена не "видят" изменений внутри домена, так как изменения внутри домена не влияют на распространение маршрутной информации за пределы MPLS домена (за редким исключением).
Никакие изменения в маршрутной информации за пределами MPLS домена остаются незамеченными для LSR-ов.
Иначе говоря, при использовании IP-маршрутизации все устройства существуют в едином и неделимом хаосе. При использовании MPLS хаос делиться на два: глобальный (за пределами MPLS домена) и локальный (внутри MPLS домена). Хаосы существуют практически независимо. LSR-ы живут в локальном хаосе, E-LSR-ы существуют в обоих хаосах. Заметим, сумма хаоса локального и глобального даст нам хаос исходный. То есть для E-LSR-ов жизнь особенно не упрощается. С другой стороны для устройств вне MPLS-домена общий хаос уменьшается, так как из него уходит хаос локальный для MPLS-домена.
На базе MPLS возможна организация следующих сервисов:
MPLS/VPN - возможность создания распределённых VPN на крупных сетях без участия туннелей и шифрования;
MPLS/TrafficEnginering - возможность гибко управлять потоками трафика внутри MPLS домена, и соответственно более полно использовать канальную инфраструктуру сети;
AnyTransportOverMPLS - достаточно загадочный функционал, суть которого в том, что через MPLS домен становиться возможным, прозрачно передавать кадры ATM, Frame Relay, Ethernet и т.п.
Заметим, что весь этот функционал может быть востребован не только операторами связи, но и крупные, распределённые сети предприятий так же могут с успехом использовать MPLS/VPN и MPLS/TrafficEnginering.