Передача данных с коммутацией по меткам
11.4. Архитектура мультипротокольной коммутации пакетов по меткам (MPLS)
Поскольку пакеты в случае протокола сетевого уровня без установления соединения переносятся от одного маршрутизатора к другому, каждый из них совершенно независим в принятии решения переадресации. То есть, каждый маршрутизатор анализирует заголовок пакета и каждый маршрутизатор реализует алгоритм маршрутизации сетевого уровня. Маршрутизатор независимо выбирает следующий шаг для пакета, основываясь на результатах анализа его заголовка и результатах работы маршрутного алгоритма. Заголовки пакета содержат значительно больше информации, чем нужно для выбора следующего шага. Выбирая следующий шаг, можно, следовательно, выполнять две процедуры. Первая делит весь набор пакетов на классы FEC (Forwarding Equivalence Classes). Вторая ставит в соответствие каждому FEC следующий шаг маршрута. В той части, которая касается переадресации, разные пакеты, поставленные в соответствие определенному FEC, не различимы. Все пакеты, которые принадлежат определенному FEC и которые отправлены из конкретного узла, будут следовать одним и тем же путем (или, в случае многомаршрутного протокола, они будут следовать через один и тот же набор путей, ассоциированный с FEC).
При обычной IP-переадресации маршрутизатор рассматривает два пакета как принадлежащие к одному FEC, если существует адресный префикс X в таблицах маршрутизации маршрутизатора, такой, что Х, соответствует каждому адресу места назначения. Когда пакет проходит через сеть, на каждом шагу он последовательно просматривается и ему присваивается FEC.
В MPLS присвоение пакету определенного FEC делается только раз, когда пакет входит в сеть. FEC, к которому приписан пакет, кодируется как код фиксированной длины, называемый меткой. Когда пакет переадресуется на следующем шагу, метка посылается вместе с ним, так что пакеты оказываются помечены до того, как будут переадресованы.
В парадигме переадресации MPLS, поскольку пакет приписан определенному FEC, никакого последующего анализа заголовков в маршрутизаторах по пути следования не производится, а переадресация управляется исключительно на основе меток. Такой метод имеет много преимуществ перед традиционной маршрутизацией на сетевом уровне.
- MPLS-переадресация может быть выполнена переключателями, которые способны осуществлять просмотр меток и их замещение, но не могут анализировать заголовки сетевого уровня (во всяком случае, с достаточной скоростью).
- Так как пакет поставлен в соответствие определенному FEC, когда он входит в сеть, входной маршрутизатор может использовать при определении соответствия любую информацию, которую он имеет о пакете, даже если такая информация не может быть извлечена из заголовка сетевого уровня. Например, пакеты, приходящие через разные порты, могут быть связаны с разными FEC. Традиционная переадресация может рассматривать только информацию, которая транспортируется внутри пакета в его заголовке.
- Пакет, который входит в сеть через определенный маршрутизатор, может быть помечен иначе, чем такой же пакет, вошедший в сеть через другой маршрутизатор, и в результате решение о переадресации зависит от входного маршрутизатора и может быть легко осуществлено. Это не может быть сделано традиционной переадресацией, так как метка идентичности входного маршрутизатора не путешествует вместе с пакетом.
- Соображения, которые определяют то, как пакету ставится в соответствие FEC, могут становиться даже более сложными, без каких-либо последствий для маршрутизаторов, которые просто переадресуют помеченные пакеты.
- Иногда желательно заставить пакеты следовать определенным маршрутом, который выбран перед входом или во время входа пакета в сеть, вместо следования нормальному динамическому протоколу маршрутизации. Это может быть сделано в соответствии с разной политикой или с привлечением техники управления трафиком. При традиционной переадресации это требует, чтобы пакет нес в себе информацию о маршруте, по которому он должен двигаться (маршрутизация отправителя). В MPLS метка может использоваться для представления маршрута, так что идентичность маршрута не переносится вместе с пакетом.
Некоторые маршрутизаторы анализируют заголовок пакета сетевого уровня не только с целью выбора следующего шага, но и для определения приоритета и класса услуг. Они могут затем применить различные пороги отсева или графика обслуживания пакетов. MPLS допускает (но не требует) приоритетность или класс обслуживания, зависящие полностью или частично от метки. В этом случае можно сказать, что метка представляет собой комбинацию FEC, приоритета или класса обслуживания. В MPLS Multiprotocol означает многопротокольный, так как его техника применима к любому протоколу сетевого уровня. Здесь, однако, внимание сконцентрировано на использовании IP в качестве протокола сетевого уровня. Маршрутизатор, который поддерживает MPLS, называется Label Switching Router, или LSR (маршрутизатором с коммутацией по меткам).
Терминология
(FEC) forwarding equivalence class
Группа IP-пакетов, которые переадресуются каким-то образом (например, по тому же маршруту, с той же маршрутной обработкой)
Label merging — объединение меток
Замещение множественных приходящих меток для определенного FEC одной выходной меткой
Label swap — инверсия меток
Базовая операция переадресации, состоящая из просмотра входной метки с целью определения выходной метки, инкапсуляции, порта и другой информации, сопряженной с обработкой поступающих данных
Label swapping
Парадигма переадресации, позволяющая осуществлять переадресацию данных путем использования меток для идентификации классов информационных пакетов, которые обрабатываются при переадресации неразличимым образом
Шаг между двумя узлами MPLS, на которые осуществляется переадресация с привлечением меток
Label switched path — путь с коммутацией меток
Путь через один или более LSR на одном уровне иерархии для пакетов с определенным FEC
Узел MPLS, который способен переадресовывать пакеты L3 согласно их меткам
Loop detection — детектирование петель
Метод, при котором разрешено формирование петлевых маршрутов; такие структуры позднее выявляются
Loop prevention — предотвращение петель
Метод, при котором данные никогда не передаются по петлевым маршрутам
Merge point
Узел, в котором произведено объединение меток
MPLS domain — домен MPLS
Непрерывный набор узлов, реализующих MPLS-маршрутизацию и находящихся в одном маршрутном и административном домене
MPLS edge node — пограничный узел MPLS
Узел MPLS, который соединяет MPLS-домен с узлом, находящимся вне домена, потому что он не поддерживает MPLS, и/или из-за того, что он размещен в другом домене. Заметим, что если LSR имеет соседнюю ЭВМ, которая не работает с MPLS, то этот LSR является пограничным узлом MPLS
MPLS egress node — выходной узел MPLS
Пограничный узел MPLS, если через него трафик выходит из домена MPLS
MPLS ingress node — входной узел MPLS
Пограничный узел MPLS, если через него трафик входит в домен MPLS
MPLS label — метка MPLS
Метка, которая содержится в заголовке пакета и которая представляет FEC пакета
MPLS node — узел MPLS
Узел, поддерживающий протокол MPLS. Узел MPLS распознает протоколы управления MPLS, реализует один или более протоколов маршрутизации L3 и способен переадресовывать пакеты на основе меток. Узел MPLS может опционно переадресовывать L3 пакеты в традиционном режиме
VC merge — объединение VC
Объединение меток, когда метка MPLS переносится в поле ATM VCI (или в комбинации полей VPI/VCI), чтобы позволить объединение нескольких VC в один VC
VP merge — объединение VP
Объединение меток, когда метка MPLS переносится в поле ATM VPI, чтобы позволить объединение нескольких VP в один. В этом случае две ячейки будут иметь одно и то же значение VCI, только если отправлены из одного узла. Это позволяет различать ячейки разных отправителей с помощью VCI
Метка, используемая в сетях ATM для идентификации виртуального канала
Акронимы и аббревиатуры
DLCI — Data Link Circuit Identifier — идентификатор канала передачи данных
FEC — Forwarding Equivalence Class — класс переадресации
FTN — FEC to NHLFE Map — соответствие FEC и NHLFE
IGP — Interior Gateway Protocol — внутренний протокол маршрутизации
ILM — Incoming Label Map — таблица соответствия входящих меток
LDP — Label Distribution Protocol — протокол пересылки меток
LSP — Label Switched Path — путь с коммутацией меток
LSR — Label Switching Router — маршрутизатор c коммутацией меток
NHLFE — Next Hop Label Forwarding Entry — запись, содержащая адрес следующего шага при коммутации меток
SVC — Switched Virtual Circuit — переключаемая виртуальная схема
SVP — Switched Virtual Path — переключаемый виртуальный путь
VC — Virtual Circuit — виртуальная схема
VCI — Virtual Circuit Identifier — идентификатор виртуальной схемы
VP — Virtual Path — виртуальный путь
VPI — Virtual Path Identifier — идентификатор виртуального пути.
Основы MPLS
Метка является коротким идентификатором фиксированной длины, который используется для идентификации FEC. Метка, которая вложена в определенный пакет, представляет собой класс переадресации FEC (Forwarding Equivalence Class), к которому данный пакет приписан. Обобщая, можно сказать, что пакет приписан FEC, базирующийся частично или целиком на его адресе места назначения сетевого уровня. Однако кодировка метки никогда не совпадает с этим адресом.
Если Ru и Rd являются LSR, они могут договориться о том, что когда Ru передает пакет Rd, Ru снабжает пакет меткой с кодом L, если и только если пакет принадлежит определенному классу FEC F. То есть, они могут согласовать соответствие между меткой L и F для пакетов, транспортируемых от Ru к Rd. В результате такого соглашения L становится выходной меткой Ru, представляющей FEC F, а L становится входной меткой Rd.
Заметим, что L не обязательно представляет FEC F для любого пакета, посланного не Ru и адресованного не Rd. L имеет произвольное значение, чья связь F с Ru и Rd является локальной.
Когда говорится, что пакеты посланы из Ru в Rd, это не означает, что пакеты сформированы в Ru или что местом назначения является Rd. Скорее, мы подразумеваем, что пересылаемые пакеты поступают в один или оба LSR.
Иногда может оказаться трудно или даже невозможно для Rd сообщить о прибывающих пакетах с меткой L, помещенной в пакет Ru, а не каким-то другим LSR. (Это обычно происходит, когда Ru и Rd не являются соседями). В таких случаях Rd должен убедиться, что имеется соответствие между меткой и FEC. То есть, Rd не должен соглашаться на ассоциацию L и FEC F1, в то время как с другим LSR Ru2 согласовано соответствие L с другим FEC F2, если только Rd не может при получении пакетов с меткой L всегда оповещать, вложена ли в пакет метка Ru1 или Ru2. Гарантия однозначной интерпретации меток находится в зоне ответственности LSR.
Вышестоящие и нижестоящие LSR
Предположим, что Ru и Rd договорились о соответствии метки L и FEC F для пакетов, посланных из Ru в Rd. Тогда, с учетом этого соответствия, Ru является вышестоящим LSR, а Rd — нижестоящим LSR.
Узел является вышестоящим, а другой нижестоящим с учетом того, что в данной ассоциации (метки и класса) метка представляет определенный FEC для пакетов, транспортируемых от вышестоящего узла к нижестоящему. Это, вообще говоря, не означает, что пакеты в этом FEC будут действительно маршрутизированы от вышестоящего узла нижестоящему.
Помеченные пакеты
Помеченным пакетом является пакет, в заголовке которого имеется метка. В некоторых случаях метка размещается в заголовке инкапсуляции, который введен специально для этой цели. В других ситуациях метка может помещаться в структуре, описывающий информационный канал или в существующем заголовке сетевого уровня, если имеется поле, предназначенное для этой цели.
Метод кодирования метки должен быть согласован субъектом, ее формирующим, и субъектом-адресатом.
Присвоение меток и рассылка
В архитектуре MPLS, решение об установлении соответствия конкретной метки L и класса FEC F принимается LSR, который является нижестоящим по отношению к этой ассоциации. Нижестоящий LSR информирует вышестоящий LSR об установлении этой ассоциации. Таким образом, метки присваиваются нижестоящим объектом и рассылаются снизу-вверх.
Если LSR сконструирован так, чтобы анализировать метки и проверять их принадлежность определенному числовому диапазону, тогда нужно лишь позаботиться, чтобы значения меток действительно лежали в этом диапазоне.
Атрибуты ассоциации меток (Label Binding)
Конкретная ассоциация метки L и класса FEC F, анонсируемая Rd для Ru, может иметь соответствующие атрибуты. Если Ru работает как нижестоящий LSR и анонсирует ассоциацию метки и класса FEC F, тогда при определенных обстоятельствах, может оказаться нужно разослать соответствующий атрибут, полученный от Rd.
Протоколы рассылки меток
Протокол рассылки меток представляет собой набор процедур, с помощью которых один LSR информирует другие об ассоциациях метка/FEC, которые он сформировал. Два LSR, которые используют протокол рассылки меток для обмена данными об ассоциациях метка/FEC, называются партнерами рассылки меток. Если два LSR являются партнерами по рассылке меток, мы будем говорить о смежности рассылки меток между ними.
Протокол рассылки меток включает в себя также любые согласования, при которых партнеры изучают возможности друг друга.
Архитектура не предполагает, что должен существовать только один протокол рассылки меток (см. описание протокола LDP). В действительности, стандартизовано несколько протоколов рассылки меток. Существующие протоколы расширены так, чтобы рассылку меток можно было совместить с ними (смотри, например, [MPLS-BGP], [MPLS-RSVP-TUNNELS]). Определены новые протоколы, предназначенные специально для задач рассылки меток (смотри, например, [MPLS-LDP], [MPLS-CR-LDP]).
Unsolicited Downstream против DownstreamonDemand
Архитектура MPLS позволяет LSR посылать запросы узлу следующего шага для конкретного FEC и ассоциации метка-FEC. Это называется рассылкой меток по схеме "запрос нижележащего" (downstreamondemand).
Архитектура MPLS позволяет также LSR посылать ассоциации другим LSR, которые непосредственно эти данные не запрашивали. Такой обмен называется рассылкой меток нижележащим без запроса (unsolicited downstream).
Ожидается, что некоторые реализации MPLS будут осуществлять рассылку меток только в режиме downstreamondemand, другие — только в режиме unsolicited downstream, а некоторые — в обоих режимах. Какой из режимов будет реализован, зависит от характеристик интерфейсов, которые поддерживает конкретная реализация. Однако обе эти схемы рассылки меток могут использоваться в некоторых сетях одновременно. В любом конкретном случае вышестоящий и нижестоящий LSR должны согласовать, какая из схем рассылки будет применена.
Режим удержания меток (Retention Mode)
LSR Ru может получить (или уже получил) от LSR Rd ассоциацию метка-FEC, несмотря на то, что Rd не является следующим шагом для Ru (для данного FEC).
Ru теперь имеет выбор, следует ли ему отслеживать такие ассоциации или отбрасывать их. Если Ru отслеживает такие ассоциации, тогда он может немедленно начать использование этой ассоциации, если Rd в конце концов, станет его следующим шагом для заданного FEC. Если Ru игнорирует такие ассоциации, тогда, если Rd позднее станет следующим шагом, ассоциация должна быть воспринята снова. Если LSR поддерживает свободный режим удержания меток (Liberal label retention mode), он поддерживает ассоциации между меткой и FEC, который получен от LSR, не являющегося следующим шагом для этого FEC. Если LSR поддерживает консервативный режим удержания меток (Conservative label retention mode), он отбрасывает такие ассоциации.
Свободный режим удержания меток допускает быструю адаптацию к маршрутным изменениям, а консервативный режим сохранения меток требует от LSR поддержки много меньшего числа меток.
Стек меток
До сих пор мы обсуждали проблему в предположении, что помеченные пакеты несут в себе только одну метку. Как мы увидим, полезно иметь более обобщенную модель, в которой помеченные пакеты несут в себе несколько меток, уложенных в порядке последний_вошел-первым_вышел (LIFO). Мы будем называть это стеком меток.
Хотя, как это мы увидим, MPLS поддерживает иерархию, обработка помеченных пакетов совершенно не зависит от уровня иерархии. Обработка всегда базируется на верхней метке, без учета того, что некоторое число других меток лежало поверх данной в прошлом, или того, что какое-то их число лежит под ней сейчас.
Непомеченный пакет может рассматриваться как пакет, чей стек меток пуст (т.e., глубина стека которого равна 0).
Если стек пакетных меток имеет глубину m, мы считаем, что метка на дне стека размещена на уровне 1, метка над ней (если таковая имеется) имеет уровень 2, а метка наверху стека имеет уровень m. На рис. 11.6 показана эволюция содержимого стека меток в процессе доставки пакетов от отправителя к получателю.
На вход сети MPLS пакет попадает в узле А1. Здесь пакету присваивается метка, и он переадресуется далее. После передачи пакета из узла сетевого провайдера SPA в узел провайдера SPB, в стек пакета добавляется еще одна метка. Далее пакет передается по сети SPB (узлы B1 -> B4 ). После передачи пакета из узла В4 в узел С1 в стек меток добавляется еще одна метка. Когда пакет покидает сеть SPC, одна из меток из стека удаляется (С5?B5). Аналогичная операция осуществляется после передачи пакета из узла В6 в А3. Стек меток ликвидируется в узле А5 ("Выход" – это не обязательно узел места назначения). От отправителя до узла А1 пакет доставляется с применением маршрутизации по IP места назначения. Аналогичный метод используется при транспортировке пакета из узла А5 адресату.