Метки и способы маркировки
Базовые идеи технологии MPLS
Одним из шагов на пути развития мультисервисной сети является появления методов многоуровневой коммутации, подразумевающей, что логическая маршрутизируемая пакетная-сеть функционирует поверх коммутируемой топологии второго уровня (АТМ, Frame Relay) и независимо от нее.
Все методы многоуровневой коммутации, в том числе и MPLS, базируются на принципе разделения функций управления процессом пересылки пакетов и пересылки пакетов с использованием последовательных меток. Управление процессом пересылки включает в себя выбор пути через сеть (маршрутизацию). При пересылке пакетов данные снабжаются необходимыми заголовками и отсылаются на сетевой интерфейс (обычные маршрутизаторы выполняют функции управления и пересылки совместно). В технологии MPLS функция управления задействует стандартные протоколы маршрутизации (OSPF, IS-IS, BGP-4) для обмена информацией с другими маршрутизаторами (это является отличительной особенностью MPLS от других технологий, базирующихся на методе многоуровневой коммутации и использующих в функции управления фирменные протоколы, например, такие как PNNI в АТМ). С использованием этой информации создается и модифицируется сначала таблица маршрутизации, а затем, с учетом информации о смежных системах на каждом интерфейсе, — таблица коммутации меток. Соответствующая запись в таблице коммутации меток указывает, на какой выходной интерфейс системы необходимо направить поступивший пакет
Функция продвижения в сети MPLS, так же, как в Frame Relay и АТМ, основана на использовании последовательных меток пакетов. Метка — это короткое поле фиксированной длины в заголовке пакета. В MPLS на ее основе определяется принадлежность пакета к определенному классу эквивалентной пересылки (Forwarding Equivalence Class — FEC). Функция метки эквивалентна функции идентификатора виртуального пути или виртуального канала (VPI/VCI) в сетях АТМ или идентификатора DLCI в сетях Frame Relay. Класс FEC представляет собой совокупность пакетов, направляемых в сеть по одному и тому же маршруту. Однако, конечные адресаты этих пакетов могут быть разными.
Отделение управляющей компоненты от пересылающей позволяет разрабатывать и модифицировать каждую из них независимо. Единственное обязательное требование состоит в том, чтобы управляющая компонента могла передавать информацию пересылающей компоненте через таблицу коммутации меток. Благодаря этому становится возможным применение очень простых алгоритмов пересылки, например алгоритма, базирующегося на использовании последовательных меток.
Принцип коммутации
Как было сказано выше, в основе MPLS лежит принцип обмена меток. Любой передаваемый пакет ассоциируется с тем или иным классом сетевого уровня (Forwarding Equivalence Class, FEC), каждый из которых идентифицируется определенной меткой. Значение метки уникально лишь для участка пути между соседними узлами сети MPLS, которые называются также маршрутизаторами, коммутирующими по меткам (Label Switching Router, LSR). Метка передается в составе любого пакета, причем способ ее привязки к пакету зависит от используемой технологии канального уровня.
Маршрутизатор LSR получает топологическую информацию о сети, участвуя в работе алгоритма маршрутизации — OSPF, BGP, IS-IS. Затем он начинает взаимодействовать с соседними маршрутизаторами, распределяя метки, которые в дальнейшем будут применяться для коммутации. Обмен метками может производиться с помощью как специального протокола распределения меток (Label Distribution Protocol, LDP), так и модифицированных версий других протоколов сигнализации в сети (например, незначительно видоизмененных протоколов маршрутизации OSPF, BGP, IS-IS, протокола резервирования ресурсов RSVP и др.).
Распределение меток между LSR приводит к установлению внутри домена MPLS путей с коммутацией по меткам (Label Switching Path, LSP). Каждый маршрутизатор LSR содержит таблицу коммутации меток, которая ставит в соответствие паре «входной интерфейс, входная метка» тройку - «префикс адреса получателя (FEC), выходной интерфейс, выходная метка». Получая пакет, LSR по номеру интерфейса, на который пришел пакет, и по значению привязанной к пакету метки определяет для него выходной интерфейс. (Значение FEC применяется лишь для построения таблицы и в самом процессе коммутации не используется.) Старое значение метки заменяется новым, содержащимся в поле «выходная метка» таблицы, и пакет отправляется к следующему устройству на пути LSP.
Вся операция требует лишь одноразовой идентификации значений полей в одной строке таблицы. Это занимает гораздо меньше времени, чем сравнение IP-адреса отправителя с наиболее длинным адресным префиксом в таблице маршрутизации, которое используется при традиционной маршрутизации.
Рисунок 7.1 Схема коммутации MPLS |
Сеть MPLS делится на две функционально различные области — ядро и граничную область (рис. 7.1). Ядро образуют устройства, минимальным требованием к которым является поддержка MPLS и участие в процессе маршрутизации трафика для того протокола, который коммутируется с помощью MPLS. Маршрутизаторы ядра занимаются только коммутацией на основе меток. Все функции классификации пакетов по различным FEC, а также реализацию таких дополнительных сервисов, как фильтрация, явная маршрутизация, выравнивание нагрузки и управление трафиком, берут на себя граничные LSR. В результате интенсивные вычисления приходятся на граничную область, а высокопроизводительная коммутация выполняется в ядре, что позволяет оптимизировать конфигурацию устройств MPLS в зависимости от их местоположения в сети.
Таким образом, главная особенность MPLS — отделение процесса коммутации пакета от анализа IP-адресов в его заголовке, что открывает ряд привлекательных возможностей. Очевидным следствием описанного подхода является тот факт, что очередной сегмент LSP может не совпадать с очередным сегментом маршрута, который был бы выбран при традиционной маршрутизации.
Поскольку на установление соответствия пакетов определенным классам FEC могут влиять не только IP-адреса, но и другие параметры, нетрудно реализовать, например, назначение различных LSP пакетам, относящимся к различным потокам RSVP или имеющим разные приоритеты обслуживания. Конечно, подобный сценарий удается осуществить и в обычных маршрутизируемых сетях, но решение на базе MPLS оказывается проще и к тому же гораздо лучше масштабируется.
Каждый из классов FEC обрабатывается отдельно от остальных — не только потому, что для него строится свой путь LSP, но и в смысле доступа к общим ресурсам (полосе пропускания канала и буферному пространству). В результате технология MPLS позволяет очень эффективно поддерживать требуемое качество обслуживания, не нарушая предоставленных пользователю гарантий. Применение в LSR таких механизмов управления буферизацией и очередями, как WRED, WFQ или CBWFQ, дает возможность оператору сети MPLS контролировать распределение ресурсов и изолировать трафик отдельных пользователей.
Использование явно задаваемого маршрута в сети MPLS свободно от недостатков стандартной IP-маршрутизации от источника, поскольку вся информация о маршруте содержится в метке и пакету не требуется нести адреса промежуточных узлов, что улучшает управление распределением нагрузки в сети.
Элементы архитектуры
Метки и способы маркировки
Метка представляет собой короткий идентификатор фиксированной длины, используемый для локальной идентификации FEC. По значению метки пакета определяется его принадлежность к определенному классу эквивалентной пересылки на каждом из участков коммутируемого маршрута.
Ее функция эквивалентна идентификатору виртуального пути (Virtual Path Identifier, VPI) или идентификатору виртуального соединения (Virtual Circuit Identifier, VCI) в ячейках ATM. Граничный маршрутизатор LER (Label Edge Router, LSR-EDGE) может вставить метку в заголовок пакета, превращая обычный пакет в маркированный. Структура метки MPLS представлена на рис. 4.2
Длина метки составляет 32 бита (4 байта): 12 битов – заголовок и 20 битов – значение метки.
Метка – 20-битовое значение метки, по которой и осуществляется коммутация. Это может быть любое число в диапазоне от 0 до 2 - 1, за исключением резервных значений (определением резервных значений занимается рабочая группа MPLS в составе комитета IETF ).
EXP - 3 бита поля экспериментальных битов зарезервированы для дальнейших исследований и экспериментов. При предоставлении дифференцированных услуг MPLS-сети это поле может описывать класс обслуживания IP-пакета (CoS), аналогичный классам DiffServ.
TTL (8 бит) – time-to-live - аналог поля TTL IP-пакета. Это поле является механизмом, позволяющим предотвратить возможность бесконечной циркуляции пакетов по IP-сети вследствие образования закольцованных маршрутов.
Для обеспечения структурирования потоков в пакете создается стек меток, каждая из которых имеет свою зону действия. Бит S - флаг- указатель дна стека меток.
Метка часто задается на основании адреса назначения и впоследствии динамически заменяется различными маршрутизаторами LSR. Каждый LSR формирует таблицу продвижения меток, устанавливая соответствие между входящими и исходящими метками (см. рис. 4.1).
Как уже отмечалось, метка должна быть уникальной лишь в пределах соединения между каждой парой логически соседних LSR. Поэтому одно и то же ее значение может использоваться LSR для связи с различными соседними маршрутизаторами, если только имеется возможность определить, от какого из них пришел пакет с данной меткой. Другими словами, в соединениях “точка—точка” допускается применять один набор меток на интерфейс, а для сред с множественным доступом необходим один набор меток на модуль или все устройство. В реальных условиях угроза исчерпания пространства меток очень маловероятна.
Метка может быть помещена в пакет разными способами – вписываться между загололвками уровня 2 и уровня 3 либо помещаться в свободное и доступное поле заголовка одного из этих уровней.
Стек меток
Архитектура MPLS предусматривает передачу в пакете не одной метки, а целого их стека. Операции добавления/изъятия метки определены как операции на стеке (push/pop). Эти операции могут использоваться для слияния и разветвления информационных потоков.
Спецификация кодирования стека меток MPLS определена документом RFC 3032 «MPLS Label Stack Encoding», опубликованным в 2001 г. Формат стека меток и размещение меток в стеке представлены на рис. 7.2 и рис.7.3 соответственно.
Рисунок 7.2 Формат стека меток
Рисунок 7.3 Размещение меток в стеке
Стек состоит из произвольного числа элементов. Каждая запись в стеке занимает 4 байта. Коммутация осуществляется лишь по верхней метке стека, нижние метки при этом передаются прозрачно до операции удаления верхней. Такой подход позволяет создавать иерархию потоков в сети MPLS и организовывать туннельные передачи. каждый из которых имеет длину 32 бита:
Инкапсуляция меток
Слово «многопротокольная» в названии технологии MPLS подчеркивает возможность использовать эту технологию с самыми разными протоколами уровней 2 и 3. MPLS образует уровень, который «вставляется» между сетевым уровнем и уровнем звена данных и позволяет разнообразным протоколам как того, так и другого уровня функционировать совместно.
При использовании протоколов коммутации на уровне звена данных, таких как ATM и Frame Relay, верхняя MPLS-метка вписывается в поле идентификаторов виртуальных каналов этих протоколов. Далее будет показано, как при использовании ATM для размещения MPLS-метки используется поле VPI/VCI, а при использовании Frame Relay — поле DLCI. В тех случаях, когда MPLS обеспечивает пересылку IP-пакетов сетевого уровня и когда технология уровня звена данных не поддерживает собственное поле меток, MPLS-заголовок должен инкапсулироваться между заголовками уровня звена данных и сетевого уровня.
Общая модель инкапсуляции представлена на рис. 4.4, где подразумевается, что инкапсуляция MPLS может быть использована с любой технологией уровня 2. Метка MPLS может быть помещена в существующий формат заголовка уровня 2, как в случае ATM или FR, или вписана в специальный заголовок MPLS, как в случае Ethernet или РРР. Во всех случаях любые дополнительные метки находятся между верхней меткой стека и IP-заголовком уровня 3.
Показанный на рис. 7.4 заголовок MPLS часто называют shim header (заголовком-клином), подчеркивая в метафорической форме тот факт, что этот заголовок «уровня 2.5» вклинивается в пакете между заголовками уровня звена данных и сетевого уровня.
Рисунок 7.4 Принцип инкапсуляции заголовка MPLS
Одной из самых сильных сторон технологии MPLS (и потому отраженной в ее названии) является то, что она может использоваться совместно с различными протоколами уровня 2. Среди этих протоколов — ATM, Frame Relay, PPP, Ethernet, FDDI и другие, предусмотренные документами по MPLS.
Покажем, как метка может вписываться в заголовок уровня звена данных (VCI/VPI для сети ATM, DLCI для сети Frame Relay и т.п.) или «вставляться» между заголовками уровня звена данных и сетевого уровня. С самого начала рабочая группа IETF MPLS решила, что во всех случаях, когда это возможно, MPLS должна использовать имеющиеся форматы. По этой причине информация метки MPLS может передаваться в пакете несколькими разными методами:
как часть заголовка второго уровня ATM, когда информация метки передается в идентификаторах виртуального канала VCI и виртуального пути VPI, что показано на рис.4.5;
как часть кадра AAL5 уровня адаптации ATM (ATM Adaptation Layer 5) перед сегментацией и сборкой SAR (Segmentation and Reassembly), что выполняется в ATM-окружении в случае, когда эта информация содержит данные о стеке меток (несколько полей MPLS-меток);
как часть заголовка второго уровня Frame Relay, когда информация метки передается в идентификаторах DLCI (Data Link Connection Identifier), что изображено на рис. 4.6;
как новая 4-байтовая метка, называемая клином или прокладкой (shim), которая вставляется между заголовками второго и третьего уровней, что показано на рис. 7.7, — во всех остальных случаях.
Размещение метки MPLS в заголовке ATM представлено на рис. 7.5.
Рисунок 7.5 Размещение метки MPLS в заголовке ATM
Заголовок ATM (5 байтов) содержит поля:
GFC - поле общего управления потоком (4 бита) для передачи информации о перегрузке;
VCI - поле идентификатора виртуального канала (16 битов);
VPI - поле идентификатора виртуального тракта (8 битов);
PTI - поле идентификатора типа полезной нагрузки (3 бита): пользовательские данные
или трафик техобслуживания;
CLP - поле приоритета ячейки (1 бит): низкий или высокий приоритет;
НЕС - поле контроля ошибок в заголовке (8 битов) для исправления единичных ошибок
или обнаружения множественных ошибок в заголовке ячейки.
Использование MPLS поверх ATM сейчас довольно распространено, особенно для транспортировки по сетям ATM трафика IP. ATM-коммутаторы, которые конфигурированы для поддержки MPLS (ATM-LSR), выполняют протоколы маршрутизации TCP/IP и используют пересылку данных в ячейках ATM фиксированной длины 53 байта. При этом верхняя метка MPLS помещается в поля VCI/VPI заголовка ячейки ATM, а данные о стеке меток MPLS помещаются в поле данных ячеек ATM.
Поддержка MPLS в сетях Frame Relay (FR)была развернута рядом крупных поставщиков услуг и до сих пор широко используется. Подобно ATM, FR-коммутаторы, поддерживающие MPLS, используют протоколы маршрутизации TCP/IP для пересылки данных под управлением FR. При использовании FR текущая метка помещается в поле идентификатора канала звена данных DLCI в заголовке FR. Любые дополнительные записи в стек меток MPLS помещаются после заголовка FR, но до заголовка сетевого уровня, содержащегося в поле данных кадра FR. Стандарт MPLS позволяет FR использовать адрес Q.922 длиной либо 2 октета, либо 4 октета. Формат представлен на рис. 7.6.
Рис. 7.6 Размещение метки MPLS в кадре FR
Примечание: Длина поля DLCI может составлять 10,16 или 24 бита
В отношении ячеек ATM и кадров Frame Relay договорились использовать для MPLS имеющиеся форматы заголовков, а во всех остальных случаях — собственную метку MPLS — «прокладку» между заголовками второго и третьего уровней. Отсюда видно, что MPLS позволяет создавать новые форматы меток без изменения протоколов маршрутизации, а потому распространение этой технологии на вновь появляющиеся виды оптического транспорта, такие как компактное мультиплексирование с разделением по длине волны DWDM (Dense Wave Division Multiplexing) и оптическая коммутация, представляет собой относительно простую задачу.
Принцип, представленный на рис. 7.7, подходит для каналов типа «точка-точка» (Point-to-Point — РРР) и для локальных сетей Ethernet (всех типов). Подобным методом можно передать одну MPLS-метку или стек меток.
Протокол РРР фактически представляет собой семейство родственных протоколов IETF, используемое для передачи многопротокольных дейтаграмм по двухточечным каналам связи. РРР определяет метод инкапсуляции дейтаграмм разных протоколов сетевого уровня, протокола управления звеном данных LCP и набора протоколов управления сетью NCR
Рис. 7.7 Формат для введения MPLS-метки в пакет РРР и в кадр Ethernet
Когда пакеты MPLS передаются по Ethernet, в каждом кадре Ethernet переносится только один снабженный меткой пакет. Метка помещается между заголовком уровня звена данных и заголовком сетевого уровня. Использование MPLS в сетях Ethernet, особенно, вгородских сетях, является еще одной перспективной возможностью MPLS. В стандарт Ethernet вносятся изменения, позволяющие увеличить скорость и дальность передачи Ethernet-пакетов. В настоящее время начинают использоваться Ethernet-интерфейсы на скоростях 10 Гбит/с, а в скором времени появятся Ethernet-интерфейсы и на еще больших скоростях.
Значения поля Ethertype в заголовке Ethernet — шестнадцатеричное 8847 для одноадресной передачи и шестнадцатеричное 8848 для многоадресной рассылки. Эти значения могут использоваться либо со стандартным форматом Ethernet, либо с форматом 802.3 LLC/SNAP.
Итак, метка может быть помещена в пакет разными способами — вписываться в специальный заголовок, помещаемый между заголовками уровня 2 и уровня 3, либо в свободное и доступное поле заголовка одного из этих двух уровней, если, конечно, таковое имеется. Очевидно, что вопрос о том, куда следует помещать заголовок, содержащий метку, должен согласовываться между объектами, ее использующими.
Коммутируемый путь LSP
Рисунок 7.8 Компоненты коммутируемого пути |
Коммутируемый путь (LSP) одного уровня состоит из последовательного набора участков, коммутация на которых происходит с помощью метки данного уровня (рис.7.8). . Например, LSP нулевого уровня проходит через устройства LSR 0, LSR 1, LSR 3, LSR 4 и LSR 5. При этом LSR 0 и LSR 5 являются, соответственно, входным (ingress) и выходным (egress) маршрутизаторами для пути нулевого уровня. LSR 1 и LSR 3 играют ту же роль для LSP первого уровня; первый из них производит операцию добавления метки в стек, а второй — ее изъятия. С точки зрения трафика нулевого уровня, LSP первого уровня является прозрачным туннелем. В любом сегменте LSP можно выделить верхний и нижний LSR по отношению к трафику. Например, для сегмента «LSR 4 — LSR 5» четвертый маршрутизатор будет верхним, а пятый — нижним.
Маршрут LSP функционально эквивалентен виртуальному соединению, поскольку определяет путь через всю сеть — от входа в нее до выхода из нее. По этому пути следуют все пакеты, отнесенные к определенному классу FEC. Первый из поддерживающих метки маршрутизаторов на этом пути называется входным (ingress, или head-end); а последний маршрутизатор, завершающий данный LSP, — выходным (egress, или tail-end).