Протоколы и алгоритмы маршрутизации в Интернет

Передача данных с коммутацией по меткам

Разбить на страницы
Показывать лекцию целиком

В начале 90-х для размещения маршрутной таблицы в маршрутизаторе хватало 4-8Мбайт, но требования быстро росли, и это стимулировало широкое внедрение идеологии автономных систем (AS). На какое-то время AS позволили решить проблему, но к 2005-му году требования к памяти маршрутизатора возросли до 100Мбайт, и это не предел.

Давайте сначала прикинем, со сколькими сетевыми узлами вы и сотрудники вашего подразделения устанавливаете связь в течение рабочего дня. Это число нестабильно, зависит от характера работы и сильно варьируется от человека к человеку. Но, очевидно, что это число вряд ли превышает нескольких сотен и слабо меняется со временем. Таким образом, для обеспечения требуемых маршрутов объем маршрутной таблицы, если бы он содержал только используемые вами IP-адреса, был бы незначительным. При этом поиск в такой таблице занимал бы на порядок меньше времени (RTT сокращается на порядок).

Именно идея сохранения в маршрутной таблице только реально используемых виртуальных путей и легла в основу разработки протокола MPLS и сопряженных с ним протоколов маршрутизации.

По мере разработки этой технологии стало ясно, что протокол MPLS (Multi Protocol Label Switching) достаточно удобен для реализации заданных значений QoS (управление трафиком – ТЕ), так как VPN (Virtual Private Network) в рамках MPLS формируются чаще всего одним сервис-провайдером. Идеология VPN является основой протокола MPLS.

11.1. Базовые предпосылки

Интернет — это система взаимодействия удаленных программ. Совместимость этих программ гарантируется тем, что они следуют определенным регламентациям (протоколам). Управление трафиком представляет собой проблему, ставшую актуальной за последние несколько лет (если не считать ее составляющую, сопряженную с управлением перегрузкой).

Период экстенсивного развития сети Интернет завершился несколько лет тому назад даже в РФ. Сейчас многие сервис-провайдеры пытаются привлечь клиентов дополнительными информационными услугами: IP-телефония, интерактивные игры, доступ к разнообразным базам данных и депозитариям, электронным магазинам, видеоконференциям, видео­телефонии, различным разновидностям цифрового телевидения и т. д. Клиенты же ищут не просто любого доступа в Интернет, а интересуются полосой пропускания, безопасностью, стабильностью связи. Именно с этим сопряжен бум разработок основополагающих документов (RFC) в последние 5 лет. По этой причине многие компании, в первую очередь производящие сетевое оборудование, уделяют повышенное внимание средствам управления трафиком (ТЕ) и QoS.

Около 10 лет назад началась разработка первого протокола RSVP (RFC-2205). В нем осуществляется резервирование полосы пропускания (интегральный сервис) вдоль виртуального пути. Запрос резервирования посылает получатель трафика, а исполнителями запроса являются маршрутизаторы, обслуживающие виртуальный путь этого трафика.

Современные задачи требуют более тонкой настройки качества обслуживания ( QoS ). Важными параметрами, характеризующими QoS, являются: задержка доставки (RTT), дисперсия времени доставки пакета, вероятность его потери, например, из-за переполнения буферов в транзитных сетевых устройствах. Все эти характеристики зависят от организации очередей в сетевых устройствах. С точки же зрения пользователя важно получить гарантию того, что все характеристики QoS окажутся в пределах допусков непосредственно на его рабочем месте. Машина же пользователя чаще всего подключена к переключателю уровня L2, который может не поддерживать ни один из протоколов, гарантирующих QoS.

Если рассмотреть ситуацию на уровне L2, мы увидим, что здесь имеется сильная зависимость от физического уровня (L1). В сетях с маркерным доступом (например, Token Ring, см. book.itep.ru) существуют механизмы управления приоритетом и способы контроля доступа, гарантирующие определенное значение задержек сетевого отклика. В сетях ISDN и в особенности в ATM предусмотрен целый арсенал средств управления, работающих на фазе установления виртуального канала (процедура SETUP). Для Ethernet до последнего времени ситуация была много хуже. Здесь только некоторые переключатели поддерживают VLAN с приоритетами. Технология виртуальных сетей L2 позволяет сформировать в локальной сети соединение точка-точка. В таком соединении можно гарантировать пропускную способность на уровне 10/100Мбит/c. К сожалению, VLAN L2 создаются и модифицируются, как правило, администратором, но можно эту проблему перепоручить сценарию, например, на PERL, работающему с демоном SNMP сетевого прибора. В такой сети можно также гарантировать низкий уровень разброса времени реакции сети. Если сформировать VLAN с числом узлов (N) больше двух, можно гарантировать полосу лишь не ниже (10/100)/N. Для произвольной сети Ethernet никаких гарантий на уровне L2 предоставить нельзя. Здесь можно рассчитывать только на вышележащие уровни (IP/TCP/UDP).

Принципы организации приоритетного трафика на уровне L2 рассмотрены в стандарте 802.1р. Стандарт 802.1р является частью стандарта 802.1D (мостовые соединения). В протоколе 802.1Q определены 4-байта метки (смотри рис. 11.1). Поле EtherType=TPID (Tagged Protocol Identifier) содержит код 0x8100 (смотри главу об Ethernet). Это поле соответствует полю тип протокола стандартного поля кадра Ethernet и указывает на необходимость обработки кадра согласно требованиям IEEE 802.1Q.

Топология связей в локальной сети на уровне L3 определяется протоколами маршрутизации (статическими или динамическими — RIP, OSPF, IGRP).

Протокол (см. IP) предусматривает задание значение ToS, определяемое соответствующим полем заголовка. Однооктетное поле тип сервиса (TOS — Type Of Service) характеризует то, как должна обрабатываться дейтаграмма.

Субполе приоритет предоставляет возможность присвоить код приоритета каждой дейтаграмме. Значения приоритетов приведены в таблице.

0 Обычный уровень
1 Приоритетный
2 Немедленный
3 Срочный
4 Экстренный
5 CEITIC/ECP
6 Межсетевое управление
7 Сетевое управление

В новейших разработках (RFC-2474, Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers) поле ToS заменено на поле DSCP (Differentiated Services Code Point), где младшие 6 бит выделены для кода DS (Differentiated Services), а старшие два бита пока не определены и их следует обнулять.

До середины 90-х годов поле ToS в большинстве реализаций игнорировалось. Но после начала разработок средств обеспечения качества обслуживания (QoS) внимание к этому возросло. Появилось предложение замены поля TOS на поле DSCP, которое также имеет 8 бит (см. RFC-2474). (Смотри рис. 11.1.) Старшие биты CU пока не определены. Иногда это поле называется байтом DS (Differentiated Services).

(рис 11.1) Формат поля DSCP

Биты DS0-DS5 определяют селектор класса. Значения этого кода представлены в таблице ниже. Стандартным значением DSCP по умолчанию является 000000.

Селектор класса DSCP
Приоритет 1 001000
Приоритет 2 010000
Приоритет 3 011000
Приоритет 4 100000
Приоритет 5 101000
Приоритет 6 110000
Приоритет 7 111000

На базе DSCP разработана технология пошагового поведения PHB (per Hop Behavior). В рамках этой политики определяются коды DSCP внутри классов. Например, для политики немедленной переадресации EF рекомендуемое значение DSCP=101110. Эта политика соответствует наиболее высокому уровню обслуживания.

В маршрутизаторах компании CISCO Systems для классификации пакетов и выбора очередей используются два младших бита из трех. По умолчанию классу 0 выделяется 10% полосы, а классам 1, 2 и 3 — 20%, 30% и 40%, соответственно. Для очередей, основанных на классах QoS, пакеты, не принадлежащие ни одной группе, относятся к группе 0 и автоматически получают 1% от общей пропускной способности группы. Общий вес остальных групп не может превышать 99%. Если имеется нераспределенная полоса, она относится к группе 0. Понятно, что чем больше приоритетов или классов обслуживания используется, тем больше число очередей должно быть сформировано. Причем это относится ко всем сетевым устройствам вдоль пути транспортировки. Это условие далеко не всегда может быть выполнено.

Серьезное влияние на качество обслуживания оказывает перегрузка. Впрочем, если бы перегрузка никогда не возникала, не нужно было бы заботиться о качестве обслуживания, — оно было бы всегда гарантировано.

Строго говоря, значения TOS и QOS не эквивалентны, но именно значение поля ToS является базой для задания QoS. Присваивая при формировании IP-пакета определенное значение поля ToS, прикладная программа может попытаться реализовать определенные ограничения на QoS. Это поле может анализироваться маршрутизаторами, которые поддерживают протокол RSVP или MPLSTE, способные управлять трафиком.

Под управлением трафиком здесь и далее подразумевается обеспечение QoS, управление перегрузкой и средства перераспределения потоков данных. В протоколе UDP нет никаких средств управления трафиком, в ТСР имеются механизмы управления перегрузкой.

Кое-что предлагает набор протоколов RTP/RTCP, предназначенный для мультимедийных приложений (например, позволяет ликвидировать влияние разброса времени доступа в каналах Ethernet на качество воспроизведения изображения и звука.). Некоторые приложения и сетевые приборы способны сигнализировать о перегрузке (потере пакетов из-за переполнения буферов), посылая ICMP(4).

Существенную проблему составляет необходимость идентифицировать пакеты, принадлежащие определенному процессу. Эта задача легко решается только в рамках протокола IPv6. Там в заголовке предусмотрено поле метка потока. Некоторые возможности предоставляет также протокол MPLS.

11.2. Управление трафиком

В настоящее время используется несколько методов управления трафиком.

  • Динамическая маршрутизация (RIP, OSPF, IGRP, BGP и т.д.). Здесь нет средства резервирования полосы, но предусмотрен механизм изменения маршрута при изменении значений метрики или из-за выхода из строя узла или обрыва канала. Некоторые из таких протоколов (OSPF, IGRP) могут строить отдельные таблицы маршрутизации для каждого уровня TOS/QOS [11.1], но метрики для каждого уровня задаются сетевым администратором. Здесь имеется возможность запараллеливания потоков с целью увеличения пропускной способности. Эти протоколы работают только в пределах одной автономной системы (AS). Протокол же BGP, используемый для прокладки путей между автономными системами, не способен в настоящее время как-либо учитывать уровень ToS/QoS (применяет алгоритм вектора расстояния, что связано с трудностью согласования значений метрик состояния канала администраторами разных AS). Новая версия многопротокольного расширения MPBGP специально создана для совместной работы с MPLS при формировании виртуальных сетей, но и он безразличен к TOS/QOS.
  • Формирование виртуальных сетей на уровнях L2 и L3. Протоколы VLAN обеспечивают повышенный уровень безопасности, но, как правило, не способны резервировать полосу. К этому типу относится и протокол MPLS.
  • Резервирование полосы в имеющемся виртуальном канале (протокол RSVP). RSVP может работать с протоколами IPv4 и IPv6. Протокол достаточно сложен для параметризации, поэтому для решения этой задачи был разработан протокол COPS, который существенно облегчает параметризацию. Функция COPS сходна с задачей языка RPSL для маршрутизации.
  • Автоматическое резервирование полосы при формировании виртуального канала процедурой SETUP в сетях ATM, ISDN, DQDB, Frame Relay и т.д. Управление очередями осуществляется аппаратно, но базовые параметры могут задаваться программно. Программы управления трафиком MPLS позволяют расширить возможности L2 сетей ATM и Frame Relay.
  • Использование приоритетов в рамках протокола IPv6. Возможность присвоения потокам меток облегчает, например, разделение аудио- и видеоданных.
  • Управление перегрузкой (окно перегрузки в TCP, ICMP(4) для UDP-потоков и т.д.).
  • Качество обслуживания QoS

    QoS связана с возможностью сети предоставить клиенту необходимый ему уровень услуг в условиях работы поверх сетей с самыми разнообразными технологиями, включая Frame Relay, ATM, Ethernet, сети 802.1, SONET и маршрутизуемые IP-сети.

    QoS представляет собой собрание технологий, которые позволяют приложениям запрашивать и получать предсказуемый уровень услуг с точки зрения пропускной способности, временного разброса задержки отклика, а также общей задержки доставки данных. В частности, QoS подразумевает улучшение параметров или достижение большей предсказуемости предоставляемых услуг. Это достигается следующими методами:

  • поддержкой определенной полосы пропускания;
  • сокращением вероятности потери кадров;
  • исключением сетевых перегрузок или контролем над ними;
  • возможностью конфигурирования сетевого трафика;
  • установкой количественных характеристик трафика по пути через сеть.
  • IEFT определяет для QoS следующие две архитектуры:

  • Интегрированные услуги (IntServ)
  • Дифференцированные услуги (DiffServ)
  • IntServ для явного задания уровня услуги (QoS) использует протокол RSVP. Это делается путем уведомления об этом требовании всех узлов вдоль пути обмена. Если все сетевые устройства вдоль пути могут предоставить запрошенную полосу, резервирование завершается успешно (смотри документ RFC-2205 [11.2]).

    DiffServ, вместо того чтобы уведомлять о требованиях приложения, использует в IP-заголовке DiffServ Code Point (DSCP) для указания требуемых уровней QoS. Cisco IOS® Software Release 12.1(5)T вводит совместимость маршрутизаторов Cisco с DiffServ (см. [15-16]).

    Управление перегрузкой может осуществляться путем изменения порядка, в котором посылаются пакеты согласно приписанного им приоритета. QoS-управление перегрузкой имеет четыре модификации протоколов управления очередями, каждый из которых позволяет организовать разное число очередей. L2 QoS предполагает следующее:

  • Управление входными очередями. Когда кадр приходит на вход порта, он может быть отнесен к одной из нескольких очередей, ассоциированных с портом, прежде чем он будет направлен на один из выходных портов. Как правило, несколько очередей применяются тогда, когда различные информационные потоки требуют различных уровней услуг или минимизации задержки. Например, IP-мультимедиа требует минимизации задержки, в отличие от передачи данных в FTP, WWW, email, Telnet, и т.д.
  • Классификация. Процесс классификации включает просмотр различных полей в заголовке Ethernet L2, а также полей IP-заголовка (L3) и заголовков TCP/UDP (L4), чтобы обеспечить определенный уровень услуг при коммутации пакетов.
  • Политика. Осуществление политики является процессом анализа кадра Ethernet, чтобы определить, не будет ли превышен заданный уровень трафика за определенный интервал времени (обычно это время является внутренним параметром переключателя). Если кадр создает ситуацию, при которой трафик превысит заданный уровень, он будет отброшен или значение CoS (Class of Service) может быть понижено.
  • Перезапись. Процесс перезаписи предоставляет возможность переключателю модифицировать CoS или ToS (Type of Service) в IPv4-заголовке. Следует учесть, что заголовок Ethernet 802.3 поля CoS не имеет (именно эта версия стандарта наиболее распространена в РФ).
  • Управление выходными очередями. После процесса перезаписи переключатель поместит кадр Ethernet в выходную очередь для последующей коммутации. Переключатель выполнит управление буфером так, чтобы не произошло переполнение. Это обычно осуществляется с помощью алгоритма RED (Random Early Discard), когда некоторые кадры случайным образом удаляются из очереди. Weighted RED (WRED) является директивой RED (используемой некоторыми модулями семейства Catalyst 6000), где значения CoS анализируются, чтобы определить, какие кадры следует отбросить. Когда буферы окажутся заполнены до определенного уровня, кадры с низким уровнем приоритета отбрасываются, в очереди сохраняются только высокоприоритетные кадры.
  • 11.3. Мультипротокольная коммутация по меткам (протокол MPLS)

    Основы протокола MPLS описаны в официальных документах RFC [11.3-11.9 и 11.14]. Существуют публикации и на русском языке [11.11-11.13]. Имеются три монографии, посвященных рассматриваемой проблематике [11.17-11.19].

    Протокол MPLS хорошо приспособлен для формирования виртуальных сетей (VPN) повышенного быстродействия (метки коммутируются быстрее, чем маршрутизируются пакеты, — это связано с меньшим размером маршрутных таблиц).

    Принципиальной основой MPLS являются IP-туннели. Для его работы нужна поддержка протокола маршрутизации MP-BGP (RFC-2858 [23]). Протокол MPLS может работать практически для любого маршрутизируемого транспортного протокола (не только IP). После того как сеть сконфигурирована (для этого используются специальные, поставляемые производителем скрипты), она существует, даже если в данный момент через нее не осуществляется ни одна сессия. При появлении пакета в виртуальной сети ему присваивается метка, которая не позволяет ему покинуть пределы данной виртуальной сети. Никаких других ограничений протокол MPLS не накладывает. Протокол MPLS предоставляет возможность обеспечения значения QoS, гарантирующего более высокую безопасность. Не следует переоценивать уровня безопасности, гарантируемого MPLS, — атаки типа "человек посередине" могут быть достаточно разрушительны. При этом для одного и того же набора узлов можно сформировать несколько разных виртуальных сетей (задействуя разные метки), например, для разных видов QoS. Но можно использовать возможности АТМ (процедура setup), если именно этот протокол применен в опорной сети (возможные перегрузки коммутаторов не в счет).

    Для обеспечения структурирования потоков в пакете создается стек меток, каждая из которых имеет свою зону действия. Формат стека меток представлен на рис. 11.2 и 11.3 (смотри RFC-3032). В нормальной ситуации стек меток размещается между заголовками сетевого и канального уровней (соответственно L2 и L3). Каждая запись в стеке занимает 4 октета.

    (рис 11.3) Формат стека меток (рис 11.2) Размещение меток в стеке

    Место заголовка МАС может занимать заголовок РРР. В случае работы с сетями АТМ метка может занимать поля VPI и VCI. Смотри рис 11.4. Глубина стека в данном случае не может превышать 1.

    (рис 11.4) Формат меток в ячейках АТМ

    На рисунке 11.2 поле СoS соответствует субполю приоритет поля ToS. Поле CoS имеет три бита, этого достаточно для поля приоритета IP-заголовка. 6-битовое поле кода дифференцированной услуги DSCP сюда записать нельзя. Можно попробовать разместить этот код в поле самой метки. S — флаг-указатель дна стека меток; TTL — время жизни пакета MPLS.

    Существующие версии программного обеспечения Cisco IOS (например, Cisco IOS Release 12.0) содержат набор средств управления трафиком. В частности, имеется возможность формировать статические маршруты и управлять динамическими маршрутами путем манипулирования значениями метрики. Иногда этого вполне достаточно, но в большинстве случаев провайдер нуждается в более эффективных средствах.

    Межрегиональные каналы являются одной из основных расходных статей провайдеров. Управление трафиком позволяет IP-провайдеру предложить оптимальный уровень услуг своим клиентам с точки зрения полосы и задержки. Одновременно эта технология снижает издержки обслуживания сети.

    MPLS представляет собой интеграцию технологий уровней L2 и L3. Управление трафиком в MPLS реализуется путем предоставления традиционных средств уровня L2 уровню L3. Таким образом, можно предложить в односвязной сети то, что достижимо только путем наложения уровня L3 на уровень L2.

    Управление коммутацией по меткам основывается на базе данных LIB (Label Information Base). Пограничный маршрутизатор MPLS LER (Label Edge Router) удаляет метки из пакетов, когда пакет покидает облако MPLS, и вводит их во входящие пакеты. Схема работы с помеченными и обычными IP-пакетами показана на рис. 11.5.

    (рис 11.5) Обработка помеченных и обычных IP-пакетов

    Управление трафиком MPLS автоматически устанавливает и поддерживает туннель через опорную сеть, применяя возможности RSVP. Путь, используемый данным туннелем, в любой момент времени определяется на основе ресурсных требований и сетевых возможностей, таких, как полоса пропускания. Но MPLS может решать проблему обеспечения требуемого уровня QoS и самостоятельно.

    Информация об имеющихся ресурсах доводится до сведения заинтересованных субъектов с помощью протокола IPG (Interior Protocol Gateway), алгоритм которого базируется на состоянии канала.

    Путь туннеля вычисляется, основываясь на сформулированных требованиях и имеющихся ресурсах (constraintbased routing). IGP автоматически маршрутизирует трафик через эти туннели. Обычно пакет, проходящий через опорную сеть MPLS, движется по одному туннелю от его входной точки к выходной. Управление трафиком MPLS основано на следующих механизмах IOS (Input/output System):

  • туннелях LSP (Labelswitched path), которые формируются посредством RSVP, с расширениями системы управления трафиком. Туннели LSP представляют собой туннельные двунаправленные интерфейсы IOS с известным местом назначения;
  • протоколах маршрутизации IGP, базирующихся на состоянии канала (таких, как IS-IS) с расширениями для глобальной рассылки ресурсной информации, и расширениями для автоматической маршрутизации трафика по LSP-туннелям;
  • модуле формирования пути MPLS, который определяет пути для LSP туннелей;
  • модуле управления трафиком MPLS, который обеспечивает доступ и запись ресурсной информации, подлежащей рассылке;
  • переадресации согласно меткам, которая предоставляет маршрутизаторам возможности, сходные с уровнем L2, — перенаправлять трафик через большое число узлов согласно алгоритму маршрутизации отправителя.
  • Одним из подходов управления опорной сетью является определение сети туннелей между всеми участниками обменов. Протокол IGP, работающий в начале туннеля, определяет, какой трафик должен проходить через любой оконечный узел. Модули формирования пути и управления MPLS определяют маршрут LSP туннеля. Для каждого туннеля подсчитывается число прошедших пакетов и байт.

    Иногда поток настолько велик, что его нельзя пропустить через один канал (туннель). В этом случае может быть создано несколько туннелей между отправителем и получателем.

    Для реализации MPLS управления трафиком сеть должна поддерживать следующие возможности Cisco IOS:

  • мультипротокольную переадресацию пакетов с использованием меток (MPLS);
  • IPпереадресацию CEF (Cisco Express Forwarding);
  • протокол маршрутизации ISIS (Intermediate SystemtoIntermediate System; см. RFC-1142, 1195, 2763, 2966 и 2973)
  • Дополнительные данные о MPLS и управлении трафиком можно найти в документации Cisco (поддерживается в реализациях 7620, 7640, 7200, 7500 и 12000).

    Протоколы состояния канала типа IS-IS для вычисления кратчайшего пути для всех узлов сети используют алгоритм Дикстры SPF. Маршрутные таблицы получаются на основе дерева кратчайших путей. Эти таблицы содержат упорядоченный набор адресов места назначения и информацию о ближайших соседей. Если маршрутизатор осуществляет прокладку путей на основе алгоритма шаг-за-шагом, первым шагом является физический интерфейс, соединенный с маршрутизатором.

    Новые алгоритмы управления трафиком вычисляют пути до одного или более узлов в сети. Эти маршруты рассматриваются как логические интерфейсы исходного маршрутизатора. В данном контексте эти маршруты представляют собой LSP и рассматриваются как TE-туннели (Traffic Engineering – средства не только управления трафиком, но и качеством обслуживания).

    Эти TE-туннели являются реальными маршрутами, контролируемыми маршрутизаторами, которые размещены в начале этих туннелей. В отсутствие ошибок TE-туннели гарантируют отсутствие петель, но маршрутизаторы должны согласовать использование TE-туннелей — иначе могут стать возможными зацикливания двух или более таких туннелей. Вероятность возникновения такой ситуации незначительна, так как трасса туннеля определяется отправителем.

    Управление трафиком MPLS

  • Исключается необходимость ручной конфигурации сетевых устройств, чтобы задать определенные маршруты. Вместо этого можно положиться на возможности управления трафиком, предоставляемые MPLS.
  • Производится оценка полосы канала и значения трафика при прокладке маршрута через опорную сеть.
  • Имеются механизмы динамической адаптации, которые позволяют сделать опорную сеть устойчивой к отказам даже в условиях, когда несколько путей были рассчитаны в режиме offline. В случае отказа узлов производится коррекция топологии опорной сети.
  • В рекомендациях CISCO [15] можно прочесть, что MPLS позволяет провайдеру маршрутизировать потоки данных так, чтобы клиенту гарантировать минимум задержки и максимум пропускной способности.

    Сформировав несколько виртуальных сетей для заданного набора узлов, можно попытаться объединять возможности этих сетей в случае возникновения такой необходимости, увеличивая пропускную способность. Можно для каждой из субсетей использовать разный уровень QoS с помощью протокола RSVP. Рассматривается внедрение протокола RSVP на уровень L2 [11.34].

    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

    Парадигма переадресации, позволяющая осуществлять переадресацию данных путем использования меток для идентификации классов информационных пакетов, которые обрабатываются при переадресации неразличимым образом

    Label switched hop

    Шаг между двумя узлами MPLS, на которые осуществляется переадресация с привлечением меток

    Label switched path — путь с коммутацией меток

    Путь через один или более LSR на одном уровне иерархии для пакетов с определенным FEC

    Label switching router

    Узел 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

    VPI/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 показана эволюция содержимого стека меток в процессе доставки пакетов от отправителя к получателю.

    (рис 11.6) Эволюция стека меток

    На вход сети MPLS пакет попадает в узле А1. Здесь пакету присваивается метка, и он переадресуется далее. После передачи пакета из узла сетевого провайдера SPA в узел провайдера SPB, в стек пакета добавляется еще одна метка. Далее пакет передается по сети SPB (узлы B1 -> B4 ). После передачи пакета из узла В4 в узел С1 в стек меток добавляется еще одна метка. Когда пакет покидает сеть SPC, одна из меток из стека удаляется (С5?B5). Аналогичная операция осуществляется после передачи пакета из узла В6 в А3. Стек меток ликвидируется в узле А5 ("Выход" – это не обязательно узел места назначения). От отправителя до узла А1 пакет доставляется с применением маршрутизации по IP места назначения. Аналогичный метод используется при транспортировке пакета из узла А5 адресату.

    Запись Next Hop Label Forwarding (NHLFE)

    Запись Next Hop Label Forwarding (NHLF Entry) применяется при переадресации помеченных пакетов. Здесь содержится информация о:

  • следующем шаге пакета;
  • операции, которая должна быть произведена над стеком меток. Это одна из операций, перечисленных ниже:
  • заместить метку на верху стека специфицированной новой меткой;
  • извлечь метку из стека;
  • заместить метку на верху стека специфицированной новой меткой и затем ввести в стек одну или более специфицированных меток.
  • Она может также содержать:

  • инкапсуляцию канальных данных, которые будут использованы при пересылке пакета;
  • метод кодирования стека меток при пересылке пакета;
  • другую информацию, необходимую для корректной обработки пакета.
  • Заметим, что для данного LSR следующим шагом пакета может стать сам LSR. В этом случае LSR должен будет извлечь метку из стека и затем переадресовать полученный пакет самому себе. Затем он примет следующее решение переадресации, базирующееся на полученном состоянии стека меток.

    Это подразумевает, что в некоторых случаях LSR будет должен работать с IP-заголовком, чтобы переадресовать пакет.

    Если следующим шагом пакета является текущий LSR, тогда операцией над стеком меток должна быть операция pop (удаление метки из стека).

    Установление соответствия для входных меток ILM (Incoming Label Map)

    Incoming Label Map (ILM) устанавливает соответствие для каждой входящей метки с набором NHLFE. Эта операция используется, когда переадресуемые пакеты являются помеченными.

    Если ILM связывает определенную метку с набором NHLFE, который содержит более одного элемента, только один элемент должен быть выбран из набора, прежде чем пакет будет переадресован. Применяя технику установления соответствия ILM, можно работать с набором, содержащим более одного NHLFE, — это может понадобиться, например, при балансировке трафика между несколькими путями, имеющими равные метрики.

    Установление соответствия между FEC и NHLFE (FTN)

    Методика FEC-to-NHLFE (FTN) устанавливает соответствие между каждым FEC и набором NHLFE. Она используется при переадресации непомеченных пакетов, при необходимости их пометки до переадресации. Если FTN устанавливает соответствие между конкретной меткой и набором NHLFE, который содержит более одного элемента, только один из них должен быть выбран, прежде чем пакет будет переадресован.

    Обмен меток

    Обмен меток (Label swapping) представляет собой использование следующих процедур для переадресации пакетов. Чтобы переадресовать помеченный пакет, LSR рассматривает метку на верху стека. Он применяет ILM для установления соответствия этой метки набору NHLFE. Взяв информацию из NHLFE, он определяет, куда переадресовать пакет, и выполняет некоторую операцию над стеком меток пакета, затем записывает новую метку в стек пакета и переадресует его.

    Чтобы переадресовать непомеченный пакет, LSR анализирует заголовок сетевого уровня, чтобы определить FEC пакета. Затем он использует FTN, устанавливая соответствие с NHLFE. Используя информацию NHLFE, он определяет, куда переадресовать пакет, и выполняет некоторую операцию над стеком меток пакета. (Извлечение метки из стека в этом случае будет нелегальным).

    Важно заметить, что, когда используется коммутация меток, следующий шаг всегда берется из NHLFE. Это отличается в некоторых случаях от выбора следующего шага, когда не применяется MPLS.

    Область действия и уникальность меток

    Данный LSR Rd может связать метку L1 с FEC F и переправить эту ассоциацию партнеру Ru1. Rd может также связать метку L2 с FEC F и переправить эту ассоциацию партнеру Ru2. Является ли L1 == L2, не определяется архитектурой, это вопрос исключительно локальный.

    Данный LSR Rd может связать метку L с FEC F1 и переправить эту ассоциацию партнеру Ru1. Rd может также связать метку L с FEC F2 и переправить эту ассоциацию партнеру Ru2. Если и только если Rd может сообщить, когда он получает пакет с меткой на верху стека равной L, занесена ли она в стек RU1 или RU2, архитектура не требует равенства F1 == F2. В таких случаях мы можем сказать, что Rd использует другое пространство меток, которые он пересылает Ru1, по отношению меток, посылаемых Ru2. Вообще, Rd может лишь сообщить, Ru1 или Ru2 положил данную метку со значением L на верх стека, если выполнены следующие условия:

  • Ru1 и Ru2 являются партнерами, которые обмениваются метками и которым Rd пересылает значение метки L, и
  • Ru1 и Ru2 соединены с Rd непосредственно через интерфейс по схеме точка-точка.
  • Когда эти условия выполнены, LSR может применять метки, имеющие область действия "per interface", т.e. такие, которые являются уникальными для каждого интерфейса. Можно сказать, что LSR использует пространство меток интерфейса. Когда эти условия не выполнены, метки должны быть уникальными для LSR, который их присвоил, и мы можем сказать, что LSR использует пространство меток платформы.

    Если конкретный LSR Rd связан с некоторым LSR Ru через два интерфейса по схеме точка-точка, тогда Rd может пересылать Ru ассоциацию метки L с FEC F1, так же, как ассоциацию метки L с FEC F2, F1 != F2, если и только если каждая ассоциация корректна для пакетов, которые Ru посылает Rd через один из интерфейсов. Во всех других случаях Rd не должен посылать ассоциации Ru, сопрягающие одну и ту же метку с двумя разными FEC.

    Этот запрет сохраняется, даже если ассоциации относятся к различным уровням иерархии. В MPLS не существует понятия разных пространств меток для различных уровней иерархии, — когда метка интерпретируется, уровень метки значения не имеет.

    Возникает вопрос, может ли LSR использовать мультиплатформные пространства меток или использовать много пространств меток интерфейса для одного и того же интерфейсного устройства. Это не запрещено архитектурой. Например, [MPLS-SHIM] специфицирует, что различные пространства меток используются для уникастных и мультикастных пакетов, а для разделения этих пространств применяется код канального уровня.

    Маршрут с коммутацией меток (LSP), входной и выходной LSP

    Маршрут с коммутацией меток (LSP) уровня m для определенного пакета P представляет собой последовательность маршрутизаторов <R1, ..., Rn> со следующими свойствами:

  • R1, вход LSP, является LSR, который вносит метку в стек пакета P, в результате формируется стек глубиной m ;
  • для всех i, 1<i<n, P (когда он приходит в LSR Ri) имеет стек меток глубиной m ;
  • никогда за время передачи P от R1 к R[n-1] глубина стека не будет меньше m ;
  • для всех i, 1<i<n: Ri передает P в R[i+1] посредством MPLS, т.e. путем использования метки в верхней позиции стека (метка уровня m) в качестве индекса в ILM;
  • для всех i, 1<i<n: если система S получает и переадресует P после того, как P передан Ri, но до того, как P получен, R[i+1] (например, Ri и R[i+1] могут быть соединены через коммутируемую субсеть и S может быть одним из переключателей информационного канала); далее решение переадресации S не базируется на метке уровня m или на основе заголовка сетевого уровня. Возможные причины этого:

    a) решение не основано на содержимом стека или заголовка сетевого уровня;

    b) решение основано на содержимом стека, куда положены другие метки (т.e., на метке уровня m+k, где k>0 ).

  • Другими словами, мы можем описать уровень m LSP для пакета P как последовательность маршрутизаторов, которая:

  • начинается с LSR (вход LSP), заносящий метку на уровень m ;
  • содержит все маршрутизаторы, чьи промежуточные LSR принимают решение о переадресации согласно метке на уровне m ;
  • завершается (выход LSP), когда решение переадресации делается на основе коммутации меток на уровне m-k, где k>0, или когда решение переадресации делается традиционно, посредством не-MPLS процедур.
  • Следствием (или, пожалуй, предпосылкой) этого является то, что, когда бы LSR ни занес метку в стек уже помеченного пакета, он должен быть уверен, что новая метка соответствует FEC, чьим выходом LSP служит LSR, сформировавший метку, которая сейчас является второй в стеке. Мы будем называть последовательность LSR "LSP для определенного FEC F", если он является LSP уровня m для заданного пакета P, когда уровень метки P соответствует FEC F.

    Рассмотрим набор узлов, которые могут быть входными LSP-узлами для FEC F. Тогда существует LSP для FEC F, который начинается с каждого из этих узлов. Если некоторое число этих LSP имеет идентичный выходной LSP, тогда можно рассматривать набор таких LSP как дерево, чьим корнем является выход LSP. Так как данные переносятся вдоль этого дерева по направлению к корню, эта структура может быть названа деревом мультиточка-точка. Мы можем, таким образом, говорить о дереве LSP для определенного FEC F.

    Извлечение предпоследнего шага

    Заметим, что согласно стандартным определениям, если <R1, ..., Rn> является LSP уровня m для пакета P, P может быть передан от R[n-1] к Rn с глубиной стека меток m-1. То есть, может быть выполнена операция pop для стека меток в предпоследнем LSR LSP, а не на выходе LSP.

    С архитектурной точки зрения это вполне приемлемо. Целью метки уровня m является доставка пакета в Rn. Раз R[n-1] решил послать пакет Rn, метка не имеет более значения и не должна далее транспортироваться.

    Имеется также практическое преимущество извлечения данных о предпоследнем шаге. Если так не сделать, тогда при получении пакета выходной LSP сначала просматривает верхнюю метку из стека и определяет, что это действительно выходной LSP. Затем он должен извлечь из стека метку и проверить, что осталось в стеке пакета. Если в стеке имеется другая метка, выходное устройство анализирует метку и осуществляет пересылку пакета на основе этого анализа. (В этом случае выходное устройство для пакетов уровня m является промежуточным узлом для его уровня m1 LSP). Если в стеке нет других меток, тогда пакет переадресуется согласно его адресу места назначения сетевого уровня. Заметим, что это потребует от выходного устройства двух просмотров: либо просмотра двух меток, либо просмотра метки с последующим анализом сетевого адреса.

    Если, с другой стороны, используется извлечение предпоследнего шага из стека, тогда предпоследний узел просматривает метку и определяет:

  • это предпоследний шаг, и
  • какой узел является следующим.
  • Предпоследний узел далее извлекает метку из стека и переадресует пакет на основе информации, полученной при просмотре метки, которая была до этого на верху стека. Когда выход LSP получает пакет, метка, которая находится на верху стека, будет меткой, необходимой для просмотра, чтобы осуществить его собственное решение о переадресации. Или, если пакет нес в себе только одну метку, выход LSP просто просмотрит заголовок пакета сетевого уровня, который является как раз тем, что ему нужно просмотреть, чтобы принять решение о переадресации. Эта методика позволяет выходному шлюзу выполнить один просмотр, а также требует одного просмотра от предпоследнего узла.

    Создание программы коммутации меток fastpath может существенно упроститься, если известно, что требуется лишь один просмотр метки.

    В действительности, когда в предпоследнем узле метка извлечена из стека, концом LSP не обязательно должен быть LSR.

    Однако некоторые аппаратные переключатели не могут извлекать метки из стека, поэтому это не может быть универсальным требованием. Могут также встретиться ситуации, в которых извлечение из стека предпоследнего шага нежелательно. Следовательно, предпоследний узел извлекает метку из стека, только если это запрашивается выходным узлом, ИЛИ если следующий узел в LSP не поддерживает MPLS.

    LSR, который способен работать с метками, должен извлекать из стека метку предпоследнего шага, когда это затребовано его нижестоящим партнером.

    Начальное согласование протокола рассылки меток должно позволять каждому LSR определить, способны ли соседние LSR извлекать метки из стека. LSR НЕ ДОЛЖЕН запрашивать своего партнера по обмену метками извлекать метку из стека, если только он не способен делать это.

    Если использована операция pop предпоследнего шага, возможен запрос о способности выходного узла корректно интерпретировать верхнюю метку в стеке приходящего пакета. Поскольку правила уникальности и области действия выполняются, всегда возможно правильно интерпретировать верхнюю метку стека приходящего пакета.

    LSP следующего шага

    LSP Next Hop для определенного помеченного пакета является LSR, который представляет следующий шаг пути, как это выбрано записью NHLFE, использованной для переадресации пакета.

    Заметим, что LSP следующего шага может отличаться от того, который был бы выбран алгоритмом маршрутизации сетевого уровня.

    Мы будем использовать термин "следующий шаг L3", когда будем иметь в виду такой маршрут.

    Неверные входные метки

    Что должен сделать LSR, если он получает помеченный пакет с определенной входной меткой, но не имеет ассоциации для этой метки? Соблазнительно думать, что можно просто удалить метки и пакеты будут переадресовываться как непомеченные IP. Однако в некоторых случаях реализация этого приведет к зацикливанию пакетов. Если вышестоящий LSR полагает, что метка сопряжена с определенным маршрутом, а нижестоящий LSR не считает метку связанной с чем бы то ни было, и если маршрутизация шаг-за-шагом непомеченных IP-пакетов приведет пакет назад к вышестоящему LSR, тогда образуется петля.

    Возможно, что метка пытается определять маршрут, который не может быть получен из IP-заголовка.

    Следовательно, когда получен помеченный пакет с неверной входной меткой, он должен быть отброшен, если только он не определен каким-то способом, так что его переадресация не может вызвать никакого вреда.

    LSP-управление: Ordered против Independent

    Некоторые FEC соответствуют адресным префиксам, которые рассылаются алгоритмом динамической маршрутизации. Начальная установка LSP для этих FEC может быть выполнена двумя способами: независимым управлением LSP (Independent LSP Control) или упорядоченным управлением LSP (Ordered LSP Control).

    В независимом управлении LSP каждый LSR, учитывая, что он распознает определенный FEC, принимает независимое решение об ассоциации метки с FEC и рассылает эту ассоциацию своим партнерам. Это соответствует способу, реализуемому в традиционной маршрутизации IP-дейтограмм. Каждый узел принимает независимое решение относительно того, как обрабатывать конкретный пакет, и полагается на алгоритм маршрутизации. При упорядоченном управлении LSP, LSR только связывает метки с определенным FEC, если он является выходным LSR для данного FEC или если он уже получил ассоциацию метки с FEC из узла следующего шага.

    Если хочется гарантировать, чтобы трафик в конкретном FEC следовал пути с некоторыми специфицированными свойствами (например, чтобы трафик не пересекал один и тот же узел дважды, чтобы для трафика были выделены определенные ресурсы, чтобы трафик следовал определенному пути и т.д.), должен использоваться способ упорядоченного управления. При независимом управлении некоторые LSR могут начать коммутацию трафика по меткам, до того как LSP полностью сконфигурирован, и таким образом часть трафика может следовать пути, который не имеет специфицированных свойств. Упорядоченное управление должно также использоваться, если распознавание FEC является следствием конфигурирования соответствующего LSP. Упорядоченное конфигурирование LSP может быть инициировано входным или выходным узлом.

    Упорядоченное и независимое управление полностью совместимы. Однако если только не все LSR в LSP используют упорядоченное управление, результирующее влияние на поведение сети более существенно, чем в случае независимого управления, так как нельзя быть уверенным, что LSP не будет использован до того, как будет полностью сконфигурирован.

    Эта архитектура позволяет сделать выбор между независимым и упорядоченным управлением исключительно местной проблемой. Так как взаимодействуют два метода, данный LSR должен поддерживать один или другой метод. Вообще говоря, выбор независимого или упорядоченного управления не оказывает какого-либо эффекта на механизмы коммутации пакетов, базирующиеся на метках.

    Агрегатирование

    Одним из путей распределения трафика в FEC является создание отдельного FEC для каждого адресного префикса, появляющегося в маршрутной таблице. Однако в пределах области MPLS это может вызвать определенные последствия для набора FEC — в частности, все потоки в этих FEC будут следовать одним и тем же маршрутом. Например, набор различных адресных префиксов может иметь один и тот же выходной узел, а обмен меток может быть использован только для доставки трафика до выходного узла. В этом случае в пределах домена MPLS объединение таких FEC само является классом FEC. Это предлагает выбор: следует ли ассоциировать отдельные метки с каждым компонентом FEC или следует ассоциировать отдельную метку с объединением, а метку использовать для всего трафика в объединении? Процедура ассоциации отдельной метки с объединением FEC, которое само является FEC (внутри некоторого домена), и применения меток для трафика в объединении называется агрегатированием. Архитектура MPLS допускает агрегатирование. Агрегатирование может уменьшить число меток, с которыми нужно иметь дело заданному набору пакетов, и может сократить объем управляющего трафика.

    Данный набор FEC, который является агрегатируемым в одном FEC, можно (a) агрегатировать в один FEC, (b) агрегатировать в набор FEC или (c) не агрегатировать совсем. Таким образом, мы можем говорить о гранулярности агрегатирования, начиная с (a) грубой гранулярности и кончая (c) тонкой гранулярностью.

    Когда используется упорядоченное управление, каждый LSR должен адаптировать для данного набора FEC гранулярность, применяемую на следующем шаге для этих FEC.

    Когда используется независимое управление, допускается, чтобы имелись два смежных LSR, Ru и Rd, которые агрегатируют некоторый набор FEC по-разному.

    Если Ru имеет более тонкую гранулярность, чем Rd, это не создает проблем. В этой ситуации, когда Ru нужно переадресовать помеченные пакеты для этих FEC в Rd, может потребоваться установить соответствие между n и m метками, где n > m. В качестве опции Ru может отозвать набор из n меток, который он разослал, и затем разослать набор из m меток, соответствующих уровню гранулярности Rd. Совсем не нужно гарантировать корректность операции, но это вызовет сокращение числа меток, разосланных Ru. Ru не получает какого-либо преимущества при рассылке большего числа меток. Решение, делать это или нет, является исключительно локальным.

    Если Ru имеет более грубую гранулярность, чем Rd (т.e., Rd разослал n меток для набора FEC, в то время как Ru разослал m, где n > m ), имеется два варианта.

  • Можно принять более тонкий уровень гранулярности для Rd. Это потребовало бы отзыва разосланных m и рассылки n меток. Это предпочтительная опция.
  • Можно просто установить соответствие между m метками и субнабором Rd из n меток, если он может определить, что это не изменит маршрутизацию. Например, предположим, что Ru использует одну метку для всех потоков, которые должны пройти определенный выходной LSR, тогда как Rd привязывает к такому трафику некоторое число разных меток, в зависимости от места назначения пакетов. Если Ru знает адрес выходного маршрутизатора и если Rd связал метку с FEC, который идентифицирован этим адресом, тогда Ru может просто использовать эту метку.
  • В любом случае, каждый LSR должен знать (при конфигурации), какую гранулярность применять для формируемых меток. Когда используется упорядоченное управление, требуется, чтобы каждый узел знал гранулярность только для FEC, который покидает сеть MPLS в этом узле. Для независимого управления наилучший результат может быть получен путем конфигурации всех LSR так, чтобы они знали гранулярность каждого FEC. Однако во многих случаях это может быть сделано путем использования одной метки с гранулярностью, которая реализует все FEC (такой, как "одна метка на IP-префикс таблицы переадресации" или "одна метка на выходной узел").

    Выбор маршрута

    Выбор маршрута сопряжен с методом, используемым при выборе LSP для определенного FEC. Предлагаемая архитектура протокола MPLS поддерживает две опции выбора маршрута: (1) маршрутизация шаг-за-шагом и (2) явная маршрутизация.

    Маршрутизация шаг-за-шагом позволяет каждому узлу независимо выбрать следующий шаг для каждого FEC. Это обычный режим для существующих сегодня IP-сетей.

    В LSP при явной маршрутизации каждый LSR не выбирает следующий шаг независимо; скорее, один LSR специфицирует несколько (или все) LSR в LSP. Если один LSR специфицирует весь LSP, LSP является явно маршрутизированным. Если один LSR специфицирует только некоторые LSP, LSP является "неточно" маршрутизированным.

    Последовательность LSR, за которой следует явно маршрутизированные LSP, могут быть выбраны при конфигурации или заданы динамически одним узлом (например, выходной узел может использовать топологическую информацию, полученную из базы данных состояния канала, для того, чтобы вычислить весь путь для дерева с корнем в выходном узле).

    Явная маршрутизация может быть полезной для ряда целей, таких, как политика маршрутизации или управление трафиком (TE). В MPLS явный маршрут должен быть специфицирован в момент формирования метки, но явный маршрут не должен быть специфицирован для каждого IP-пакета. Это делает явную маршрутизацию MPLS более эффективной по сравнению с альтернативной IP-маршрутизаций отправителя.

    Отсутствие выходной метки

    Когда помеченный пакет транспортируется вдоль LSP, может случиться, что он достигнет LSR, в котором ILM не устанавливает соответствия между меткой входящего пакета и NHLFE, даже при условии, что сам пакет корректен. Это может произойти из-за переходных обстоятельств или по причине ошибки в LSR, который должен быть следующим шагом пакета.

    Может показаться привлекательным в таких случаях ликвидировать стек меток и попытаться переадресовать пакеты далее методами традиционной маршрутизации, базирующимися на содержимом заголовка сетевого уровня. Однако это небезопасная процедура.

  • Если пакет попадает в LSP, маршрутизируемый явно, это может привести к образованию петель.
  • Заголовок пакета сетевого уровня не может содержать достаточно информации, чтобы позволить данному конкретному LSR переадресовать пакет корректно.
  • Если нельзя определить, что ни одна из этих ситуаций не реализована, единственно безопасной процедурой может стать отбрасывания пакета.

    Время жизни (TTL)

    При традиционной IP-переадресации каждый пакет имеет в заголовке значение поля TTL (Time To Live). Когда бы пакет ни проходил через маршрутизатор, его TTL уменьшается на 1. Если TTL достигает 0 прежде, чем пакет достигнет места назначения, он отбрасывается.

    Это обеспечивает некоторый уровень защиты против петлевых маршрутов, которые могут существовать из-за ошибок конфигурации или по причине ошибки или медленной сходимости алгоритма маршрутизации. TTL иногда используется для других функций, таких, как определение зоны действия мультикастинга и поддержка команды traceroute. Это означает, что имеется две проблемы, связанные с TTL, которые MPLS должен решить:

    (i) TTL как способ подавления зацикливания;

    (ii) TTL как метод реализации других функций, например, ограничения области распространения пакета.

    Когда пакет движется по LSP, он должен появляться с тем же значением TTL, которое он имел бы, если бы проходил через ту же последовательность маршрутизаторов, без коммутации меток. Если пакет проходит через иерархию LSP, полное число пройденных шагов-LSR должно быть отражено в его значении TTL.

    Способ, которым обрабатывается поле TTL, может варьироваться в зависимости от того, размещены ли значения меток MPLS в прослойке между заголовками [MPLS-SHIM] или метки MPLS транспортируются в заголовке L2, таком, как заголовок ATM [MPLS-ATM] или Frame Relay [MPLSFRMRLY].

    Если значения меток вставлены в прослойку, которая размещается между канальным и сетевым заголовками, тогда эта прослойка должна иметь поле TTL, которое должно заполняться так же, как аналогичное поле заголовка сетевого уровня, декрементироваться при каждом шаге LSR и копироваться в TTL-поле заголовка сетевого уровня, когда пакет покидает LSP.

    Если значения меток записаны в заголовке канального уровня (например, поле VPI/VCI в заголовке AAL5 ATM), помеченные пакеты переадресуются переключателем уровня L2 (например, ATM-переключателем), а канальный уровень сам не имеет поля TTL, тогда будет невозможно декрементировать TTL при каждом шаге LSR. Сегмент LSP, который состоит из последовательности LSR, не способных декрементировать TTL пакетов, будет называться сегментом non-TTL LSP.

    Когда пакет выходит из сегмента non-TTL LSP, он должен получить TTL, отвечающее числу шагов LSR, которые он проходит. В уникастном случае это может быть достигнуто путем транспортировки длины LSP входным узлам, позволяя входным устройствам декрементировать значение TTL прежде, чем переадресовывать пакеты в non-TTL LSP сегмент.

    Иногда это может быть определено на входе сегмента non-TTL LSP так, что соответствующее значение TTL пакета достигнет нуля, прежде чем пакет дойдет выхода сегмента nonTTL LSP. В этом случае LSR на входе non-TTL LSP сегмента не должен коммутировать пакеты по меткам. Это означает, что должны быть разработаны специальные процедуры для поддержки функциональности traceroute, например, пакеты traceroute могут переадресовываться по стандартной схеме шаг-за-шагом.

    Контроль петель

    В nonTTL LSP сегменте, по определению, TTL не может использоваться для предотвращения петель маршрута. Важность контроля циклических путей зависит от конкретного оборудования, применяемого для реализации LSR-функций в пределах nonTTL сегмента LSP.

    Предположим, например, что для коммутационных целей в MPLS используются ATM-переключатели, с метками, транспортируемыми в поле VPI/VCI. Так как ATM-коммутаторы не могут декрементировать TTL, здесь нет защиты против появления циклических маршрутов. Если оборудование ATM способно обеспечить хороший доступ к буферному пулу для входящих ячеек, имеющих разные значения полей VPI/VCI, петли не могут иметь негативного воздействия на остальной трафик. Если оборудование ATM не может обеспечить хороший доступ к буферам, тогда переходные петли могут вызвать серьезную деградацию эксплуатационных характеристик LSR.

    Даже в случае хорошего доступа к буферу, целесообразно иметь некоторые средства детектирования петель, которые имеют длину больше определенной. Кроме того, даже когда TTL и/или справедливая организация очередей в виртуальных каналах предоставляет возможности для сохранения петель, может быть желательно по возможности избегать установления LSP с петлями. Все LSR, которые могут быть связаны с сегментами nonTTL LSP, будут должны поддерживать общую методику детектирования петель; однако использование детектирования петель является опционным. Методика детектирования петель специфицирована в [MPLSATM] и [MPLSLDP].

    Кодирование меток

    Чтобы передавать стек меток вместе с пакетом, необходимо определить его конкретную структуру. Архитектура поддерживает несколько различных структур. Выбор структуры стека зависит от конкретного типа оборудования, используемого для переадресации пакетов.

    MPLS-специфичное оборудование и/или программное обеспечение

    Если для переадресации помеченных пакетов применяются MPLS-оборудование и/или программы, наиболее очевидным способом представления стека меток является определение нового протокола, который будет использоваться в пределах прослойки между заголовками канального и сетевого уровней. Эта прокладка могла бы реально быть инкапсуляцией пакетов сетевого уровня. Она является протокольно независимой, такой, чтобы подходить для инкапсуляции любого сетевого уровня. Мы будем называть это общей MPLS-инкапсуляцией.

    MPLS-инкапсуляция будет, в свою очередь, инкапсулирована с привлечением протокола канального уровня. Общая MPLS-инкапсуляция специфицирована в [MPLSSHIM].

    ATM-коммутаторы в качестве LSR

    Процедуры переадресации MPLS подобны тем, что применяются в ATM-коммутаторах. ATM-коммутаторы используют входной порт и значение поля VPI/VCI входящего пакета в качестве индекса в таблице коммутации (crossconnect), из которой они получают номер выходного порта и выходного значения VPI/VCI. Следовательно, если одна или более меток могут быть занесены непосредственно в поля заголовков, которые доступны коммутаторам, тогда коммутаторы после модификации программ смогут быть использованы в качестве LSR. Мы будем называть такие устройства ATM-LSR. Имеется три способа представления меток в заголовках ячеек ATM (предпочтительно работать с AAL5).

  • SVC-кодирование

    Используется поле VPI/VCI для записи метки, размещенной на верху стека. Эта методика может применяться в любой сети. Посредством этой методики LSP реализуется как ATM SVC, а протокол рассылки меток становится сигнальным протоколом ATM. ATM-LSR не может выполнять команды push или pop для стека меток.

  • SVP-кодирование

    Используется поле VPI для записи метки, размещенной на верху стека, а поле VCI — для записи второй метки стека, если такая существует. Эта методика имеет некоторые преимущества по отношению к предыдущей: здесь возможно переключение виртуальных каналов с помощью ATM VPswitching. То есть, LSP реализуются как ATM SVP.

    Однако эта методика не может применяться всегда. Если сеть включает виртуальный маршрут ATM через ATM-сеть, не поддерживающую MPLS, тогда поле VPI не обязательно доступно для использования в MPLS.

    Когда используется этот метод представления, ATM-LSR на выходе виртуального канала VP эффективно реализует операцию pop.

  • Многоточечное кодирование SVP

    Для размещения метки на вершине стека используется поле VPI, а для размещения второй метки стека, если таковая имеется, — часть поля VCI, остальная часть поля VCI служит для идентификации входа LSP. Если применяется эта технология, традиционные возможности ATM VP-коммутации могут использоваться для построения виртуальных маршрутов мультиточка-точка. Ячейки от разных пакетов будут нести тогда разные значения VCI. Можно осуществлять объединение меток, не получая проблем перекрытия ячеек, для ATM-коммутаторов, реализующих виртуальные маршруты мультиточка-точка, но не имеющих возможностей объединения VC.

    Эта методика зависит от того, можно ли присвоить 16-битовые значения VCI каждому ATM-коммутатору так, что ни одно значение VCI не будет соответствовать двум разным коммутаторам.

    Если имеется больше меток в стеке, чем места в заголовке ATM, тогда ATM-представление должно комбинироваться с общей инкапсуляцией.

  • Совместимость методов кодирования

    Если <R1, R2, R3> является сегментом LSP, возможно, что R1 будет использовать одно представление стека меток при передачи пакета P в R2 — но R2 будет использовать другое представление при передаче пакета P в R3.

    Вообще, архитектура MPLS поддерживает LSP с разным представлением стека меток на разных шагах маршрута.

    Следовательно, когда мы обсуждаем процедуры обработки помеченных пакетов, мы делаем это в терминологии взаимодействия со стеком меток. Когда приходит помеченный пакет, LSR должен декодировать его для определения текущего значения метки в стеке, затем должен преобразовать стек, чтобы определить новое значение метки перед отправкой пакета в следующий узел маршрута.

    К сожалению, ATM-коммутаторы не имеют возможности осуществлять преобразование из одного представления стека меток в другое. Архитектура MPLS требует, чтобы, когда два ATM-коммутатора оказываются последовательными LSR на уровне m LSP, эти два ATM-коммутатора использовали одно и то же представление стека меток.

    Естественно будут существовать MPLS-сети, которые содержат комбинацию ATM-коммутаторов, работающих в качестве LSR, и других LSR, использующих MPLS заголовок-прокладку. В таких сетях могут быть некоторые LSR, имеющие ATM-интерфейсы, а также интерфейсы MPLS Shim (прослойки). Это лишь один пример LSR с различным представлением стека меток. Такие LSR могут осуществлять подмену структур стека меток из представления ATM на входном интерфейсе в MPLS формат стека на выходном.

    Объединение меток

    Предположим, что LSR связал несколько входящих меток с конкретным FEC. При переадресации пакетов в этом FEC хотелось бы иметь одну выходную метку, которая используется всеми такими пакетами. Тот факт, что два разных пакета класса FEC приходят с разными входными метками, является нерелевантным. Желательно переадресовывать их с одной и той же выходной меткой. Реализация этого называется объединением меток. Будем говорить, что LSR способен объединять метки, если он может получать два пакета от разных входных интерфейсов и/или с разными метками, а посылать оба пакета с одной и той же выходной меткой. Раз пакеты переданы, информация о том, что они пришли от разных интерфейсов и/или с разными входными метками, теряется.

    Будем считать, что LSR не способен объединять метки, если для любых двух пакетов, которые приходят из разных интерфейсов или с разными метками, пакеты должны быть либо переданы через разные интерфейсы, либо имеют разные выходные метки. ATM-LSR, использующие SVC- или SVP-представления, не могут реализовывать объединение меток.

    Когда некоторый LSR не может выполнить объединение меток, тогда, если два пакета в одном и том же FEC приходят с разными входными метками, они должны быть переадресованы с разными выходными метками. При объединении меток число выходных меток на один FEC должно быть равно 1. Без объединения меток число выходных меток на один FEC может равняться числу узлов в сети.

    При объединении меток число входящих меток на FEC, которое необходимо конкретному LSR, никогда не превосходит числа смежных дистрибьюторов. В отсутствии объединения меток число входящих меток на один FEC достигает числа вышестоящих узлов, которые переадресуют трафик FEC данному LSR. В действительности, для LSR трудно даже определить, сколько входящих меток он должен поддерживать для конкретного FEC.

    Архитектура MPLS приспосабливает как объединяющие, так и не объединяющие LSR, но допускает также возможность, что имеются LSR, не поддерживающие коммутацию меток.

    Не объединяющие LSR

    Процедура переадресации MPLS очень схожа с используемой в ATM и Frame Relay. То есть, приходит блок данных, отыскивается метка в коммутационной таблице (VPI/VCI или DLCI), на основе результата поиска выбирается выходной порт, а значение метки переписывается.

    В действительности, можно использовать такие технологии для переадресации MPLS. Протокол рассылки меток может быть использован в качестве сигнального протокола для формирования коммутационных таблиц. К сожалению, эти технологии не обязательно поддерживают возможности объединения меток. В ATM, если попытаться осуществить объединение меток, в результате можно получить перекрытие ячеек от различных пакетов. Если ячейки от разных пакетов оказываются перекрытыми, невозможно осуществить сборку пакетов. Некоторые коммутаторы Frame Relay используют коммутацию ячеек на своих внутренних шинах (backplane). Эти коммутаторы могут также быть неспособными поддерживать объединение меток, по той же причине: ячейки разных пакетов могут перекрываться и сборка исходных пакетов станет невозможной.

    Предлагается два решения этой проблемы. Первое: MPLS будет включать процедуры, которые допускают применение не объединяющих LSR. Второе: MPLS будет поддерживать процедуры, которые позволяют определенным ATM-коммутаторам функционировать как LSR, способным объединять метки.

    Так как MPLS поддерживает объединяющие и не объединяющие LSR, MPLS содержит также процедуры, которые гарантируют корректное взаимодействие такого оборудования и программ.

    Метки для объединяющих и не объединяющих LSR

    Вышестоящий LSR, который поддерживает объединение меток, должен посылать только одну метку на FEC. Вышестоящий сосед, который не поддерживает объединение меток, должен посылать несколько меток на один FEC. Однако, не существует способа узнать заранее, сколько нужно меток. Это будет зависеть от того, сколько имеется вышестоящих LSR для оговоренного FEC.

    В архитектуре MPLS, когда определенный вышестоящий сосед не поддерживает объединение меток, ему не посылаются какие-либо метки для заданного FEC, если только он напрямую не запрашивает метку для данного FEC. Вышестоящий сосед может сделать несколько таких запросов и получать каждый раз новую метку. Когда нижестоящий сосед получает такой запрос сверху, а сам он не поддерживает объединения меток, тогда он должен в свою очередь запросить у своего нижестоящего соседа новую метку для заданного FEC.

    Возможно, что существуют какие-то узлы, которые поддерживают объединение меток, но могут объединить лишь ограниченное число входящих меток в одну исходящую. Предположим, например, что из-за некоторых аппаратных ограничений узел может объединить четыре входящие метки в одну исходящую. Предположим, что он получил шесть меток, пришедших для данного FEC. В этом случае этот узел может объединить их в две исходящие метки.

    Объединение потоков в ATM. Методы исключения перекрытия ячеек

    Существует несколько методов, исключающих проблемы перекрытия ячеек в ATM и, таким образом, позволяющих ATM-коммутаторам поддерживать объединение потоков данных.

  • Объединение VP, использующее мультиточечное представление SVP

    Когда применяется объединение VP, несколько виртуальных путей объединяются в один путь, но пакеты от разных отправителей отличаются разными VCI в пределах данного VP.

  • Объединение VC

    Когда используется объединение VC, коммутаторы должны буферизовать ячейки пакета до тех пор, пока не будет принят весь пакет (это может быть определено путем просмотра индикатора конца кадра для AAL5).

  • Объединение VP имеет преимущество в том, что оно совместимо с подавляющим числом реализаций ATM-коммутаторов. Благодаря этому, объединение VP может с большей вероятностью использоваться в существующих сетях. В отличие от объединения VC, объединение VP не приводит к каким-либо задержкам в точках объединения, а также не накладывает никаких требований на буферы, — однако требует координации пространства VCI в пределах VP. Существует несколько способов реализации этого требования.

    Компромисс между совместимостью с существующим оборудованием, сложностью протокола и масштабируемостью предполагает, что желательна поддержка протоколом MPLS объединения как VP, так и VC. Для того, чтобы реализовать это, каждый ATM-коммутатор, участвующий в MPLS, должен знать, могут ли ближайшие ATM соседи осуществлять объединение VP или VC.

    Взаимодействие: объединение VC, объединение VP и отсутствие объединения

    Взаимодействие различных форм объединения в ATM наиболее просто описать на примере взаимодействия систем с объединением VC и без него.

    В случае, когда соединены узлы, поддерживающие и не поддерживающие объединение VC, переадресация ячеек базируется во всех вариантах на VC (т.e., на соединении VPI и VCI). Для каждого вышестоящего узла, осуществляющего объединение VC, нужен только один набор VPI/VCI (это сходно с требованиями для одиночной метки в случае работы в среде кадров). Если вышестоящий сосед не может осуществлять объединение, то он будет требовать одного VPI/VCI на поток для себя плюс достаточное число VPI/VCI, чтобы осуществить передачу вышестоящему соседу. Необходимое число будет определено путем разрешения вышестоящим узлам посылать запросы дополнительных VPI/VCI своим нижестоящим соседям.

    Аналогично можно поддержать узлы, которые выполняют объединение VP. В этом случае объединяющий VP узел, вместо посылки запроса одного или нескольких VPI/VCI нижестоящему соседу, может запросить один VP (идентифицируемый посредством VPI), но несколько VCI в пределах VP. Кроме того, предположим, что узел, не поддерживающий объединение, расположен ниже по отношению к двум другим узлам VP. Этот узел может нуждаться в запросе одного VPI/VCI (для трафика, исходящего именно из этого узла) плюс два VP (по одному для каждого вышестоящего узла), ассоциированные со специфицированными наборами VCI (в соответствии с запросом от вышестоящего узла).

    Чтобы поддерживать узлы, объединяющие и не объединяющие VP и VC, необходимо разрешить вышестоящим узлам запрашивать комбинацию из нуля или более идентификаторов VC (состоящих из VPI/VCI) плюс нуль или более VP (идентифицируемых VPI), каждый из которых содержит специфицированное число VC (идентифицированное набором VCI, которые работают в пределах VP). Узлы, объединяющие VP, затребовали бы один VP, содержащий VCI, для исходящего трафика (если таковой имеется) плюс VCI для каждого VC, запрошенного свыше (вне зависимости от того, является или нет VC частью, содержащей VP). Узлы, объединяющие VC, затребовали бы только один VPI/VCI (так как они могут объединить весь трафик от вышестоящих узлов в один VC). Узлы, не поддерживающие объединение, передали бы любые запросы, полученные сверху, плюс запрос VPI/VCI для трафика, генерируемого ими самими (если таковой имеется).

    Туннели и иерархия

    Иногда маршрутизатор Ru предпринимает действия, чтобы доставить определенный пакет другому маршрутизатору Rd, даже если Ru и Rd не являются смежными углами на пути пакета, а Rd не является местом назначения пакета. Это может быть сделано, например, путем инкапсуляции пакета в пакет сетевого уровня, местом назначения которого является Rd. Так создается туннель от Ru к Rd .

    Если туннелированный пакет следует маршрутом шаг-за-шагом от Ru к Rd , мы говорим, что это "туннель, маршрутизированный шаг-за-шагом", чье начало находится в Ru и чьим концом является Rd.

    Если туннелированный пакет транспортируется из Ru в Rd по пути, отличному от маршрута шаг-за-шагом, мы говорим, что это туннель, маршрутизированный явно с начальной точкой в Ru и конечной — в Rd. Например, мы можем послать пакет через туннель, маршрутизированный явно, путем инкапсуляции его в пакет, маршрутизируемый отправителем.

    Имеется возможность реализовать туннель в виде LSP и использовать коммутацию меток, а не инкапсуляцию сетевого уровня, чтобы заставить пакет идти через туннель. Туннель будет иметь вид LSP <R1, ..., Rn >, где R1 является началом туннеля, а Rn — его концом. Это называется LSP-туннелем.

    Набор пакетов, которые посланы через LSP-туннель, представляет FEC, а каждый LSR в туннеле должен установить ассоциацию между меткой и FEC (т.e., нужно присвоить туннелю определенную метку). Критерий установления соответствия пакета LSP-туннелю является внутренним вопросом начальной точки туннеля. Чтобы направить пакет в LSP-туннель, передающий конец туннеля вводит метку туннеля в стек и посылает помеченный пакет узлу следующего шага туннеля.

    Если для конечной точки туннеля не нужно определять, какой пакет получен через туннель, как это обсуждалось выше, то стек меток может быть очищен на предпоследнем LSR туннеля.

    LSP-туннель, маршрутизированный шаг-за-шагом, представляет собой туннель, который реализован в виде LSP, маршрутизированного по схеме шаг-за-шагом. LSP-туннелем, маршрутизированным явно, является LSP, который маршрутизирован явно.

    Иерархия: LSP туннели в LSP

    Рассмотрим LSP <R1, R2, R3, R4>. Предположим, что R1 получил непомеченный пакет P и заносит метку в его стек, чтобы пакет следовал заданным путем шаг-за-шагом. Предположим далее, что R2 и R3 не связаны непосредственно, но являются виртуальными соседями, так как представляют собой конечные точки LSP-туннеля. Итак, действительная последовательность LSR, через которые проходит P, соответствует <R1, R2, R21, R22, R23, R3, R4>. Когда P транспортируется из R1 в R2, он имеет глубину стека, равную 1. R2, коммутирующий метки, определяет, что P должен войти в туннель. R2 сначала замещает входную метку меткой, имеющей смысл для R3, и затем заносит ее в стек. Эта метка второго уровня имеет значение, понятное R21. Коммутация осуществляется для метки на уровне 2 устройствами R21, R22, R23. R23, который является предпоследним узлом в туннеле R2-R3, удаляет метку из стека до того, как будет выполнена переадресация пакета в R3. Когда R3 видит пакет P, P имеет только метку уровня 1 — и покидает ту ннель. Так как R3 является предпоследним шагом P в LSP, он удаляет метку из стека, а R4 получает P непомеченным. Механизм стека меток допускает любую глубину вложения LSP-туннелей.

    Иерархия и партнерство в рассылке меток

    Предположим, что пакет P транспортируется на уровне 1 LSP <R1, R 2, R3, R4> и при транспортировке из R2 в R3 движется по LSP уровня 2 <R2, R21, R22, R3>. С точки зрения LSP уровня 2, партером рассылки меток R2 является R21. С точки зрения LSP уровня 1, партерами рассылки меток R2 являются R1 и R3. Могут существовать партеры обмена метками на каждом уровне иерархии. В разделе "LSP-туннелирование между пограничными BGP маршрутизаторами" рассмотрены некоторые способы реализации этой иерархии.Заметим, что в этом примере R2 и R21 должны быть IGP-соседями, но R2 и R3 не обязательно ими являются.

    Когда два LSR являются соседними IGP, мы называем их локальными партнерами рассылки меток. Когда два LSR могут быть партнерами рассылки меток, но не являются соседними IGP, мы называем их удаленными партнерами рассылки меток. В выше приведенном примере R2 и R21 являются локальными партнерами рассылки меток, а R2 и R3 являются удаленными партнерами рассылки меток.

    Архитектура MPLS поддерживает два способа рассылки меток на различных уровнях иерархии: явное и неявное партнерство (Peering).

    Рассылка меток (пиринг) осуществляется путем обмена протокольными сообщениями, которые адресованы партнеру. Возможен обмен метками и с удаленным партнером. Это делается одним из двух способов.

  • Явное партнерство

    При явном партнерстве метки пересылаются партнеру в протокольных сообщениях так же, как это делается при локальном обмене. Эта методика наиболее полезна, когда число удаленных партнеров мало, либо число ассоциаций высокого уровня велико, либо удаленные партнеры обмена метками размещены в удаленных областях или доменах. Примеры использования явного партнерства представлены ниже.

  • Неявное партнерство

    При неявном партнерстве протокольные сообщения рассылки меток, адресованные одному партнеру, не посылаются. Скорее, чтобы разослать метки высокого уровня удаленным партнерам, метка представляется в виде атрибута метки более низкого уровня, а затем производится рассылка метки низкого уровня вместе с этим атрибутом местным партнерам. Локальные партнеры обмена метками рассылают полученные данные дальше. Этот процесс продолжается до тех пор, пока информация не достигнет удаленных партнеров.

  • Эта техника наиболее полезна, когда число удаленных партнеров обмена метками велико. Неявное партнерство не требует сетки партнеров n-квадрат, чтобы разослать метки удаленным партнерам, так как имеется подстраховка за счет локального обмена информацией. Однако неявное партнерство требует, чтобы промежуточные узлы запоминали информацию, в которой они могут быть заинтересованы.

    Транспортировка протокольных сообщений рассылки меток

    Протокол рассылки меток используется между узлами в сети MPLS для установления и поддержания привязки меток. Чтобы MPLS работал корректно, информация, сопряженная с рассылкой меток, должна рассылаться совершенно надежно, а протокольные сообщения рассылки меток, имеющие отношение к определенному FEC, должны посылаться в определенном порядке. Управление потоком также желательно, так как имеется возможность транспортировки нескольких сообщений с метками в одной дейтограмме.

    Одним из способов достижения цели является использование TCP в качестве базового транспортного протокола, как это делается в [MPLSLDP] и [MPLSBGP].

    Зачем нужно более одного протокола рассылки меток?

    Данная архитектура не устанавливает жестких правил для выбора того, какой протокол рассылки меток следует использовать при конкретных обстоятельствах. Однако имеется возможность представить некоторые соображения.

    BGP и LDP

    Во многих сценариях желательно установить связь между метками и FEC, который может быть сопряжен с маршрутами и адресными префиксами.

    Протокол BGP рассылает маршруты, и, если BGP-отправителю нужно разослать метки своим BGP-партнерам, использование BGP для целей рассылки меток (смотри [MPLSBGP]) имеет ряд преимуществ. В частности, это позволяет BGP рефлекторам маршрутов рассылать метки, таким образом обеспечивая лучшую масштабируемость по сравнению с использованием LDP.

    Метки для RSVP Flowspecs

    Когда применяется RSVP при резервировании ресурсов для конкретных потоков, может быть желательно помечать пакеты в этих потоках, так что не нужно будет использовать RSVP filterspec в каждом из узлов. Осуществление рассылки меток в рамках RSVP в качестве части процесса формирования пути и резервирования ресурсов является наиболее эффективным методом решения проблемы.

    Метки для явно маршрутизируемых LSP

    В некоторых приложениях MPLS, в частности, сопряженных с управлением трафиком (ТЕ), желательно формировать пути, маршрутизированные явно от точки входа до точки выхода. Хотелось бы также осуществлять резервирование ресурсов вдоль всего пути. Можно представить два подхода.

  • Начать с существующего протокола, который используется при установлении резервирования, и расширить его в направлении поддержки явной маршрутизации и рассылки меток.
  • Начать с существующего протокола, который используется для рассылки меток, и расширить его в сторону явной маршрутизации и резервирования ресурсов.
  • Первый подход реализован в протоколе, описанном в [MPLSRSVPTUNNELS], второй специфицирован в [MPLSCRLDP].

    Некоторые применения MPLS. MPLS и трафик, маршрутизируемый шаг-за-шагом

    Ряд приложений MPLS требуют, чтобы пакеты с определенной меткой направлялись одним и тем же путем, маршрутизированным шаг-за-шагом. Этот путь будет использоваться для пакетов с адресом, который специфицирован в соответствующем поле заголовка сетевого уровня.

    Метки для адресных префиксов

    Вообще, маршрутизатор R определяет следующий шаг для пакета P путем нахождения подходящего адресного префикса X в своей маршрутной таблице. То есть, пакеты в данном FEC — это пакеты, которые соответствуют заданному адресному префиксу в маршрутной таблице R. В этом случае FEC может быть идентифицирован адресным префиксом.

    Заметим, что пакет P может быть приписан к FEC F, а FEC F может быть идентифицирован адресным префиксом X, даже если адрес места назначения P не согласуется с X.

    Рассылка меток для адресных префиксов. Партнеры рассылки меток для адресного префикса

    LSR R1 и R2 считаются партнерами рассылки меток для адресного префикса X, если и только если выполнено одно из следующих условий:

  • маршрут R1 к X является маршрутом, который прислан определенным IGP, а R2 является соседом R1 по данным IGP;
  • маршрут R1 к X является маршрутом, который прислан в какой-то момент в результате работы алгоритма маршрутизации A1, и этот маршрут рассылается алгоритмом маршрутизации A2, а R2 является соседом R1 согласно A2;
  • R1 является выходной точкой LSP-туннеля, который находится внутри другого LSP, а R2 является входной точкой этого туннеля. R1 и R2 являются клиентами IGP и находятся в той же области IGP (если данный IGP имеет области), а маршрут от R1 к X был получен через IGP или в результате рассылки R1 данному IGP;
  • Маршрут R1 к X является маршрутом, который прислан BGP, а R2 является BGP-партнером R1.
  • Вообще, эти правила гарантируют, что, если маршрут до определенного адресного префикса рассылается через IGP, то партнеры рассылки меток для данного адресного префикса являются IGP-соседями. Если маршрут определенного адресного префикса рассылается через BGP, партнеры рассылки меток для данного адресного префикса являются BGP партнерами. В других случаях LSP-туннелирования конечные точки туннеля являются партнерами по рассылке меток.

    Рассылаемые метки

    Чтобы использовать MPLS для переадресации пакетов согласно маршруту шаг-за-шагом, соответствующему какому-либо адресному префиксу, каждый LSR должен:

  • связать одну или более меток с каждым адресным префиксом, который обнаружен в маршрутной таблице;
  • для каждого такого адресного префикса X использовать протокол рассылки меток для уведомления партнеров (в рамках Х ) о существовании ассоциации метки с данным префиксом.

    Существует также обстоятельство, при котором LSR должен рассылать ассоциации меток для адресного префикса, даже если он не является LSR, который установил связь между меткой и префиксом:

  • если R1 использует BGP для рассылки маршрута до X, называя некоторый другой LSR R2 в качестве следующего BGP шага к X, и если R1 знает, что R2 присвоена метка L, тогда R1 должен разослать уведомление об ассоциации L и X всем BGP-партнерам, которым он рассылает это маршрут.
  • Эти правила гарантируют, что метки, ассоциированные с адресным префиксом, которые соответствуют маршрутам BGP, рассылаются IGP-соседям, если и только если BGP-маршруты разосланы IGP. Другими словами, метки, привязанные к BGP-маршрутам, рассылаются только другим BGP-агентам.

    Эти правила имеют целью указать, какие ассоциации меток должны рассылаться данным LSR другим LSR.

    Использование маршрутов шаг-за-шагом в качестве LSP

    Если путь шаг-за-шагом, которому пакет P должен следовать, характеризуется <R1, ..., Rn >, тогда < R1, ..., Rn> может быть LSP до тех пор, пока:

  • существует один адресный префикс X, такой, что для всех i, $$1 \le i<n $$, X является наилучшим соответствием в маршрутной таблице Ri для адреса места назначения P ;
  • для всех i, 1<i<n, Ri установил соответствие метки и X и разослал эту метку всем R[i-1].
  • Заметим, что LSP пакета может простираться только до ближайшего маршрутизатора, чья маршрутная таблица содержит запись с префиксом, имеющим наилучшее соответствие для адреса места назначения пакета. В этой точке LSP должен завершиться, а алгоритм поиска наилучшего соответствия должен быть запущен заново.

    Предположим, например, что пакет P, с адресом места назначения 10.2.153.178 должен двигаться от R1 к R2 и далее к R3. Предположим также, что R2 анонсирует адресный префикс 10.2/16 для R1, но R3 анонсирует 10.2.153/23, 10.2.154/23 и 10.2/16 до R2. То есть, R2 анонсирует агрегатный маршрут для R1. В этой ситуации пакет P может быть коммутируемым по метке до тех пор, пока он не достигнет R2, но так как R2 осуществил агрегатирование маршрутов, он должен запустить алгоритм поиска наилучшего соответствия, чтобы найти FEC для P.

    Конец LSP и прокси конец LSP

    LSR R считается конечным LSR LSP для адресного префикса X, если и только если выполнено одно из следующих условий:

  • R имеет адрес Y, такой, что X является адресным префиксом в маршрутной таблице R, который наилучшим образом соответствует Y; или
  • R содержит в своей маршрутной таблице один или более адресных префиксов Y, таких, что X является подходящей начальной субстрокой Y, но "предыдущие шаги LSP" R для X не содержат никакого адресного префикса Y. То есть, R является точкой ликвидации агрегатирования для адресного префикса X .
  • LSR R1 считается "прокси концом LSP" LSR для адресного префикса X, если и только если:

  • следующим шагом R1 для X служит R2, а R1 и R2 не являются партнерами по рассылке меток с точки зрения X (возможно, потому, что R2 не поддерживает MPLS); или
  • R1 был сконфигурирован, чтобы работать в качестве прокси конца LSP для X
  • Определение LSP позволяет концу LSP быть узлом, который не поддерживает MPLS. В этом случае предпоследний узел в LSP является прокси выходным.

    Неявная метка NULL

    Неявная метка NULL представляет собой метку со специальной семантикой, которую LSR может связать с адресным префиксом. Если LSR Ru после получения справки в ILM видит, что помеченный пакет P должен быть переадресован следующему Rd, но Rd разослал ассоциацию неявной метки NULL с соответствующим адресным префиксом, тогда вместо того, чтобы заменить значение метки на вершине стека, Ru опустошает стек меток, а затем переадресует полученный пакет в Rd.

    LSR Rd рассылает ассоциацию неявной метки NULL и адресного префикса X в LSR Ru, если и только если:

  • Rd посылает Ru ассоциацию метки для X, и
  • Rd знает, что Ru может поддерживать неявные метки NULL (т.e., что он может очистить стек меток), и
  • Rd является концом LSP (а не прокси концом) для X.
  • Это заставляет предпоследний LSR на LSP очистить стек меток. Это вполне приемлемо, если конец LSP является концом MPLS для X, — далее, если предпоследний LSR не очистит стек меток, конечный узел LSP будет должен просмотреть метку, извлечь ее из стека и затем посмотреть следующую метку (или просмотреть адрес L3, если меток больше нет). При выполнении предпоследним LSR команды pop для стека меток, конец LSP избавляется от необходимости просмотра двух меток для того, чтобы принять свое решение переадресации.

    Однако, если предпоследним LSR является ATM-коммутатор, он может не иметь возможности выполнить команду pop для стека меток. Следовательно, может быть послана ассоциация неявной метки в LSR, который может поддерживать эту функцию.

    Если предпоследний LSR в LSP для адресного префикса X является прокси концом LSP, он действует, как если бы конец LSP разослал ассоциацию неявной метки NULL для X.

    Опция: присвоение метки Egress Targeted

    Существуют ситуации, в которых Ri начала LSP, знает, что пакеты нескольких разных FEC должны следовать одним и тем же LSP, завершающимся, скажем, конечным Re. В этом случае корректная маршрутизация может быть реализована с использованием одной метки для всех таких FEC, и совершенно необязательно иметь отличающиеся метки для каждого FEC, если и только если выполняются следующие условия:

  • адрес LSR Re сам находится в маршрутной таблице (host route), и
  • существует некоторый способ для Ri определить, что Re является концом LSP для всех пакетов в конкретном наборе FEC.
  • Затем Ri может связать одну метку со всеми элементами набора FEC. Это называется EgressTargeted Label Assignment (присвоение метки по концу маршрута).

    Как может LSR Ri определить, что LSR Re является концом LSP для всех пакетов в конкретном FEC? Существует несколько возможных способов.

  • Если сеть реализует алгоритм маршрутизации состояния канала, а все узлы в области поддерживают MPLS, тогда алгоритм маршрутизации предоставляет Ri достаточно информации, чтобы определить маршрутизаторы, через которые пакеты с данным FEC должны покинуть домен маршрутизации или область.
  • Если сеть реализует BGP, Ri может определить, какие пакеты с заданным FEC должны покинуть сеть через некоторый конкретный маршрутизатор, который является BGP Next Hop для этого FEC.
  • Можно использовать протокол рассылки меток, чтобы передать информацию о том, какие адресные префиксы подключены к какому концевому LSR. Преимущество этого метода: отсутствие зависимости от наличия маршрутизации по состоянию канала.
  • Если используется присвоение меток egress-targeted, то число меток, которые необходимо поддерживать во всей сети может быть сокращено. Это может быть важно в случае, когда используются аппаратные переключатели для реализации MPLS, а коммутирующее оборудование может поддерживать ограниченное число меток.

    Возможным подходом могло бы быть конфигурирование сети для использования присвоения меток egress-targeted по умолчанию, но при конфигурации конкретных LSR не применяют присвоение меток egress-targeted для одного или более адресных префиксов, для которых он является концом LSP. Введем следующее правило:

    • если какой-то LSR не является концом LSP для некоторого набора адресных префиксов, тогда он должен присваивать метки адресным префиксам так же, как это делается узлом следующего шага LSP для этих адресных префиксов. То есть: предположим, Rd является маршрутизатором следующего шага (Ru) LSP для адресного префикса X1 и X2. Если Rd приписывает ту же метку X1 и X2, Ru должен сделать то же самое. Если Rd присваивает разные метки X1 и X2, тогда и Ru должен это сделать.

    Например, предположим, что желательно присвоить метку egress-targeted по умолчанию, но также присвоить разные метки тем адресным префиксам, для которых существует несколько возможных концов LSP (т.e., для тех адресных префиксов, которые являются multihomed). Можно сконфигурировать все LSR для присвоения меток egress-targeted и затем конфигурировать LSR, чтобы приписать разные метки тем адресным префиксам, которые являются multihomed. Для конкретного адресного префикса multihomed X было бы нужно сконфигурировать LSR, которые являются либо концами LSP, либо прокси концами LSP для X.

    Важно заметить, что, когда Ru и Rd являются смежными LSR в LSP для X1 и X2, переадресация будет выполнена корректно, если Ru присваивает разные метки X1 и X2, в то время как Rd присваивает одну метку для них обоих. Это лишь означает, что R1 будет устанавливать соответствие между разными входными метками и одной выходной.

    Аналогично, если Rd присваивает разные метки X1 и X2, но Ru присваивает им обоим метку, соответствующую адресу конца LSP или прокси конца, то переадресация будет, тем не менее, осуществляться корректно. Ru будет лишь устанавливать соответствие между входной меткой и меткой, которую сформировал Rd для адреса конца LSP.

    MPLS и LSP, маршрутизируемые явно

    Существует несколько причин, почему желательно использовать явную маршрутизацию, а не схему шаг-за-шагом. Например, это позволяет маршрутам основываться на административной политике, допускать маршруты, которые формируют LSP согласно соображениям управления трафиком [MPLS-TRFENG].

    LSP-туннели, маршрутизируемые явно

    В некоторых ситуациях сетевые администраторы могут захотеть переадресовывать некоторые классы трафика по определенным специфицированным заранее маршрутам, и эти пути отличаются от маршрутов шаг-за-шагом, по которым шел трафик первоначально. Это может быть сделано для поддержки политики маршрутизации или для управления трафиком (ТЕ). Явный маршрут может быть сконфигурирован или он может быть определен динамически посредством, например, маршрутизации на основе ограничений. Для этого нужны:

  • средства отбора пакетов, которые должны быть посланы в LSP-туннель, маршрутизированный явно;
  • средства формирования маршрутизированного явно LSP-туннеля;
  • средства, гарантирующие, что пакеты, посланные в туннель, не будут переадресованы принимающей стороной туннеля в направлении передающей стороны (отсутствие петель).
  • Если передающий конец туннеля хочет поместить помеченный пакет в туннель, он должен сначала заменить метку на вершине стека меткой, присланной принимающей стороной туннеля. Затем он должен ввести в стек метку, которая соответствует самому туннелю и прислана маршрутизатором следующего шага в туннеле. Чтобы разрешить это, концы туннеля должны быть явными партнерами по обмену метками.

    Стеки меток и неявное партнерство

    Предположим, что конкретный LSR Re является прокси концом LSP для 10 адресных префиксов и он имеет доступ к каждому адресному префиксу через отдельный интерфейс.

    Можно было бы присвоить одну метку всем 10 адресным префиксам. Тогда Re будет концом LSP для всех этих префиксов. Это гарантирует, что пакеты для всех 10 адресных префиксов будут доставлены Re. Однако Re был бы должен просматривать сетевой адрес каждого такого пакета, чтобы правильно выбрать интерфейс, через который его следует послать.

    В качестве альтернативы можно было бы присвоить разные метки для каждого из интерфейсов. Тогда Re будет прокси концом LSP для 10 адресных префиксов. Это исключает необходимость для Re просматривать сетевые адреса пакетов, чтобы переадресовывать пакеты. Однако это может привести к использованию слишком большого числа меток.

    Альтернативой может быть объединение всех 10 адресных префиксов вокруг одной общей метки уровня 1 (которая ассоциирована также с адресом самого LSR), после чего можно связать каждый адресный префикс с отдельной меткой уровня 2. Метка уровня 2 будет рассматриваться как атрибут ассоциации метки уровня 1, который мы будем называть атрибутом стека. Мы вводим следующие правила:

    Когда LSR Ru помечает ранее непомеченные пакеты, если наилучшим соответствием адресу места назначения пакета является X, а следующим шагом Ru LSP для X является Rd, и Rd послал Ru ассоциацию метки L1 и X, наряду с атрибутом стека L2, тогда

  • Ru должен занести в стек меток L2, а затем L1, а после этого переадресовать пакет Rd;
  • когда Ru посылает ассоциацию метки для X своим партнерам по рассылке меток, он должен включить L2 в качестве атрибута стека;
  • когда атрибут стека изменится (возможно, в результате изменения следующего шага Ru LSP для X ), Ru должен разослать новый атрибут стека.
  • Заметим, что хотя значение метки, связанное с X, может отличаться для последовательных шагов в LSP, значение атрибута стека передается без изменений, оно устанавливается узлом прокси конца LSP.

    Таким образом, прокси конец LSP для X становится неявным партнером каждого прочего LSR в области или домене маршрутизации. В этом случае явное партнерство было бы слишком тяжеловесным, так как число партнеров стало бы слишком большим.

    MPLS и маршрутизация при нескольких путях

    Если LSR поддерживает много путей для заданного потока, тогда он может приписать потоку много меток, по одной для каждого маршрута. Таким образом, получение второй ассоциации метки от определенного соседа для заданного адресного префикса должно интерпретироваться так, что любая из меток может представлять данный адресный префикс.

    Если специфицировано несколько ассоциаций меток для заданного адресного префикса, они могут иметь разные атрибуты.

    Деревья LSP как объекты мультиточка-точка

    Рассмотрим случай, когда пакеты P1 и P2 имеют адреса места назначения в префиксе Х. Предположим, что маршрут шаг-за-шагом для P1 представляет собой <R1, R2, R3>, а путем шаг-за-шагом для P2 является <R4, R2, R3>. Давайте предположим, что R3 связывает метку L3 с X, и отсылает эту ассоциацию R2. R2 связывает метку L2 с X, и посылает эту ассоциацию в R1 и R4. Когда R2 получает пакет P1, его входная метка будет также L2. R2 заменит L2 на L3 и пошлет P1 в R3. Когда R2 получает пакет P2, его входная метка будет также L2. R2 снова заменит L2 на L3 и пошлет P2 в R3.

    Заметим далее, что когда P1 и P2 двигаются от R2 к R3, они несут одну и ту же метку, и, с точки зрения MPLS, они не различимы. Таким образом, вместо того, чтобы говорить о двух разных LSP, <R1, R2, R3> и <R4, R2, R3>, мы можем говорить об одном дереве LSP мультиточка-точка (MultipointtoPoint LSP Tree), которое мы можем обозначить как <{ R1, R4}, R2, R3>.

    Это создает трудности, когда мы пытаемся использовать обычные ATM-коммутаторы в качестве LSR. Так как обычные ATM-коммутаторы не поддерживают соединения мультиточка-точка, должны существовать процедуры, гарантирующие реализацию VC по схеме точка-точка. Однако если используются ATM-коммутаторы, которые поддерживают VC мультиточка-точка, тогда LSP может быть реализован эффективно по такой схеме. Альтернативой может служить ситуация, когда многоточечное представление SVP/LSP может быть реализовано как SVP мультиточка-точка.

    LSP-туннелирование между пограничными. BGP маршрутизаторами

    Рассмотрим случай автономной системы A, которая пропускает трафик между другими автономными системами. Автономная система A будет иметь несколько пограничных маршрутизаторов BGP и сеть BGP соединений между ними, через которые пересылаются BGP маршруты. Во многих таких случаях желательно избежать рассылки BGP-маршрутов маршрутизаторам, которые не являются пограничными. Если этого можно избежать, нагрузка по рассылке маршрутов этих маршрутизаторов существенно сокращается. Однако должны быть некоторые средства, гарантирующие, что транзитный трафик будет доставляться от одного BGP-маршрутизатора к другому с помощью внутренних маршрутизаторов.

    Это может быть легко сделано с помощью туннелей LSP. Предположим, что BGP маршруты рассылаются только пограничным BGP-маршрутизаторам, а не внутренним маршрутизаторам, которые расположены по пути. LSP-туннели могут использоваться следующим образом.

  • Каждый пограничный маршрутизатор BGP посылает каждому пограничному маршрутизатору BGP в пределах автономной системы метку для каждого адресного префикса, которую он пересылает в рамках протокола BGP.
  • IGP для автономной системы поддерживает маршрут для каждого BGP-маршрутизатора. Каждый внутренний маршрутизатор рассылает свои метки для этих маршрутов каждому своему IGP-соседу.
  • Предположим, что:
  • пограничный маршрутизатор BGP B1 получает непомеченный пакет P;
  • адресный префикс X в маршрутной таблице B1 является наилучшим соответствием для адреса места назначения пакета P;
  • маршрут до X является маршрутом BGP;
  • следующим шагом BGP для X является B2;
  • B2 имеет ассоциацию метки L1 и X и посылает эту ассоциацию в B1;
  • следующий шаг IGP для адреса B2 является I1;
  • адрес B2 содержится в маршрутных таблицах B1 и I1 IGP, а
  • I1 связывает метку L2 с адресом B2 и посылает эту ассоциацию B1
  • Далее, прежде чем послать пакет P в I1, B1 должен сформировать стек меток для P, затем занести туда метку L1, а на верх стека записать L2.

  • Предположим, что пограничный BGP-маршрутизатор B1 получает помеченный пакет P, где на верху стека размещена метка, соответствующая адресному префиксу X, и что условия 3b, 3c, 3d и 3e выполнены. Тогда, прежде чем посылать пакет P в I1, B1 должен заменить метку на верху стека на метку L1 и затем записать в стек метку L2.
  • Эти процедуры эффективно формируют LSP-туннель, маршрутизируемый шаг-за-шагом, между пограничными маршрутизаторами BGP.

    Так как пограничные BGP-маршрутизаторы обмениваются ассоциациями меток для адресных префиксов, которые неизвестны IGP, маршрутизаторы BGP должны стать партнерами по явному обмену метками.

    Иногда можно сформировать LSP-туннель, маршрутизированный шаг-за-шагом, между двумя пограничными маршрутизаторами BGP, даже если они не принадлежат общей автономной системе. Предположим, например, что B1 и B2 находятся в AS1. Предположим также, что B3 является EBGP-соседом B2 и находится в AS2. Наконец, предположим, что B2 и B3 находятся в некоторой сети, которая является общей для обеих автономных систем (демилитаризованная зона). В этом случае LSP-туннель может быть сформирован непосредственно между B1 и B3 следующим образом:

  • B3 посылает маршруты B2 (используя EBGP), опционно присваивая метки адресным префиксам;
  • B2 перераспределяет маршруты к B1 (используя IBGP), указывая, что следующим шагом BGP для каждого такого маршрута является B3. Если B3 присвоил метки адресным префиксам, B2 передает эти метки далее без изменений вплоть до B1;
  • IGP автономной системы AS1 имеет маршрут для B3.
  • Другие применения LSP-туннелей, маршрутизированных шаг-за-шагом

    Использование LSP-туннелей, маршрутизированных шаг-за-шагом, не ограничивается туннелями между узлами BGP. Любая ситуация, в которой мог бы использоваться туннель с инкапсуляцией, является приемлемой для применения LSP-туннеля, маршрутизируемого шаг-за-шагом. Вместо инкапсуляции пакета с новым заголовком, чей адрес места назначения является адресом приемной точки туннеля, производится занесение в стек метки, соответствующей адресному префиксу, который ассоциируется с адресом конечной точки туннеля. Пакет, посланный в туннель, может быть помеченным или нет.

    Если начальный узел туннеля намеревается направить помеченный пакет в туннель, он должен сначала заменить значение метки в стеке на значение, полученное от узла конца туннеля. Затем он должен занести в стек метку, которая соответствует самому туннелю. Чтобы разрешить это, конечные точки туннеля должны быть явными партнерами обмена метками. Ассоциации меток, которыми они должны обмениваться, не играют никакой роли для LSR в пределах туннеля.

    Мультикастная маршрутизация осуществляется путем формирования мультикаст-деревьев. Дерево, вдоль которого должен переадресовываться конкретный мультикаст-пакет, зависит от адресов отправителя и получателя пакета. Когда конкретный LSR является узлом некоторого мультикаст-дерева, он связывает метку с этим деревом и рассылает эту ассоциацию вдоль данного дерева. Если рассматриваемый узел принадлежит локальной сети и имеет партнеров в этой сети, он должен также рассылать указанные ассоциации своим партнерам. Это позволяет вышестоящим узлам использовать одну метку, когда осуществляется мультикатинг для всех нижестоящих объектов LAN.

    Когда приходит помеченный мультикастный пакет, NHLFE, соответствующий метке, указывает на набор выходных интерфейсов для данного пакета, а также на выходную метку. Если используется один и тот же формат представления метки для всех выходных интерфейсов, один и тот же пакет может быть послан всем нижестоящим объектам.

    Процедуры пересылки меток (шаг-за-шагом)

    Далее рассматриваются только ассоциации меток, которые предназначены для трафика, который коммутируется по меткам в пределах пути, маршрутизованного по схеме шаг-за-шагом. В этих случаях метка будет соответствовать адресному префиксу в маршрутной таблице.

    Процедуры анонсирования и использования меток

    Существует некоторое число различных процедур, которые могут использоваться для рассылки ассоциаций меток. Некоторые исполняются нижестоящим LSR, а некоторые — вышестоящим LSR. Нижестоящий LSR должен выполнить:

  • процедуру рассылки и
  • процедуру отзыва.
  • Вышестоящий LSR должен выполнить:

  • процедуру Request (запрос) и
  • процедуру NotAvailable (не доступен) и
  • процедуру Release (отзыв) и
  • процедуру labelUse.
  • Архитектура MPLS поддерживает несколько разных вариантов каждой процедуры. Однако архитектура MPLS не поддерживает все комбинации возможных вариантов.

    Нижестоящий LSR: Процедура рассылки

    Процедура рассылки используется нижестоящим LSR, чтобы определить, когда он должен разослать своим партнерам ассоциации меток для конкретного адресного префикса. Архитектура поддерживает четыре разные схемы рассылки.

    Вне зависимости от используемой процедуры, если ассоциация метки для заданного адресного префикса была послана нижестоящим LSR Rd вышестоящему LSR Ru и если в какой-то момент атрибуты ассоциации (как это определено выше) изменились, тогда Rd должен проинформировать Ru о новых атрибутах.

    PushUnconditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером по рассылке меток Rd с точки зрения X.
  • Когда бы эти условия ни выполнялись, Rd должен связать метку с X и послать эту ассоциацию Ru. Отслеживание ассоциаций, которые посылаются Ru, и контроль того, что Ru всегда имеет эти ассоциации, является областью ответственности Rd.

    Эта процедура должна использоваться LSR, которые выполняют не затребованное присвоение меток в независимом режиме управления LSP.

    PushConditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером Rd по рассылке меток с учетом X ;
  • Rd является либо концом LSP, либо прокси концом LSP для X ; или следующим шагом Rd L3 для X является Rn, где Rn отличается от Ru, и Rn связал метку с X и послал эту ассоциацию Rd.
  • Затем, как только все эти условия оказались выполнены, Rd должен связать метку с X и послать эту ассоциацию Ru.

    Поскольку PushUnconditional вызывает рассылку ассоциаций меток всем адресным префиксам маршрутной таблицы, PushConditional вызывает рассылку ассоциаций меток только тем адресным префиксам, для которых получены ассоциации от одного следующего шага LSP или для которых не существует следующего шага с поддержкой MPLS L3.

    Эта процедуру следует использовать LSR, которые выполняют не затребованное присвоение меток в упорядоченном режиме управления LSP.

    PulledUnconditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером Rd по рассылке меток с учетом X ;
  • Ru явно запросил Rd связать метку с X и послать эту ассоциацию Ru.
  • Затем Rd должен связать метку с X и послать эту ассоциацию Ru. Заметим, что если X отсутствует в маршрутной таблице Rd или если Rd не является партнером Ru по рассылке меток с учетом X, то Rd должен проинформировать Ru о том, что в данный момент не может предоставить ассоциацию.

    Если Rd уже переслал Ru ассоциацию метки для адресного префикса X и получил новый запрос от Ru ассоциации для адресного префикса X, он свяжет вторую метку, и пошлет новую ассоциацию Ru. Первая ассоциация метки остается в силе.

    Эта процедура будет применяться LSR, выполняющим рассылку меток downstreamondemand, используя независимый режим управления LSP.

    PulledConditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером Rd по рассылке меток с учетом X ;
  • Ru явно запросил Rd связать метку с X и послать эту ассоциацию Ru;
  • Rd является либо концом LSP, либо прокси концом LSP для X ; или следующим шагом Rd L3 для X является Rn, где Rn отличается от Ru, а Rn связал метку с X и послал эту ассоциацию Rd.
  • Затем, как только все эти условия оказались выполнены, Rd должен связать метку с X и послать эту ассоциацию Ru. Заметим, что если X отсутствует в маршрутной таблице Rd, а получить ассоциацию для X через следующий шаг Rd для X невозможно, или если Rd не является партнером Ru по пересылке меток с учетом X, тогда Rd должен проинформировать Ru, что не может в данный момент предоставить ему необходимую ассоциацию.

    Однако, если хотя бы одно условие не выполнено, Rn не выдает метку Rd, а Rd должен отложить отклик для Ru до тех пор, пока Rn не пришлет ассоциацию метки.

    Если Rd послал Ru ассоциацию метки для адресного префикса X, а спустя какое-то время любой из атрибутов ассоциации метки изменился, Rd должен заново послать Ru ассоциацию с новым значением атрибута. Он должен сделать это, даже если Ru не послал нового запроса. Эту процедуру следует использовать LSR, которые осуществляют ассоциацию меток downstreamondemand в упорядоченном режиме управления LSP.

    Вышестоящий LSR: процедура запроса

    Процедура запроса применяется вышестоящим LSR для адресного префикса, чтобы определить, когда следует запросить нижестоящий LSR связать метку с адресным префиксом и разослать эту ассоциацию. Существует три процедуры, которые могут быть использованы.

    RequestNever

    Никогда не делай запросов. Эта процедура полезна, если нижестоящий LSR использует процедуры PushConditional или PushUnconditiona l, но она бесполезна, если нижестоящий LSR использует процедуры PulledUnconditional или PulledConditional.

    Эта процедура будет нужна LSR, когда применена не запрошенная рассылка меток и свободный режим удержания меток.

    RequestWhenNeeded

    Осуществляет запрос всякий раз, когда меняется соотношение между следующим шагом L3 и адресным префиксом или когда прислан новый адресный префикс и нет ассоциации метки от следующего шага для заданного адресного префикса.

    Эту процедуру следует использовать LSR, когда применен консервативный режим удержания меток.

    RequestOnRequest

    Эта процедура реализуется всякий раз, когда приходит запрос в дополнение к необходимым протокольным запросам. Если Ru не способен быть входом LSP, он может выдать запрос, только когда получает запрос сверху.

    Если Rd получает такой запрос от Ru для префикса, для которого Rd уже послал метку Ru, Rd присвоит новую метку, ассоциирует ее с X, и разошлет эту ассоциацию. Может ли Rd послать эту ассоциацию Ru немедленно или нет, зависит от используемой процедуры рассылки. Эту процедуру следует использовать LSR, которые осуществляют рассылку меток downstreamondemand, но не выполняют объединения меток, например, ATM-LSR, которые не способны объединять VC.

    Вышестоящий LSR: процедура NotAvailable

    Пусть Ru вышестоящий, а Rd нижестоящий партнер рассылки меток для адресного префикса X, Rd является следующим шагом Ru L3 для X, Ru запрашивает ассоциацию для X от Rd, но Rd отвечает, что не может предоставить ассоциацию в это время, так как он не имеет следующего шага для X. Далее процедура NotAvailable определяет, как должен реагировать Ru. Существует две возможные процедуры, управляющие поведением Ru.

    RequestRetry

    Ru должен выдать запрос снова спустя некоторое время. То есть, источник запроса ответственен за попытку получить необходимую ассоциацию. Эту процедуру следует использовать, когда применена рассылка меток в режиме downstreamondemand.

    RequestNoRetry

    Ru никогда не должен посылать запрос повторно, предполагая, что Rd предоставит необходимую ассоциацию автоматически, когда она станет доступной. Это полезно, если Rd использует процедуру PushUnconditional или PushConditional, т.e., если применена не запрошенная рассылка меток нижестоящим объектам.

    Заметим, что если Rd отвечает, что он не может предоставить ассоциацию Ru, например, из-за ошибки, а не по причине того, что Rd не имеет следующего шага, то поведение Ru будет определяться условиями восстановления после ошибки протокола рассылки меток, а не процедурой NotAvailable.

    Вышестоящий LSR: процедура Release

    Предположим, что Rd является LSR, который связывает метку с адресным префиксом X и который послал эту ассоциацию LSR Ru. Если Rd не оказался следующим шагом Ru L3 для адресного префикса X или перестал быть следующим шагом Ru L3 для адресного префикса X, Ru перестанет использовать метку. Процедура Release определяет то, как Ru работает в этом случае. Существует две возможные процедуры, управляющие поведением Ru.

    ReleaseOnChange

    Ru должен ликвидировать ассоциацию и информировать Rd об этом. Эту процедуру следует использовать в консервативном режиме удержания меток (Conservative Label Retention Mode).

    NoReleaseOnChange

    Ru должен поддерживать ассоциацию, так что он сможет использовать ее немедленно, если Rd станет позднее следующим шагом Ru L3 для X . Эту процедуру следует применять для реализации свободного режима удержания меток (Liberal Label Retention Mode).

    Вышестоящий LSR: процедура labelUse

    Предположим, что Ru является LSR, который получил ассоциацию метки L для адресного префикса X от LSR Rd. Ru является вышестоящим по отношению к Rd с учетом X , и в действительности Rd является следующим шагом Ru L3 для X.

    Ru воспользуется ассоциацией, если Rd является следующим шагом Ru L3 для X. Если в момент получения ассоциации Ru Rd не является следующим шагом Ru L3 для X, Ru не будет использовать эту ассоциацию. Ru может, однако начать использовать ассоциацию позже, если Rd станет следующим шагом Ru L3 для X. Процедура labelUse определяет, как Ru использует ассоциацию Rd. Существует две процедуры, которые может применить Ru.

    UseImmediate

    Ru может начать использовать ассоциацию немедленно. В любое время, когда Ru получил ассоциацию для X от Rd, а Rd является следующим шагом Ru L3 для X, Rd также будет следующим шагом Ru LSP для X. Эта процедура применяется, когда не используется детектирование петель.

    UseIfLoopNotDetected

    Эта процедура аналогична UseImmediate, если только Ru не детектировал петлю в LSP. Если детектирована петля, Ru прекратит использовать метку L для переадресации пакетов в Rd.

    Эта процедура используется, когда работает детектирование петель маршрутов. Это будет продолжаться до тех пор, пока не изменится следующий шаг для X или пока не будет ликвидирован петлевой маршрут.

    Нижестоящий LSR: процедура отзыва

    В этом случае существует только одна процедура. Когда LSR Rd решает разорвать ассоциацию между меткой L и адресным префиксом X, тогда это решение должно быть доведено до сведения всех LSR, которым эта ассоциация была прислана. Требуется, чтобы уведомление о разрыве ассоциации между L и X было послано Rd в LSR Ru, прежде чем Rd пришлет Ru какие-либо иные ассоциации L с какими-либо префиксами Y, где X != Y. Если Ru узнал о новой ассоциации L и Y, до того как получил данные о разрыве ассоциации L и X, и если пакеты, соответствующие префиксам X и Y, переадресуются из Ru в Rd, тогда в течение некоторого времени Ru будет помечать пакеты, относящиеся к X и к Y, меткой L.

    Рассылка и отзыв ассоциаций меток осуществляется через протокол рассылки меток. Все протоколы рассылки меток требуют, чтобы был установлен контакт между партнерами рассылки меток (за исключением неявных партнеров). Если LSR R1 установил контакт по рассылке меток с LSR R2, и получил ассоциации меток от LSR R2 через это соединение, тогда, если соединение будет разорвано одним из партнеров (в результате либо поломки, либо штатной работы), все ассоциации, полученные через это соединение, должны рассматриваться как отозванные.

    Пока эффективное соединение по обмену метками остается в силе, отзыв ассоциаций меток должен производиться явно. Если вторая метка ассоциирована с адресным префиксом, первая метка при этом не отзывается, будут существовать обе ассоциации. Это необходимо, чтобы поддерживать маршрутизацию с несколькими маршрутами. Если второй адресный префикс ассоциирован с меткой, ассоциация с первым префиксом при этом не отзывается, метка будет использоваться для обоих адресных префиксов.

    Схемы MPLS: поддерживаемые комбинации процедур

    Рассмотрим два LSR, Ru и Rd, которые являются партнерами рассылки меток для некоторого набора адресных префиксов, где Ru является вышестоящим партнером, а Rd — нижестоящим.

    Схема MPLS, которая управляет взаимодействием Ru и Rd, может быть описана с помощью пяти процедур: <Distribution Procedure, Request Procedure, NotAvailable Procedure, Release Procedure, labelUse Procedure>. Так как существует только одна процедура отзыва, она здесь не упоминается. Появление "*" в одной из позиций в качестве подмены означает, что в данной категории возможна любая процедура; появление N/A в некоторой позиции указывает, что не нужна никакая процедура данной категории.

    Только схемы MPLS, которые специфицированы ниже, поддерживаются архитектурой MPLS. Другие схемы могут быть добавлены в будущем, если их необходимость будет доказана.

    Схемы для LSR, которые поддерживают объединение меток

    Если Ru и Rd являются партнерами по рассылке меток, и оба поддерживают объединение меток, должна использоваться одна из следующих схем.

  • <PushUnconditional, RequestNever, N/A, NoReleaseOnChange, UseImmediate >

    Это не затребованная рассылка меток вниз по течению с независимым управлением, свободным режимом удержания меток и без детектирования маршрутных петель.

  • <PushUnconditional, RequestNever, N/A, NoReleaseOnChange, UseIfLoopNotDetected>

    Это не затребованная рассылка меток вниз по течению с независимым управлением, свободным режимом удержания меток и детектированием петель.

  • <PushConditional, RequestWhenNeeded, RequestNoRetry, ReleaseOnChange,*>

    Это не затребованная рассылка меток вниз по течению с упорядоченным управлением (со стороны конца маршрута) и консервативным режимом удержанием меток. Детектирование петель опционно.

  • <PushConditional, RequestNever, N/A, NoReleaseOnChange, *>

    Это не затребованная рассылка меток вниз по течению с упорядоченным управлением (со стороны конца маршрута) и свободным режимом удержанием меток. Детектирование петель опционно.

  • <PulledConditional, RequestWhenNeeded, RequestRetry, ReleaseOnChange, *>

    Это рассылка меток вниз по течению по запросу (downstreamondemand) с упорядоченным управлением (инициируемым со стороны входа), консервативным режимом удержания меток и опционным детектированием петель.

  • <PulledUnconditional, RequestWhenNeeded, N/A, ReleaseOnChange, UseImmediate>

    Это рассылка меток вниз по течению по запросу с независимым управлением, консервативным режимом удержания меток и без детектирования петель.

  • <PulledUnconditional, RequestWhenNeeded, N/A, ReleaseOnChange, UseIfLoopNotDetected>

    Это рассылка меток вниз по течению по запросу с независимым управлением, консервативным режимом удержания меток и детектированием петель.

  • Схемы для LSR, которые не поддерживают объединение меток

    Предположим, что R1, R2, R3 и R4 являются ATM-коммутаторами, которые не поддерживают объединение меток, но используются в качестве LSR. Предположим далее, что маршрут L3 шаг-за-шагом для адресного префикса X имеет вид <R1, R2, R 3, R4> и что пакеты, адресованные X, могут войти в сеть через любой из этих LSR. Так как здесь нет возможности реализовать схему мультиточка-точка, LSP должны быть реализованы как VC точка-точка, что означает необходимость трех таких VC для адресного префикса X: <R1, R2, R3, R4>, <R2, R3, R4> и <R3, R4>.

    Следовательно, если R1 и R2 являются MPLS-партнерами и любой из них является LSR, который реализован с использованием обычного коммутирующего оборудования ATM (т.e., без подавления перекрытия ячеек) или по какой-то иной причине не способен осуществлять объединение меток, то используемая схема MPLS между R1 и R 2 должна быть одной из перечисленных ниже.

  • <PulledConditional, RequestOnRequest, RequestRetry, ReleaseOnChange, *>

    Это рассылка меток вниз по течению по запросу с упорядоченным управлением (инициируемым со стороны входа), консервативным режимом удержания меток и опционным детектированием маршрутных петель.

    Использование процедуры RequestOnRequest вынудит R4 послать R3 три метки для X ; R3 пошлет К2 2 метки для X, а R2 пошлет одну метку R1 для X.

  • <PulledUnconditional, RequestOnRequest, N/A, ReleaseOnChange, UseImmediate>

    Это рассылка меток вниз по течению по запросу с независимым управлением, консервативным режимом удержания меток и без детектирования петель.

  • <PulledUnconditional, RequestOnRequest, N/A, ReleaseOnChange, UseIfLoopNotDetected>

    Это рассылка меток "вниз по течению по запросу" с независимым управлением, консервативным режимом удержания меток и с детектированием петель.

  • Соображения совместимости

    Легко видеть, что некоторые пятерки не образуют жизнеспособных схем MPLS. Например:

    <PulledUnconditional, RequestNever, *, *, *>

    <PulledConditional, RequestNever, *, *, *>

    В этих схемах MPLS нижестоящий LSR Rd пересылает ассоциации меток вышестоящему LSR Ru только по запросу от Ru, но Ru никогда не делает таких запросов. Очевидно, эти схемы нежизнеспособны, так как они не могут осуществлять корректную рассылку ассоциаций меток.

    <*, RequestNever, *, *, ReleaseOnChange>

    В этих схемах MPLS, Rd аннулирует ассоциации, если он их не использует, но Rd никогда не запрашивает их снова, даже если они ему позднее понадобятся. Эти схемы, таким образом, не гарантируют того, что ассоциации меток будут разосланы корректно.

    В этом разделе специфицируются правила предотвращения того, чтобы партнеры по рассылке меток выбирали процедуры, которые ведут к недопустимым схемам MPLS. Эти правила требуют либо обмена информацией между партнерами по рассылке меток во время инициализации системы, либо априорного знания (полученного каким-то иным методом).

  • Каждый субъект должен объявить, поддерживает ли он объединение меток.
  • Если Rd не поддерживает объединение меток, он должен выбрать либо процедуру PulledUnconditional, либо PulledConditional. Если Rd выбирает PulledConditional, Ru вынужден использовать процедуру RequestRetry.

    То есть, если нижестоящий LSR не поддерживает объединения меток, его предпочтения имеют приоритет при выборе схемы MPLS.

  • Если Ru не поддерживает объединение меток, а Rd поддерживает, Ru должен выбрать процедуру RequestRetry или RequestNoRetry. Это вынуждает Rd использовать соответственно процедуру PulledConditional или PulledUnConditional.

    То есть, если только один из LSR не поддерживает объединение меток, его предпочтения имеют приоритет при выборе схем MPLS.

  • Если как Ru, так и Rd поддерживают объединение меток, тогда выбор между свободным и консервативным режимами удержания меток остается за Ru. То есть, Ru предоставляется выбрать либо RequestWhenNeeded/ReleaseOnChange (консервативный), либо RequestNever/NoReleaseOnChange (свободный). Однако выбор push либо pull и условного либо безусловногой алгоритма работы с метками принадлежит Rd. Если Ru выбирает свободный режим удержания меток, Rd может выбрать либо PushUnconditional, либо PushConditional. Если Ru выбирает консервативный режим удержания меток, Rd может выбрать PushConditional, PulledConditional или PulledUnconditional.
  • Соображения безопасности

    Некоторые маршрутизаторы могут реализовать безопасные процедуры, зависящие от заголовка сетевого уровня, положение которого фиксировано по отношению к заголовку канального уровня. Базовая инкапсуляция MPLS подразумевает введение прослойки между заголовком канального и сетевого уровня. Это может вызвать отказ в работе некоторых процедур безопасности. Метка MPLS имеет свое значение благодаря соглашению между LSR, который записывает метку в стек (источник метки), и LSR, который интерпретирует метку (получатель метки). Если помеченный пакет получен от непроверенного отправителя или если некоторая метка получена от LSR, которому она не посылалась, тогда пакеты могут маршрутизоваться некорректным образом.

    11.5. Кодирование меток в MPLS

    Многопротокольная коммутация меток (MPLS) требует набора процедур для дополнения пакетов сетевого уровня стеком меток, таким образом превращая их в помеченные пакеты. Маршрутизаторы, которые поддерживают протокол MPLS, называются LSR (Label Switching Routers). Для того, чтобы передать помеченный пакет по определенному каналу, LSR должен поддерживать методику кодирования и анализа помеченных пакетов. Данный документ специфицирует кодирование, используемое LSR, чтобы передать помеченный пакет по каналу данных PPP и LAN. Специфицированная кодировка может быть применена и в других каналах данных.

    Ниже определены правила и процедуры обработки различных полей стека меток. Так как MPLS не зависит от сетевого протокола, большинство таких процедур являются протокольно независимыми. Некоторые, однако, являются разными для различных протоколов. Здесь мы специфицируем протокольно независимые процедуры, а также протокольно зависимые процедуры для IPv4 и IPv6.

    LSR, которые реализованы на определенном коммутационном оборудовании (таком, как ATM-коммутаторы), могут использовать различные системы кодирования верхних записей в стеке.

    Стек меток. Кодирование стека меток

    Стек меток представляет собой последовательность записей. Каждая запись в стек имеет длину 4 октета. Формат такой записи показан на рис. 11.2 и 11.3.

    Запись стека меток размещается после заголовка канального уровня, и перед заголовком сетевого уровня (например, между Ethernet- и IP-заголовком). Верх стека записывается первым, а дно — последним. Сетевой заголовок следует сразу вслед за записью стека меток с битом S=1. Каждая запись стека меток содержит в себе следующие поля:

  • Дно стека (бит S )

    Этот бит устанавливается равным 1 для последней записи в стеке меток (т.e. для дна стека), и нулю для всех прочих записей.

    Следует заметить, что данный формат меток не является единственно возможным (я здесь не имею в виду ATM или FR). В IP-телефонии, например, предлагается использовать метку, которая содержит (слева-направо) код 0х8100, за которым идет 3-битовое поле приоритета ( 0-7 ) и идентификатор VPN (0-4095). (Смотри журнал LANline N10, 2002, стр 140).

  • Время жизни (поле TTL)

    Это 8-битовое поле определяет время жизни пакета.

  • Значение метки

    Это 20-битовое поле несет в себе код метки.

  • Когда получен помеченный пакет, анализируется значение метки на верху стека. В результате этого анализа определяется:

  • следующий шаг, куда должен быть переадресован пакет;
  • операция, которая должна быть выполнена со стеком меток до переадресации; эта операция может быть заменой метки на вершине стека, удалением записи из стека, замещением верхней позиции в стеке и занесением туда затем одной или более новых записей.
  • В дополнение к определению следующего шага и операции со стеком меток, можно также получить данные об инкапсуляции выходной информации и, возможно другие данные, которые необходимы для того, чтобы корректно переадресовывать пакеты. Существует несколько зарезервированных значений меток.

  • Значение 0 представляет IPv4 Explicit NULL Label. Это значение метки является единственно допустимым для дна стека меток. Оно указывает, что стек должен быть очищен и переадресация пакета должна основываться на IPv4-заголовке.
  • Значение 1 представляет Router Alert Label. Это значение метки является легальным в любом месте стека меток за исключением дна. Когда полученный пакет содержит такую метку на вершине стека, он доставлен локальному модулю для обработки. Действительная переадресация пакета определяется меткой в его стеке. Однако, если пакет переадресуется дальше, еще до переадресации в стек должна быть занесена метка Router Alert. Использование этой метки сходно с применением опции Router Alert в IP-пакетах [11.5]. Так как эта метка не может лежать на дне стека, она не ассоциируется с определенным протоколом сетевого уровня.
  • Значение 2 представляет собой IPv6 Explicit NULL Label. Это значение метки является единственно допустимым для записи на дне стека. Оно указывает, что стек должен быть очищен, а переадресация пакетов должна после этого основываться на заголовке IPv6.
  • Значение 3 представляет Implicit NULL Label. Это метка, которую LSR может присваивать и рассылать, но которая в действительности никогда не используется при инкапсуляции. Когда LSR замещает метку на верху стека на новую и эта новая метка является Implicit NULL, LSR очистит стек вместо того, чтобы осуществить замену. Хотя это значение не может появиться при инкапсуляции, оно должно быть специфицировано в протоколе рассылки меток, так что значение может считаться зарезервированным.
  • Значения 4-15 зарезервированы на будущее.
  • Определение протокола сетевого уровня

    Когда последняя метка удалена из стека (стек становится пустым), дальнейшая обработка пакета осуществляется на основе его заголовка сетевого уровня. LSR, который извлекает последнюю метку из стека, должен быть способен работать с протоколом сетевого уровня. Однако, стек меток не содержит поля, идентифицирующего протокол сетевого уровня. Это означает, что идентичность сетевого протокола должна определяться по значению кода метки, извлеченной со дна стека, возможно, вместе с самим содержимым заголовка сетевого уровня.

    Когда в сетевой пакет заносится первая метка, она должна быть уникальной для конкретного сетевого уровня или для набора сетевых протоколов. Кроме того, когда бы в процессе передачи метка ни была заменена другой, новая метка также должна отвечать тем же критериям. Если эти условия не выполнены, LSR, который удаляет последнюю метку из пакета, не сможет идентифицировать сетевой протокол.

    Строгое соблюдение этих условий не обязательно приведет немедленно к тому, что узлы будут распознавать сетевой протокол. В обычных условиях это необязательно, но в ситуациях ошибок это оказывается крайне желательным. Например, если промежуточный LSR определяет, что помеченный пакет не может быть доставлен, может быть желательно для данного LSR сформировать сообщение об ошибке, которое является специфическим для пакетов сетевого уровня. Единственные средства, которыми располагает промежуточный LSR для идентификации сетевого уровня, является анализ верха стека и заголовка сетевого уровня. Таким образом, если промежуточные узлы способны посылать протокольно зависимые сообщения об ошибках для помеченных пакетов, то все метки в стеке должны отвечать критериям, приведенным выше для меток, которые занесены на дно стека.

    Если пакет не может быть переадресован по какой-то причине (например, его размер превосходит MTU канала), либо его протокол сетевого уровня не может быть идентифицирован, либо не существует протокольно зависимых правил для обработки случаев ошибок, тогда пакет должен быть без комментариев отброшен.

    Генерация ICMP-сообщений для помеченных пакетов

    Ниже обсуждаются ситуации, в которых желательно формировать ICMP-сообщения для помеченных IPпакетов. Для того, чтобы конкретный LSR мог формировать и посылать ICMP пакеты отправителям IP-пакетов, должны выполняться два условия:

  • данный LSR должен быть способен определить, что конкретный помеченный пакет является IP-пакетом;
  • данный LSR должен быть способен проложить путь до места назначения IP-пакета.
  • Условие 1 обсуждается выше в разделе "Определение протокола сетевого уровня".В следующих двух подразделах обсуждается условие 2. Однако встречаются ситуации, когда условие 2 совсем не выполняется, и в этих случаях невозможно сформировать сообщение ICMP.

    Туннелирование через транзитную область маршрутизации

    Предположим, что MPLS используется для организации туннеля через транзитную область маршрутизации, где данные о внешних маршрутах не попадают к внутренним маршрутизаторам. Например, внутренние маршрутизаторы работают с протоколом OSPF и могут знать только, как достичь объектов в пределах зоны OSPF. Домен может содержать несколько пограничных маршрутизаторов автономной системы ASBR (Autonomous System Border Router), которые взаимодействуют друг с другом с помощью BGP. Однако в этом примере маршруты от BGP не рассылаются OSPF, а LSR, которые не являются ASBR, поддерживают BGP.

    В этом примере только ASBR будет знать, как проложить маршрут до отправителя некоторого произвольного пакета. Если внутренний маршрутизатор должен послать сообщение ICMP отправителю IP-пакета, он не будет знать, как маршрутизовать это ICMP-сообщение.

    Одним из решений является занесение ASBR маршрута по умолчанию в IGP. Это бы гарантировало то, что любой непомеченный пакет, который должен выйти из домена (такой, как ICMP-пакет), попадет в маршрутизатор, который имеет полную маршрутную информацию. Маршрутизаторы с полной маршрутной информацией будет помечать пакеты, прежде чем их послать через транзитную область, так, чтобы использование маршрутов по умолчанию в пределах транзитного домена не приводило к образованию циклических путей.

    Это решение работает только для пакетов, которые имеют глобально уникальные адреса, и для сетей, в которых все ASBR имеют полную маршрутную информацию. В следующем подразделе описывается решение, которое работает, когда эти условия не выполняются.

    Туннелирование частных адресов через общедоступную опорную сеть

    В некоторых случаях, когда MPLS используется для туннелирования через домен маршрутизации, может быть вообще невозможно проложить путь до адреса отправителя фрагментированных пакетов. Такая ситуация возникла бы, например, если IP-адреса в пакетах были частными адресами (т.e., не были бы глобально уникальными) и MPLS использовался для туннелирования таких пакетов через общедоступную опорную сеть. Маршруты по умолчанию в ASBR не будет работать в таких условиях.

    В этих условиях для того, чтобы послать ICMP-сообщение отправителю пакета, можно копировать стек меток исходного пакета в ICMP-сообщение и затем осуществить коммутацию по меткам для ICMP-пакета. Это заставит сообщение двигаться в направлении места назначения исходного пакета, а не его отправителя. Если только сообщение не является коммутируемым по меткам на всем пути до ЭВМ назначения, оно завершит путь непомеченным в маршрутизаторе, который знает путь до отправителя исходного пакета, и отсюда сообщение будет послано в правильном направлении.

    Эта технология может быть весьма полезной, если ICMP-сообщением является Time Exceeded (время истекло) или "Destination Unreachable because fragmentation needed and DF set" (место назначение недостижимо из-за необходимости фрагментации и DF=1 ).

    При копировании стека меток из исходного пакета в сообщение ICMP значения меток должны копироваться точно, но значения TTL должны устанавливаться равными величине, размещенной в IP-заголовке ICMP-сообщения. Это значение TTL должно быть достаточным, чтобы разрешить кружной маршрут, которому должен следовать ICMP-сообщение.

    Заметим, что если истечение TTL сопряжено с наличием петли маршрута, тогда в случае использования этой техники ICMP-сообщение может зацикливаться. Так как сообщение ICMP никогда не посылается в ответ на ICMP-пакет и так как многие реализации ограничивают частоту посылки ICMP-сообщений, проблем это создать не должно.

    Обработка поля времени жизни. Определения

    Входное TTL помеченного пакета по определению должно равняться значению поля TTL в записи наверху стека меток на момент получения пакета. Выходное TTL помеченного пакета по определению должно равняться большему из:

    a) входное значение TTL минус один,

    b) нуль.

    Протокольно независимые правила

    Если выходное TTL помеченного пакета =0, тогда помеченный пакет не должен более переадресовываться и он следует далее непомеченным. Время жизни пакета в сети считается истекшим. В зависимости от значения метки в стеке, пакет может быть просто отброшен или он может быть передан сетевому слою для обработки ошибки (например, для генерации ICMP-сообщения об ошибке).

    Когда помеченный пакет переадресуется, поле TTL записи наверху стека меток должно быть установлено равным выходному значению TTL.

    Заметим, что выходное значение TTL является функцией входного значения TTL и зависит от того, были ли перед этим в стек занесены или извлечены какие-то метки до переадресации пакета. Значения поля TTL в записях, за исключением верхней, никакого влияния не оказывают.

    Правила, зависящие от IP

    Мы определяем поле IP TTL равным величине поля IPv4 TTL или значению поля IPv6 Hop Limit, в зависимости от того, что используется.

    Когда IP-пакет помечен впервые, поле TTL в стеке должно быть установлено равным значению поля IP TTL.

    Когда все метки извлекаются из стека и он оказывается пустым, значение поля IP TTL должно быть замещено величиной выходного TTL, как это определено выше. В случае IPv4 это потребует также корректировки контрольной суммы IP-заголовка.

    Признается, что могут существовать ситуации, когда сетевая администрация предпочитает декрементировать IPv4 TTL на 1 при прохождении через домен MPLS, вместо того чтобы декрементировать IPv4 TTL на число LSR в домене.

    Преобразование различных инкапсуляций

    Иногда LSR может получить помеченный пакет через, например, интерфейс ATM (LC-ATM) [11.9] и должен послать его через PPP или LAN. Тогда входной пакет будет получен без инкапсуляции, а должен будет послан уже с применением такой инкапсуляции.

    В этом случае значение входного TTL определяется процедурами обработки помеченных пакетов, например, в интерфейсе LC-ATM. Обработка TTL будет тогда происходить так, как это описано выше. Иногда LSR может получить помеченный пакет через канал PPP или LAN и должен его послать на выход через интерфейс LC-ATM. Тогда входной пакет будет принят с использованием инкапсуляции, описанной в данном документе, а выходной пакет — послан с привлечением иной инкапсуляции. В этом случае процедура формирования значения выходного TTL определяется процедурами, применяемыми к помеченным пакетам, например, в интерфейсах LC-ATM.

    Фрагментация и определение MTU пути

    Поскольку возможно получение непомеченной IP-дейтограммы, которая слишком велика, чтобы быть переданной в выходной канал, имеется возможность получения помеченного пакета, который также нельзя передать по этой причине на выход.

    Возможно также, что полученный пакет (помеченный или нет), который первоначально был достаточно мал для передачи через канал, становится слишком большим, получив одну или более меток.

    При коммутации меток пакет может расти в размере, если в его стек заносятся дополнительные метки. Таким образом, если получен помеченный пакет с 1500-байтовым полем данных и в него записана дополнительная метка, переадресовать нужно будет пакет с размером 1504-байта, что может привести, в конце концов, к превышению MTU для сети Ethernet.

    В этом разделе специфицируются правила обработки помеченных пакетов, которые являются слишком большими. В частности, речь идет о правилах, которые гарантируют, что ЭВМ, использующие определение MTU пути [11.4], и ЭВМ, работающие с IPv6 [11.7,11.8], будут способны формировать IP-дейтограммы, которые не нуждаются в фрагментации, даже если эти дейтограммы получили дополнительные метки при прохождении через сеть.

    Вообще, ЭВМ IPv4, которые не используют определение MTU пути [11.4], посылают IP-дейтограммы, содержащие не более 576 байт. Так как большинство используемых MTU равняются 1500 байт или больше, вероятность того, что такие дейтограммы будут нуждаться в фрагментации, даже если они помечены, весьма мала.

    Некоторые ЭВМ, которые не используют определение MTU пути [11.4], формируют IP-дейтограммы, содержащие 1500 байт. Поскольку IP-адреса отправителя и получателя находятся в одной и той же субсети, эти дейтограммы не проходят через маршрутизаторы и, следовательно, не будут фрагментироваться

    Если же IP-адрес отправителя и получателя находятся в разных автономных системах, это единственный случай, когда имеется риск фрагментации при пометке пакета.

    Ниже специфицированы процедуры, которые позволяют конфигурировать сеть так, чтобы большие дейтограммы от ЭВМ, не использующих определение MTU пути, фрагментировались только раз, когда они были впервые помечены. Эти процедуры делают возможным избежать фрагментации пакетов, которые уже помечены.

    Что касается конкретного канала данных, можно использовать следующие термины:

  • Поле данных кадра

    В это понятие входит содержимое поля данных кадра, исключая любые заголовки и поля завершения кадра (например, MAC-заголовки, LLC-заголовки, 802.1Q-заголовки, PPP-заголовки, контрольные суммы и т.д.).

    Когда кадр несет в себе непомеченную IP-дейтограмму, поле данных кадра представляет собой саму IP-дейтограмму. Когда кадр несет в себе помеченную IP-дейтограмму, поле данных кадра состоит из записей стека меток и IP-дейтограммы.

  • Обычный максимальный размер поля данных кадра

    Максимальный размер поля данных кадра определяется стандартами канала данных. Например, обычный максимальный размер поля данных кадра для Ethernet равен 1500 байтов.

  • Истинный максимальный размер поля данных кадра

    Максимальный размер поля данных кадра, который можно послать и получить через интерфейс канала данных.

    Для сетей Ethernet и 802.3, считается, что истинный максимальный размер поля данных кадра на 4-8 байта больше обычного максимального размера поля данных (поскольку ни переключатель, ни бридж не могут увеличить размер заголовка в процессе транспортировки пакета до следующего узла сети). Например, считается, что большинство оборудования Ethernet может принимать и посылать пакеты, содержащие, по крайней мере, 1504 или даже 1508 байт, поскольку заголовок Ethernet не имеет полей 802.1Q или 802.1p. В каналах PPP, истинный максимальный размер поля данных кадра может быть неограниченным.

  • Эффективный максимальный размер поля данных для помеченных кадров

    Это или обычный максимальный размер поля данных кадра, или истинный максимальный размер поля данных кадра, в зависимости от возможностей оборудования канала и размера заголовка канального уровня.

  • Первично помеченная IP-дейтограмма

    Предположим, что непомеченная IP-дейтограмма получена конкретным LSR и что LSR вводит метку в стек перед тем, как переадресовать эту дейтограмму. Такая дейтограмма будет называться первично помеченной в этом LSR IP-дейтограммой.

  • Максимальный исходный размер помеченной IP-дейтограммы

    Каждый LSR, который способен

  • получать непомеченные IP-дейтограммы,
  • добавлять метки в стек дейтограммы, и
  • переадресовывать полученный в результате помеченный пакет, должен поддерживать конфигурационный параметр, называемый максимальный размер первично помеченной IP-дейтограммы, который должен быть установлен неотрицательным. Если этот конфигурационный параметр установлен равным нулю, он ни на что не влияет. Если он имеет положительное значение, то он используется следующим образом. Если:
  • получена непомеченная IP-дейтограмма, и
  • эта дейтограмма имеет в заголовке бит DF=0, и
  • дейтограмма перед переадресацией должна быть помечена, и
  • размер дейтограммы (до пометки) превышает значение данного параметра, тогда:
  • дейтограмма должна быть разделена на фрагменты с размером не больше, чем указано в данном параметре, и
  • каждый фрагмент должен быть помечен и после этого переадресован.
  • Например, если этот конфигурационный параметр установлен равным 1488, тогда любая непомеченная IP дейтограмма, содержащая более 1488 байт, будет фрагментирована до выполнения пометки. Каждый фрагмент будет способен передавать через канал 1500 байт без последующей фрагментации, даже если в стек будет занесено до трех меток.

    Другими словами, установка этого параметра не равным нулю позволяет исключить фрагментацию уже помеченных IP пакетов, но может вызвать иногда фрагментацию первично помеченных IP-дейтограмм, когда это совсем не нужно.

    Заметим, что установка этого параметра не влияет на обработку IP-дейтограмм, которые содержат бит DF=1, следовательно, установка этого параметра не влияет на результат определения MTU пути.

    Когда помеченная IP-дейтограмма слишком велика?

    Помеченная IP-дейтограмма, чей размер превышает обычный максимальный размер поля данных канала, может рассматриваться как слишком большая.

    Помеченная IP-дейтограмма, чей размер превышает истинный максимальный размер поля данных кадра канала, через который она должна переадресоваться, считается слишком большой.

    Помеченная IP-дейтограмма, которая не является слишком большой, должна передаваться без фрагментации.

    Обработка помеченных дейтограмм IPv4, которые слишком длинны

    Если помеченная IPv4 дейтограмма слишком велика и бит DF в IP заголовке =1, тогда LSR может отбросить дейтограмму.

    Заметим, что отбрасывание таких дейтограмм является разумным, только если максимальный размер первично помеченной IP-дейтограммы установлен равным ненулевому значению во всех LSR сети, способных добавлять метки в стек непомеченных IP-дейтограмм.

    Если LSR решает не отбрасывать помеченные IPv4-дейтограммы, которые слишком велики, или если в дейтограмме флаг DF=1, тогда должна быть выполнена следующая последовательность операций.

  • Удалить записи из стека, чтобы получить IP-дейтограмму.
  • Пусть N равно числу байт в стеке (т.e, число записей в стеке меток, умноженное на 4).
  • Если IP-дейтограмма содержит в IP заголовке бит Don't Fragment=0:
  • разбить ее на фрагменты, каждый из которых должен иметь размер, по крайней мере, на N байт меньше, чем эффективный максимальный размер поля данных кадра;
  • преобразовать каждый фрагмент, снабдив его заголовком, который имела исходная дейтограмма;
  • переадресовать фрагменты.
  • Если IP-дейтограмма содержит в IP заголовке бит Don't Fragment =1:
  • дейтограмма не должна переадресовываться;
  • сформировать ICMP-сообщение "Адресат недостижим":
  • установить значение поля [11.3] равным "Fragmentation Required and DF Set";
  • установить значение поля NextHop MTU [11.4] равным разности между эффективным максимальным размером поля данных кадра и величиной N.
  • если возможно, послать ICMP-сообщение "Адресат недостижим" отправителю отброшенной дейтограммы.
  • Обработка помеченных дейтограмм IPv6, которые слишком длинны

    Чтобы обработать помеченную IPv6-дейтограмму, которая слишком велика, LSR должен реализовать следующий алгоритм.

  • Удалить записи из стека, чтобы получить IP-дейтограмму.
  • Пусть N равно числу байт в стеке (т.e, число записей в стеке меток, умноженное на 4).
  • Если IP-дейтограмма содержит более 1280 байтов (не считая записи стека меток), или, если она не содержит заголовка фрагмента, тогда:
  • сформировать ICMP-сообщение "Too Big Message", и установить значение поля NextHop MTU равным разности между эффективным максимальным размером поля данных кадра и величиной N;
  • если возможно, послать отправителю дейтограммы ICMP-сообщение "Too Big Message";
  • отбросить помеченную IPv6-дейтограмму.
  • Если IP-дейтограмма не длиннее 1280 октетов, и содержит заголовок фрагмента, тогда:
  • преобразовать ее в фрагменты, каждый из которых должен быть по крайней на N байт меньше, чем эффективный максимальный размер поля данных кадра;
  • снабдить каждый фрагмент тем же помеченным заголовком, который имела исходная дейтограмма;
  • переадресовать фрагменты.
  • Восстановление сообщения из фрагментов осуществляется конечным получателем.

    Реализация с учетом определения MTU пути

    Описанные выше процедуры обработки дейтограмм, которые имеют в заголовке бит DF=1, но являются слишком большими, связаны с процедурами определения MTU пути RFC-1191 [11.4]. ЭВМ, которые применяют эти процедуры, определят MTU, который достаточно мал, чтобы позволить занесение в дейтограмму n меток, без необходимости фрагментации. Здесь n равно числу меток, заносимых на используемом пути через домен.

    Другими словами, дейтограммы от ЭВМ, которые применяют определение MTU пути, никогда не потребуют фрагментации из-за занесения меток в заголовок. Заметим, что дейтограммы от ЭВМ, использующих определение MTU пути, имеют бит DF=1 и, таким образом, не могут быть фрагментированы в любом случае.

    Отметим также, что определение MTU пути будет работать корректно, только если в точке, где может потребоваться фрагментация помеченной IP-дейтограммы, возможна доставка отправителю ICMP сообщения Destination Unreachable. Если невозможна посылка ICMP-сообщения отправителю из MPLS туннеля, но конфигурация сети предоставляет возможность LSR конца туннеля получать пакеты, которые должны проходить через туннель, но слишком велики для этого, тогда:

  • LSR на передающем конце туннеля должен уметь определять MTU туннеля в целом. Он может это сделать путем посылки пакетов через туннель в направлении его приемной части, выполняя процедуру определения MTU пути для этих пакетов;
  • всякий раз, когда передающий конец туннеля должен посылать пакет в туннель и этот пакет имеет DF=1, а его длина превышает значение MTU туннеля, передающий конец должен послать ICMP-сообщение Destination Unreachable узлу, приславшему пакет с кодом "Fragmentation Required and DF Set" и полем NextHop MTU, установленным так, как было показано выше.
  • Передача помеченных пакетов через PPP

    Протокол PPP (Point-toPoint Protocol) [11.6] предоставляет стандартный метод транспортировки многопротокольных дейтограмм через каналы точка-точка. PPP определяет расширяемый протокол управления каналом и предлагает семейство протоколов управления сетью для установления и конфигурации различных протоколов сетевого уровня.

    В этом разделе определен протокол управления сетью для установления и конфигурации коммутации меток в канале PPP. PPP содержит три основные компонента.

  • Метод инкапсуляции мультипротокольных дейтограмм.
  • Протокол управления каналом LCP (Link Control Protocol) для установления, конфигурирования и тестирования канала.
  • Семейство протоколов управления сетью для установления и конфигурирования различных протоколов сетевого уровня.
  • Для того, чтобы установить связь через канал точка-точка, каждый конец PPP канала должен сначала послать LCP-пакеты, чтобы сконфигурировать и протестировать канал. После того как канал установлен и согласованы опционные возможности, PPP должен послать пакеты MPLS Control Protocol, чтобы разрешить посылку помеченных пакетов. Канал будет оставаться сконфигурирован для коммуникаций, пока управляющие протокольные пакеты LCP или MPLS его не закроют или пока не произойдет какое-то внешнее событие (сработает таймер пассивности или вмешается сетевой администратор).

    Протокол управления PPP для MPLS

    Протокол управления MPLS (MPLSCP) отвечает за разрешение/запрещение использования коммутации меток в канале PPP. Он использует тот же механизм обмена, что и протокол управления каналом LCP (Link Control Protocol). Пакеты MPLSCP не могут пересылаться до тех пор, пока PPP не достигнет фазы протокола сетевого уровня. Пакеты MPLSCP, полученные до достижения этой фазы, должны просто отбрасываться.

    Протокол управления MPLS тождественен протоколу управления каналом [11.6] за следующими исключениями:

  • Модификации кадра

    Пакет может использовать любые модификации базового формата кадра, которые были согласованы на фазе установления канала.

  • Поле протокола канального уровня

    В информационное поле пакета PPP вкладывается только один пакет MPLSCP, где поле протокола PPP содержит шестнадцатеричный код 8281 (MPLS).

  • Поле кода

    Используются только коды от 1 до 7 (Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack и Code-Reject). Прочие коды должны рассматриваться как нераспознанные и приводить к Code-Rejects (отбрасыванию).

  • Тайм-ауты

    Пакеты MPLSCP не могут пересылаться, пока PPP не достигнет фазы протокола сетевого уровня. Реализация должна быть готова ждать окончания аутентификации и определения качества канала, прежде чем наступит тайм-аут в ожидании Configure-Ack или других откликов.

  • Посылка помеченных пакетов

    Прежде чем какие-либо пакеты будут посланы, PPP должен достичь фазы протокола сетевого уровня, а управляющий протокол MPLS должен стать активным (состояние Opened).

    В информационное поле пакета PPP вкладывается только один помеченный пакет, где поле протокола PPP содержит шестнадцатеричные значения кода тип 0281 (MPLS Unicast) или 0283 (MPLS Multicast). Максимальная длина помеченного пакета, переданного через канал PPP, та же, что и максимальная длина информационного поля инкапсулированного пакета PPP.

    Заметим, что определены два кода для помеченных пакетов, один для мультикастных и один для уникастных. Как только MPLSCP переходит в рабочее состояние (Opened), по каналу PPP могут посылаться как мультикаст, так и уникаст-пакеты.

    Пересылка помеченных пакетов в среде LAN

    В каждом кадре транспортируется только один помеченный пакет. Записи стека меток размещаются непосредственно после заголовка сетевого уровня, а сразу за ними следует заголовок канального уровня, включая, например, любые заголовки 802.1Q, которые только могут существовать.

    Шестнадцатеричный код Ethertype 8847 применяется для индикации того, что кадр содержит уникастный MPLS-пакет. Шестнадцатеричный код Ethertype 8848 служит для указания того, что кадр содержит MPLS-пакет.

    Эти значения Ethertype могут быть использованы либо при Ethernet-инкапсуляции, либо при инкапсуляции 802.3 LLC/SNAP для транспортировки помеченных пакетов.

    11.6. Требования для управления трафиком

    Введение

    Мультипротокольная коммутация пакетов по меткам (MPLS) [11.1,[11.2] интегрирует в себе технику операций с метками и сетевую маршрутизацию. Базовой идеей является присвоение меток фиксированной длины пакетам на входе облака MPLS (базирующегося на концепции переадресации классов эквивалентности [11.1,[11.2]). Всюду внутри домена MPLS метки, присвоенные пакету, используются для принятия решения о переадресации (обычно без рассмотрения исходных заголовков пакета).

    Одним из наиболее важных применений MPLS будет управление трафиком. Важность этого приложения является уже широко признанной (смотри [11.1,2,3]).

    Далее рассматриваются требования управления трафиком в больших опорных сетях Интернет. Описаны базовые возможности и функциональности, которым должна соответствовать реализация MPLS.

    Следует заметить, что хотя основное внимание уделено опорным сетям, возможности, описанные в этом разделе, в равной мере применимы для управления трафиком в корпоративных сетях. Вообще, эта технология может быть использована в любой сети с коммутацией по меткам, в которой имеется, по крайней мере, два пути между двумя узлами.

    Предлагается архитектура, которая включает в себя MPLS и RSVP, чтобы предоставить масштабируемые дифференцированные услуги и управление трафиком в Интернет.

    Управление трафиком

    В этом разделе описываются базовые функции управления трафиком в автономной системе современного Интернет. Рассмотрены ограничения IGP с точки зрения управления трафиком и ресурсами.

    Управление трафиком (TE) связано с оптимизацией рабочих характеристик сетей. Вообще, ТЕ включает в себя технологию и научные принципы измерения, моделирования, описание, управление трафиком Интернет и приложение таких знаний и техники для получения определенных рабочих характеристик.

    Главной целью управления трафиком в Интернет является достижение эффективной и надежной работы сети. Управление трафиком стало непременной функцией многих автономных систем — из-за высокой стоимости услуг Интернет.

    Объективные характеристики управления трафиком

    Ключевые характеристики, сопряженные с управлением трафиком, могут относиться к следующим категориям:

  • ориентированные на трафик, или
  • ориентированные на ресурсы.
  • Задачи, ориентированные на управление трафиком, включают в себя аспекты улучшения QoS информационных потоков. В модели наилучших усилий для Интернет-сервиса ключевая задача управления трафиком включает в себя: минимизацию потерь пакетов и задержек, оптимизацию пропускной способности и согласование наилучшего уровня услуг. В данной модели минимизация вероятности потери пакетов является наиболее важным аспектом. Статистически заданные характеристики трафика (такие, как разброс времени доставки пакетов, вероятность потери и максимальное время доставки) становятся важными в грядущих дифференцированных услугах Интернет. Одним из подходов решения таких проблем является оптимизация использования всех имеющихся ресурсов сети. В частности, желательно гарантировать, чтобы субнаборы сетевых ресурсов не были перегружены, в то время как аналогичные ресурсы на альтернативных маршрутах недогружены. Полоса пропускания — это критический ресурс современных сетей. Следовательно, центральной функцией управления трафиком ста новится эффективное управление пропускной способностью.

    Минимизация перегрузок является первичной задачей. Здесь речь идет не о кратковременных перегрузках, а о долгосрочных, влияющих на поведение сети в целом. Перегрузка обычно имеет две причины:

  • сетевых ресурсов недостаточно или они не соответствуют существующей загрузке;
  • потоки трафика неэффективно распределены по имеющимся ресурсам.
  • Первый тип проблем перегрузки может быть решен путем:

  • расширения ресурса, или
  • применением классических средств управления перегрузкой, или
  • сочетанием этих подходов. Классическое управление перегрузкой пытается регулировать уровень потребности, снижая его до имеющегося в распоряжении уровня ресурсов. Классическое управление перегрузкой включает в себя: ограничение потока, управление шириной окна для потока, управление очередями в маршрутизаторе, диспетчеризацию и т.д. (смотри [11.8]).
  • Второй тип проблем перегрузки, связанный с неэффективным размещением ресурсов, может быть решен посредством управления трафиком.

    Вообще, перегрузка, связанная с неэффективным размещением ресурсов, может быть уменьшена с помощью политики балансировки нагрузки в различных фрагментах сети. Задачей таких стратегий является минимизация максимальной перегрузки или напротив — минимизация максимума использования ресурса. Когда перегрузка минимизирована путем оптимального размещения ресурсов, потери пакетов и задержка доставки падают, а совокупная пропускная способность возрастает. Таким образом, восприятие конечным пользователем качества сетевого обслуживания становится лучше.

    Понятно, что балансировка определяет политику оптимизации рабочих характеристик сети. Несмотря ни на что, возможности, предоставляемые управлением трафиком, должны быть достаточно гибкими, чтобы сетевые администраторы могли реализовать другие политики, которые принимают во внимание господствующую структуру цен или даже модель получения доходов.

    Управление трафиком и ресурсами

    Оптимизация рабочих характеристик сетей является фундаментальной проблемой управления. В модели процесса управления трафиком инженер трафика (или подходящая система автоматизации) действует как контроллер в системе с адаптивной обратной связью. Эта система включает набор взаимосвязанных сетевых элементов, систему мониторирования состояния сети и набор средств управления конфигурацией. Инженер трафика формулирует политику управления, отслеживает состояние сети посредством системы мониторинга и характеристик трафика и предпринимает управляющие действия, чтобы перевести сеть в требуемое состояние, в соответствии с политикой управления. Это может быть осуществлено с помощью действий, предпринимаемых как отклик на текущее состояние сети, или превентивно, используя прогнозирование состояния и тенденции и предпринимая действия, предотвращающие нежелательные будущие состояния. В идеале управляющие действия должны включать:

  • модификацию параметров управления трафиком,
  • модификацию параметров, связанных с маршрутизацией, и
  • модификацию атрибутов и констант, связанных с ресурсами.
  • Уровень человеческого вмешательства в процесс управления трафиком, когда это возможно, должен быть минимизирован. Это может быть реализовано путем автоматизации операций, описанных выше. Операции эти могут быть распределенными и масштабируемыми.

    Ограничения механизмов управления IGP

    В этом подразделе рассматриваются некоторые хорошо известные ограничения современных IGP с точки зрения управления трафиком.

    Возможности управления, предлагаемые существующими внутренними протоколами маршрутизации шлюзов Интернет, не соответствуют требованиям управления трафиком. Это создает трудности при актуализации эффективных политик, предназначенных для решения проблем совершенствования работы сети. Действительно, IGP, базирующиеся на алгоритмах кратчайшего пути, вносят заметный вклад в проблемы перегрузки в автономных системах Интернет. Алгоритмы SPF базируются на простой аддитивной метрике. Эти протоколы управляются топологией, так что полоса пропускания и параметры трафика не являются факторами, рассматриваемыми в процессе принятия маршрутных решений. Следовательно, перегрузка часто происходит, когда:

  • кратчайшие пути нескольких потоков трафика объединяются в каких-то каналах или интерфейсах маршрутизатора, или
  • данный трафик потока маршрутизирован через канал или интерфейс маршрутизатора, который не имеет достаточной полосы пропускания.
  • Эти сценарии проявляются даже тогда, когда имеются альтернативные маршруты с избытком ресурсов. Именно этого аспекта проблем перегрузки (симптом неоптимального распределения ресурсов) управление трафиком стремится всеми способами избежать. Равномерное распределение загрузки может использоваться для разрешения второй проблемы, упомянутой выше, однако такое решение бесполезно в случае первого варианта перегрузки.

    Популярным подходом преодоления недостатков современных IGP является использование модели наложений, таких, как IP поверх ATM или IP поверх Frame Relay. Модель наложений расширяет пространство для маневра, делая возможным произвольные виртуальные топологии, накладываемые поверх реальной физической сети. Виртуальная топология формируется из виртуальных каналов, которые проявляются как физические каналы в протоколах маршрутизации IGP. Модель наложений предоставляет дополнительные важные услуги для поддержания управления трафиком и ресурсами, включая: (1) маршрутизацию, базирующуюся на ограничениях в рамках VC, (2) поддержку административно конфигурируемых VC-путей, (3) сжатие маршрута, (4) функции управления доступом, (5) формирование трафика и функции реализации политики при управлении трафиком, и (6) надзор за VC. Эти возможности допускают реализацию самых разных политик в сфере управления трафиком. Например, виртуальные каналы могут легко перемаршрутизироваться, чтобы перенаправить трафик в менее загру женные каналы.

    Для управления трафиком в больших насыщенных сетях желательно снабдить MPLS определенным уровнем функциональности, чтобы сделать его более совместимым с настоящими моделями наложений. К счастью, это может быть сделано достаточно прямолинейно.

    MPLS и управление трафиком

    Протокол MPLS стратегически достаточен для управления трафиком, так как он может предоставить большую часть функций, доступных в модели наложений, и по относительно низкой цене по сравнению с конкурирующими альтернативными решениями. Столь же важно, что MPLS предлагает возможность автоматизировать функции управления трафиком.

    Концепция каналов передачи данных MPLS используется достаточно широко. Согласно Li и Rekhter [11.3], канал передачи данных представляет собой объединение потоков данных одного и того же класса, которые следуют маршруту с коммутацией пакетов по меткам. Канал передачи данных представляет собой абстракцию трафика, с которой могут быть ассоциированы определенные характеристики. Полезно рассматривать каналы передачи данных как объекты, которые можно маршрутизировать, — то есть, путь, по которому транспортрируются данные, может меняться. С этой точки зрения, каналы передачи данных подобны виртуальным каналам в сетях ATM и Frame Relay. Важно, однако, подчеркнуть, что существует фундаментальное отличие между каналом передачи данных и путем. LSP представляет собой спецификацию пути с коммутацией по меткам, через который проходит трафик. На практике термины LSP и канал передачи данных часто используются синонимично.

    Привлекательность MPLS для управления трафиком может быть ассоциирована со следующими факторами.

  • Явные пути с коммутацией меток (которые не ограничиваются парадигмой переадресации, когда маршрут определяется на основе адреса места назначения) могут быть легко сформированы сетевым администратором или посредством стандартных протоколов.
  • LSP могут поддерживаться эффективно.
  • Каналы передачи данных могут быть смоделированы и поставлены в соответствие LSP.
  • Набор атрибутов может быть связан с каналами передачи данных, которые регулируют их рабочие характеристики.
  • Набор атрибутов может быть связан с ресурсами, которые ограничивают положение LSP и каналов передачи данных.
  • MPLS позволяет как агрегацию, так и дисагрегацию трафика, в то время как классическая переадресация на основе IP-адреса места назначения допускает только агрегацию.
  • Относительно легко реализовать в рамках MPLS маршрутизацию на основе ограничений.
  • Хорошая реализация MPLS может предложить заметно более низкую избыточность, чем конкурирующие альтернативы управления трафиком.
  • Кроме того, через механизм коммутации меток MPLS позволяет наложить на современную модель маршрутизации Интернет квазиканальную коммутацию. Многие существующие предложения для управления трафиком посредством MPLS концентрируются на возможности формирования LSP. Хотя такая возможность является фундаментальной для управления трафиком, реально этого недостаточно.

    Наведенный MPLS-граф

    В данном подразделе вводится концепция наведенного MPLS-графа, которая является центральной при управлении трафиком в сфере MPLS. Наведенный MPLS-граф аналогичен виртуальной топологии в модели наложений. Он логически проецируется на физическую сеть путем выбора LSP для каналов транспортировки трафика.

    Наведенный MPLS-граф состоит из набора LSR, которые представляют собой узлы графа, и набора LSP, которые предоставляют логические соединение точка-точка между указанными LSR и, следовательно, служат в качестве каналов наведенного графа. Имеется возможность сформировать иерархический наведенный MPLS-граф, базирующийся на концепции стеков меток (смотри [11.1]).

    Наведенные MPLS-графы важны потому, что базовые проблемы управления полосой пропускания в MPLS определяются способом и возможностью эффективно совместить наведенный MPLS-граф с физической топологией сети.

    Пусть G = (V, E, c) является графом, отражающим физическую топологию сети. Здесь, V — набор узлов сети и E — набор каналов; то есть, для v и w из V объект (v,w) содержится в E, если v и w являются непосредственно связанными в рамках G. Параметр "c" представляет собой набор емкостей и других ограничений, сопряженных с E и V. Мы будем рассматривать G как основу сетевой топологии.

    Пусть H = (U, F, d) является наведенным MPLS-графом, где U — субнабор V, представляющй набор LSR в сети, или более точно — набор LSR, которые являются конечными точками, по крайней мере, одного LSP. Здесь F представляет собой набор LSP, так что для x и y из U, объект (x, y) находится в F, если существует LSP с x и y в качестве конечных точек. Параметр d представляет собой набор требований и ограничений, ассоциированных с F. Очевидно, H является ориентированным графом. Можно видеть, что H зависит от переходных характеристик G.

    Фундаментальные проблемы управления трафиком в MPLS

    Существует три фундаментальных проблемы, относящиеся к управлению трафиком в MPLS.

  • Первая проблема касается того, как определять соответствие пакетов определенному классу FEC (Forwarding Equivalence Class).
  • Вторая проблема касается того, как определять соответствие FEC и каналов передачи данных.
  • Третья проблема касается того, как определять соответствие каналов передачи данных физической топологии сети через маршруты с коммутацией по меткам.
  • Здесь не рассматриваются первые две проблемы (хотя они весьма важны). Вместо этого далее анализируются возможности, которые позволяют третей функции осуществлять эффективную и надежную работу сетей. Установление соответствия между наведенным MPLS-графом ( H ) и базовой топологией сети ( G ) является достаточно важной проблемой.

    Расширенные возможности управления трафиком с помощью MPLS

    Выше были рассмотрены базовые функции управления трафиком в современном Интернет. Далее описываются функциональные возможности, необходимые для полномасштабного поддержания управления трафиком в больших сетях через посредство протокола MPLS. Предлагаемые возможности включают в себя:

  • набор атрибутов, связанных с каналами передачи данных, совокупность которых характеризует рабочее состояние сети;
  • набор атрибутов, связанных с ресурсами, которые ограничивают размещение пути информационных потоков. Они могут рассматриваться также как топологические ограничения;
  • "маршрутизация на основе ограничений", которая используется для выбора пути канала передачи данных в соответствии с набором параметров пунктов 1 и 2, приведенных выше. Маршрутизация на основе ограничений не должна являться частью протокола MPLS. Однако они должны быть тесно связаны.
  • Атрибуты, связанные с каналами передачи данных и ресурсами, а также параметры, ассоциированные с маршрутизацией, в совокупности представляют собой набор управляющих переменных, которые могут быть модифицированы в результате действий либо администратора, либо автоматических агентов, для того, чтобы привести сеть в желательное состояние.

    В рабочей сети крайне желательно, чтобы эти атрибуты можно было менять динамически в реальном масштабе времени без неблагоприятных последствий.

    Атрибуты и характеристики канала передачи данных

    В этом разделе обсуждаются атрибуты, которые можно ассоциировать с каналами передачи данных и которые могут определять рабочие характеристики сети. Базовые свойства каналов передачи данных перечислены ниже.

  • Канал передачи данных представляет собой объединение потоков данных, принадлежащих одному классу. В определенном контексте может быть желательно смягчить это определение и позволить каналам передачи данных содержать мультиклассные объединения потоков.
  • В одноклассовой модели обслуживания, такой, как современный Интернет, канал передачи данных может включать в себя все потоки между входным и выходным LSR.
  • Каналы передачи данных являются маршрутизируемыми объектами (аналогично ATM VC).
  • Канал передачи данных отличается от LSP, через который он проходит. В операционном контексте канал передачи данных может быть перенесен из одного пути в другой.
  • Каналы передачи данных являются однонаправленными.
  • На практике канал передачи данных может характеризоваться своими входным и выходным LSR, FEC, которому он соответствует, и набором атрибутов, которые определяют его рабочие характеристики.

    Имеется два пункта особой важности: (1) параметризация каналов передачи данных и (2) положение маршрута и правила управления каналом передачи данных.

    Двунаправленные каналы передачи данных

    Хотя каналы передачи данных являются концептуально однонаправленными, во многих практических контекстах полезно одновременно анализировать два канала передачи данных с идентичными конечными точками, но с разным направлением потоков. Два канала передачи данных логически связаны друг с другом. Один канал, называемый прямым, транспортирует трафик от исходного узла к узлу места назначения. Другой канал, называемый обратным, транспортирует трафик от узла места назначения к исходному узлу. Объединение двух таких каналов называется двунаправленным каналом передачи данных BTT (bidirectional traffic trunk), если выполняются следующие два условия:

  • оба канала передачи данных инициализированы одновременно одним и тем же LSR, называемым исходным узлом, или возникли в результате одномоментной операции сетевой управляющей станции;
  • ни один из образующих такую пару каналов не может существовать отдельно. То есть, оба создаются и исчезают одновременно.
  • Следует также рассмотреть топологические свойства BTT. BTT может быть топологически симметричным или асимметричным. BTT считается топологически симметричным, если составляющие его каналы передачи данных имеют одни и те же физические маршруты. Если, однако, составляющие его каналы передачи данных маршрутизированы через разные пути, тогда BTT называется топологически асимметричным.

    Нужно заметить, что двунаправленные каналы передачи данных имеют в основном административное удобство. На практике большинство функций управления трафиком могут быть реализованы с использованием исключительно однонаправленных каналов передачи данных.

    Базовые операции для канала передачи данных

    Базовые операции в канале передачи данных, важные для целей управления трафиком, перечислены ниже.

  • Установить (Establish): создать канал передачи данных.
  • Активировать (Activate): запустить информационный обмен через канал передачи данных. Установление и активизация канала передачи данных — логически не связанные события. Они могут, однако, быть реализованы в рамках одной операции.
  • Деактивировать (Deactivate): останавливать информационный поток через канал передачи данных.
  • Модифицировать атрибуты (Modify Attributes): изменить атрибуты канала передачи данных.
  • Сменить маршрут (Reroute): изменить маршрут канала передачи данных. Это может быть сделано административно или автоматически с помощью базовых протоколов.
  • Ликвидировать (Destroy): ликвидировать канал передачи данных и уведомить об имеющихся ресурсах. К таким ресурсам относится пространство меток и, возможно, дополнительная полоса пропускания.
  • Выше рассматривались базовые операции каналов передачи данных. Возможны и дополнительные операции, сопряженные с реализацией политики и формированием трафика.

    Мониторирование аккоунтинга и работы

    Возможности мониторинга аккоутнтинга и рабочих характеристик являются крайне важным для задач биллинга и контроля параметров трафика. Статистика трафика, полученная с помощью такой системы мониторинга, может использоваться для оптимизации рабочих характеристик канала и для планирования управления трафиком.

    Возможность получения статистики на уровне канала передачи данных так важна, что это следует рассматривать как существенное требование управления трафиком через MPLS.

    Базовые атрибуты управления трафиком каналов передачи данных

    Атрибут канала передачи данных является параметром, который влияет на рабочие характеристики канала.

    Атрибуты могут быть явно присвоены каналам передачи данных администратором или заданы неявно базовыми протоколами, когда пакеты классифицируются и сортируются по классам эквивалентности (FEC) на входе в область MPLS. Независимо от того, как атрибуты были первоначально присвоены, для целей управления трафиком нужно допустить их административную модификацию.

    Основные атрибуты каналов передачи данных наиболее важные для управления трафиком перечислены ниже.

  • Атрибут политики (Policing)
  • Атрибут приоритета
  • Атрибут приоритетного прерывания обслуживания (Preemption)
  • Атрибут устойчивости (Resilience)
  • Атрибуты управления и выбора пути
  • Атрибуты параметров трафика
  • Комбинация параметров трафика и атрибутов политики аналогична использованию параметрического управления в сетях ATM. Большинство атрибутов, перечисленных выше, имеют аналоги в хорошо установившихся технологиях. Следовательно, следует достаточно непосредственно установить соответствие между атрибутами канала передачи данных и многими существующими архитектурами переключения и маршрутизации.

    Приоритет и приоритетное прерывание обслуживания могут рассматриваться как относительные атрибуты, так как они выражают определенные отношения между каналами передачи данных. Концептуально, эти двоичные отношения определяют способ взаимодействия каналов между собой, когда они соревнуются за получение сетевых ресурсов в процессе установления пути и его рабочих параметров.

    Атрибуты параметров трафика

    Параметры трафика могут использоваться при сборе данных об информационных потоках (или более точно FEC), которые надлежит транспортировать через информационный канал. Такие характеристики могут включать пиковые загрузки или средние потоки. Параметры трафика важны потому, что они указывают требования к ресурсам канала передачи данных. Это полезно для выделения ресурсов и исключения перегрузки за счет политики предвидения.

    Атрибуты управления и выбора пути

    Атрибуты управления и выбора пути определяют правила выбора пути канала передачи данных, а также правила работы с маршрутами, которые уже существуют.

    Маршруты могут быть вычислены автоматически с помощью протоколов маршрутизации или могут быть определены сетевым администратором. Если требований к ресурсам или ограничений, сопряженных с каналом передачи данных, нет, тогда для выбора пути может быть использован протокол, управляемый топологией. Однако, если требования к ресурсам или ограничения, связанные с политикой, имеются, тогда следует использовать маршрутизацию, основанную на ограничениях.

    Управление касается всех аспектов, имеющих отношение к поддержанию путей, через которые проходят каналы передачи данных. В некоторых операционных контекстах желательно, чтобы реализация MPLS могла динамически себя реконфигурировать для адаптации к состоянию системы. Адаптивность и устойчивость являются аспектами динамического управления маршрутом.

    Чтобы контролировать выбор пути и процесс управления, необходим набор атрибутов. Базовые атрибуты и рабочие характеристики, связанные с выбором пути и управлением каналом передачи данных, описаны ниже.

    Административно специфицированные маршруты

    Административно специфицированный путь для канала передачи данных конфигурируется в результате действий оператора. Административно специфицированный путь может быть определен полностью или частично. Путь полностью специфицирован, если указаны все шаги между начальной и конечной точками. Путь частично специфицирован, если представлен только субнабор промежуточных шагов. В этом случае нужны базовые протоколы, чтобы сформировать окончательный маршрут. Из-за ошибок оператора административно специфицированный путь может оказаться несогласованным или нелогичным. Базовые протоколы маршрутизации должны быть способны детектировать такую несогласованность и вносить необходимые коррективы.

    Атрибут path preference rule (правило предпочтения пути) должен быть ассоциирован с административно специфицированными путями. Атрибут "правила предпочтения пути" представляет собой двоичную переменную, которая указывает, является ли административно сконфигурированный путь обязательным или нет.

    Если административно сконфигурированный путь выбран с обязательным атрибутом, должен использоваться этот (и только этот) путь. Если обязательный путь недопустим (например, конечные пункты топологически разделены) или если путь не может быть использован, так как его ресурсы неадекватны, тогда процесс установки пути (setup) потерпит неудачу. Другими словами, если путь специфицирован как обязательный, то альтернативный путь не может использоваться ни при каких обстоятельствах. Обязательный путь, который успешно приписан, является неявно закрепленным. Раз путь присвоен, его нельзя изменить, а можно только ликвидировать или заменить новым.

    Однако если административно специфицированный путь выбран со значением атрибута предпочтения "необязательный", тогда путь следует использовать, если это возможно. В противном случае может использоваться альтернативный путь, предлагаемый маршрутным протоколом.

    Иерархия предпочтений для мультимаршрутов

    В некоторых практических контекстах, может быть полезно административно специфицировать набор кандидатов маршрутов для данного канала передачи данных и определить иерархию предпочтения этих маршрутов. Во время установления пути правила предпочтения используются при выборе подходящего пути из списка кандидатов. В случае неполадки правила предпочтения применяются для выбора альтернативного пути из списка кандидатов.

    Атрибуты сродства классов ресурсов (Resource Class Affinity)

    Атрибуты сродства классов ресурсов, ассоциированные с каналом передачи данных, могут использоваться для спецификации класса ресурсов, которые следует включить явно или исключить из пути канала передачи данных. Эти атрибуты политики могут понадобиться для введения дополнительных ограничений для маршрута канала передачи данных. Атрибуты сродства классов ресурсов могут быть специфицированы для трафика в виде последовательности пар:

    <resourceclass, affinity>; <resourceclass, affinity>;

    Параметр resource-class идентифицирует класс ресурса, для которого определено соотношение сродства в отношении канала передачи данных. Параметр affinity указывает на соотношение сродства; то есть, включены или исключены члены класса ресурсов для канала передачи данных. В частности, параметр affinity может быть двоичной величиной, которая принимает одно из следующих значений: (1) явное включение и (2) явное исключение.

    Если атрибут сродства является двоичной переменной, можно использовать булевы выражения для спецификации сродства класса ресурсов, ассоциированных с данным каналом передачи данных.

    Если не специфицировано никакого атрибута сродства класса, тогда предполагается значение отношения сродства "don't care" (безразлично) между каналом передачи данных и ресурсами. То есть, не существует никаких требований по включению или исключению каких-либо ресурсов для пути канала передачи данных. На практике — это режим по умолчанию.

    Атрибуты сродства классов ресурсов очень полезны и эффективны, так как они могут быть использованы при реализации самых разных политик. Например, они могут быть применены для размещения определенных каналов передачи данных в заданных топологических областях сети.

    Маршрутизация на основе ограничений может использоваться для вычисления точного пути для канала передачи данных так, чтобы удовлетворить ограничениям сродства класса ресурсов следующим образом:

  • для прямого включения перед началом вычисления пути удалить все ресурсы, не принадлежащие специфицированным классам;
  • для прямого исключения перед началом вычисления пути удалить все ресурсы, принадлежащие специфицированным классам.
  • Атрибут адаптивности

    Характеристики сети и ее состояние изменяются со временем. Например, появляются новые ресурсы, утраченные ресурсы могут быть снова активизированы, а выделенные ресурсы могут оказаться недоступными. Вообще, иногда могут оказаться доступными более эффективные пути. Следовательно, с точки зрения управления трафиком, необходимо иметь административные параметры управления, которые могут использоваться для спецификации того, как канал передачи данных будет реагировать на этот динамизм. При некоторых сценариях может оказаться желательным динамически изменить пути некоторых информационных каналов в ответ на изменения состояния сети. Этот процесс называется реоптимизацией. При других сценариях повторная оптимизация может оказаться нежелательной.

    Атрибут адаптивности ( adaptivity ) является частью блока параметров пути, ассоциированного с каналом передачи данных. Атрибут адаптивности, ассоциированный с каналом передачи данных, указывает на то, является ли канал субъектом реоптимизации. То есть, атрибут адаптивности представляет собой двоичную переменную, которая принимает одно из следующих значений: (1) разрешить реоптимизацию и (2) запретить реоптимизацию.

    Если реоптимизация разрешена, канал передачи данных может под действием маршрутных протоколов изменить путь в ответ на изменение состояния сети. Напротив, если реоптимизация запрещена, канал передачи данных является закрепленным и его маршрут не может быть изменен при вариации ситуации в сети.

    Стабильность является главным соображением, когда разрешена реоптимизация. Чтобы содействовать стабильности, реализация MPLS не должна быть слишком реактивной в ответ на эволюционные изменения в сети. В то же время, она должна достаточно быстро адаптироваться, чтобы оптимально использовать появляющиеся сетевые ресурсы. Отсюда следует, что частота реоптимизаций должна определяться административно, чтобы допускать настройку.

    Следует заметить, что реоптимизация не то же самое, что и устойчивость к внешним воздействиям. Для спецификации характеристик устойчивости канала передачи данных используются другие атрибуты. На практике представлялось бы разумным ожидать, что канал передачи данных, подвергающийся реоптимизации, должен быть устойчив против отказов вдоль его пути. Однако канал передачи данных, который не подвергается реоптимизации и чей маршрут не специфицирован административно как обязательный, также должен быть устойчивым против отказов связей и узлов вдоль своего пути.

    Формально, можно утверждать, что адаптивность к состоянию эволюции через реоптимизацию влечет за собой устойчивость к отказам, тогда как устойчивость к отказам не предполагает общей адаптивности к изменениям состояния сети.

    Распределение нагрузки в параллельных каналах передачи данных

    Распределение нагрузки по нескольким параллельным каналам передачи данных между двумя узлами является крайне важным.

    Во многих практических контекстах суммарный трафик между узлами может быть таким, что ни один канал в отдельности (следовательно, и ни один маршрут) не сможет его пропустить. Однако суммарный поток может быть меньше, чем максимально допустимый поток через поперечное сечение ("mincut"), разделяющее два узла. В этом случае единственно возможным решением может быть деление трафика на несколько потоков.

    В домене MPLS эта проблема может быть решена с помощью нескольких каналов, соединяющих два узла. Следовательно, нужны гибкие средства назначения нагрузки для параллельных каналов передачи данных, соединяющих два узла.

    В частности, в ситуациях, где параллельные потоки данных оправданы, было бы полезно иметь некоторые атрибуты, которые могут применяться для указания доли трафика, проходящего через каждый из каналов. Базовые протоколы реализуют нагрузку каналов в указанной пропорции. Желательно также обеспечивать порядок передачи пакетов, принадлежащих одному и тому же микропотоку (идентичные адреса отправителя и получателя плюс номера порта).

    Атрибут приоритета

    Атрибут priority (приоритет) определяет относительную важность канала передачи данных. Если с MPLS применяется маршрутизация, базирующаяся на ограничениях, тогда приоритеты становятся очень важными, так как они используются в случае отказов для определения порядка, в котором выбираются пути для канала передачи данных из имеющегося списка.

    Приоритеты важны также в реализациях, допускающих приоритетное обслуживание, так как они могут быть нужны для определения политики обслуживания каналов передачи данных.

    Атрибут Preemption

    Атрибут preemption определяет, может ли канал передачи данных заместить другой канал на данном пути и может ли другой канал передачи данных заместить заданный канал. Приоритетная подмена полезна как для схемы оптимизации, ориентированной на трафик, так и для схемы, ориентированной на ресурс. Приоритетное замещение может использоваться, чтобы гарантировать то, что канал передачи данных маршрутизирован через вполне определенный путь, а это особенно важно при оказании дифференцированных услуг

    Приоритетное замещение может также применяться при реализации различных политик восстановления, вступающих в силу при отказах оборудования или программ.

    Атрибут preemption может использоваться для спецификации четырех режимов приоритетного замещения для канала передачи данных: (1) замещающий объект активирован (preemptor enabled), (2) nonpreemptor (не является замещающим объектом), (3) допускающий подмену и (4) не допускающий подмены. Канал передачи данных, где разрешено приоритетное замещение (preemptor enabled), может заменять каналы с более низким приоритетом, признанные как приемлемые для замены. Канал передачи, специфицированный как не подлежащий подмене, не может быть замещен каким-либо иным каналом, вне зависимости от их относительных приоритетов. Канал передачи данных, допускающий замещение, может быть замещен другим каналом с более высоким приоритетом, который имеет атрибут preemptor enabled.

    Достаточно просто понять, что некоторые режимы замещения являются взаимно исключающими. Используя схему нумерации, описанную выше, можно назвать допустимые комбинации режимов для канала передачи данных: (1, 3), (1, 4), (2, 3) и (2, 4). Комбинация (2, 4) является режимом по умолчанию.

    Канал передачи данных, скажем "A", может заместить другой канал, скажем "B", только если все следующие пять условий будут выполнены:

  • "A" имеет относительно более высокий приоритет, чем "B",
  • "A" претендует на ресурс, используемый "B",
  • ресурс не может одновременно поддерживать "A" и "B",
  • "A" может быть приемником, и
  • "B" допускает подмену.
  • Атрибут preemption не рассматривается как обязательный атрибут современной модели обслуживания в Интернет (best effort service), хотя и является полезным. Однако, в сценарии с дифференциальными услугами необходимость подмены становится очевидной. Более того, в появляющихся архитектурах оптического Интернет, где функции защиты и восстановления, чтобы уменьшить цену, могут быть перенесены с оптического уровня на информационные сетевые элементы (такие, как гигабитные и терабитные маршрутизаторы с коммутацией по меткам), стратегии приоритетного замещения могут использоваться для сокращения времени восстановления канала в условиях сбоев.

    Атрибут устойчивости (Resilience)

    Атрибут resilience определяет поведение канала передачи данных в случае возникновения ошибок — то есть, когда ошибка происходит на пути, через который проходит канал. При таких обстоятельствах должны быть рассмотрены следующие проблемы: (1) детектирование ошибки, (2) уведомление об ошибке, (3) восстановление после сбоя. Очевидно, реализация MPLS должна содержать механизмы для решения всех этих задач.

    Многие политики восстановления могут быть специфицированы для каналов передачи данных, чьи маршруты подвержены отказам. Ниже представлены примеры приемлемых схем.

  • Не нужно изменять маршрут канала передачи данных (traffic trunk). Например, схема живучести может уже существовать и реализовываться за счет альтернативного механизма, который гарантирует непрерывность обслуживания в случае сбоя без необходимости изменения маршрута канала передачи данных. Примером такой альтернативной схемы (конечно, существует и много других), является ситуация, когда между двумя узлами имеется несколько параллельных каналов и в случае отказа одного LSP его трафик будет перераспределен между остальными LSP согласно некоторой заданной политике.
  • Перенаправить маршрут на приемлемый путь с достаточными ресурсами. Если такового нет, тогда маршрут не изменять.
  • Поменять маршрут на любой доступный, игнорируя ограничения по ресурсам.
  • Возможно много других схем, включая комбинации перечисленных выше.

    Базовый атрибут resilience указывает на процедуру восстановления, которая должна быть запущена для данного канала при возникновении отказа. В частности, базовый атрибут resilience является двоичной переменной, которая определяет, будет ли данный канал изменять маршрут, если сегмент его пути выдал отказ. Расширенный атрибут resilience может применяться для подробной спецификации в случае сценария отказа. Например, расширенный атрибут resilience может специфицировать набор альтернативных путей, которые следует использовать в случае отказа, а также правил, которые управляют относительным предпочтением для каждого специфицированного пути. Атрибуты resilience обеспечивают тесное взаимодействие между MPLS и маршрутизацией.

    Атрибут Policing

    Атрибут policing определяет действия, которые следует предпринять в рамках базовых протоколов, когда канал передачи данных становится нерабочим — то есть, когда какие-то параметры канала отклонились за оговоренные пределы. Вообще, атрибуты policing могут указывать, является ли неуправляемый канал передачи данных лимитированным по полосе пропускания или он просто переадресуется без каких-либо действий, учитывающих местную политику. Если используется политика, тогда для реализации таких функций могут применяться адаптации алгоритмов, таких, как ATM GCRA [11].

    Использование политики необходимое во многих рабочих сценариях, может быть неприемлемо в других. Вообще, обычно желательно реализовать какую-то политику на входе сети (чтобы обеспечить согласование с требованиями уровня обслуживания) и минимизировать применение политики в ядре, за исключением ситуации, когда ограничение емкости диктуют обратное.

    Следовательно, с точки зрения управления трафиком необходимо иметь возможность административно разрешать и запрещать применение политики для каждого канала передачи данных (traffic trunk).

    Атрибуты ресурсов

    Атрибуты resource являются частью параметров состояния топологии, которые используются, чтобы установить ограничения на маршрутизацию каналов передачи данных в рамках имеющихся ресурсов.

    Максимально выделяемая доля (MAM)

    Максимально выделяемая доля MAM (maximum allocation multiplier) ресурса является административно задаваемым атрибутом, который определяет долю ресурса, доступную для канала передачи данных. Этот атрибут нужен в основном для распределения полосы пропускания. Однако он может быть применен также для резервирования ресурсов LSR. Концепция MAM аналогична концепции параметров подписки и резервирования в сетях Frame Relay и ATM.

    Значения MAM могут быть выбраны так, чтобы ресурс был недораспределен или перераспределен. Ресурс считается недораспределенным, если суммарные требования всех каналов передачи данных, которые могут его использовать, меньше емкости ресурса. В противном случае ресурс считается перераспределенным.

    Недораспределение может применяться, чтобы установить предел использования ресурсов. Однако, в случае MPLS это сложнее, чем в схемах с коммутацией каналов, так как для MPLS некоторые потоки могут маршрутизоваться посредством обычных протоколов шаг-за-шагом без рассмотрения каких-либо ресурсных ограничений.

    Перераспределение может использоваться, чтобы реализовать преимущества статистических характеристик трафика в рамках более эффективной политики использования имеющихся ресурсов. В частности, перераспределение можно применить в ситуации, когда пики загрузки трафика в разных каналах не совпадают по времени.

    Атрибут класса ресурса

    Атрибуты класса ресурса являются параметрами, присваиваемыми административно, и вводят понятие класса для ресурсов. Атрибуты класса ресурса могут рассматриваться как цвета, приписанные ресурсам, такие, что набор ресурсов с одним цветом концептуально принадлежит к одному классу. Атрибуты класса ресурса могут использоваться для реализации разнообразных политик. Ключевыми ресурсами здесь являются связи. В случае применения в отношении связей, атрибут класса ресурса становится эффективной характеристикой параметров состояния связи.

    Концепция атрибутов класса ресурса является достаточно мощной абстракцией. С точки зрения управления трафиком она может применяться для реализации различных политик при оптимизации характеристик канала по трафику или по ресурсам. В частности, атрибуты класса могут использоваться для:

  • реализации одинаковых политик для набора ресурсов, которые не обязательно находятся в одной и той же топологической области;
  • спецификации относительного предпочтения для набора ресурсов, связанных с положением маршрута, по которому транспортируется поток данных;
  • ограничения положения каналов передачи данных для заданного субнабора ресурсов;
  • реализации обобщенного включения/исключения политик;
  • реализации политики ограничения локальности трафика — то есть, политики, которая ищет способы размещения трафика в пределах оговоренных топологических областей сети.
  • Кроме того, атрибуты класса ресурса могут использоваться для целей идентификации.

    Вообще, ресурс может быть ассоциирован более чем с одним атрибутом класса ресурса. Например, все каналы OC-48 в заданной сети могут быть приписаны определенному атрибуту класса ресурса. Субнаборы каналов OC-48, могут быть приписаны к дополнительным атрибутам класса, чтобы реализовать специальную политику или построить нужную вам сеть.

    Маршрутизация, базирующаяся на ограничениях

    В современной терминологии маршрутизация, основанная на ограничениях, часто называется QoS-маршрутизацией (смотри [11.5,6,11.7,[11.10]).

    Здесь используется термин маршрутизация на основе ограничений, однако, если быть точным, QoS-маршрутизация является лишь ее составной частью.

    Маршрутизация на основе ограничений делает возможным резервирование ресурсов по запросу и сосуществование с имеющимися внутренними протоколами маршрутизации Интернет, работающими по принципу шаг-за-шагом.

    Маршрутизация на основе ограничений использует следующие данные в качестве входных:

  • атрибуты, связанные с каналами передачи данных;
  • атрибуты, связанные с ресурсами;
  • другую информацию, характеризующую состояние топологии сети.
  • Базируясь на этой информации, процесс маршрутизации на основе ограничений автоматически вычисляет маршрут для каждого потока, исходящего из данного узла. В этом случае маршрут для каждого информационного потока представляет собой спецификацию пути с коммутацией по меткам, который удовлетворяет требованиям, записанным в атрибутах канала. Ограничения формулируются на основе доступности ресурсов, административной политики и статусной топологической информации.

    Маршрутизация на основе ограничений может существенно сократить уровень ручной конфигурации и необходимого вмешательства для актуализации политики управления трафиком.

    На практике инженер трафика, оператор или даже автоматическая система специфицирует конечные точки канала передачи данных и приписывает набор атрибутов, который объединяет ожидаемые рабочие характеристики канала. Предполагается, что маршрутизация на основе ограничений найдет приемлемый путь, который удовлетворит имеющимся ожиданиям. Если необходимо для более тонкой оптимизации, инженер трафика или система поддержки управления трафиком может затем использовать административно сконфигурированные маршруты.

    Базовые характеристики маршрутизации на основе ограничений

    Маршрутизация на основе ограничений должна, по крайней мере, иметь возможность автоматически получать базовые, приемлемые решения задачи размещения пути для канала передачи данных.

    Вообще, известно, что проблема маршрутизации на основе ограничений трудно разрешима для большинства реалистичных ограничений. Однако, на практике для нахождения приемлемого пути, если он существует, может использоваться очень простая хорошо известная эвристика (смотри, например, [11.9]).

  • Сначала отбрасываются ресурсы, которые не удовлетворяют требованиям атрибутов канала передачи данных.
  • Затем, для оставшегося графа связей запускается алгоритм поиска кратчайшего пути.
  • Ясно, что если приемлемый путь для заданного канала передачи данных существует, тогда предложенная выше простая процедура его найдет. Могут быть специфицированы дополнительные правила для разрубания узлов и выполнения дальнейшей оптимизации. Вообще, оптимизация обычно сводится к минимизации перегрузки. Однако когда нужно маршрутизировать несколько каналов передачи данных, можно показать, что выше предложенный алгоритм не всегда находит решение, даже когда такое решение существует.

    Соображения реализации

    Многие коммерческие реализации коммутаторов Frame Relay и ATM уже поддерживают некоторые аспекты маршрутизации на основе ограничений. Для таких приборов или для новых MPLS-реализаций должно быть относительно просто расширить существующие варианты маршрутизации на основе ограничений, чтобы удовлетворить специфическим требованиям MPLS.

    Для маршрутизаторов, которые используют топологически управляемые IGP, определяющие маршрут шаг-за-шагом, маршрутизацию на основе ограничений можно внедрить одним из двух способов:

  • путем расширения существующих IGP протоколов, таких, как OSPF и IS-IS для поддержки маршрутизации на основе ограничений. Прилагаются усилия для решения этой задачи в отношении протокола OSPF (смотри [5,7]);
  • путем добавления процесса маршрутизации на основе ограничений в каждый маршрутизатор, который может сосуществовать с имеющимися IGP. Этот сценарий представлен на рис. 11.7.
  • (рис 11.7) Процесс маршрутизации, базирующийся на ограничениях, на уровне 3 LSR

    Существует много важных деталей, связанных с реализацией маршрутизации на основе ограничений в устройствах уровня 3, которые здесь не обсуждались. Сюда входят:

  • Механизмы обмена статусной топологической информацией (данные о доступности ресурсов, информация о состоянии связи, информация об атрибутах ресурсов) между процессами маршрутизации на основе ограничений.
  • Механизмы работы с топологической статусной информацией.
  • Взаимодействие между процессами маршрутизации на основе ограничений и процессами традиционных IGP.
  • Механизмы выполнения требований адаптивности каналов передачи данных.
  • Механизмы выполнения требований устойчивости и живучести каналов передачи данных.
  • Короче говоря, маршрутизация на основе ограничений помогает при осуществлении оптимизации сетей путем автоматического поиска приемлемых маршрутов, которые удовлетворяют набору ограничений, налагаемых на каналы передачи данных. Она может существенно уменьшить усилия по административной конфигурации и ручному вмешательству для решения задач управления трафиком.

    Страницы:

    В начале 90-х для размещения маршрутной таблицы в маршрутизаторе хватало 4-8Мбайт, но требования быстро росли, и это стимулировало широкое внедрение идеологии автономных систем (AS). На какое-то время AS позволили решить проблему, но к 2005-му году требования к памяти маршрутизатора возросли до 100Мбайт, и это не предел.

    Давайте сначала прикинем, со сколькими сетевыми узлами вы и сотрудники вашего подразделения устанавливаете связь в течение рабочего дня. Это число нестабильно, зависит от характера работы и сильно варьируется от человека к человеку. Но, очевидно, что это число вряд ли превышает нескольких сотен и слабо меняется со временем. Таким образом, для обеспечения требуемых маршрутов объем маршрутной таблицы, если бы он содержал только используемые вами IP-адреса, был бы незначительным. При этом поиск в такой таблице занимал бы на порядок меньше времени (RTT сокращается на порядок).

    Именно идея сохранения в маршрутной таблице только реально используемых виртуальных путей и легла в основу разработки протокола MPLS и сопряженных с ним протоколов маршрутизации.

    По мере разработки этой технологии стало ясно, что протокол MPLS (Multi Protocol Label Switching) достаточно удобен для реализации заданных значений QoS (управление трафиком – ТЕ), так как VPN (Virtual Private Network) в рамках MPLS формируются чаще всего одним сервис-провайдером. Идеология VPN является основой протокола MPLS.

    11.1. Базовые предпосылки

    Интернет — это система взаимодействия удаленных программ. Совместимость этих программ гарантируется тем, что они следуют определенным регламентациям (протоколам). Управление трафиком представляет собой проблему, ставшую актуальной за последние несколько лет (если не считать ее составляющую, сопряженную с управлением перегрузкой).

    Период экстенсивного развития сети Интернет завершился несколько лет тому назад даже в РФ. Сейчас многие сервис-провайдеры пытаются привлечь клиентов дополнительными информационными услугами: IP-телефония, интерактивные игры, доступ к разнообразным базам данных и депозитариям, электронным магазинам, видеоконференциям, видео­телефонии, различным разновидностям цифрового телевидения и т. д. Клиенты же ищут не просто любого доступа в Интернет, а интересуются полосой пропускания, безопасностью, стабильностью связи. Именно с этим сопряжен бум разработок основополагающих документов (RFC) в последние 5 лет. По этой причине многие компании, в первую очередь производящие сетевое оборудование, уделяют повышенное внимание средствам управления трафиком (ТЕ) и QoS.

    Около 10 лет назад началась разработка первого протокола RSVP (RFC-2205). В нем осуществляется резервирование полосы пропускания (интегральный сервис) вдоль виртуального пути. Запрос резервирования посылает получатель трафика, а исполнителями запроса являются маршрутизаторы, обслуживающие виртуальный путь этого трафика.

    Современные задачи требуют более тонкой настройки качества обслуживания ( QoS ). Важными параметрами, характеризующими QoS, являются: задержка доставки (RTT), дисперсия времени доставки пакета, вероятность его потери, например, из-за переполнения буферов в транзитных сетевых устройствах. Все эти характеристики зависят от организации очередей в сетевых устройствах. С точки же зрения пользователя важно получить гарантию того, что все характеристики QoS окажутся в пределах допусков непосредственно на его рабочем месте. Машина же пользователя чаще всего подключена к переключателю уровня L2, который может не поддерживать ни один из протоколов, гарантирующих QoS.

    Если рассмотреть ситуацию на уровне L2, мы увидим, что здесь имеется сильная зависимость от физического уровня (L1). В сетях с маркерным доступом (например, Token Ring, см. book.itep.ru) существуют механизмы управления приоритетом и способы контроля доступа, гарантирующие определенное значение задержек сетевого отклика. В сетях ISDN и в особенности в ATM предусмотрен целый арсенал средств управления, работающих на фазе установления виртуального канала (процедура SETUP). Для Ethernet до последнего времени ситуация была много хуже. Здесь только некоторые переключатели поддерживают VLAN с приоритетами. Технология виртуальных сетей L2 позволяет сформировать в локальной сети соединение точка-точка. В таком соединении можно гарантировать пропускную способность на уровне 10/100Мбит/c. К сожалению, VLAN L2 создаются и модифицируются, как правило, администратором, но можно эту проблему перепоручить сценарию, например, на PERL, работающему с демоном SNMP сетевого прибора. В такой сети можно также гарантировать низкий уровень разброса времени реакции сети. Если сформировать VLAN с числом узлов (N) больше двух, можно гарантировать полосу лишь не ниже (10/100)/N. Для произвольной сети Ethernet никаких гарантий на уровне L2 предоставить нельзя. Здесь можно рассчитывать только на вышележащие уровни (IP/TCP/UDP).

    Принципы организации приоритетного трафика на уровне L2 рассмотрены в стандарте 802.1р. Стандарт 802.1р является частью стандарта 802.1D (мостовые соединения). В протоколе 802.1Q определены 4-байта метки (смотри рис. 11.1). Поле EtherType=TPID (Tagged Protocol Identifier) содержит код 0x8100 (смотри главу об Ethernet). Это поле соответствует полю тип протокола стандартного поля кадра Ethernet и указывает на необходимость обработки кадра согласно требованиям IEEE 802.1Q.

    Топология связей в локальной сети на уровне L3 определяется протоколами маршрутизации (статическими или динамическими — RIP, OSPF, IGRP).

    Протокол (см. IP) предусматривает задание значение ToS, определяемое соответствующим полем заголовка. Однооктетное поле тип сервиса (TOS — Type Of Service) характеризует то, как должна обрабатываться дейтаграмма.

    Субполе приоритет предоставляет возможность присвоить код приоритета каждой дейтаграмме. Значения приоритетов приведены в таблице.

    0 Обычный уровень
    1 Приоритетный
    2 Немедленный
    3 Срочный
    4 Экстренный
    5 CEITIC/ECP
    6 Межсетевое управление
    7 Сетевое управление

    В новейших разработках (RFC-2474, Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers) поле ToS заменено на поле DSCP (Differentiated Services Code Point), где младшие 6 бит выделены для кода DS (Differentiated Services), а старшие два бита пока не определены и их следует обнулять.

    До середины 90-х годов поле ToS в большинстве реализаций игнорировалось. Но после начала разработок средств обеспечения качества обслуживания (QoS) внимание к этому возросло. Появилось предложение замены поля TOS на поле DSCP, которое также имеет 8 бит (см. RFC-2474). (Смотри рис. 11.1.) Старшие биты CU пока не определены. Иногда это поле называется байтом DS (Differentiated Services).

    (рис 11.1) Формат поля DSCP

    Биты DS0-DS5 определяют селектор класса. Значения этого кода представлены в таблице ниже. Стандартным значением DSCP по умолчанию является 000000.

    Селектор класса DSCP
    Приоритет 1 001000
    Приоритет 2 010000
    Приоритет 3 011000
    Приоритет 4 100000
    Приоритет 5 101000
    Приоритет 6 110000
    Приоритет 7 111000

    На базе DSCP разработана технология пошагового поведения PHB (per Hop Behavior). В рамках этой политики определяются коды DSCP внутри классов. Например, для политики немедленной переадресации EF рекомендуемое значение DSCP=101110. Эта политика соответствует наиболее высокому уровню обслуживания.

    В маршрутизаторах компании CISCO Systems для классификации пакетов и выбора очередей используются два младших бита из трех. По умолчанию классу 0 выделяется 10% полосы, а классам 1, 2 и 3 — 20%, 30% и 40%, соответственно. Для очередей, основанных на классах QoS, пакеты, не принадлежащие ни одной группе, относятся к группе 0 и автоматически получают 1% от общей пропускной способности группы. Общий вес остальных групп не может превышать 99%. Если имеется нераспределенная полоса, она относится к группе 0. Понятно, что чем больше приоритетов или классов обслуживания используется, тем больше число очередей должно быть сформировано. Причем это относится ко всем сетевым устройствам вдоль пути транспортировки. Это условие далеко не всегда может быть выполнено.

    Серьезное влияние на качество обслуживания оказывает перегрузка. Впрочем, если бы перегрузка никогда не возникала, не нужно было бы заботиться о качестве обслуживания, — оно было бы всегда гарантировано.

    Строго говоря, значения TOS и QOS не эквивалентны, но именно значение поля ToS является базой для задания QoS. Присваивая при формировании IP-пакета определенное значение поля ToS, прикладная программа может попытаться реализовать определенные ограничения на QoS. Это поле может анализироваться маршрутизаторами, которые поддерживают протокол RSVP или MPLSTE, способные управлять трафиком.

    Под управлением трафиком здесь и далее подразумевается обеспечение QoS, управление перегрузкой и средства перераспределения потоков данных. В протоколе UDP нет никаких средств управления трафиком, в ТСР имеются механизмы управления перегрузкой.

    Кое-что предлагает набор протоколов RTP/RTCP, предназначенный для мультимедийных приложений (например, позволяет ликвидировать влияние разброса времени доступа в каналах Ethernet на качество воспроизведения изображения и звука.). Некоторые приложения и сетевые приборы способны сигнализировать о перегрузке (потере пакетов из-за переполнения буферов), посылая ICMP(4).

    Существенную проблему составляет необходимость идентифицировать пакеты, принадлежащие определенному процессу. Эта задача легко решается только в рамках протокола IPv6. Там в заголовке предусмотрено поле метка потока. Некоторые возможности предоставляет также протокол MPLS.

    11.2. Управление трафиком

    В настоящее время используется несколько методов управления трафиком.

  • Динамическая маршрутизация (RIP, OSPF, IGRP, BGP и т.д.). Здесь нет средства резервирования полосы, но предусмотрен механизм изменения маршрута при изменении значений метрики или из-за выхода из строя узла или обрыва канала. Некоторые из таких протоколов (OSPF, IGRP) могут строить отдельные таблицы маршрутизации для каждого уровня TOS/QOS [11.1], но метрики для каждого уровня задаются сетевым администратором. Здесь имеется возможность запараллеливания потоков с целью увеличения пропускной способности. Эти протоколы работают только в пределах одной автономной системы (AS). Протокол же BGP, используемый для прокладки путей между автономными системами, не способен в настоящее время как-либо учитывать уровень ToS/QoS (применяет алгоритм вектора расстояния, что связано с трудностью согласования значений метрик состояния канала администраторами разных AS). Новая версия многопротокольного расширения MPBGP специально создана для совместной работы с MPLS при формировании виртуальных сетей, но и он безразличен к TOS/QOS.
  • Формирование виртуальных сетей на уровнях L2 и L3. Протоколы VLAN обеспечивают повышенный уровень безопасности, но, как правило, не способны резервировать полосу. К этому типу относится и протокол MPLS.
  • Резервирование полосы в имеющемся виртуальном канале (протокол RSVP). RSVP может работать с протоколами IPv4 и IPv6. Протокол достаточно сложен для параметризации, поэтому для решения этой задачи был разработан протокол COPS, который существенно облегчает параметризацию. Функция COPS сходна с задачей языка RPSL для маршрутизации.
  • Автоматическое резервирование полосы при формировании виртуального канала процедурой SETUP в сетях ATM, ISDN, DQDB, Frame Relay и т.д. Управление очередями осуществляется аппаратно, но базовые параметры могут задаваться программно. Программы управления трафиком MPLS позволяют расширить возможности L2 сетей ATM и Frame Relay.
  • Использование приоритетов в рамках протокола IPv6. Возможность присвоения потокам меток облегчает, например, разделение аудио- и видеоданных.
  • Управление перегрузкой (окно перегрузки в TCP, ICMP(4) для UDP-потоков и т.д.).
  • Качество обслуживания QoS

    QoS связана с возможностью сети предоставить клиенту необходимый ему уровень услуг в условиях работы поверх сетей с самыми разнообразными технологиями, включая Frame Relay, ATM, Ethernet, сети 802.1, SONET и маршрутизуемые IP-сети.

    QoS представляет собой собрание технологий, которые позволяют приложениям запрашивать и получать предсказуемый уровень услуг с точки зрения пропускной способности, временного разброса задержки отклика, а также общей задержки доставки данных. В частности, QoS подразумевает улучшение параметров или достижение большей предсказуемости предоставляемых услуг. Это достигается следующими методами:

  • поддержкой определенной полосы пропускания;
  • сокращением вероятности потери кадров;
  • исключением сетевых перегрузок или контролем над ними;
  • возможностью конфигурирования сетевого трафика;
  • установкой количественных характеристик трафика по пути через сеть.
  • IEFT определяет для QoS следующие две архитектуры:

  • Интегрированные услуги (IntServ)
  • Дифференцированные услуги (DiffServ)
  • IntServ для явного задания уровня услуги (QoS) использует протокол RSVP. Это делается путем уведомления об этом требовании всех узлов вдоль пути обмена. Если все сетевые устройства вдоль пути могут предоставить запрошенную полосу, резервирование завершается успешно (смотри документ RFC-2205 [11.2]).

    DiffServ, вместо того чтобы уведомлять о требованиях приложения, использует в IP-заголовке DiffServ Code Point (DSCP) для указания требуемых уровней QoS. Cisco IOS® Software Release 12.1(5)T вводит совместимость маршрутизаторов Cisco с DiffServ (см. [15-16]).

    Управление перегрузкой может осуществляться путем изменения порядка, в котором посылаются пакеты согласно приписанного им приоритета. QoS-управление перегрузкой имеет четыре модификации протоколов управления очередями, каждый из которых позволяет организовать разное число очередей. L2 QoS предполагает следующее:

  • Управление входными очередями. Когда кадр приходит на вход порта, он может быть отнесен к одной из нескольких очередей, ассоциированных с портом, прежде чем он будет направлен на один из выходных портов. Как правило, несколько очередей применяются тогда, когда различные информационные потоки требуют различных уровней услуг или минимизации задержки. Например, IP-мультимедиа требует минимизации задержки, в отличие от передачи данных в FTP, WWW, email, Telnet, и т.д.
  • Классификация. Процесс классификации включает просмотр различных полей в заголовке Ethernet L2, а также полей IP-заголовка (L3) и заголовков TCP/UDP (L4), чтобы обеспечить определенный уровень услуг при коммутации пакетов.
  • Политика. Осуществление политики является процессом анализа кадра Ethernet, чтобы определить, не будет ли превышен заданный уровень трафика за определенный интервал времени (обычно это время является внутренним параметром переключателя). Если кадр создает ситуацию, при которой трафик превысит заданный уровень, он будет отброшен или значение CoS (Class of Service) может быть понижено.
  • Перезапись. Процесс перезаписи предоставляет возможность переключателю модифицировать CoS или ToS (Type of Service) в IPv4-заголовке. Следует учесть, что заголовок Ethernet 802.3 поля CoS не имеет (именно эта версия стандарта наиболее распространена в РФ).
  • Управление выходными очередями. После процесса перезаписи переключатель поместит кадр Ethernet в выходную очередь для последующей коммутации. Переключатель выполнит управление буфером так, чтобы не произошло переполнение. Это обычно осуществляется с помощью алгоритма RED (Random Early Discard), когда некоторые кадры случайным образом удаляются из очереди. Weighted RED (WRED) является директивой RED (используемой некоторыми модулями семейства Catalyst 6000), где значения CoS анализируются, чтобы определить, какие кадры следует отбросить. Когда буферы окажутся заполнены до определенного уровня, кадры с низким уровнем приоритета отбрасываются, в очереди сохраняются только высокоприоритетные кадры.
  • 11.3. Мультипротокольная коммутация по меткам (протокол MPLS)

    Основы протокола MPLS описаны в официальных документах RFC [11.3-11.9 и 11.14]. Существуют публикации и на русском языке [11.11-11.13]. Имеются три монографии, посвященных рассматриваемой проблематике [11.17-11.19].

    Протокол MPLS хорошо приспособлен для формирования виртуальных сетей (VPN) повышенного быстродействия (метки коммутируются быстрее, чем маршрутизируются пакеты, — это связано с меньшим размером маршрутных таблиц).

    Принципиальной основой MPLS являются IP-туннели. Для его работы нужна поддержка протокола маршрутизации MP-BGP (RFC-2858 [23]). Протокол MPLS может работать практически для любого маршрутизируемого транспортного протокола (не только IP). После того как сеть сконфигурирована (для этого используются специальные, поставляемые производителем скрипты), она существует, даже если в данный момент через нее не осуществляется ни одна сессия. При появлении пакета в виртуальной сети ему присваивается метка, которая не позволяет ему покинуть пределы данной виртуальной сети. Никаких других ограничений протокол MPLS не накладывает. Протокол MPLS предоставляет возможность обеспечения значения QoS, гарантирующего более высокую безопасность. Не следует переоценивать уровня безопасности, гарантируемого MPLS, — атаки типа "человек посередине" могут быть достаточно разрушительны. При этом для одного и того же набора узлов можно сформировать несколько разных виртуальных сетей (задействуя разные метки), например, для разных видов QoS. Но можно использовать возможности АТМ (процедура setup), если именно этот протокол применен в опорной сети (возможные перегрузки коммутаторов не в счет).

    Для обеспечения структурирования потоков в пакете создается стек меток, каждая из которых имеет свою зону действия. Формат стека меток представлен на рис. 11.2 и 11.3 (смотри RFC-3032). В нормальной ситуации стек меток размещается между заголовками сетевого и канального уровней (соответственно L2 и L3). Каждая запись в стеке занимает 4 октета.

    (рис 11.3) Формат стека меток (рис 11.2) Размещение меток в стеке

    Место заголовка МАС может занимать заголовок РРР. В случае работы с сетями АТМ метка может занимать поля VPI и VCI. Смотри рис 11.4. Глубина стека в данном случае не может превышать 1.

    (рис 11.4) Формат меток в ячейках АТМ

    На рисунке 11.2 поле СoS соответствует субполю приоритет поля ToS. Поле CoS имеет три бита, этого достаточно для поля приоритета IP-заголовка. 6-битовое поле кода дифференцированной услуги DSCP сюда записать нельзя. Можно попробовать разместить этот код в поле самой метки. S — флаг-указатель дна стека меток; TTL — время жизни пакета MPLS.

    Существующие версии программного обеспечения Cisco IOS (например, Cisco IOS Release 12.0) содержат набор средств управления трафиком. В частности, имеется возможность формировать статические маршруты и управлять динамическими маршрутами путем манипулирования значениями метрики. Иногда этого вполне достаточно, но в большинстве случаев провайдер нуждается в более эффективных средствах.

    Межрегиональные каналы являются одной из основных расходных статей провайдеров. Управление трафиком позволяет IP-провайдеру предложить оптимальный уровень услуг своим клиентам с точки зрения полосы и задержки. Одновременно эта технология снижает издержки обслуживания сети.

    MPLS представляет собой интеграцию технологий уровней L2 и L3. Управление трафиком в MPLS реализуется путем предоставления традиционных средств уровня L2 уровню L3. Таким образом, можно предложить в односвязной сети то, что достижимо только путем наложения уровня L3 на уровень L2.

    Управление коммутацией по меткам основывается на базе данных LIB (Label Information Base). Пограничный маршрутизатор MPLS LER (Label Edge Router) удаляет метки из пакетов, когда пакет покидает облако MPLS, и вводит их во входящие пакеты. Схема работы с помеченными и обычными IP-пакетами показана на рис. 11.5.

    (рис 11.5) Обработка помеченных и обычных IP-пакетов

    Управление трафиком MPLS автоматически устанавливает и поддерживает туннель через опорную сеть, применяя возможности RSVP. Путь, используемый данным туннелем, в любой момент времени определяется на основе ресурсных требований и сетевых возможностей, таких, как полоса пропускания. Но MPLS может решать проблему обеспечения требуемого уровня QoS и самостоятельно.

    Информация об имеющихся ресурсах доводится до сведения заинтересованных субъектов с помощью протокола IPG (Interior Protocol Gateway), алгоритм которого базируется на состоянии канала.

    Путь туннеля вычисляется, основываясь на сформулированных требованиях и имеющихся ресурсах (constraintbased routing). IGP автоматически маршрутизирует трафик через эти туннели. Обычно пакет, проходящий через опорную сеть MPLS, движется по одному туннелю от его входной точки к выходной. Управление трафиком MPLS основано на следующих механизмах IOS (Input/output System):

  • туннелях LSP (Labelswitched path), которые формируются посредством RSVP, с расширениями системы управления трафиком. Туннели LSP представляют собой туннельные двунаправленные интерфейсы IOS с известным местом назначения;
  • протоколах маршрутизации IGP, базирующихся на состоянии канала (таких, как IS-IS) с расширениями для глобальной рассылки ресурсной информации, и расширениями для автоматической маршрутизации трафика по LSP-туннелям;
  • модуле формирования пути MPLS, который определяет пути для LSP туннелей;
  • модуле управления трафиком MPLS, который обеспечивает доступ и запись ресурсной информации, подлежащей рассылке;
  • переадресации согласно меткам, которая предоставляет маршрутизаторам возможности, сходные с уровнем L2, — перенаправлять трафик через большое число узлов согласно алгоритму маршрутизации отправителя.
  • Одним из подходов управления опорной сетью является определение сети туннелей между всеми участниками обменов. Протокол IGP, работающий в начале туннеля, определяет, какой трафик должен проходить через любой оконечный узел. Модули формирования пути и управления MPLS определяют маршрут LSP туннеля. Для каждого туннеля подсчитывается число прошедших пакетов и байт.

    Иногда поток настолько велик, что его нельзя пропустить через один канал (туннель). В этом случае может быть создано несколько туннелей между отправителем и получателем.

    Для реализации MPLS управления трафиком сеть должна поддерживать следующие возможности Cisco IOS:

  • мультипротокольную переадресацию пакетов с использованием меток (MPLS);
  • IPпереадресацию CEF (Cisco Express Forwarding);
  • протокол маршрутизации ISIS (Intermediate SystemtoIntermediate System; см. RFC-1142, 1195, 2763, 2966 и 2973)
  • Дополнительные данные о MPLS и управлении трафиком можно найти в документации Cisco (поддерживается в реализациях 7620, 7640, 7200, 7500 и 12000).

    Протоколы состояния канала типа IS-IS для вычисления кратчайшего пути для всех узлов сети используют алгоритм Дикстры SPF. Маршрутные таблицы получаются на основе дерева кратчайших путей. Эти таблицы содержат упорядоченный набор адресов места назначения и информацию о ближайших соседей. Если маршрутизатор осуществляет прокладку путей на основе алгоритма шаг-за-шагом, первым шагом является физический интерфейс, соединенный с маршрутизатором.

    Новые алгоритмы управления трафиком вычисляют пути до одного или более узлов в сети. Эти маршруты рассматриваются как логические интерфейсы исходного маршрутизатора. В данном контексте эти маршруты представляют собой LSP и рассматриваются как TE-туннели (Traffic Engineering – средства не только управления трафиком, но и качеством обслуживания).

    Эти TE-туннели являются реальными маршрутами, контролируемыми маршрутизаторами, которые размещены в начале этих туннелей. В отсутствие ошибок TE-туннели гарантируют отсутствие петель, но маршрутизаторы должны согласовать использование TE-туннелей — иначе могут стать возможными зацикливания двух или более таких туннелей. Вероятность возникновения такой ситуации незначительна, так как трасса туннеля определяется отправителем.

    Управление трафиком MPLS

  • Исключается необходимость ручной конфигурации сетевых устройств, чтобы задать определенные маршруты. Вместо этого можно положиться на возможности управления трафиком, предоставляемые MPLS.
  • Производится оценка полосы канала и значения трафика при прокладке маршрута через опорную сеть.
  • Имеются механизмы динамической адаптации, которые позволяют сделать опорную сеть устойчивой к отказам даже в условиях, когда несколько путей были рассчитаны в режиме offline. В случае отказа узлов производится коррекция топологии опорной сети.
  • В рекомендациях CISCO [15] можно прочесть, что MPLS позволяет провайдеру маршрутизировать потоки данных так, чтобы клиенту гарантировать минимум задержки и максимум пропускной способности.

    Сформировав несколько виртуальных сетей для заданного набора узлов, можно попытаться объединять возможности этих сетей в случае возникновения такой необходимости, увеличивая пропускную способность. Можно для каждой из субсетей использовать разный уровень QoS с помощью протокола RSVP. Рассматривается внедрение протокола RSVP на уровень L2 [11.34].

    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

    Парадигма переадресации, позволяющая осуществлять переадресацию данных путем использования меток для идентификации классов информационных пакетов, которые обрабатываются при переадресации неразличимым образом

    Label switched hop

    Шаг между двумя узлами MPLS, на которые осуществляется переадресация с привлечением меток

    Label switched path — путь с коммутацией меток

    Путь через один или более LSR на одном уровне иерархии для пакетов с определенным FEC

    Label switching router

    Узел 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

    VPI/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 показана эволюция содержимого стека меток в процессе доставки пакетов от отправителя к получателю.

    (рис 11.6) Эволюция стека меток

    На вход сети MPLS пакет попадает в узле А1. Здесь пакету присваивается метка, и он переадресуется далее. После передачи пакета из узла сетевого провайдера SPA в узел провайдера SPB, в стек пакета добавляется еще одна метка. Далее пакет передается по сети SPB (узлы B1 -> B4 ). После передачи пакета из узла В4 в узел С1 в стек меток добавляется еще одна метка. Когда пакет покидает сеть SPC, одна из меток из стека удаляется (С5?B5). Аналогичная операция осуществляется после передачи пакета из узла В6 в А3. Стек меток ликвидируется в узле А5 ("Выход" – это не обязательно узел места назначения). От отправителя до узла А1 пакет доставляется с применением маршрутизации по IP места назначения. Аналогичный метод используется при транспортировке пакета из узла А5 адресату.

    Запись Next Hop Label Forwarding (NHLFE)

    Запись Next Hop Label Forwarding (NHLF Entry) применяется при переадресации помеченных пакетов. Здесь содержится информация о:

  • следующем шаге пакета;
  • операции, которая должна быть произведена над стеком меток. Это одна из операций, перечисленных ниже:
  • заместить метку на верху стека специфицированной новой меткой;
  • извлечь метку из стека;
  • заместить метку на верху стека специфицированной новой меткой и затем ввести в стек одну или более специфицированных меток.
  • Она может также содержать:

  • инкапсуляцию канальных данных, которые будут использованы при пересылке пакета;
  • метод кодирования стека меток при пересылке пакета;
  • другую информацию, необходимую для корректной обработки пакета.
  • Заметим, что для данного LSR следующим шагом пакета может стать сам LSR. В этом случае LSR должен будет извлечь метку из стека и затем переадресовать полученный пакет самому себе. Затем он примет следующее решение переадресации, базирующееся на полученном состоянии стека меток.

    Это подразумевает, что в некоторых случаях LSR будет должен работать с IP-заголовком, чтобы переадресовать пакет.

    Если следующим шагом пакета является текущий LSR, тогда операцией над стеком меток должна быть операция pop (удаление метки из стека).

    Установление соответствия для входных меток ILM (Incoming Label Map)

    Incoming Label Map (ILM) устанавливает соответствие для каждой входящей метки с набором NHLFE. Эта операция используется, когда переадресуемые пакеты являются помеченными.

    Если ILM связывает определенную метку с набором NHLFE, который содержит более одного элемента, только один элемент должен быть выбран из набора, прежде чем пакет будет переадресован. Применяя технику установления соответствия ILM, можно работать с набором, содержащим более одного NHLFE, — это может понадобиться, например, при балансировке трафика между несколькими путями, имеющими равные метрики.

    Установление соответствия между FEC и NHLFE (FTN)

    Методика FEC-to-NHLFE (FTN) устанавливает соответствие между каждым FEC и набором NHLFE. Она используется при переадресации непомеченных пакетов, при необходимости их пометки до переадресации. Если FTN устанавливает соответствие между конкретной меткой и набором NHLFE, который содержит более одного элемента, только один из них должен быть выбран, прежде чем пакет будет переадресован.

    Обмен меток

    Обмен меток (Label swapping) представляет собой использование следующих процедур для переадресации пакетов. Чтобы переадресовать помеченный пакет, LSR рассматривает метку на верху стека. Он применяет ILM для установления соответствия этой метки набору NHLFE. Взяв информацию из NHLFE, он определяет, куда переадресовать пакет, и выполняет некоторую операцию над стеком меток пакета, затем записывает новую метку в стек пакета и переадресует его.

    Чтобы переадресовать непомеченный пакет, LSR анализирует заголовок сетевого уровня, чтобы определить FEC пакета. Затем он использует FTN, устанавливая соответствие с NHLFE. Используя информацию NHLFE, он определяет, куда переадресовать пакет, и выполняет некоторую операцию над стеком меток пакета. (Извлечение метки из стека в этом случае будет нелегальным).

    Важно заметить, что, когда используется коммутация меток, следующий шаг всегда берется из NHLFE. Это отличается в некоторых случаях от выбора следующего шага, когда не применяется MPLS.

    Область действия и уникальность меток

    Данный LSR Rd может связать метку L1 с FEC F и переправить эту ассоциацию партнеру Ru1. Rd может также связать метку L2 с FEC F и переправить эту ассоциацию партнеру Ru2. Является ли L1 == L2, не определяется архитектурой, это вопрос исключительно локальный.

    Данный LSR Rd может связать метку L с FEC F1 и переправить эту ассоциацию партнеру Ru1. Rd может также связать метку L с FEC F2 и переправить эту ассоциацию партнеру Ru2. Если и только если Rd может сообщить, когда он получает пакет с меткой на верху стека равной L, занесена ли она в стек RU1 или RU2, архитектура не требует равенства F1 == F2. В таких случаях мы можем сказать, что Rd использует другое пространство меток, которые он пересылает Ru1, по отношению меток, посылаемых Ru2. Вообще, Rd может лишь сообщить, Ru1 или Ru2 положил данную метку со значением L на верх стека, если выполнены следующие условия:

  • Ru1 и Ru2 являются партнерами, которые обмениваются метками и которым Rd пересылает значение метки L, и
  • Ru1 и Ru2 соединены с Rd непосредственно через интерфейс по схеме точка-точка.
  • Когда эти условия выполнены, LSR может применять метки, имеющие область действия "per interface", т.e. такие, которые являются уникальными для каждого интерфейса. Можно сказать, что LSR использует пространство меток интерфейса. Когда эти условия не выполнены, метки должны быть уникальными для LSR, который их присвоил, и мы можем сказать, что LSR использует пространство меток платформы.

    Если конкретный LSR Rd связан с некоторым LSR Ru через два интерфейса по схеме точка-точка, тогда Rd может пересылать Ru ассоциацию метки L с FEC F1, так же, как ассоциацию метки L с FEC F2, F1 != F2, если и только если каждая ассоциация корректна для пакетов, которые Ru посылает Rd через один из интерфейсов. Во всех других случаях Rd не должен посылать ассоциации Ru, сопрягающие одну и ту же метку с двумя разными FEC.

    Этот запрет сохраняется, даже если ассоциации относятся к различным уровням иерархии. В MPLS не существует понятия разных пространств меток для различных уровней иерархии, — когда метка интерпретируется, уровень метки значения не имеет.

    Возникает вопрос, может ли LSR использовать мультиплатформные пространства меток или использовать много пространств меток интерфейса для одного и того же интерфейсного устройства. Это не запрещено архитектурой. Например, [MPLS-SHIM] специфицирует, что различные пространства меток используются для уникастных и мультикастных пакетов, а для разделения этих пространств применяется код канального уровня.

    Маршрут с коммутацией меток (LSP), входной и выходной LSP

    Маршрут с коммутацией меток (LSP) уровня m для определенного пакета P представляет собой последовательность маршрутизаторов <R1, ..., Rn> со следующими свойствами:

  • R1, вход LSP, является LSR, который вносит метку в стек пакета P, в результате формируется стек глубиной m ;
  • для всех i, 1<i<n, P (когда он приходит в LSR Ri) имеет стек меток глубиной m ;
  • никогда за время передачи P от R1 к R[n-1] глубина стека не будет меньше m ;
  • для всех i, 1<i<n: Ri передает P в R[i+1] посредством MPLS, т.e. путем использования метки в верхней позиции стека (метка уровня m) в качестве индекса в ILM;
  • для всех i, 1<i<n: если система S получает и переадресует P после того, как P передан Ri, но до того, как P получен, R[i+1] (например, Ri и R[i+1] могут быть соединены через коммутируемую субсеть и S может быть одним из переключателей информационного канала); далее решение переадресации S не базируется на метке уровня m или на основе заголовка сетевого уровня. Возможные причины этого:

    a) решение не основано на содержимом стека или заголовка сетевого уровня;

    b) решение основано на содержимом стека, куда положены другие метки (т.e., на метке уровня m+k, где k>0 ).

  • Другими словами, мы можем описать уровень m LSP для пакета P как последовательность маршрутизаторов, которая:

  • начинается с LSR (вход LSP), заносящий метку на уровень m ;
  • содержит все маршрутизаторы, чьи промежуточные LSR принимают решение о переадресации согласно метке на уровне m ;
  • завершается (выход LSP), когда решение переадресации делается на основе коммутации меток на уровне m-k, где k>0, или когда решение переадресации делается традиционно, посредством не-MPLS процедур.
  • Следствием (или, пожалуй, предпосылкой) этого является то, что, когда бы LSR ни занес метку в стек уже помеченного пакета, он должен быть уверен, что новая метка соответствует FEC, чьим выходом LSP служит LSR, сформировавший метку, которая сейчас является второй в стеке. Мы будем называть последовательность LSR "LSP для определенного FEC F", если он является LSP уровня m для заданного пакета P, когда уровень метки P соответствует FEC F.

    Рассмотрим набор узлов, которые могут быть входными LSP-узлами для FEC F. Тогда существует LSP для FEC F, который начинается с каждого из этих узлов. Если некоторое число этих LSP имеет идентичный выходной LSP, тогда можно рассматривать набор таких LSP как дерево, чьим корнем является выход LSP. Так как данные переносятся вдоль этого дерева по направлению к корню, эта структура может быть названа деревом мультиточка-точка. Мы можем, таким образом, говорить о дереве LSP для определенного FEC F.

    Извлечение предпоследнего шага

    Заметим, что согласно стандартным определениям, если <R1, ..., Rn> является LSP уровня m для пакета P, P может быть передан от R[n-1] к Rn с глубиной стека меток m-1. То есть, может быть выполнена операция pop для стека меток в предпоследнем LSR LSP, а не на выходе LSP.

    С архитектурной точки зрения это вполне приемлемо. Целью метки уровня m является доставка пакета в Rn. Раз R[n-1] решил послать пакет Rn, метка не имеет более значения и не должна далее транспортироваться.

    Имеется также практическое преимущество извлечения данных о предпоследнем шаге. Если так не сделать, тогда при получении пакета выходной LSP сначала просматривает верхнюю метку из стека и определяет, что это действительно выходной LSP. Затем он должен извлечь из стека метку и проверить, что осталось в стеке пакета. Если в стеке имеется другая метка, выходное устройство анализирует метку и осуществляет пересылку пакета на основе этого анализа. (В этом случае выходное устройство для пакетов уровня m является промежуточным узлом для его уровня m1 LSP). Если в стеке нет других меток, тогда пакет переадресуется согласно его адресу места назначения сетевого уровня. Заметим, что это потребует от выходного устройства двух просмотров: либо просмотра двух меток, либо просмотра метки с последующим анализом сетевого адреса.

    Если, с другой стороны, используется извлечение предпоследнего шага из стека, тогда предпоследний узел просматривает метку и определяет:

  • это предпоследний шаг, и
  • какой узел является следующим.
  • Предпоследний узел далее извлекает метку из стека и переадресует пакет на основе информации, полученной при просмотре метки, которая была до этого на верху стека. Когда выход LSP получает пакет, метка, которая находится на верху стека, будет меткой, необходимой для просмотра, чтобы осуществить его собственное решение о переадресации. Или, если пакет нес в себе только одну метку, выход LSP просто просмотрит заголовок пакета сетевого уровня, который является как раз тем, что ему нужно просмотреть, чтобы принять решение о переадресации. Эта методика позволяет выходному шлюзу выполнить один просмотр, а также требует одного просмотра от предпоследнего узла.

    Создание программы коммутации меток fastpath может существенно упроститься, если известно, что требуется лишь один просмотр метки.

    В действительности, когда в предпоследнем узле метка извлечена из стека, концом LSP не обязательно должен быть LSR.

    Однако некоторые аппаратные переключатели не могут извлекать метки из стека, поэтому это не может быть универсальным требованием. Могут также встретиться ситуации, в которых извлечение из стека предпоследнего шага нежелательно. Следовательно, предпоследний узел извлекает метку из стека, только если это запрашивается выходным узлом, ИЛИ если следующий узел в LSP не поддерживает MPLS.

    LSR, который способен работать с метками, должен извлекать из стека метку предпоследнего шага, когда это затребовано его нижестоящим партнером.

    Начальное согласование протокола рассылки меток должно позволять каждому LSR определить, способны ли соседние LSR извлекать метки из стека. LSR НЕ ДОЛЖЕН запрашивать своего партнера по обмену метками извлекать метку из стека, если только он не способен делать это.

    Если использована операция pop предпоследнего шага, возможен запрос о способности выходного узла корректно интерпретировать верхнюю метку в стеке приходящего пакета. Поскольку правила уникальности и области действия выполняются, всегда возможно правильно интерпретировать верхнюю метку стека приходящего пакета.

    LSP следующего шага

    LSP Next Hop для определенного помеченного пакета является LSR, который представляет следующий шаг пути, как это выбрано записью NHLFE, использованной для переадресации пакета.

    Заметим, что LSP следующего шага может отличаться от того, который был бы выбран алгоритмом маршрутизации сетевого уровня.

    Мы будем использовать термин "следующий шаг L3", когда будем иметь в виду такой маршрут.

    Неверные входные метки

    Что должен сделать LSR, если он получает помеченный пакет с определенной входной меткой, но не имеет ассоциации для этой метки? Соблазнительно думать, что можно просто удалить метки и пакеты будут переадресовываться как непомеченные IP. Однако в некоторых случаях реализация этого приведет к зацикливанию пакетов. Если вышестоящий LSR полагает, что метка сопряжена с определенным маршрутом, а нижестоящий LSR не считает метку связанной с чем бы то ни было, и если маршрутизация шаг-за-шагом непомеченных IP-пакетов приведет пакет назад к вышестоящему LSR, тогда образуется петля.

    Возможно, что метка пытается определять маршрут, который не может быть получен из IP-заголовка.

    Следовательно, когда получен помеченный пакет с неверной входной меткой, он должен быть отброшен, если только он не определен каким-то способом, так что его переадресация не может вызвать никакого вреда.

    LSP-управление: Ordered против Independent

    Некоторые FEC соответствуют адресным префиксам, которые рассылаются алгоритмом динамической маршрутизации. Начальная установка LSP для этих FEC может быть выполнена двумя способами: независимым управлением LSP (Independent LSP Control) или упорядоченным управлением LSP (Ordered LSP Control).

    В независимом управлении LSP каждый LSR, учитывая, что он распознает определенный FEC, принимает независимое решение об ассоциации метки с FEC и рассылает эту ассоциацию своим партнерам. Это соответствует способу, реализуемому в традиционной маршрутизации IP-дейтограмм. Каждый узел принимает независимое решение относительно того, как обрабатывать конкретный пакет, и полагается на алгоритм маршрутизации. При упорядоченном управлении LSP, LSR только связывает метки с определенным FEC, если он является выходным LSR для данного FEC или если он уже получил ассоциацию метки с FEC из узла следующего шага.

    Если хочется гарантировать, чтобы трафик в конкретном FEC следовал пути с некоторыми специфицированными свойствами (например, чтобы трафик не пересекал один и тот же узел дважды, чтобы для трафика были выделены определенные ресурсы, чтобы трафик следовал определенному пути и т.д.), должен использоваться способ упорядоченного управления. При независимом управлении некоторые LSR могут начать коммутацию трафика по меткам, до того как LSP полностью сконфигурирован, и таким образом часть трафика может следовать пути, который не имеет специфицированных свойств. Упорядоченное управление должно также использоваться, если распознавание FEC является следствием конфигурирования соответствующего LSP. Упорядоченное конфигурирование LSP может быть инициировано входным или выходным узлом.

    Упорядоченное и независимое управление полностью совместимы. Однако если только не все LSR в LSP используют упорядоченное управление, результирующее влияние на поведение сети более существенно, чем в случае независимого управления, так как нельзя быть уверенным, что LSP не будет использован до того, как будет полностью сконфигурирован.

    Эта архитектура позволяет сделать выбор между независимым и упорядоченным управлением исключительно местной проблемой. Так как взаимодействуют два метода, данный LSR должен поддерживать один или другой метод. Вообще говоря, выбор независимого или упорядоченного управления не оказывает какого-либо эффекта на механизмы коммутации пакетов, базирующиеся на метках.

    Агрегатирование

    Одним из путей распределения трафика в FEC является создание отдельного FEC для каждого адресного префикса, появляющегося в маршрутной таблице. Однако в пределах области MPLS это может вызвать определенные последствия для набора FEC — в частности, все потоки в этих FEC будут следовать одним и тем же маршрутом. Например, набор различных адресных префиксов может иметь один и тот же выходной узел, а обмен меток может быть использован только для доставки трафика до выходного узла. В этом случае в пределах домена MPLS объединение таких FEC само является классом FEC. Это предлагает выбор: следует ли ассоциировать отдельные метки с каждым компонентом FEC или следует ассоциировать отдельную метку с объединением, а метку использовать для всего трафика в объединении? Процедура ассоциации отдельной метки с объединением FEC, которое само является FEC (внутри некоторого домена), и применения меток для трафика в объединении называется агрегатированием. Архитектура MPLS допускает агрегатирование. Агрегатирование может уменьшить число меток, с которыми нужно иметь дело заданному набору пакетов, и может сократить объем управляющего трафика.

    Данный набор FEC, который является агрегатируемым в одном FEC, можно (a) агрегатировать в один FEC, (b) агрегатировать в набор FEC или (c) не агрегатировать совсем. Таким образом, мы можем говорить о гранулярности агрегатирования, начиная с (a) грубой гранулярности и кончая (c) тонкой гранулярностью.

    Когда используется упорядоченное управление, каждый LSR должен адаптировать для данного набора FEC гранулярность, применяемую на следующем шаге для этих FEC.

    Когда используется независимое управление, допускается, чтобы имелись два смежных LSR, Ru и Rd, которые агрегатируют некоторый набор FEC по-разному.

    Если Ru имеет более тонкую гранулярность, чем Rd, это не создает проблем. В этой ситуации, когда Ru нужно переадресовать помеченные пакеты для этих FEC в Rd, может потребоваться установить соответствие между n и m метками, где n > m. В качестве опции Ru может отозвать набор из n меток, который он разослал, и затем разослать набор из m меток, соответствующих уровню гранулярности Rd. Совсем не нужно гарантировать корректность операции, но это вызовет сокращение числа меток, разосланных Ru. Ru не получает какого-либо преимущества при рассылке большего числа меток. Решение, делать это или нет, является исключительно локальным.

    Если Ru имеет более грубую гранулярность, чем Rd (т.e., Rd разослал n меток для набора FEC, в то время как Ru разослал m, где n > m ), имеется два варианта.

  • Можно принять более тонкий уровень гранулярности для Rd. Это потребовало бы отзыва разосланных m и рассылки n меток. Это предпочтительная опция.
  • Можно просто установить соответствие между m метками и субнабором Rd из n меток, если он может определить, что это не изменит маршрутизацию. Например, предположим, что Ru использует одну метку для всех потоков, которые должны пройти определенный выходной LSR, тогда как Rd привязывает к такому трафику некоторое число разных меток, в зависимости от места назначения пакетов. Если Ru знает адрес выходного маршрутизатора и если Rd связал метку с FEC, который идентифицирован этим адресом, тогда Ru может просто использовать эту метку.
  • В любом случае, каждый LSR должен знать (при конфигурации), какую гранулярность применять для формируемых меток. Когда используется упорядоченное управление, требуется, чтобы каждый узел знал гранулярность только для FEC, который покидает сеть MPLS в этом узле. Для независимого управления наилучший результат может быть получен путем конфигурации всех LSR так, чтобы они знали гранулярность каждого FEC. Однако во многих случаях это может быть сделано путем использования одной метки с гранулярностью, которая реализует все FEC (такой, как "одна метка на IP-префикс таблицы переадресации" или "одна метка на выходной узел").

    Выбор маршрута

    Выбор маршрута сопряжен с методом, используемым при выборе LSP для определенного FEC. Предлагаемая архитектура протокола MPLS поддерживает две опции выбора маршрута: (1) маршрутизация шаг-за-шагом и (2) явная маршрутизация.

    Маршрутизация шаг-за-шагом позволяет каждому узлу независимо выбрать следующий шаг для каждого FEC. Это обычный режим для существующих сегодня IP-сетей.

    В LSP при явной маршрутизации каждый LSR не выбирает следующий шаг независимо; скорее, один LSR специфицирует несколько (или все) LSR в LSP. Если один LSR специфицирует весь LSP, LSP является явно маршрутизированным. Если один LSR специфицирует только некоторые LSP, LSP является "неточно" маршрутизированным.

    Последовательность LSR, за которой следует явно маршрутизированные LSP, могут быть выбраны при конфигурации или заданы динамически одним узлом (например, выходной узел может использовать топологическую информацию, полученную из базы данных состояния канала, для того, чтобы вычислить весь путь для дерева с корнем в выходном узле).

    Явная маршрутизация может быть полезной для ряда целей, таких, как политика маршрутизации или управление трафиком (TE). В MPLS явный маршрут должен быть специфицирован в момент формирования метки, но явный маршрут не должен быть специфицирован для каждого IP-пакета. Это делает явную маршрутизацию MPLS более эффективной по сравнению с альтернативной IP-маршрутизаций отправителя.

    Отсутствие выходной метки

    Когда помеченный пакет транспортируется вдоль LSP, может случиться, что он достигнет LSR, в котором ILM не устанавливает соответствия между меткой входящего пакета и NHLFE, даже при условии, что сам пакет корректен. Это может произойти из-за переходных обстоятельств или по причине ошибки в LSR, который должен быть следующим шагом пакета.

    Может показаться привлекательным в таких случаях ликвидировать стек меток и попытаться переадресовать пакеты далее методами традиционной маршрутизации, базирующимися на содержимом заголовка сетевого уровня. Однако это небезопасная процедура.

  • Если пакет попадает в LSP, маршрутизируемый явно, это может привести к образованию петель.
  • Заголовок пакета сетевого уровня не может содержать достаточно информации, чтобы позволить данному конкретному LSR переадресовать пакет корректно.
  • Если нельзя определить, что ни одна из этих ситуаций не реализована, единственно безопасной процедурой может стать отбрасывания пакета.

    Время жизни (TTL)

    При традиционной IP-переадресации каждый пакет имеет в заголовке значение поля TTL (Time To Live). Когда бы пакет ни проходил через маршрутизатор, его TTL уменьшается на 1. Если TTL достигает 0 прежде, чем пакет достигнет места назначения, он отбрасывается.

    Это обеспечивает некоторый уровень защиты против петлевых маршрутов, которые могут существовать из-за ошибок конфигурации или по причине ошибки или медленной сходимости алгоритма маршрутизации. TTL иногда используется для других функций, таких, как определение зоны действия мультикастинга и поддержка команды traceroute. Это означает, что имеется две проблемы, связанные с TTL, которые MPLS должен решить:

    (i) TTL как способ подавления зацикливания;

    (ii) TTL как метод реализации других функций, например, ограничения области распространения пакета.

    Когда пакет движется по LSP, он должен появляться с тем же значением TTL, которое он имел бы, если бы проходил через ту же последовательность маршрутизаторов, без коммутации меток. Если пакет проходит через иерархию LSP, полное число пройденных шагов-LSR должно быть отражено в его значении TTL.

    Способ, которым обрабатывается поле TTL, может варьироваться в зависимости от того, размещены ли значения меток MPLS в прослойке между заголовками [MPLS-SHIM] или метки MPLS транспортируются в заголовке L2, таком, как заголовок ATM [MPLS-ATM] или Frame Relay [MPLSFRMRLY].

    Если значения меток вставлены в прослойку, которая размещается между канальным и сетевым заголовками, тогда эта прослойка должна иметь поле TTL, которое должно заполняться так же, как аналогичное поле заголовка сетевого уровня, декрементироваться при каждом шаге LSR и копироваться в TTL-поле заголовка сетевого уровня, когда пакет покидает LSP.

    Если значения меток записаны в заголовке канального уровня (например, поле VPI/VCI в заголовке AAL5 ATM), помеченные пакеты переадресуются переключателем уровня L2 (например, ATM-переключателем), а канальный уровень сам не имеет поля TTL, тогда будет невозможно декрементировать TTL при каждом шаге LSR. Сегмент LSP, который состоит из последовательности LSR, не способных декрементировать TTL пакетов, будет называться сегментом non-TTL LSP.

    Когда пакет выходит из сегмента non-TTL LSP, он должен получить TTL, отвечающее числу шагов LSR, которые он проходит. В уникастном случае это может быть достигнуто путем транспортировки длины LSP входным узлам, позволяя входным устройствам декрементировать значение TTL прежде, чем переадресовывать пакеты в non-TTL LSP сегмент.

    Иногда это может быть определено на входе сегмента non-TTL LSP так, что соответствующее значение TTL пакета достигнет нуля, прежде чем пакет дойдет выхода сегмента nonTTL LSP. В этом случае LSR на входе non-TTL LSP сегмента не должен коммутировать пакеты по меткам. Это означает, что должны быть разработаны специальные процедуры для поддержки функциональности traceroute, например, пакеты traceroute могут переадресовываться по стандартной схеме шаг-за-шагом.

    Контроль петель

    В nonTTL LSP сегменте, по определению, TTL не может использоваться для предотвращения петель маршрута. Важность контроля циклических путей зависит от конкретного оборудования, применяемого для реализации LSR-функций в пределах nonTTL сегмента LSP.

    Предположим, например, что для коммутационных целей в MPLS используются ATM-переключатели, с метками, транспортируемыми в поле VPI/VCI. Так как ATM-коммутаторы не могут декрементировать TTL, здесь нет защиты против появления циклических маршрутов. Если оборудование ATM способно обеспечить хороший доступ к буферному пулу для входящих ячеек, имеющих разные значения полей VPI/VCI, петли не могут иметь негативного воздействия на остальной трафик. Если оборудование ATM не может обеспечить хороший доступ к буферам, тогда переходные петли могут вызвать серьезную деградацию эксплуатационных характеристик LSR.

    Даже в случае хорошего доступа к буферу, целесообразно иметь некоторые средства детектирования петель, которые имеют длину больше определенной. Кроме того, даже когда TTL и/или справедливая организация очередей в виртуальных каналах предоставляет возможности для сохранения петель, может быть желательно по возможности избегать установления LSP с петлями. Все LSR, которые могут быть связаны с сегментами nonTTL LSP, будут должны поддерживать общую методику детектирования петель; однако использование детектирования петель является опционным. Методика детектирования петель специфицирована в [MPLSATM] и [MPLSLDP].

    Кодирование меток

    Чтобы передавать стек меток вместе с пакетом, необходимо определить его конкретную структуру. Архитектура поддерживает несколько различных структур. Выбор структуры стека зависит от конкретного типа оборудования, используемого для переадресации пакетов.

    MPLS-специфичное оборудование и/или программное обеспечение

    Если для переадресации помеченных пакетов применяются MPLS-оборудование и/или программы, наиболее очевидным способом представления стека меток является определение нового протокола, который будет использоваться в пределах прослойки между заголовками канального и сетевого уровней. Эта прокладка могла бы реально быть инкапсуляцией пакетов сетевого уровня. Она является протокольно независимой, такой, чтобы подходить для инкапсуляции любого сетевого уровня. Мы будем называть это общей MPLS-инкапсуляцией.

    MPLS-инкапсуляция будет, в свою очередь, инкапсулирована с привлечением протокола канального уровня. Общая MPLS-инкапсуляция специфицирована в [MPLSSHIM].

    ATM-коммутаторы в качестве LSR

    Процедуры переадресации MPLS подобны тем, что применяются в ATM-коммутаторах. ATM-коммутаторы используют входной порт и значение поля VPI/VCI входящего пакета в качестве индекса в таблице коммутации (crossconnect), из которой они получают номер выходного порта и выходного значения VPI/VCI. Следовательно, если одна или более меток могут быть занесены непосредственно в поля заголовков, которые доступны коммутаторам, тогда коммутаторы после модификации программ смогут быть использованы в качестве LSR. Мы будем называть такие устройства ATM-LSR. Имеется три способа представления меток в заголовках ячеек ATM (предпочтительно работать с AAL5).

  • SVC-кодирование

    Используется поле VPI/VCI для записи метки, размещенной на верху стека. Эта методика может применяться в любой сети. Посредством этой методики LSP реализуется как ATM SVC, а протокол рассылки меток становится сигнальным протоколом ATM. ATM-LSR не может выполнять команды push или pop для стека меток.

  • SVP-кодирование

    Используется поле VPI для записи метки, размещенной на верху стека, а поле VCI — для записи второй метки стека, если такая существует. Эта методика имеет некоторые преимущества по отношению к предыдущей: здесь возможно переключение виртуальных каналов с помощью ATM VPswitching. То есть, LSP реализуются как ATM SVP.

    Однако эта методика не может применяться всегда. Если сеть включает виртуальный маршрут ATM через ATM-сеть, не поддерживающую MPLS, тогда поле VPI не обязательно доступно для использования в MPLS.

    Когда используется этот метод представления, ATM-LSR на выходе виртуального канала VP эффективно реализует операцию pop.

  • Многоточечное кодирование SVP

    Для размещения метки на вершине стека используется поле VPI, а для размещения второй метки стека, если таковая имеется, — часть поля VCI, остальная часть поля VCI служит для идентификации входа LSP. Если применяется эта технология, традиционные возможности ATM VP-коммутации могут использоваться для построения виртуальных маршрутов мультиточка-точка. Ячейки от разных пакетов будут нести тогда разные значения VCI. Можно осуществлять объединение меток, не получая проблем перекрытия ячеек, для ATM-коммутаторов, реализующих виртуальные маршруты мультиточка-точка, но не имеющих возможностей объединения VC.

    Эта методика зависит от того, можно ли присвоить 16-битовые значения VCI каждому ATM-коммутатору так, что ни одно значение VCI не будет соответствовать двум разным коммутаторам.

    Если имеется больше меток в стеке, чем места в заголовке ATM, тогда ATM-представление должно комбинироваться с общей инкапсуляцией.

  • Совместимость методов кодирования

    Если <R1, R2, R3> является сегментом LSP, возможно, что R1 будет использовать одно представление стека меток при передачи пакета P в R2 — но R2 будет использовать другое представление при передаче пакета P в R3.

    Вообще, архитектура MPLS поддерживает LSP с разным представлением стека меток на разных шагах маршрута.

    Следовательно, когда мы обсуждаем процедуры обработки помеченных пакетов, мы делаем это в терминологии взаимодействия со стеком меток. Когда приходит помеченный пакет, LSR должен декодировать его для определения текущего значения метки в стеке, затем должен преобразовать стек, чтобы определить новое значение метки перед отправкой пакета в следующий узел маршрута.

    К сожалению, ATM-коммутаторы не имеют возможности осуществлять преобразование из одного представления стека меток в другое. Архитектура MPLS требует, чтобы, когда два ATM-коммутатора оказываются последовательными LSR на уровне m LSP, эти два ATM-коммутатора использовали одно и то же представление стека меток.

    Естественно будут существовать MPLS-сети, которые содержат комбинацию ATM-коммутаторов, работающих в качестве LSR, и других LSR, использующих MPLS заголовок-прокладку. В таких сетях могут быть некоторые LSR, имеющие ATM-интерфейсы, а также интерфейсы MPLS Shim (прослойки). Это лишь один пример LSR с различным представлением стека меток. Такие LSR могут осуществлять подмену структур стека меток из представления ATM на входном интерфейсе в MPLS формат стека на выходном.

    Объединение меток

    Предположим, что LSR связал несколько входящих меток с конкретным FEC. При переадресации пакетов в этом FEC хотелось бы иметь одну выходную метку, которая используется всеми такими пакетами. Тот факт, что два разных пакета класса FEC приходят с разными входными метками, является нерелевантным. Желательно переадресовывать их с одной и той же выходной меткой. Реализация этого называется объединением меток. Будем говорить, что LSR способен объединять метки, если он может получать два пакета от разных входных интерфейсов и/или с разными метками, а посылать оба пакета с одной и той же выходной меткой. Раз пакеты переданы, информация о том, что они пришли от разных интерфейсов и/или с разными входными метками, теряется.

    Будем считать, что LSR не способен объединять метки, если для любых двух пакетов, которые приходят из разных интерфейсов или с разными метками, пакеты должны быть либо переданы через разные интерфейсы, либо имеют разные выходные метки. ATM-LSR, использующие SVC- или SVP-представления, не могут реализовывать объединение меток.

    Когда некоторый LSR не может выполнить объединение меток, тогда, если два пакета в одном и том же FEC приходят с разными входными метками, они должны быть переадресованы с разными выходными метками. При объединении меток число выходных меток на один FEC должно быть равно 1. Без объединения меток число выходных меток на один FEC может равняться числу узлов в сети.

    При объединении меток число входящих меток на FEC, которое необходимо конкретному LSR, никогда не превосходит числа смежных дистрибьюторов. В отсутствии объединения меток число входящих меток на один FEC достигает числа вышестоящих узлов, которые переадресуют трафик FEC данному LSR. В действительности, для LSR трудно даже определить, сколько входящих меток он должен поддерживать для конкретного FEC.

    Архитектура MPLS приспосабливает как объединяющие, так и не объединяющие LSR, но допускает также возможность, что имеются LSR, не поддерживающие коммутацию меток.

    Не объединяющие LSR

    Процедура переадресации MPLS очень схожа с используемой в ATM и Frame Relay. То есть, приходит блок данных, отыскивается метка в коммутационной таблице (VPI/VCI или DLCI), на основе результата поиска выбирается выходной порт, а значение метки переписывается.

    В действительности, можно использовать такие технологии для переадресации MPLS. Протокол рассылки меток может быть использован в качестве сигнального протокола для формирования коммутационных таблиц. К сожалению, эти технологии не обязательно поддерживают возможности объединения меток. В ATM, если попытаться осуществить объединение меток, в результате можно получить перекрытие ячеек от различных пакетов. Если ячейки от разных пакетов оказываются перекрытыми, невозможно осуществить сборку пакетов. Некоторые коммутаторы Frame Relay используют коммутацию ячеек на своих внутренних шинах (backplane). Эти коммутаторы могут также быть неспособными поддерживать объединение меток, по той же причине: ячейки разных пакетов могут перекрываться и сборка исходных пакетов станет невозможной.

    Предлагается два решения этой проблемы. Первое: MPLS будет включать процедуры, которые допускают применение не объединяющих LSR. Второе: MPLS будет поддерживать процедуры, которые позволяют определенным ATM-коммутаторам функционировать как LSR, способным объединять метки.

    Так как MPLS поддерживает объединяющие и не объединяющие LSR, MPLS содержит также процедуры, которые гарантируют корректное взаимодействие такого оборудования и программ.

    Метки для объединяющих и не объединяющих LSR

    Вышестоящий LSR, который поддерживает объединение меток, должен посылать только одну метку на FEC. Вышестоящий сосед, который не поддерживает объединение меток, должен посылать несколько меток на один FEC. Однако, не существует способа узнать заранее, сколько нужно меток. Это будет зависеть от того, сколько имеется вышестоящих LSR для оговоренного FEC.

    В архитектуре MPLS, когда определенный вышестоящий сосед не поддерживает объединение меток, ему не посылаются какие-либо метки для заданного FEC, если только он напрямую не запрашивает метку для данного FEC. Вышестоящий сосед может сделать несколько таких запросов и получать каждый раз новую метку. Когда нижестоящий сосед получает такой запрос сверху, а сам он не поддерживает объединения меток, тогда он должен в свою очередь запросить у своего нижестоящего соседа новую метку для заданного FEC.

    Возможно, что существуют какие-то узлы, которые поддерживают объединение меток, но могут объединить лишь ограниченное число входящих меток в одну исходящую. Предположим, например, что из-за некоторых аппаратных ограничений узел может объединить четыре входящие метки в одну исходящую. Предположим, что он получил шесть меток, пришедших для данного FEC. В этом случае этот узел может объединить их в две исходящие метки.

    Объединение потоков в ATM. Методы исключения перекрытия ячеек

    Существует несколько методов, исключающих проблемы перекрытия ячеек в ATM и, таким образом, позволяющих ATM-коммутаторам поддерживать объединение потоков данных.

  • Объединение VP, использующее мультиточечное представление SVP

    Когда применяется объединение VP, несколько виртуальных путей объединяются в один путь, но пакеты от разных отправителей отличаются разными VCI в пределах данного VP.

  • Объединение VC

    Когда используется объединение VC, коммутаторы должны буферизовать ячейки пакета до тех пор, пока не будет принят весь пакет (это может быть определено путем просмотра индикатора конца кадра для AAL5).

  • Объединение VP имеет преимущество в том, что оно совместимо с подавляющим числом реализаций ATM-коммутаторов. Благодаря этому, объединение VP может с большей вероятностью использоваться в существующих сетях. В отличие от объединения VC, объединение VP не приводит к каким-либо задержкам в точках объединения, а также не накладывает никаких требований на буферы, — однако требует координации пространства VCI в пределах VP. Существует несколько способов реализации этого требования.

    Компромисс между совместимостью с существующим оборудованием, сложностью протокола и масштабируемостью предполагает, что желательна поддержка протоколом MPLS объединения как VP, так и VC. Для того, чтобы реализовать это, каждый ATM-коммутатор, участвующий в MPLS, должен знать, могут ли ближайшие ATM соседи осуществлять объединение VP или VC.

    Взаимодействие: объединение VC, объединение VP и отсутствие объединения

    Взаимодействие различных форм объединения в ATM наиболее просто описать на примере взаимодействия систем с объединением VC и без него.

    В случае, когда соединены узлы, поддерживающие и не поддерживающие объединение VC, переадресация ячеек базируется во всех вариантах на VC (т.e., на соединении VPI и VCI). Для каждого вышестоящего узла, осуществляющего объединение VC, нужен только один набор VPI/VCI (это сходно с требованиями для одиночной метки в случае работы в среде кадров). Если вышестоящий сосед не может осуществлять объединение, то он будет требовать одного VPI/VCI на поток для себя плюс достаточное число VPI/VCI, чтобы осуществить передачу вышестоящему соседу. Необходимое число будет определено путем разрешения вышестоящим узлам посылать запросы дополнительных VPI/VCI своим нижестоящим соседям.

    Аналогично можно поддержать узлы, которые выполняют объединение VP. В этом случае объединяющий VP узел, вместо посылки запроса одного или нескольких VPI/VCI нижестоящему соседу, может запросить один VP (идентифицируемый посредством VPI), но несколько VCI в пределах VP. Кроме того, предположим, что узел, не поддерживающий объединение, расположен ниже по отношению к двум другим узлам VP. Этот узел может нуждаться в запросе одного VPI/VCI (для трафика, исходящего именно из этого узла) плюс два VP (по одному для каждого вышестоящего узла), ассоциированные со специфицированными наборами VCI (в соответствии с запросом от вышестоящего узла).

    Чтобы поддерживать узлы, объединяющие и не объединяющие VP и VC, необходимо разрешить вышестоящим узлам запрашивать комбинацию из нуля или более идентификаторов VC (состоящих из VPI/VCI) плюс нуль или более VP (идентифицируемых VPI), каждый из которых содержит специфицированное число VC (идентифицированное набором VCI, которые работают в пределах VP). Узлы, объединяющие VP, затребовали бы один VP, содержащий VCI, для исходящего трафика (если таковой имеется) плюс VCI для каждого VC, запрошенного свыше (вне зависимости от того, является или нет VC частью, содержащей VP). Узлы, объединяющие VC, затребовали бы только один VPI/VCI (так как они могут объединить весь трафик от вышестоящих узлов в один VC). Узлы, не поддерживающие объединение, передали бы любые запросы, полученные сверху, плюс запрос VPI/VCI для трафика, генерируемого ими самими (если таковой имеется).

    Туннели и иерархия

    Иногда маршрутизатор Ru предпринимает действия, чтобы доставить определенный пакет другому маршрутизатору Rd, даже если Ru и Rd не являются смежными углами на пути пакета, а Rd не является местом назначения пакета. Это может быть сделано, например, путем инкапсуляции пакета в пакет сетевого уровня, местом назначения которого является Rd. Так создается туннель от Ru к Rd .

    Если туннелированный пакет следует маршрутом шаг-за-шагом от Ru к Rd , мы говорим, что это "туннель, маршрутизированный шаг-за-шагом", чье начало находится в Ru и чьим концом является Rd.

    Если туннелированный пакет транспортируется из Ru в Rd по пути, отличному от маршрута шаг-за-шагом, мы говорим, что это туннель, маршрутизированный явно с начальной точкой в Ru и конечной — в Rd. Например, мы можем послать пакет через туннель, маршрутизированный явно, путем инкапсуляции его в пакет, маршрутизируемый отправителем.

    Имеется возможность реализовать туннель в виде LSP и использовать коммутацию меток, а не инкапсуляцию сетевого уровня, чтобы заставить пакет идти через туннель. Туннель будет иметь вид LSP <R1, ..., Rn >, где R1 является началом туннеля, а Rn — его концом. Это называется LSP-туннелем.

    Набор пакетов, которые посланы через LSP-туннель, представляет FEC, а каждый LSR в туннеле должен установить ассоциацию между меткой и FEC (т.e., нужно присвоить туннелю определенную метку). Критерий установления соответствия пакета LSP-туннелю является внутренним вопросом начальной точки туннеля. Чтобы направить пакет в LSP-туннель, передающий конец туннеля вводит метку туннеля в стек и посылает помеченный пакет узлу следующего шага туннеля.

    Если для конечной точки туннеля не нужно определять, какой пакет получен через туннель, как это обсуждалось выше, то стек меток может быть очищен на предпоследнем LSR туннеля.

    LSP-туннель, маршрутизированный шаг-за-шагом, представляет собой туннель, который реализован в виде LSP, маршрутизированного по схеме шаг-за-шагом. LSP-туннелем, маршрутизированным явно, является LSP, который маршрутизирован явно.

    Иерархия: LSP туннели в LSP

    Рассмотрим LSP <R1, R2, R3, R4>. Предположим, что R1 получил непомеченный пакет P и заносит метку в его стек, чтобы пакет следовал заданным путем шаг-за-шагом. Предположим далее, что R2 и R3 не связаны непосредственно, но являются виртуальными соседями, так как представляют собой конечные точки LSP-туннеля. Итак, действительная последовательность LSR, через которые проходит P, соответствует <R1, R2, R21, R22, R23, R3, R4>. Когда P транспортируется из R1 в R2, он имеет глубину стека, равную 1. R2, коммутирующий метки, определяет, что P должен войти в туннель. R2 сначала замещает входную метку меткой, имеющей смысл для R3, и затем заносит ее в стек. Эта метка второго уровня имеет значение, понятное R21. Коммутация осуществляется для метки на уровне 2 устройствами R21, R22, R23. R23, который является предпоследним узлом в туннеле R2-R3, удаляет метку из стека до того, как будет выполнена переадресация пакета в R3. Когда R3 видит пакет P, P имеет только метку уровня 1 — и покидает ту ннель. Так как R3 является предпоследним шагом P в LSP, он удаляет метку из стека, а R4 получает P непомеченным. Механизм стека меток допускает любую глубину вложения LSP-туннелей.

    Иерархия и партнерство в рассылке меток

    Предположим, что пакет P транспортируется на уровне 1 LSP <R1, R 2, R3, R4> и при транспортировке из R2 в R3 движется по LSP уровня 2 <R2, R21, R22, R3>. С точки зрения LSP уровня 2, партером рассылки меток R2 является R21. С точки зрения LSP уровня 1, партерами рассылки меток R2 являются R1 и R3. Могут существовать партеры обмена метками на каждом уровне иерархии. В разделе "LSP-туннелирование между пограничными BGP маршрутизаторами" рассмотрены некоторые способы реализации этой иерархии.Заметим, что в этом примере R2 и R21 должны быть IGP-соседями, но R2 и R3 не обязательно ими являются.

    Когда два LSR являются соседними IGP, мы называем их локальными партнерами рассылки меток. Когда два LSR могут быть партнерами рассылки меток, но не являются соседними IGP, мы называем их удаленными партнерами рассылки меток. В выше приведенном примере R2 и R21 являются локальными партнерами рассылки меток, а R2 и R3 являются удаленными партнерами рассылки меток.

    Архитектура MPLS поддерживает два способа рассылки меток на различных уровнях иерархии: явное и неявное партнерство (Peering).

    Рассылка меток (пиринг) осуществляется путем обмена протокольными сообщениями, которые адресованы партнеру. Возможен обмен метками и с удаленным партнером. Это делается одним из двух способов.

  • Явное партнерство

    При явном партнерстве метки пересылаются партнеру в протокольных сообщениях так же, как это делается при локальном обмене. Эта методика наиболее полезна, когда число удаленных партнеров мало, либо число ассоциаций высокого уровня велико, либо удаленные партнеры обмена метками размещены в удаленных областях или доменах. Примеры использования явного партнерства представлены ниже.

  • Неявное партнерство

    При неявном партнерстве протокольные сообщения рассылки меток, адресованные одному партнеру, не посылаются. Скорее, чтобы разослать метки высокого уровня удаленным партнерам, метка представляется в виде атрибута метки более низкого уровня, а затем производится рассылка метки низкого уровня вместе с этим атрибутом местным партнерам. Локальные партнеры обмена метками рассылают полученные данные дальше. Этот процесс продолжается до тех пор, пока информация не достигнет удаленных партнеров.

  • Эта техника наиболее полезна, когда число удаленных партнеров обмена метками велико. Неявное партнерство не требует сетки партнеров n-квадрат, чтобы разослать метки удаленным партнерам, так как имеется подстраховка за счет локального обмена информацией. Однако неявное партнерство требует, чтобы промежуточные узлы запоминали информацию, в которой они могут быть заинтересованы.

    Транспортировка протокольных сообщений рассылки меток

    Протокол рассылки меток используется между узлами в сети MPLS для установления и поддержания привязки меток. Чтобы MPLS работал корректно, информация, сопряженная с рассылкой меток, должна рассылаться совершенно надежно, а протокольные сообщения рассылки меток, имеющие отношение к определенному FEC, должны посылаться в определенном порядке. Управление потоком также желательно, так как имеется возможность транспортировки нескольких сообщений с метками в одной дейтограмме.

    Одним из способов достижения цели является использование TCP в качестве базового транспортного протокола, как это делается в [MPLSLDP] и [MPLSBGP].

    Зачем нужно более одного протокола рассылки меток?

    Данная архитектура не устанавливает жестких правил для выбора того, какой протокол рассылки меток следует использовать при конкретных обстоятельствах. Однако имеется возможность представить некоторые соображения.

    BGP и LDP

    Во многих сценариях желательно установить связь между метками и FEC, который может быть сопряжен с маршрутами и адресными префиксами.

    Протокол BGP рассылает маршруты, и, если BGP-отправителю нужно разослать метки своим BGP-партнерам, использование BGP для целей рассылки меток (смотри [MPLSBGP]) имеет ряд преимуществ. В частности, это позволяет BGP рефлекторам маршрутов рассылать метки, таким образом обеспечивая лучшую масштабируемость по сравнению с использованием LDP.

    Метки для RSVP Flowspecs

    Когда применяется RSVP при резервировании ресурсов для конкретных потоков, может быть желательно помечать пакеты в этих потоках, так что не нужно будет использовать RSVP filterspec в каждом из узлов. Осуществление рассылки меток в рамках RSVP в качестве части процесса формирования пути и резервирования ресурсов является наиболее эффективным методом решения проблемы.

    Метки для явно маршрутизируемых LSP

    В некоторых приложениях MPLS, в частности, сопряженных с управлением трафиком (ТЕ), желательно формировать пути, маршрутизированные явно от точки входа до точки выхода. Хотелось бы также осуществлять резервирование ресурсов вдоль всего пути. Можно представить два подхода.

  • Начать с существующего протокола, который используется при установлении резервирования, и расширить его в направлении поддержки явной маршрутизации и рассылки меток.
  • Начать с существующего протокола, который используется для рассылки меток, и расширить его в сторону явной маршрутизации и резервирования ресурсов.
  • Первый подход реализован в протоколе, описанном в [MPLSRSVPTUNNELS], второй специфицирован в [MPLSCRLDP].

    Некоторые применения MPLS. MPLS и трафик, маршрутизируемый шаг-за-шагом

    Ряд приложений MPLS требуют, чтобы пакеты с определенной меткой направлялись одним и тем же путем, маршрутизированным шаг-за-шагом. Этот путь будет использоваться для пакетов с адресом, который специфицирован в соответствующем поле заголовка сетевого уровня.

    Метки для адресных префиксов

    Вообще, маршрутизатор R определяет следующий шаг для пакета P путем нахождения подходящего адресного префикса X в своей маршрутной таблице. То есть, пакеты в данном FEC — это пакеты, которые соответствуют заданному адресному префиксу в маршрутной таблице R. В этом случае FEC может быть идентифицирован адресным префиксом.

    Заметим, что пакет P может быть приписан к FEC F, а FEC F может быть идентифицирован адресным префиксом X, даже если адрес места назначения P не согласуется с X.

    Рассылка меток для адресных префиксов. Партнеры рассылки меток для адресного префикса

    LSR R1 и R2 считаются партнерами рассылки меток для адресного префикса X, если и только если выполнено одно из следующих условий:

  • маршрут R1 к X является маршрутом, который прислан определенным IGP, а R2 является соседом R1 по данным IGP;
  • маршрут R1 к X является маршрутом, который прислан в какой-то момент в результате работы алгоритма маршрутизации A1, и этот маршрут рассылается алгоритмом маршрутизации A2, а R2 является соседом R1 согласно A2;
  • R1 является выходной точкой LSP-туннеля, который находится внутри другого LSP, а R2 является входной точкой этого туннеля. R1 и R2 являются клиентами IGP и находятся в той же области IGP (если данный IGP имеет области), а маршрут от R1 к X был получен через IGP или в результате рассылки R1 данному IGP;
  • Маршрут R1 к X является маршрутом, который прислан BGP, а R2 является BGP-партнером R1.
  • Вообще, эти правила гарантируют, что, если маршрут до определенного адресного префикса рассылается через IGP, то партнеры рассылки меток для данного адресного префикса являются IGP-соседями. Если маршрут определенного адресного префикса рассылается через BGP, партнеры рассылки меток для данного адресного префикса являются BGP партнерами. В других случаях LSP-туннелирования конечные точки туннеля являются партнерами по рассылке меток.

    Рассылаемые метки

    Чтобы использовать MPLS для переадресации пакетов согласно маршруту шаг-за-шагом, соответствующему какому-либо адресному префиксу, каждый LSR должен:

  • связать одну или более меток с каждым адресным префиксом, который обнаружен в маршрутной таблице;
  • для каждого такого адресного префикса X использовать протокол рассылки меток для уведомления партнеров (в рамках Х ) о существовании ассоциации метки с данным префиксом.

    Существует также обстоятельство, при котором LSR должен рассылать ассоциации меток для адресного префикса, даже если он не является LSR, который установил связь между меткой и префиксом:

  • если R1 использует BGP для рассылки маршрута до X, называя некоторый другой LSR R2 в качестве следующего BGP шага к X, и если R1 знает, что R2 присвоена метка L, тогда R1 должен разослать уведомление об ассоциации L и X всем BGP-партнерам, которым он рассылает это маршрут.
  • Эти правила гарантируют, что метки, ассоциированные с адресным префиксом, которые соответствуют маршрутам BGP, рассылаются IGP-соседям, если и только если BGP-маршруты разосланы IGP. Другими словами, метки, привязанные к BGP-маршрутам, рассылаются только другим BGP-агентам.

    Эти правила имеют целью указать, какие ассоциации меток должны рассылаться данным LSR другим LSR.

    Использование маршрутов шаг-за-шагом в качестве LSP

    Если путь шаг-за-шагом, которому пакет P должен следовать, характеризуется <R1, ..., Rn >, тогда < R1, ..., Rn> может быть LSP до тех пор, пока:

  • существует один адресный префикс X, такой, что для всех i, $$1 \le i<n $$, X является наилучшим соответствием в маршрутной таблице Ri для адреса места назначения P ;
  • для всех i, 1<i<n, Ri установил соответствие метки и X и разослал эту метку всем R[i-1].
  • Заметим, что LSP пакета может простираться только до ближайшего маршрутизатора, чья маршрутная таблица содержит запись с префиксом, имеющим наилучшее соответствие для адреса места назначения пакета. В этой точке LSP должен завершиться, а алгоритм поиска наилучшего соответствия должен быть запущен заново.

    Предположим, например, что пакет P, с адресом места назначения 10.2.153.178 должен двигаться от R1 к R2 и далее к R3. Предположим также, что R2 анонсирует адресный префикс 10.2/16 для R1, но R3 анонсирует 10.2.153/23, 10.2.154/23 и 10.2/16 до R2. То есть, R2 анонсирует агрегатный маршрут для R1. В этой ситуации пакет P может быть коммутируемым по метке до тех пор, пока он не достигнет R2, но так как R2 осуществил агрегатирование маршрутов, он должен запустить алгоритм поиска наилучшего соответствия, чтобы найти FEC для P.

    Конец LSP и прокси конец LSP

    LSR R считается конечным LSR LSP для адресного префикса X, если и только если выполнено одно из следующих условий:

  • R имеет адрес Y, такой, что X является адресным префиксом в маршрутной таблице R, который наилучшим образом соответствует Y; или
  • R содержит в своей маршрутной таблице один или более адресных префиксов Y, таких, что X является подходящей начальной субстрокой Y, но "предыдущие шаги LSP" R для X не содержат никакого адресного префикса Y. То есть, R является точкой ликвидации агрегатирования для адресного префикса X .
  • LSR R1 считается "прокси концом LSP" LSR для адресного префикса X, если и только если:

  • следующим шагом R1 для X служит R2, а R1 и R2 не являются партнерами по рассылке меток с точки зрения X (возможно, потому, что R2 не поддерживает MPLS); или
  • R1 был сконфигурирован, чтобы работать в качестве прокси конца LSP для X
  • Определение LSP позволяет концу LSP быть узлом, который не поддерживает MPLS. В этом случае предпоследний узел в LSP является прокси выходным.

    Неявная метка NULL

    Неявная метка NULL представляет собой метку со специальной семантикой, которую LSR может связать с адресным префиксом. Если LSR Ru после получения справки в ILM видит, что помеченный пакет P должен быть переадресован следующему Rd, но Rd разослал ассоциацию неявной метки NULL с соответствующим адресным префиксом, тогда вместо того, чтобы заменить значение метки на вершине стека, Ru опустошает стек меток, а затем переадресует полученный пакет в Rd.

    LSR Rd рассылает ассоциацию неявной метки NULL и адресного префикса X в LSR Ru, если и только если:

  • Rd посылает Ru ассоциацию метки для X, и
  • Rd знает, что Ru может поддерживать неявные метки NULL (т.e., что он может очистить стек меток), и
  • Rd является концом LSP (а не прокси концом) для X.
  • Это заставляет предпоследний LSR на LSP очистить стек меток. Это вполне приемлемо, если конец LSP является концом MPLS для X, — далее, если предпоследний LSR не очистит стек меток, конечный узел LSP будет должен просмотреть метку, извлечь ее из стека и затем посмотреть следующую метку (или просмотреть адрес L3, если меток больше нет). При выполнении предпоследним LSR команды pop для стека меток, конец LSP избавляется от необходимости просмотра двух меток для того, чтобы принять свое решение переадресации.

    Однако, если предпоследним LSR является ATM-коммутатор, он может не иметь возможности выполнить команду pop для стека меток. Следовательно, может быть послана ассоциация неявной метки в LSR, который может поддерживать эту функцию.

    Если предпоследний LSR в LSP для адресного префикса X является прокси концом LSP, он действует, как если бы конец LSP разослал ассоциацию неявной метки NULL для X.

    Опция: присвоение метки Egress Targeted

    Существуют ситуации, в которых Ri начала LSP, знает, что пакеты нескольких разных FEC должны следовать одним и тем же LSP, завершающимся, скажем, конечным Re. В этом случае корректная маршрутизация может быть реализована с использованием одной метки для всех таких FEC, и совершенно необязательно иметь отличающиеся метки для каждого FEC, если и только если выполняются следующие условия:

  • адрес LSR Re сам находится в маршрутной таблице (host route), и
  • существует некоторый способ для Ri определить, что Re является концом LSP для всех пакетов в конкретном наборе FEC.
  • Затем Ri может связать одну метку со всеми элементами набора FEC. Это называется EgressTargeted Label Assignment (присвоение метки по концу маршрута).

    Как может LSR Ri определить, что LSR Re является концом LSP для всех пакетов в конкретном FEC? Существует несколько возможных способов.

  • Если сеть реализует алгоритм маршрутизации состояния канала, а все узлы в области поддерживают MPLS, тогда алгоритм маршрутизации предоставляет Ri достаточно информации, чтобы определить маршрутизаторы, через которые пакеты с данным FEC должны покинуть домен маршрутизации или область.
  • Если сеть реализует BGP, Ri может определить, какие пакеты с заданным FEC должны покинуть сеть через некоторый конкретный маршрутизатор, который является BGP Next Hop для этого FEC.
  • Можно использовать протокол рассылки меток, чтобы передать информацию о том, какие адресные префиксы подключены к какому концевому LSR. Преимущество этого метода: отсутствие зависимости от наличия маршрутизации по состоянию канала.
  • Если используется присвоение меток egress-targeted, то число меток, которые необходимо поддерживать во всей сети может быть сокращено. Это может быть важно в случае, когда используются аппаратные переключатели для реализации MPLS, а коммутирующее оборудование может поддерживать ограниченное число меток.

    Возможным подходом могло бы быть конфигурирование сети для использования присвоения меток egress-targeted по умолчанию, но при конфигурации конкретных LSR не применяют присвоение меток egress-targeted для одного или более адресных префиксов, для которых он является концом LSP. Введем следующее правило:

    • если какой-то LSR не является концом LSP для некоторого набора адресных префиксов, тогда он должен присваивать метки адресным префиксам так же, как это делается узлом следующего шага LSP для этих адресных префиксов. То есть: предположим, Rd является маршрутизатором следующего шага (Ru) LSP для адресного префикса X1 и X2. Если Rd приписывает ту же метку X1 и X2, Ru должен сделать то же самое. Если Rd присваивает разные метки X1 и X2, тогда и Ru должен это сделать.

    Например, предположим, что желательно присвоить метку egress-targeted по умолчанию, но также присвоить разные метки тем адресным префиксам, для которых существует несколько возможных концов LSP (т.e., для тех адресных префиксов, которые являются multihomed). Можно сконфигурировать все LSR для присвоения меток egress-targeted и затем конфигурировать LSR, чтобы приписать разные метки тем адресным префиксам, которые являются multihomed. Для конкретного адресного префикса multihomed X было бы нужно сконфигурировать LSR, которые являются либо концами LSP, либо прокси концами LSP для X.

    Важно заметить, что, когда Ru и Rd являются смежными LSR в LSP для X1 и X2, переадресация будет выполнена корректно, если Ru присваивает разные метки X1 и X2, в то время как Rd присваивает одну метку для них обоих. Это лишь означает, что R1 будет устанавливать соответствие между разными входными метками и одной выходной.

    Аналогично, если Rd присваивает разные метки X1 и X2, но Ru присваивает им обоим метку, соответствующую адресу конца LSP или прокси конца, то переадресация будет, тем не менее, осуществляться корректно. Ru будет лишь устанавливать соответствие между входной меткой и меткой, которую сформировал Rd для адреса конца LSP.

    MPLS и LSP, маршрутизируемые явно

    Существует несколько причин, почему желательно использовать явную маршрутизацию, а не схему шаг-за-шагом. Например, это позволяет маршрутам основываться на административной политике, допускать маршруты, которые формируют LSP согласно соображениям управления трафиком [MPLS-TRFENG].

    LSP-туннели, маршрутизируемые явно

    В некоторых ситуациях сетевые администраторы могут захотеть переадресовывать некоторые классы трафика по определенным специфицированным заранее маршрутам, и эти пути отличаются от маршрутов шаг-за-шагом, по которым шел трафик первоначально. Это может быть сделано для поддержки политики маршрутизации или для управления трафиком (ТЕ). Явный маршрут может быть сконфигурирован или он может быть определен динамически посредством, например, маршрутизации на основе ограничений. Для этого нужны:

  • средства отбора пакетов, которые должны быть посланы в LSP-туннель, маршрутизированный явно;
  • средства формирования маршрутизированного явно LSP-туннеля;
  • средства, гарантирующие, что пакеты, посланные в туннель, не будут переадресованы принимающей стороной туннеля в направлении передающей стороны (отсутствие петель).
  • Если передающий конец туннеля хочет поместить помеченный пакет в туннель, он должен сначала заменить метку на вершине стека меткой, присланной принимающей стороной туннеля. Затем он должен ввести в стек метку, которая соответствует самому туннелю и прислана маршрутизатором следующего шага в туннеле. Чтобы разрешить это, концы туннеля должны быть явными партнерами по обмену метками.

    Стеки меток и неявное партнерство

    Предположим, что конкретный LSR Re является прокси концом LSP для 10 адресных префиксов и он имеет доступ к каждому адресному префиксу через отдельный интерфейс.

    Можно было бы присвоить одну метку всем 10 адресным префиксам. Тогда Re будет концом LSP для всех этих префиксов. Это гарантирует, что пакеты для всех 10 адресных префиксов будут доставлены Re. Однако Re был бы должен просматривать сетевой адрес каждого такого пакета, чтобы правильно выбрать интерфейс, через который его следует послать.

    В качестве альтернативы можно было бы присвоить разные метки для каждого из интерфейсов. Тогда Re будет прокси концом LSP для 10 адресных префиксов. Это исключает необходимость для Re просматривать сетевые адреса пакетов, чтобы переадресовывать пакеты. Однако это может привести к использованию слишком большого числа меток.

    Альтернативой может быть объединение всех 10 адресных префиксов вокруг одной общей метки уровня 1 (которая ассоциирована также с адресом самого LSR), после чего можно связать каждый адресный префикс с отдельной меткой уровня 2. Метка уровня 2 будет рассматриваться как атрибут ассоциации метки уровня 1, который мы будем называть атрибутом стека. Мы вводим следующие правила:

    Когда LSR Ru помечает ранее непомеченные пакеты, если наилучшим соответствием адресу места назначения пакета является X, а следующим шагом Ru LSP для X является Rd, и Rd послал Ru ассоциацию метки L1 и X, наряду с атрибутом стека L2, тогда

  • Ru должен занести в стек меток L2, а затем L1, а после этого переадресовать пакет Rd;
  • когда Ru посылает ассоциацию метки для X своим партнерам по рассылке меток, он должен включить L2 в качестве атрибута стека;
  • когда атрибут стека изменится (возможно, в результате изменения следующего шага Ru LSP для X ), Ru должен разослать новый атрибут стека.
  • Заметим, что хотя значение метки, связанное с X, может отличаться для последовательных шагов в LSP, значение атрибута стека передается без изменений, оно устанавливается узлом прокси конца LSP.

    Таким образом, прокси конец LSP для X становится неявным партнером каждого прочего LSR в области или домене маршрутизации. В этом случае явное партнерство было бы слишком тяжеловесным, так как число партнеров стало бы слишком большим.

    MPLS и маршрутизация при нескольких путях

    Если LSR поддерживает много путей для заданного потока, тогда он может приписать потоку много меток, по одной для каждого маршрута. Таким образом, получение второй ассоциации метки от определенного соседа для заданного адресного префикса должно интерпретироваться так, что любая из меток может представлять данный адресный префикс.

    Если специфицировано несколько ассоциаций меток для заданного адресного префикса, они могут иметь разные атрибуты.

    Деревья LSP как объекты мультиточка-точка

    Рассмотрим случай, когда пакеты P1 и P2 имеют адреса места назначения в префиксе Х. Предположим, что маршрут шаг-за-шагом для P1 представляет собой <R1, R2, R3>, а путем шаг-за-шагом для P2 является <R4, R2, R3>. Давайте предположим, что R3 связывает метку L3 с X, и отсылает эту ассоциацию R2. R2 связывает метку L2 с X, и посылает эту ассоциацию в R1 и R4. Когда R2 получает пакет P1, его входная метка будет также L2. R2 заменит L2 на L3 и пошлет P1 в R3. Когда R2 получает пакет P2, его входная метка будет также L2. R2 снова заменит L2 на L3 и пошлет P2 в R3.

    Заметим далее, что когда P1 и P2 двигаются от R2 к R3, они несут одну и ту же метку, и, с точки зрения MPLS, они не различимы. Таким образом, вместо того, чтобы говорить о двух разных LSP, <R1, R2, R3> и <R4, R2, R3>, мы можем говорить об одном дереве LSP мультиточка-точка (MultipointtoPoint LSP Tree), которое мы можем обозначить как <{ R1, R4}, R2, R3>.

    Это создает трудности, когда мы пытаемся использовать обычные ATM-коммутаторы в качестве LSR. Так как обычные ATM-коммутаторы не поддерживают соединения мультиточка-точка, должны существовать процедуры, гарантирующие реализацию VC по схеме точка-точка. Однако если используются ATM-коммутаторы, которые поддерживают VC мультиточка-точка, тогда LSP может быть реализован эффективно по такой схеме. Альтернативой может служить ситуация, когда многоточечное представление SVP/LSP может быть реализовано как SVP мультиточка-точка.

    LSP-туннелирование между пограничными. BGP маршрутизаторами

    Рассмотрим случай автономной системы A, которая пропускает трафик между другими автономными системами. Автономная система A будет иметь несколько пограничных маршрутизаторов BGP и сеть BGP соединений между ними, через которые пересылаются BGP маршруты. Во многих таких случаях желательно избежать рассылки BGP-маршрутов маршрутизаторам, которые не являются пограничными. Если этого можно избежать, нагрузка по рассылке маршрутов этих маршрутизаторов существенно сокращается. Однако должны быть некоторые средства, гарантирующие, что транзитный трафик будет доставляться от одного BGP-маршрутизатора к другому с помощью внутренних маршрутизаторов.

    Это может быть легко сделано с помощью туннелей LSP. Предположим, что BGP маршруты рассылаются только пограничным BGP-маршрутизаторам, а не внутренним маршрутизаторам, которые расположены по пути. LSP-туннели могут использоваться следующим образом.

  • Каждый пограничный маршрутизатор BGP посылает каждому пограничному маршрутизатору BGP в пределах автономной системы метку для каждого адресного префикса, которую он пересылает в рамках протокола BGP.
  • IGP для автономной системы поддерживает маршрут для каждого BGP-маршрутизатора. Каждый внутренний маршрутизатор рассылает свои метки для этих маршрутов каждому своему IGP-соседу.
  • Предположим, что:
  • пограничный маршрутизатор BGP B1 получает непомеченный пакет P;
  • адресный префикс X в маршрутной таблице B1 является наилучшим соответствием для адреса места назначения пакета P;
  • маршрут до X является маршрутом BGP;
  • следующим шагом BGP для X является B2;
  • B2 имеет ассоциацию метки L1 и X и посылает эту ассоциацию в B1;
  • следующий шаг IGP для адреса B2 является I1;
  • адрес B2 содержится в маршрутных таблицах B1 и I1 IGP, а
  • I1 связывает метку L2 с адресом B2 и посылает эту ассоциацию B1
  • Далее, прежде чем послать пакет P в I1, B1 должен сформировать стек меток для P, затем занести туда метку L1, а на верх стека записать L2.

  • Предположим, что пограничный BGP-маршрутизатор B1 получает помеченный пакет P, где на верху стека размещена метка, соответствующая адресному префиксу X, и что условия 3b, 3c, 3d и 3e выполнены. Тогда, прежде чем посылать пакет P в I1, B1 должен заменить метку на верху стека на метку L1 и затем записать в стек метку L2.
  • Эти процедуры эффективно формируют LSP-туннель, маршрутизируемый шаг-за-шагом, между пограничными маршрутизаторами BGP.

    Так как пограничные BGP-маршрутизаторы обмениваются ассоциациями меток для адресных префиксов, которые неизвестны IGP, маршрутизаторы BGP должны стать партнерами по явному обмену метками.

    Иногда можно сформировать LSP-туннель, маршрутизированный шаг-за-шагом, между двумя пограничными маршрутизаторами BGP, даже если они не принадлежат общей автономной системе. Предположим, например, что B1 и B2 находятся в AS1. Предположим также, что B3 является EBGP-соседом B2 и находится в AS2. Наконец, предположим, что B2 и B3 находятся в некоторой сети, которая является общей для обеих автономных систем (демилитаризованная зона). В этом случае LSP-туннель может быть сформирован непосредственно между B1 и B3 следующим образом:

  • B3 посылает маршруты B2 (используя EBGP), опционно присваивая метки адресным префиксам;
  • B2 перераспределяет маршруты к B1 (используя IBGP), указывая, что следующим шагом BGP для каждого такого маршрута является B3. Если B3 присвоил метки адресным префиксам, B2 передает эти метки далее без изменений вплоть до B1;
  • IGP автономной системы AS1 имеет маршрут для B3.
  • Другие применения LSP-туннелей, маршрутизированных шаг-за-шагом

    Использование LSP-туннелей, маршрутизированных шаг-за-шагом, не ограничивается туннелями между узлами BGP. Любая ситуация, в которой мог бы использоваться туннель с инкапсуляцией, является приемлемой для применения LSP-туннеля, маршрутизируемого шаг-за-шагом. Вместо инкапсуляции пакета с новым заголовком, чей адрес места назначения является адресом приемной точки туннеля, производится занесение в стек метки, соответствующей адресному префиксу, который ассоциируется с адресом конечной точки туннеля. Пакет, посланный в туннель, может быть помеченным или нет.

    Если начальный узел туннеля намеревается направить помеченный пакет в туннель, он должен сначала заменить значение метки в стеке на значение, полученное от узла конца туннеля. Затем он должен занести в стек метку, которая соответствует самому туннелю. Чтобы разрешить это, конечные точки туннеля должны быть явными партнерами обмена метками. Ассоциации меток, которыми они должны обмениваться, не играют никакой роли для LSR в пределах туннеля.

    Мультикастная маршрутизация осуществляется путем формирования мультикаст-деревьев. Дерево, вдоль которого должен переадресовываться конкретный мультикаст-пакет, зависит от адресов отправителя и получателя пакета. Когда конкретный LSR является узлом некоторого мультикаст-дерева, он связывает метку с этим деревом и рассылает эту ассоциацию вдоль данного дерева. Если рассматриваемый узел принадлежит локальной сети и имеет партнеров в этой сети, он должен также рассылать указанные ассоциации своим партнерам. Это позволяет вышестоящим узлам использовать одну метку, когда осуществляется мультикатинг для всех нижестоящих объектов LAN.

    Когда приходит помеченный мультикастный пакет, NHLFE, соответствующий метке, указывает на набор выходных интерфейсов для данного пакета, а также на выходную метку. Если используется один и тот же формат представления метки для всех выходных интерфейсов, один и тот же пакет может быть послан всем нижестоящим объектам.

    Процедуры пересылки меток (шаг-за-шагом)

    Далее рассматриваются только ассоциации меток, которые предназначены для трафика, который коммутируется по меткам в пределах пути, маршрутизованного по схеме шаг-за-шагом. В этих случаях метка будет соответствовать адресному префиксу в маршрутной таблице.

    Процедуры анонсирования и использования меток

    Существует некоторое число различных процедур, которые могут использоваться для рассылки ассоциаций меток. Некоторые исполняются нижестоящим LSR, а некоторые — вышестоящим LSR. Нижестоящий LSR должен выполнить:

  • процедуру рассылки и
  • процедуру отзыва.
  • Вышестоящий LSR должен выполнить:

  • процедуру Request (запрос) и
  • процедуру NotAvailable (не доступен) и
  • процедуру Release (отзыв) и
  • процедуру labelUse.
  • Архитектура MPLS поддерживает несколько разных вариантов каждой процедуры. Однако архитектура MPLS не поддерживает все комбинации возможных вариантов.

    Нижестоящий LSR: Процедура рассылки

    Процедура рассылки используется нижестоящим LSR, чтобы определить, когда он должен разослать своим партнерам ассоциации меток для конкретного адресного префикса. Архитектура поддерживает четыре разные схемы рассылки.

    Вне зависимости от используемой процедуры, если ассоциация метки для заданного адресного префикса была послана нижестоящим LSR Rd вышестоящему LSR Ru и если в какой-то момент атрибуты ассоциации (как это определено выше) изменились, тогда Rd должен проинформировать Ru о новых атрибутах.

    PushUnconditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером по рассылке меток Rd с точки зрения X.
  • Когда бы эти условия ни выполнялись, Rd должен связать метку с X и послать эту ассоциацию Ru. Отслеживание ассоциаций, которые посылаются Ru, и контроль того, что Ru всегда имеет эти ассоциации, является областью ответственности Rd.

    Эта процедура должна использоваться LSR, которые выполняют не затребованное присвоение меток в независимом режиме управления LSP.

    PushConditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером Rd по рассылке меток с учетом X ;
  • Rd является либо концом LSP, либо прокси концом LSP для X ; или следующим шагом Rd L3 для X является Rn, где Rn отличается от Ru, и Rn связал метку с X и послал эту ассоциацию Rd.
  • Затем, как только все эти условия оказались выполнены, Rd должен связать метку с X и послать эту ассоциацию Ru.

    Поскольку PushUnconditional вызывает рассылку ассоциаций меток всем адресным префиксам маршрутной таблицы, PushConditional вызывает рассылку ассоциаций меток только тем адресным префиксам, для которых получены ассоциации от одного следующего шага LSP или для которых не существует следующего шага с поддержкой MPLS L3.

    Эта процедуру следует использовать LSR, которые выполняют не затребованное присвоение меток в упорядоченном режиме управления LSP.

    PulledUnconditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером Rd по рассылке меток с учетом X ;
  • Ru явно запросил Rd связать метку с X и послать эту ассоциацию Ru.
  • Затем Rd должен связать метку с X и послать эту ассоциацию Ru. Заметим, что если X отсутствует в маршрутной таблице Rd или если Rd не является партнером Ru по рассылке меток с учетом X, то Rd должен проинформировать Ru о том, что в данный момент не может предоставить ассоциацию.

    Если Rd уже переслал Ru ассоциацию метки для адресного префикса X и получил новый запрос от Ru ассоциации для адресного префикса X, он свяжет вторую метку, и пошлет новую ассоциацию Ru. Первая ассоциация метки остается в силе.

    Эта процедура будет применяться LSR, выполняющим рассылку меток downstreamondemand, используя независимый режим управления LSP.

    PulledConditional

    Пусть Rd является LSR. Предположим, что:

  • X является адресным префиксом в маршрутной таблице Rd;
  • Ru является партнером Rd по рассылке меток с учетом X ;
  • Ru явно запросил Rd связать метку с X и послать эту ассоциацию Ru;
  • Rd является либо концом LSP, либо прокси концом LSP для X ; или следующим шагом Rd L3 для X является Rn, где Rn отличается от Ru, а Rn связал метку с X и послал эту ассоциацию Rd.
  • Затем, как только все эти условия оказались выполнены, Rd должен связать метку с X и послать эту ассоциацию Ru. Заметим, что если X отсутствует в маршрутной таблице Rd, а получить ассоциацию для X через следующий шаг Rd для X невозможно, или если Rd не является партнером Ru по пересылке меток с учетом X, тогда Rd должен проинформировать Ru, что не может в данный момент предоставить ему необходимую ассоциацию.

    Однако, если хотя бы одно условие не выполнено, Rn не выдает метку Rd, а Rd должен отложить отклик для Ru до тех пор, пока Rn не пришлет ассоциацию метки.

    Если Rd послал Ru ассоциацию метки для адресного префикса X, а спустя какое-то время любой из атрибутов ассоциации метки изменился, Rd должен заново послать Ru ассоциацию с новым значением атрибута. Он должен сделать это, даже если Ru не послал нового запроса. Эту процедуру следует использовать LSR, которые осуществляют ассоциацию меток downstreamondemand в упорядоченном режиме управления LSP.

    Вышестоящий LSR: процедура запроса

    Процедура запроса применяется вышестоящим LSR для адресного префикса, чтобы определить, когда следует запросить нижестоящий LSR связать метку с адресным префиксом и разослать эту ассоциацию. Существует три процедуры, которые могут быть использованы.

    RequestNever

    Никогда не делай запросов. Эта процедура полезна, если нижестоящий LSR использует процедуры PushConditional или PushUnconditiona l, но она бесполезна, если нижестоящий LSR использует процедуры PulledUnconditional или PulledConditional.

    Эта процедура будет нужна LSR, когда применена не запрошенная рассылка меток и свободный режим удержания меток.

    RequestWhenNeeded

    Осуществляет запрос всякий раз, когда меняется соотношение между следующим шагом L3 и адресным префиксом или когда прислан новый адресный префикс и нет ассоциации метки от следующего шага для заданного адресного префикса.

    Эту процедуру следует использовать LSR, когда применен консервативный режим удержания меток.

    RequestOnRequest

    Эта процедура реализуется всякий раз, когда приходит запрос в дополнение к необходимым протокольным запросам. Если Ru не способен быть входом LSP, он может выдать запрос, только когда получает запрос сверху.

    Если Rd получает такой запрос от Ru для префикса, для которого Rd уже послал метку Ru, Rd присвоит новую метку, ассоциирует ее с X, и разошлет эту ассоциацию. Может ли Rd послать эту ассоциацию Ru немедленно или нет, зависит от используемой процедуры рассылки. Эту процедуру следует использовать LSR, которые осуществляют рассылку меток downstreamondemand, но не выполняют объединения меток, например, ATM-LSR, которые не способны объединять VC.

    Вышестоящий LSR: процедура NotAvailable

    Пусть Ru вышестоящий, а Rd нижестоящий партнер рассылки меток для адресного префикса X, Rd является следующим шагом Ru L3 для X, Ru запрашивает ассоциацию для X от Rd, но Rd отвечает, что не может предоставить ассоциацию в это время, так как он не имеет следующего шага для X. Далее процедура NotAvailable определяет, как должен реагировать Ru. Существует две возможные процедуры, управляющие поведением Ru.

    RequestRetry

    Ru должен выдать запрос снова спустя некоторое время. То есть, источник запроса ответственен за попытку получить необходимую ассоциацию. Эту процедуру следует использовать, когда применена рассылка меток в режиме downstreamondemand.

    RequestNoRetry

    Ru никогда не должен посылать запрос повторно, предполагая, что Rd предоставит необходимую ассоциацию автоматически, когда она станет доступной. Это полезно, если Rd использует процедуру PushUnconditional или PushConditional, т.e., если применена не запрошенная рассылка меток нижестоящим объектам.

    Заметим, что если Rd отвечает, что он не может предоставить ассоциацию Ru, например, из-за ошибки, а не по причине того, что Rd не имеет следующего шага, то поведение Ru будет определяться условиями восстановления после ошибки протокола рассылки меток, а не процедурой NotAvailable.

    Вышестоящий LSR: процедура Release

    Предположим, что Rd является LSR, который связывает метку с адресным префиксом X и который послал эту ассоциацию LSR Ru. Если Rd не оказался следующим шагом Ru L3 для адресного префикса X или перестал быть следующим шагом Ru L3 для адресного префикса X, Ru перестанет использовать метку. Процедура Release определяет то, как Ru работает в этом случае. Существует две возможные процедуры, управляющие поведением Ru.

    ReleaseOnChange

    Ru должен ликвидировать ассоциацию и информировать Rd об этом. Эту процедуру следует использовать в консервативном режиме удержания меток (Conservative Label Retention Mode).

    NoReleaseOnChange

    Ru должен поддерживать ассоциацию, так что он сможет использовать ее немедленно, если Rd станет позднее следующим шагом Ru L3 для X . Эту процедуру следует применять для реализации свободного режима удержания меток (Liberal Label Retention Mode).

    Вышестоящий LSR: процедура labelUse

    Предположим, что Ru является LSR, который получил ассоциацию метки L для адресного префикса X от LSR Rd. Ru является вышестоящим по отношению к Rd с учетом X , и в действительности Rd является следующим шагом Ru L3 для X.

    Ru воспользуется ассоциацией, если Rd является следующим шагом Ru L3 для X. Если в момент получения ассоциации Ru Rd не является следующим шагом Ru L3 для X, Ru не будет использовать эту ассоциацию. Ru может, однако начать использовать ассоциацию позже, если Rd станет следующим шагом Ru L3 для X. Процедура labelUse определяет, как Ru использует ассоциацию Rd. Существует две процедуры, которые может применить Ru.

    UseImmediate

    Ru может начать использовать ассоциацию немедленно. В любое время, когда Ru получил ассоциацию для X от Rd, а Rd является следующим шагом Ru L3 для X, Rd также будет следующим шагом Ru LSP для X. Эта процедура применяется, когда не используется детектирование петель.

    UseIfLoopNotDetected

    Эта процедура аналогична UseImmediate, если только Ru не детектировал петлю в LSP. Если детектирована петля, Ru прекратит использовать метку L для переадресации пакетов в Rd.

    Эта процедура используется, когда работает детектирование петель маршрутов. Это будет продолжаться до тех пор, пока не изменится следующий шаг для X или пока не будет ликвидирован петлевой маршрут.

    Нижестоящий LSR: процедура отзыва

    В этом случае существует только одна процедура. Когда LSR Rd решает разорвать ассоциацию между меткой L и адресным префиксом X, тогда это решение должно быть доведено до сведения всех LSR, которым эта ассоциация была прислана. Требуется, чтобы уведомление о разрыве ассоциации между L и X было послано Rd в LSR Ru, прежде чем Rd пришлет Ru какие-либо иные ассоциации L с какими-либо префиксами Y, где X != Y. Если Ru узнал о новой ассоциации L и Y, до того как получил данные о разрыве ассоциации L и X, и если пакеты, соответствующие префиксам X и Y, переадресуются из Ru в Rd, тогда в течение некоторого времени Ru будет помечать пакеты, относящиеся к X и к Y, меткой L.

    Рассылка и отзыв ассоциаций меток осуществляется через протокол рассылки меток. Все протоколы рассылки меток требуют, чтобы был установлен контакт между партнерами рассылки меток (за исключением неявных партнеров). Если LSR R1 установил контакт по рассылке меток с LSR R2, и получил ассоциации меток от LSR R2 через это соединение, тогда, если соединение будет разорвано одним из партнеров (в результате либо поломки, либо штатной работы), все ассоциации, полученные через это соединение, должны рассматриваться как отозванные.

    Пока эффективное соединение по обмену метками остается в силе, отзыв ассоциаций меток должен производиться явно. Если вторая метка ассоциирована с адресным префиксом, первая метка при этом не отзывается, будут существовать обе ассоциации. Это необходимо, чтобы поддерживать маршрутизацию с несколькими маршрутами. Если второй адресный префикс ассоциирован с меткой, ассоциация с первым префиксом при этом не отзывается, метка будет использоваться для обоих адресных префиксов.

    Схемы MPLS: поддерживаемые комбинации процедур

    Рассмотрим два LSR, Ru и Rd, которые являются партнерами рассылки меток для некоторого набора адресных префиксов, где Ru является вышестоящим партнером, а Rd — нижестоящим.

    Схема MPLS, которая управляет взаимодействием Ru и Rd, может быть описана с помощью пяти процедур: <Distribution Procedure, Request Procedure, NotAvailable Procedure, Release Procedure, labelUse Procedure>. Так как существует только одна процедура отзыва, она здесь не упоминается. Появление "*" в одной из позиций в качестве подмены означает, что в данной категории возможна любая процедура; появление N/A в некоторой позиции указывает, что не нужна никакая процедура данной категории.

    Только схемы MPLS, которые специфицированы ниже, поддерживаются архитектурой MPLS. Другие схемы могут быть добавлены в будущем, если их необходимость будет доказана.

    Схемы для LSR, которые поддерживают объединение меток

    Если Ru и Rd являются партнерами по рассылке меток, и оба поддерживают объединение меток, должна использоваться одна из следующих схем.

  • <PushUnconditional, RequestNever, N/A, NoReleaseOnChange, UseImmediate >

    Это не затребованная рассылка меток вниз по течению с независимым управлением, свободным режимом удержания меток и без детектирования маршрутных петель.

  • <PushUnconditional, RequestNever, N/A, NoReleaseOnChange, UseIfLoopNotDetected>

    Это не затребованная рассылка меток вниз по течению с независимым управлением, свободным режимом удержания меток и детектированием петель.

  • <PushConditional, RequestWhenNeeded, RequestNoRetry, ReleaseOnChange,*>

    Это не затребованная рассылка меток вниз по течению с упорядоченным управлением (со стороны конца маршрута) и консервативным режимом удержанием меток. Детектирование петель опционно.

  • <PushConditional, RequestNever, N/A, NoReleaseOnChange, *>

    Это не затребованная рассылка меток вниз по течению с упорядоченным управлением (со стороны конца маршрута) и свободным режимом удержанием меток. Детектирование петель опционно.

  • <PulledConditional, RequestWhenNeeded, RequestRetry, ReleaseOnChange, *>

    Это рассылка меток вниз по течению по запросу (downstreamondemand) с упорядоченным управлением (инициируемым со стороны входа), консервативным режимом удержания меток и опционным детектированием петель.

  • <PulledUnconditional, RequestWhenNeeded, N/A, ReleaseOnChange, UseImmediate>

    Это рассылка меток вниз по течению по запросу с независимым управлением, консервативным режимом удержания меток и без детектирования петель.

  • <PulledUnconditional, RequestWhenNeeded, N/A, ReleaseOnChange, UseIfLoopNotDetected>

    Это рассылка меток вниз по течению по запросу с независимым управлением, консервативным режимом удержания меток и детектированием петель.

  • Схемы для LSR, которые не поддерживают объединение меток

    Предположим, что R1, R2, R3 и R4 являются ATM-коммутаторами, которые не поддерживают объединение меток, но используются в качестве LSR. Предположим далее, что маршрут L3 шаг-за-шагом для адресного префикса X имеет вид <R1, R2, R 3, R4> и что пакеты, адресованные X, могут войти в сеть через любой из этих LSR. Так как здесь нет возможности реализовать схему мультиточка-точка, LSP должны быть реализованы как VC точка-точка, что означает необходимость трех таких VC для адресного префикса X: <R1, R2, R3, R4>, <R2, R3, R4> и <R3, R4>.

    Следовательно, если R1 и R2 являются MPLS-партнерами и любой из них является LSR, который реализован с использованием обычного коммутирующего оборудования ATM (т.e., без подавления перекрытия ячеек) или по какой-то иной причине не способен осуществлять объединение меток, то используемая схема MPLS между R1 и R 2 должна быть одной из перечисленных ниже.

  • <PulledConditional, RequestOnRequest, RequestRetry, ReleaseOnChange, *>

    Это рассылка меток вниз по течению по запросу с упорядоченным управлением (инициируемым со стороны входа), консервативным режимом удержания меток и опционным детектированием маршрутных петель.

    Использование процедуры RequestOnRequest вынудит R4 послать R3 три метки для X ; R3 пошлет К2 2 метки для X, а R2 пошлет одну метку R1 для X.

  • <PulledUnconditional, RequestOnRequest, N/A, ReleaseOnChange, UseImmediate>

    Это рассылка меток вниз по течению по запросу с независимым управлением, консервативным режимом удержания меток и без детектирования петель.

  • <PulledUnconditional, RequestOnRequest, N/A, ReleaseOnChange, UseIfLoopNotDetected>

    Это рассылка меток "вниз по течению по запросу" с независимым управлением, консервативным режимом удержания меток и с детектированием петель.

  • Соображения совместимости

    Легко видеть, что некоторые пятерки не образуют жизнеспособных схем MPLS. Например:

    <PulledUnconditional, RequestNever, *, *, *>

    <PulledConditional, RequestNever, *, *, *>

    В этих схемах MPLS нижестоящий LSR Rd пересылает ассоциации меток вышестоящему LSR Ru только по запросу от Ru, но Ru никогда не делает таких запросов. Очевидно, эти схемы нежизнеспособны, так как они не могут осуществлять корректную рассылку ассоциаций меток.

    <*, RequestNever, *, *, ReleaseOnChange>

    В этих схемах MPLS, Rd аннулирует ассоциации, если он их не использует, но Rd никогда не запрашивает их снова, даже если они ему позднее понадобятся. Эти схемы, таким образом, не гарантируют того, что ассоциации меток будут разосланы корректно.

    В этом разделе специфицируются правила предотвращения того, чтобы партнеры по рассылке меток выбирали процедуры, которые ведут к недопустимым схемам MPLS. Эти правила требуют либо обмена информацией между партнерами по рассылке меток во время инициализации системы, либо априорного знания (полученного каким-то иным методом).

  • Каждый субъект должен объявить, поддерживает ли он объединение меток.
  • Если Rd не поддерживает объединение меток, он должен выбрать либо процедуру PulledUnconditional, либо PulledConditional. Если Rd выбирает PulledConditional, Ru вынужден использовать процедуру RequestRetry.

    То есть, если нижестоящий LSR не поддерживает объединения меток, его предпочтения имеют приоритет при выборе схемы MPLS.

  • Если Ru не поддерживает объединение меток, а Rd поддерживает, Ru должен выбрать процедуру RequestRetry или RequestNoRetry. Это вынуждает Rd использовать соответственно процедуру PulledConditional или PulledUnConditional.

    То есть, если только один из LSR не поддерживает объединение меток, его предпочтения имеют приоритет при выборе схем MPLS.

  • Если как Ru, так и Rd поддерживают объединение меток, тогда выбор между свободным и консервативным режимами удержания меток остается за Ru. То есть, Ru предоставляется выбрать либо RequestWhenNeeded/ReleaseOnChange (консервативный), либо RequestNever/NoReleaseOnChange (свободный). Однако выбор push либо pull и условного либо безусловногой алгоритма работы с метками принадлежит Rd. Если Ru выбирает свободный режим удержания меток, Rd может выбрать либо PushUnconditional, либо PushConditional. Если Ru выбирает консервативный режим удержания меток, Rd может выбрать PushConditional, PulledConditional или PulledUnconditional.
  • Соображения безопасности

    Некоторые маршрутизаторы могут реализовать безопасные процедуры, зависящие от заголовка сетевого уровня, положение которого фиксировано по отношению к заголовку канального уровня. Базовая инкапсуляция MPLS подразумевает введение прослойки между заголовком канального и сетевого уровня. Это может вызвать отказ в работе некоторых процедур безопасности. Метка MPLS имеет свое значение благодаря соглашению между LSR, который записывает метку в стек (источник метки), и LSR, который интерпретирует метку (получатель метки). Если помеченный пакет получен от непроверенного отправителя или если некоторая метка получена от LSR, которому она не посылалась, тогда пакеты могут маршрутизоваться некорректным образом.

    11.5. Кодирование меток в MPLS

    Многопротокольная коммутация меток (MPLS) требует набора процедур для дополнения пакетов сетевого уровня стеком меток, таким образом превращая их в помеченные пакеты. Маршрутизаторы, которые поддерживают протокол MPLS, называются LSR (Label Switching Routers). Для того, чтобы передать помеченный пакет по определенному каналу, LSR должен поддерживать методику кодирования и анализа помеченных пакетов. Данный документ специфицирует кодирование, используемое LSR, чтобы передать помеченный пакет по каналу данных PPP и LAN. Специфицированная кодировка может быть применена и в других каналах данных.

    Ниже определены правила и процедуры обработки различных полей стека меток. Так как MPLS не зависит от сетевого протокола, большинство таких процедур являются протокольно независимыми. Некоторые, однако, являются разными для различных протоколов. Здесь мы специфицируем протокольно независимые процедуры, а также протокольно зависимые процедуры для IPv4 и IPv6.

    LSR, которые реализованы на определенном коммутационном оборудовании (таком, как ATM-коммутаторы), могут использовать различные системы кодирования верхних записей в стеке.

    Стек меток. Кодирование стека меток

    Стек меток представляет собой последовательность записей. Каждая запись в стек имеет длину 4 октета. Формат такой записи показан на рис. 11.2 и 11.3.

    Запись стека меток размещается после заголовка канального уровня, и перед заголовком сетевого уровня (например, между Ethernet- и IP-заголовком). Верх стека записывается первым, а дно — последним. Сетевой заголовок следует сразу вслед за записью стека меток с битом S=1. Каждая запись стека меток содержит в себе следующие поля:

  • Дно стека (бит S )

    Этот бит устанавливается равным 1 для последней записи в стеке меток (т.e. для дна стека), и нулю для всех прочих записей.

    Следует заметить, что данный формат меток не является единственно возможным (я здесь не имею в виду ATM или FR). В IP-телефонии, например, предлагается использовать метку, которая содержит (слева-направо) код 0х8100, за которым идет 3-битовое поле приоритета ( 0-7 ) и идентификатор VPN (0-4095). (Смотри журнал LANline N10, 2002, стр 140).

  • Время жизни (поле TTL)

    Это 8-битовое поле определяет время жизни пакета.

  • Значение метки

    Это 20-битовое поле несет в себе код метки.

  • Когда получен помеченный пакет, анализируется значение метки на верху стека. В результате этого анализа определяется:

  • следующий шаг, куда должен быть переадресован пакет;
  • операция, которая должна быть выполнена со стеком меток до переадресации; эта операция может быть заменой метки на вершине стека, удалением записи из стека, замещением верхней позиции в стеке и занесением туда затем одной или более новых записей.
  • В дополнение к определению следующего шага и операции со стеком меток, можно также получить данные об инкапсуляции выходной информации и, возможно другие данные, которые необходимы для того, чтобы корректно переадресовывать пакеты. Существует несколько зарезервированных значений меток.

  • Значение 0 представляет IPv4 Explicit NULL Label. Это значение метки является единственно допустимым для дна стека меток. Оно указывает, что стек должен быть очищен и переадресация пакета должна основываться на IPv4-заголовке.
  • Значение 1 представляет Router Alert Label. Это значение метки является легальным в любом месте стека меток за исключением дна. Когда полученный пакет содержит такую метку на вершине стека, он доставлен локальному модулю для обработки. Действительная переадресация пакета определяется меткой в его стеке. Однако, если пакет переадресуется дальше, еще до переадресации в стек должна быть занесена метка Router Alert. Использование этой метки сходно с применением опции Router Alert в IP-пакетах [11.5]. Так как эта метка не может лежать на дне стека, она не ассоциируется с определенным протоколом сетевого уровня.
  • Значение 2 представляет собой IPv6 Explicit NULL Label. Это значение метки является единственно допустимым для записи на дне стека. Оно указывает, что стек должен быть очищен, а переадресация пакетов должна после этого основываться на заголовке IPv6.
  • Значение 3 представляет Implicit NULL Label. Это метка, которую LSR может присваивать и рассылать, но которая в действительности никогда не используется при инкапсуляции. Когда LSR замещает метку на верху стека на новую и эта новая метка является Implicit NULL, LSR очистит стек вместо того, чтобы осуществить замену. Хотя это значение не может появиться при инкапсуляции, оно должно быть специфицировано в протоколе рассылки меток, так что значение может считаться зарезервированным.
  • Значения 4-15 зарезервированы на будущее.
  • Определение протокола сетевого уровня

    Когда последняя метка удалена из стека (стек становится пустым), дальнейшая обработка пакета осуществляется на основе его заголовка сетевого уровня. LSR, который извлекает последнюю метку из стека, должен быть способен работать с протоколом сетевого уровня. Однако, стек меток не содержит поля, идентифицирующего протокол сетевого уровня. Это означает, что идентичность сетевого протокола должна определяться по значению кода метки, извлеченной со дна стека, возможно, вместе с самим содержимым заголовка сетевого уровня.

    Когда в сетевой пакет заносится первая метка, она должна быть уникальной для конкретного сетевого уровня или для набора сетевых протоколов. Кроме того, когда бы в процессе передачи метка ни была заменена другой, новая метка также должна отвечать тем же критериям. Если эти условия не выполнены, LSR, который удаляет последнюю метку из пакета, не сможет идентифицировать сетевой протокол.

    Строгое соблюдение этих условий не обязательно приведет немедленно к тому, что узлы будут распознавать сетевой протокол. В обычных условиях это необязательно, но в ситуациях ошибок это оказывается крайне желательным. Например, если промежуточный LSR определяет, что помеченный пакет не может быть доставлен, может быть желательно для данного LSR сформировать сообщение об ошибке, которое является специфическим для пакетов сетевого уровня. Единственные средства, которыми располагает промежуточный LSR для идентификации сетевого уровня, является анализ верха стека и заголовка сетевого уровня. Таким образом, если промежуточные узлы способны посылать протокольно зависимые сообщения об ошибках для помеченных пакетов, то все метки в стеке должны отвечать критериям, приведенным выше для меток, которые занесены на дно стека.

    Если пакет не может быть переадресован по какой-то причине (например, его размер превосходит MTU канала), либо его протокол сетевого уровня не может быть идентифицирован, либо не существует протокольно зависимых правил для обработки случаев ошибок, тогда пакет должен быть без комментариев отброшен.

    Генерация ICMP-сообщений для помеченных пакетов

    Ниже обсуждаются ситуации, в которых желательно формировать ICMP-сообщения для помеченных IPпакетов. Для того, чтобы конкретный LSR мог формировать и посылать ICMP пакеты отправителям IP-пакетов, должны выполняться два условия:

  • данный LSR должен быть способен определить, что конкретный помеченный пакет является IP-пакетом;
  • данный LSR должен быть способен проложить путь до места назначения IP-пакета.
  • Условие 1 обсуждается выше в разделе "Определение протокола сетевого уровня".В следующих двух подразделах обсуждается условие 2. Однако встречаются ситуации, когда условие 2 совсем не выполняется, и в этих случаях невозможно сформировать сообщение ICMP.

    Туннелирование через транзитную область маршрутизации

    Предположим, что MPLS используется для организации туннеля через транзитную область маршрутизации, где данные о внешних маршрутах не попадают к внутренним маршрутизаторам. Например, внутренние маршрутизаторы работают с протоколом OSPF и могут знать только, как достичь объектов в пределах зоны OSPF. Домен может содержать несколько пограничных маршрутизаторов автономной системы ASBR (Autonomous System Border Router), которые взаимодействуют друг с другом с помощью BGP. Однако в этом примере маршруты от BGP не рассылаются OSPF, а LSR, которые не являются ASBR, поддерживают BGP.

    В этом примере только ASBR будет знать, как проложить маршрут до отправителя некоторого произвольного пакета. Если внутренний маршрутизатор должен послать сообщение ICMP отправителю IP-пакета, он не будет знать, как маршрутизовать это ICMP-сообщение.

    Одним из решений является занесение ASBR маршрута по умолчанию в IGP. Это бы гарантировало то, что любой непомеченный пакет, который должен выйти из домена (такой, как ICMP-пакет), попадет в маршрутизатор, который имеет полную маршрутную информацию. Маршрутизаторы с полной маршрутной информацией будет помечать пакеты, прежде чем их послать через транзитную область, так, чтобы использование маршрутов по умолчанию в пределах транзитного домена не приводило к образованию циклических путей.

    Это решение работает только для пакетов, которые имеют глобально уникальные адреса, и для сетей, в которых все ASBR имеют полную маршрутную информацию. В следующем подразделе описывается решение, которое работает, когда эти условия не выполняются.

    Туннелирование частных адресов через общедоступную опорную сеть

    В некоторых случаях, когда MPLS используется для туннелирования через домен маршрутизации, может быть вообще невозможно проложить путь до адреса отправителя фрагментированных пакетов. Такая ситуация возникла бы, например, если IP-адреса в пакетах были частными адресами (т.e., не были бы глобально уникальными) и MPLS использовался для туннелирования таких пакетов через общедоступную опорную сеть. Маршруты по умолчанию в ASBR не будет работать в таких условиях.

    В этих условиях для того, чтобы послать ICMP-сообщение отправителю пакета, можно копировать стек меток исходного пакета в ICMP-сообщение и затем осуществить коммутацию по меткам для ICMP-пакета. Это заставит сообщение двигаться в направлении места назначения исходного пакета, а не его отправителя. Если только сообщение не является коммутируемым по меткам на всем пути до ЭВМ назначения, оно завершит путь непомеченным в маршрутизаторе, который знает путь до отправителя исходного пакета, и отсюда сообщение будет послано в правильном направлении.

    Эта технология может быть весьма полезной, если ICMP-сообщением является Time Exceeded (время истекло) или "Destination Unreachable because fragmentation needed and DF set" (место назначение недостижимо из-за необходимости фрагментации и DF=1 ).

    При копировании стека меток из исходного пакета в сообщение ICMP значения меток должны копироваться точно, но значения TTL должны устанавливаться равными величине, размещенной в IP-заголовке ICMP-сообщения. Это значение TTL должно быть достаточным, чтобы разрешить кружной маршрут, которому должен следовать ICMP-сообщение.

    Заметим, что если истечение TTL сопряжено с наличием петли маршрута, тогда в случае использования этой техники ICMP-сообщение может зацикливаться. Так как сообщение ICMP никогда не посылается в ответ на ICMP-пакет и так как многие реализации ограничивают частоту посылки ICMP-сообщений, проблем это создать не должно.

    Обработка поля времени жизни. Определения

    Входное TTL помеченного пакета по определению должно равняться значению поля TTL в записи наверху стека меток на момент получения пакета. Выходное TTL помеченного пакета по определению должно равняться большему из:

    a) входное значение TTL минус один,

    b) нуль.

    Протокольно независимые правила

    Если выходное TTL помеченного пакета =0, тогда помеченный пакет не должен более переадресовываться и он следует далее непомеченным. Время жизни пакета в сети считается истекшим. В зависимости от значения метки в стеке, пакет может быть просто отброшен или он может быть передан сетевому слою для обработки ошибки (например, для генерации ICMP-сообщения об ошибке).

    Когда помеченный пакет переадресуется, поле TTL записи наверху стека меток должно быть установлено равным выходному значению TTL.

    Заметим, что выходное значение TTL является функцией входного значения TTL и зависит от того, были ли перед этим в стек занесены или извлечены какие-то метки до переадресации пакета. Значения поля TTL в записях, за исключением верхней, никакого влияния не оказывают.

    Правила, зависящие от IP

    Мы определяем поле IP TTL равным величине поля IPv4 TTL или значению поля IPv6 Hop Limit, в зависимости от того, что используется.

    Когда IP-пакет помечен впервые, поле TTL в стеке должно быть установлено равным значению поля IP TTL.

    Когда все метки извлекаются из стека и он оказывается пустым, значение поля IP TTL должно быть замещено величиной выходного TTL, как это определено выше. В случае IPv4 это потребует также корректировки контрольной суммы IP-заголовка.

    Признается, что могут существовать ситуации, когда сетевая администрация предпочитает декрементировать IPv4 TTL на 1 при прохождении через домен MPLS, вместо того чтобы декрементировать IPv4 TTL на число LSR в домене.

    Преобразование различных инкапсуляций

    Иногда LSR может получить помеченный пакет через, например, интерфейс ATM (LC-ATM) [11.9] и должен послать его через PPP или LAN. Тогда входной пакет будет получен без инкапсуляции, а должен будет послан уже с применением такой инкапсуляции.

    В этом случае значение входного TTL определяется процедурами обработки помеченных пакетов, например, в интерфейсе LC-ATM. Обработка TTL будет тогда происходить так, как это описано выше. Иногда LSR может получить помеченный пакет через канал PPP или LAN и должен его послать на выход через интерфейс LC-ATM. Тогда входной пакет будет принят с использованием инкапсуляции, описанной в данном документе, а выходной пакет — послан с привлечением иной инкапсуляции. В этом случае процедура формирования значения выходного TTL определяется процедурами, применяемыми к помеченным пакетам, например, в интерфейсах LC-ATM.

    Фрагментация и определение MTU пути

    Поскольку возможно получение непомеченной IP-дейтограммы, которая слишком велика, чтобы быть переданной в выходной канал, имеется возможность получения помеченного пакета, который также нельзя передать по этой причине на выход.

    Возможно также, что полученный пакет (помеченный или нет), который первоначально был достаточно мал для передачи через канал, становится слишком большим, получив одну или более меток.

    При коммутации меток пакет может расти в размере, если в его стек заносятся дополнительные метки. Таким образом, если получен помеченный пакет с 1500-байтовым полем данных и в него записана дополнительная метка, переадресовать нужно будет пакет с размером 1504-байта, что может привести, в конце концов, к превышению MTU для сети Ethernet.

    В этом разделе специфицируются правила обработки помеченных пакетов, которые являются слишком большими. В частности, речь идет о правилах, которые гарантируют, что ЭВМ, использующие определение MTU пути [11.4], и ЭВМ, работающие с IPv6 [11.7,11.8], будут способны формировать IP-дейтограммы, которые не нуждаются в фрагментации, даже если эти дейтограммы получили дополнительные метки при прохождении через сеть.

    Вообще, ЭВМ IPv4, которые не используют определение MTU пути [11.4], посылают IP-дейтограммы, содержащие не более 576 байт. Так как большинство используемых MTU равняются 1500 байт или больше, вероятность того, что такие дейтограммы будут нуждаться в фрагментации, даже если они помечены, весьма мала.

    Некоторые ЭВМ, которые не используют определение MTU пути [11.4], формируют IP-дейтограммы, содержащие 1500 байт. Поскольку IP-адреса отправителя и получателя находятся в одной и той же субсети, эти дейтограммы не проходят через маршрутизаторы и, следовательно, не будут фрагментироваться

    Если же IP-адрес отправителя и получателя находятся в разных автономных системах, это единственный случай, когда имеется риск фрагментации при пометке пакета.

    Ниже специфицированы процедуры, которые позволяют конфигурировать сеть так, чтобы большие дейтограммы от ЭВМ, не использующих определение MTU пути, фрагментировались только раз, когда они были впервые помечены. Эти процедуры делают возможным избежать фрагментации пакетов, которые уже помечены.

    Что касается конкретного канала данных, можно использовать следующие термины:

  • Поле данных кадра

    В это понятие входит содержимое поля данных кадра, исключая любые заголовки и поля завершения кадра (например, MAC-заголовки, LLC-заголовки, 802.1Q-заголовки, PPP-заголовки, контрольные суммы и т.д.).

    Когда кадр несет в себе непомеченную IP-дейтограмму, поле данных кадра представляет собой саму IP-дейтограмму. Когда кадр несет в себе помеченную IP-дейтограмму, поле данных кадра состоит из записей стека меток и IP-дейтограммы.

  • Обычный максимальный размер поля данных кадра

    Максимальный размер поля данных кадра определяется стандартами канала данных. Например, обычный максимальный размер поля данных кадра для Ethernet равен 1500 байтов.

  • Истинный максимальный размер поля данных кадра

    Максимальный размер поля данных кадра, который можно послать и получить через интерфейс канала данных.

    Для сетей Ethernet и 802.3, считается, что истинный максимальный размер поля данных кадра на 4-8 байта больше обычного максимального размера поля данных (поскольку ни переключатель, ни бридж не могут увеличить размер заголовка в процессе транспортировки пакета до следующего узла сети). Например, считается, что большинство оборудования Ethernet может принимать и посылать пакеты, содержащие, по крайней мере, 1504 или даже 1508 байт, поскольку заголовок Ethernet не имеет полей 802.1Q или 802.1p. В каналах PPP, истинный максимальный размер поля данных кадра может быть неограниченным.

  • Эффективный максимальный размер поля данных для помеченных кадров

    Это или обычный максимальный размер поля данных кадра, или истинный максимальный размер поля данных кадра, в зависимости от возможностей оборудования канала и размера заголовка канального уровня.

  • Первично помеченная IP-дейтограмма

    Предположим, что непомеченная IP-дейтограмма получена конкретным LSR и что LSR вводит метку в стек перед тем, как переадресовать эту дейтограмму. Такая дейтограмма будет называться первично помеченной в этом LSR IP-дейтограммой.

  • Максимальный исходный размер помеченной IP-дейтограммы

    Каждый LSR, который способен

  • получать непомеченные IP-дейтограммы,
  • добавлять метки в стек дейтограммы, и
  • переадресовывать полученный в результате помеченный пакет, должен поддерживать конфигурационный параметр, называемый максимальный размер первично помеченной IP-дейтограммы, который должен быть установлен неотрицательным. Если этот конфигурационный параметр установлен равным нулю, он ни на что не влияет. Если он имеет положительное значение, то он используется следующим образом. Если:
  • получена непомеченная IP-дейтограмма, и
  • эта дейтограмма имеет в заголовке бит DF=0, и
  • дейтограмма перед переадресацией должна быть помечена, и
  • размер дейтограммы (до пометки) превышает значение данного параметра, тогда:
  • дейтограмма должна быть разделена на фрагменты с размером не больше, чем указано в данном параметре, и
  • каждый фрагмент должен быть помечен и после этого переадресован.
  • Например, если этот конфигурационный параметр установлен равным 1488, тогда любая непомеченная IP дейтограмма, содержащая более 1488 байт, будет фрагментирована до выполнения пометки. Каждый фрагмент будет способен передавать через канал 1500 байт без последующей фрагментации, даже если в стек будет занесено до трех меток.

    Другими словами, установка этого параметра не равным нулю позволяет исключить фрагментацию уже помеченных IP пакетов, но может вызвать иногда фрагментацию первично помеченных IP-дейтограмм, когда это совсем не нужно.

    Заметим, что установка этого параметра не влияет на обработку IP-дейтограмм, которые содержат бит DF=1, следовательно, установка этого параметра не влияет на результат определения MTU пути.

    Когда помеченная IP-дейтограмма слишком велика?

    Помеченная IP-дейтограмма, чей размер превышает обычный максимальный размер поля данных канала, может рассматриваться как слишком большая.

    Помеченная IP-дейтограмма, чей размер превышает истинный максимальный размер поля данных кадра канала, через который она должна переадресоваться, считается слишком большой.

    Помеченная IP-дейтограмма, которая не является слишком большой, должна передаваться без фрагментации.

    Обработка помеченных дейтограмм IPv4, которые слишком длинны

    Если помеченная IPv4 дейтограмма слишком велика и бит DF в IP заголовке =1, тогда LSR может отбросить дейтограмму.

    Заметим, что отбрасывание таких дейтограмм является разумным, только если максимальный размер первично помеченной IP-дейтограммы установлен равным ненулевому значению во всех LSR сети, способных добавлять метки в стек непомеченных IP-дейтограмм.

    Если LSR решает не отбрасывать помеченные IPv4-дейтограммы, которые слишком велики, или если в дейтограмме флаг DF=1, тогда должна быть выполнена следующая последовательность операций.

  • Удалить записи из стека, чтобы получить IP-дейтограмму.
  • Пусть N равно числу байт в стеке (т.e, число записей в стеке меток, умноженное на 4).
  • Если IP-дейтограмма содержит в IP заголовке бит Don't Fragment=0:
  • разбить ее на фрагменты, каждый из которых должен иметь размер, по крайней мере, на N байт меньше, чем эффективный максимальный размер поля данных кадра;
  • преобразовать каждый фрагмент, снабдив его заголовком, который имела исходная дейтограмма;
  • переадресовать фрагменты.
  • Если IP-дейтограмма содержит в IP заголовке бит Don't Fragment =1:
  • дейтограмма не должна переадресовываться;
  • сформировать ICMP-сообщение "Адресат недостижим":
  • установить значение поля [11.3] равным "Fragmentation Required and DF Set";
  • установить значение поля NextHop MTU [11.4] равным разности между эффективным максимальным размером поля данных кадра и величиной N.
  • если возможно, послать ICMP-сообщение "Адресат недостижим" отправителю отброшенной дейтограммы.
  • Обработка помеченных дейтограмм IPv6, которые слишком длинны

    Чтобы обработать помеченную IPv6-дейтограмму, которая слишком велика, LSR должен реализовать следующий алгоритм.

  • Удалить записи из стека, чтобы получить IP-дейтограмму.
  • Пусть N равно числу байт в стеке (т.e, число записей в стеке меток, умноженное на 4).
  • Если IP-дейтограмма содержит более 1280 байтов (не считая записи стека меток), или, если она не содержит заголовка фрагмента, тогда:
  • сформировать ICMP-сообщение "Too Big Message", и установить значение поля NextHop MTU равным разности между эффективным максимальным размером поля данных кадра и величиной N;
  • если возможно, послать отправителю дейтограммы ICMP-сообщение "Too Big Message";
  • отбросить помеченную IPv6-дейтограмму.
  • Если IP-дейтограмма не длиннее 1280 октетов, и содержит заголовок фрагмента, тогда:
  • преобразовать ее в фрагменты, каждый из которых должен быть по крайней на N байт меньше, чем эффективный максимальный размер поля данных кадра;
  • снабдить каждый фрагмент тем же помеченным заголовком, который имела исходная дейтограмма;
  • переадресовать фрагменты.
  • Восстановление сообщения из фрагментов осуществляется конечным получателем.

    Реализация с учетом определения MTU пути

    Описанные выше процедуры обработки дейтограмм, которые имеют в заголовке бит DF=1, но являются слишком большими, связаны с процедурами определения MTU пути RFC-1191 [11.4]. ЭВМ, которые применяют эти процедуры, определят MTU, который достаточно мал, чтобы позволить занесение в дейтограмму n меток, без необходимости фрагментации. Здесь n равно числу меток, заносимых на используемом пути через домен.

    Другими словами, дейтограммы от ЭВМ, которые применяют определение MTU пути, никогда не потребуют фрагментации из-за занесения меток в заголовок. Заметим, что дейтограммы от ЭВМ, использующих определение MTU пути, имеют бит DF=1 и, таким образом, не могут быть фрагментированы в любом случае.

    Отметим также, что определение MTU пути будет работать корректно, только если в точке, где может потребоваться фрагментация помеченной IP-дейтограммы, возможна доставка отправителю ICMP сообщения Destination Unreachable. Если невозможна посылка ICMP-сообщения отправителю из MPLS туннеля, но конфигурация сети предоставляет возможность LSR конца туннеля получать пакеты, которые должны проходить через туннель, но слишком велики для этого, тогда:

  • LSR на передающем конце туннеля должен уметь определять MTU туннеля в целом. Он может это сделать путем посылки пакетов через туннель в направлении его приемной части, выполняя процедуру определения MTU пути для этих пакетов;
  • всякий раз, когда передающий конец туннеля должен посылать пакет в туннель и этот пакет имеет DF=1, а его длина превышает значение MTU туннеля, передающий конец должен послать ICMP-сообщение Destination Unreachable узлу, приславшему пакет с кодом "Fragmentation Required and DF Set" и полем NextHop MTU, установленным так, как было показано выше.
  • Передача помеченных пакетов через PPP

    Протокол PPP (Point-toPoint Protocol) [11.6] предоставляет стандартный метод транспортировки многопротокольных дейтограмм через каналы точка-точка. PPP определяет расширяемый протокол управления каналом и предлагает семейство протоколов управления сетью для установления и конфигурации различных протоколов сетевого уровня.

    В этом разделе определен протокол управления сетью для установления и конфигурации коммутации меток в канале PPP. PPP содержит три основные компонента.

  • Метод инкапсуляции мультипротокольных дейтограмм.
  • Протокол управления каналом LCP (Link Control Protocol) для установления, конфигурирования и тестирования канала.
  • Семейство протоколов управления сетью для установления и конфигурирования различных протоколов сетевого уровня.
  • Для того, чтобы установить связь через канал точка-точка, каждый конец PPP канала должен сначала послать LCP-пакеты, чтобы сконфигурировать и протестировать канал. После того как канал установлен и согласованы опционные возможности, PPP должен послать пакеты MPLS Control Protocol, чтобы разрешить посылку помеченных пакетов. Канал будет оставаться сконфигурирован для коммуникаций, пока управляющие протокольные пакеты LCP или MPLS его не закроют или пока не произойдет какое-то внешнее событие (сработает таймер пассивности или вмешается сетевой администратор).

    Протокол управления PPP для MPLS

    Протокол управления MPLS (MPLSCP) отвечает за разрешение/запрещение использования коммутации меток в канале PPP. Он использует тот же механизм обмена, что и протокол управления каналом LCP (Link Control Protocol). Пакеты MPLSCP не могут пересылаться до тех пор, пока PPP не достигнет фазы протокола сетевого уровня. Пакеты MPLSCP, полученные до достижения этой фазы, должны просто отбрасываться.

    Протокол управления MPLS тождественен протоколу управления каналом [11.6] за следующими исключениями:

  • Модификации кадра

    Пакет может использовать любые модификации базового формата кадра, которые были согласованы на фазе установления канала.

  • Поле протокола канального уровня

    В информационное поле пакета PPP вкладывается только один пакет MPLSCP, где поле протокола PPP содержит шестнадцатеричный код 8281 (MPLS).

  • Поле кода

    Используются только коды от 1 до 7 (Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack и Code-Reject). Прочие коды должны рассматриваться как нераспознанные и приводить к Code-Rejects (отбрасыванию).

  • Тайм-ауты

    Пакеты MPLSCP не могут пересылаться, пока PPP не достигнет фазы протокола сетевого уровня. Реализация должна быть готова ждать окончания аутентификации и определения качества канала, прежде чем наступит тайм-аут в ожидании Configure-Ack или других откликов.

  • Посылка помеченных пакетов

    Прежде чем какие-либо пакеты будут посланы, PPP должен достичь фазы протокола сетевого уровня, а управляющий протокол MPLS должен стать активным (состояние Opened).

    В информационное поле пакета PPP вкладывается только один помеченный пакет, где поле протокола PPP содержит шестнадцатеричные значения кода тип 0281 (MPLS Unicast) или 0283 (MPLS Multicast). Максимальная длина помеченного пакета, переданного через канал PPP, та же, что и максимальная длина информационного поля инкапсулированного пакета PPP.

    Заметим, что определены два кода для помеченных пакетов, один для мультикастных и один для уникастных. Как только MPLSCP переходит в рабочее состояние (Opened), по каналу PPP могут посылаться как мультикаст, так и уникаст-пакеты.

    Пересылка помеченных пакетов в среде LAN

    В каждом кадре транспортируется только один помеченный пакет. Записи стека меток размещаются непосредственно после заголовка сетевого уровня, а сразу за ними следует заголовок канального уровня, включая, например, любые заголовки 802.1Q, которые только могут существовать.

    Шестнадцатеричный код Ethertype 8847 применяется для индикации того, что кадр содержит уникастный MPLS-пакет. Шестнадцатеричный код Ethertype 8848 служит для указания того, что кадр содержит MPLS-пакет.

    Эти значения Ethertype могут быть использованы либо при Ethernet-инкапсуляции, либо при инкапсуляции 802.3 LLC/SNAP для транспортировки помеченных пакетов.

    11.6. Требования для управления трафиком

    Введение

    Мультипротокольная коммутация пакетов по меткам (MPLS) [11.1,[11.2] интегрирует в себе технику операций с метками и сетевую маршрутизацию. Базовой идеей является присвоение меток фиксированной длины пакетам на входе облака MPLS (базирующегося на концепции переадресации классов эквивалентности [11.1,[11.2]). Всюду внутри домена MPLS метки, присвоенные пакету, используются для принятия решения о переадресации (обычно без рассмотрения исходных заголовков пакета).

    Одним из наиболее важных применений MPLS будет управление трафиком. Важность этого приложения является уже широко признанной (смотри [11.1,2,3]).

    Далее рассматриваются требования управления трафиком в больших опорных сетях Интернет. Описаны базовые возможности и функциональности, которым должна соответствовать реализация MPLS.

    Следует заметить, что хотя основное внимание уделено опорным сетям, возможности, описанные в этом разделе, в равной мере применимы для управления трафиком в корпоративных сетях. Вообще, эта технология может быть использована в любой сети с коммутацией по меткам, в которой имеется, по крайней мере, два пути между двумя узлами.

    Предлагается архитектура, которая включает в себя MPLS и RSVP, чтобы предоставить масштабируемые дифференцированные услуги и управление трафиком в Интернет.

    Управление трафиком

    В этом разделе описываются базовые функции управления трафиком в автономной системе современного Интернет. Рассмотрены ограничения IGP с точки зрения управления трафиком и ресурсами.

    Управление трафиком (TE) связано с оптимизацией рабочих характеристик сетей. Вообще, ТЕ включает в себя технологию и научные принципы измерения, моделирования, описание, управление трафиком Интернет и приложение таких знаний и техники для получения определенных рабочих характеристик.

    Главной целью управления трафиком в Интернет является достижение эффективной и надежной работы сети. Управление трафиком стало непременной функцией многих автономных систем — из-за высокой стоимости услуг Интернет.

    Объективные характеристики управления трафиком

    Ключевые характеристики, сопряженные с управлением трафиком, могут относиться к следующим категориям:

  • ориентированные на трафик, или
  • ориентированные на ресурсы.
  • Задачи, ориентированные на управление трафиком, включают в себя аспекты улучшения QoS информационных потоков. В модели наилучших усилий для Интернет-сервиса ключевая задача управления трафиком включает в себя: минимизацию потерь пакетов и задержек, оптимизацию пропускной способности и согласование наилучшего уровня услуг. В данной модели минимизация вероятности потери пакетов является наиболее важным аспектом. Статистически заданные характеристики трафика (такие, как разброс времени доставки пакетов, вероятность потери и максимальное время доставки) становятся важными в грядущих дифференцированных услугах Интернет. Одним из подходов решения таких проблем является оптимизация использования всех имеющихся ресурсов сети. В частности, желательно гарантировать, чтобы субнаборы сетевых ресурсов не были перегружены, в то время как аналогичные ресурсы на альтернативных маршрутах недогружены. Полоса пропускания — это критический ресурс современных сетей. Следовательно, центральной функцией управления трафиком ста новится эффективное управление пропускной способностью.

    Минимизация перегрузок является первичной задачей. Здесь речь идет не о кратковременных перегрузках, а о долгосрочных, влияющих на поведение сети в целом. Перегрузка обычно имеет две причины:

  • сетевых ресурсов недостаточно или они не соответствуют существующей загрузке;
  • потоки трафика неэффективно распределены по имеющимся ресурсам.
  • Первый тип проблем перегрузки может быть решен путем:

  • расширения ресурса, или
  • применением классических средств управления перегрузкой, или
  • сочетанием этих подходов. Классическое управление перегрузкой пытается регулировать уровень потребности, снижая его до имеющегося в распоряжении уровня ресурсов. Классическое управление перегрузкой включает в себя: ограничение потока, управление шириной окна для потока, управление очередями в маршрутизаторе, диспетчеризацию и т.д. (смотри [11.8]).
  • Второй тип проблем перегрузки, связанный с неэффективным размещением ресурсов, может быть решен посредством управления трафиком.

    Вообще, перегрузка, связанная с неэффективным размещением ресурсов, может быть уменьшена с помощью политики балансировки нагрузки в различных фрагментах сети. Задачей таких стратегий является минимизация максимальной перегрузки или напротив — минимизация максимума использования ресурса. Когда перегрузка минимизирована путем оптимального размещения ресурсов, потери пакетов и задержка доставки падают, а совокупная пропускная способность возрастает. Таким образом, восприятие конечным пользователем качества сетевого обслуживания становится лучше.

    Понятно, что балансировка определяет политику оптимизации рабочих характеристик сети. Несмотря ни на что, возможности, предоставляемые управлением трафиком, должны быть достаточно гибкими, чтобы сетевые администраторы могли реализовать другие политики, которые принимают во внимание господствующую структуру цен или даже модель получения доходов.

    Управление трафиком и ресурсами

    Оптимизация рабочих характеристик сетей является фундаментальной проблемой управления. В модели процесса управления трафиком инженер трафика (или подходящая система автоматизации) действует как контроллер в системе с адаптивной обратной связью. Эта система включает набор взаимосвязанных сетевых элементов, систему мониторирования состояния сети и набор средств управления конфигурацией. Инженер трафика формулирует политику управления, отслеживает состояние сети посредством системы мониторинга и характеристик трафика и предпринимает управляющие действия, чтобы перевести сеть в требуемое состояние, в соответствии с политикой управления. Это может быть осуществлено с помощью действий, предпринимаемых как отклик на текущее состояние сети, или превентивно, используя прогнозирование состояния и тенденции и предпринимая действия, предотвращающие нежелательные будущие состояния. В идеале управляющие действия должны включать:

  • модификацию параметров управления трафиком,
  • модификацию параметров, связанных с маршрутизацией, и
  • модификацию атрибутов и констант, связанных с ресурсами.
  • Уровень человеческого вмешательства в процесс управления трафиком, когда это возможно, должен быть минимизирован. Это может быть реализовано путем автоматизации операций, описанных выше. Операции эти могут быть распределенными и масштабируемыми.

    Ограничения механизмов управления IGP

    В этом подразделе рассматриваются некоторые хорошо известные ограничения современных IGP с точки зрения управления трафиком.

    Возможности управления, предлагаемые существующими внутренними протоколами маршрутизации шлюзов Интернет, не соответствуют требованиям управления трафиком. Это создает трудности при актуализации эффективных политик, предназначенных для решения проблем совершенствования работы сети. Действительно, IGP, базирующиеся на алгоритмах кратчайшего пути, вносят заметный вклад в проблемы перегрузки в автономных системах Интернет. Алгоритмы SPF базируются на простой аддитивной метрике. Эти протоколы управляются топологией, так что полоса пропускания и параметры трафика не являются факторами, рассматриваемыми в процессе принятия маршрутных решений. Следовательно, перегрузка часто происходит, когда:

  • кратчайшие пути нескольких потоков трафика объединяются в каких-то каналах или интерфейсах маршрутизатора, или
  • данный трафик потока маршрутизирован через канал или интерфейс маршрутизатора, который не имеет достаточной полосы пропускания.
  • Эти сценарии проявляются даже тогда, когда имеются альтернативные маршруты с избытком ресурсов. Именно этого аспекта проблем перегрузки (симптом неоптимального распределения ресурсов) управление трафиком стремится всеми способами избежать. Равномерное распределение загрузки может использоваться для разрешения второй проблемы, упомянутой выше, однако такое решение бесполезно в случае первого варианта перегрузки.

    Популярным подходом преодоления недостатков современных IGP является использование модели наложений, таких, как IP поверх ATM или IP поверх Frame Relay. Модель наложений расширяет пространство для маневра, делая возможным произвольные виртуальные топологии, накладываемые поверх реальной физической сети. Виртуальная топология формируется из виртуальных каналов, которые проявляются как физические каналы в протоколах маршрутизации IGP. Модель наложений предоставляет дополнительные важные услуги для поддержания управления трафиком и ресурсами, включая: (1) маршрутизацию, базирующуюся на ограничениях в рамках VC, (2) поддержку административно конфигурируемых VC-путей, (3) сжатие маршрута, (4) функции управления доступом, (5) формирование трафика и функции реализации политики при управлении трафиком, и (6) надзор за VC. Эти возможности допускают реализацию самых разных политик в сфере управления трафиком. Например, виртуальные каналы могут легко перемаршрутизироваться, чтобы перенаправить трафик в менее загру женные каналы.

    Для управления трафиком в больших насыщенных сетях желательно снабдить MPLS определенным уровнем функциональности, чтобы сделать его более совместимым с настоящими моделями наложений. К счастью, это может быть сделано достаточно прямолинейно.

    MPLS и управление трафиком

    Протокол MPLS стратегически достаточен для управления трафиком, так как он может предоставить большую часть функций, доступных в модели наложений, и по относительно низкой цене по сравнению с конкурирующими альтернативными решениями. Столь же важно, что MPLS предлагает возможность автоматизировать функции управления трафиком.

    Концепция каналов передачи данных MPLS используется достаточно широко. Согласно Li и Rekhter [11.3], канал передачи данных представляет собой объединение потоков данных одного и того же класса, которые следуют маршруту с коммутацией пакетов по меткам. Канал передачи данных представляет собой абстракцию трафика, с которой могут быть ассоциированы определенные характеристики. Полезно рассматривать каналы передачи данных как объекты, которые можно маршрутизировать, — то есть, путь, по которому транспортрируются данные, может меняться. С этой точки зрения, каналы передачи данных подобны виртуальным каналам в сетях ATM и Frame Relay. Важно, однако, подчеркнуть, что существует фундаментальное отличие между каналом передачи данных и путем. LSP представляет собой спецификацию пути с коммутацией по меткам, через который проходит трафик. На практике термины LSP и канал передачи данных часто используются синонимично.

    Привлекательность MPLS для управления трафиком может быть ассоциирована со следующими факторами.

  • Явные пути с коммутацией меток (которые не ограничиваются парадигмой переадресации, когда маршрут определяется на основе адреса места назначения) могут быть легко сформированы сетевым администратором или посредством стандартных протоколов.
  • LSP могут поддерживаться эффективно.
  • Каналы передачи данных могут быть смоделированы и поставлены в соответствие LSP.
  • Набор атрибутов может быть связан с каналами передачи данных, которые регулируют их рабочие характеристики.
  • Набор атрибутов может быть связан с ресурсами, которые ограничивают положение LSP и каналов передачи данных.
  • MPLS позволяет как агрегацию, так и дисагрегацию трафика, в то время как классическая переадресация на основе IP-адреса места назначения допускает только агрегацию.
  • Относительно легко реализовать в рамках MPLS маршрутизацию на основе ограничений.
  • Хорошая реализация MPLS может предложить заметно более низкую избыточность, чем конкурирующие альтернативы управления трафиком.
  • Кроме того, через механизм коммутации меток MPLS позволяет наложить на современную модель маршрутизации Интернет квазиканальную коммутацию. Многие существующие предложения для управления трафиком посредством MPLS концентрируются на возможности формирования LSP. Хотя такая возможность является фундаментальной для управления трафиком, реально этого недостаточно.

    Наведенный MPLS-граф

    В данном подразделе вводится концепция наведенного MPLS-графа, которая является центральной при управлении трафиком в сфере MPLS. Наведенный MPLS-граф аналогичен виртуальной топологии в модели наложений. Он логически проецируется на физическую сеть путем выбора LSP для каналов транспортировки трафика.

    Наведенный MPLS-граф состоит из набора LSR, которые представляют собой узлы графа, и набора LSP, которые предоставляют логические соединение точка-точка между указанными LSR и, следовательно, служат в качестве каналов наведенного графа. Имеется возможность сформировать иерархический наведенный MPLS-граф, базирующийся на концепции стеков меток (смотри [11.1]).

    Наведенные MPLS-графы важны потому, что базовые проблемы управления полосой пропускания в MPLS определяются способом и возможностью эффективно совместить наведенный MPLS-граф с физической топологией сети.

    Пусть G = (V, E, c) является графом, отражающим физическую топологию сети. Здесь, V — набор узлов сети и E — набор каналов; то есть, для v и w из V объект (v,w) содержится в E, если v и w являются непосредственно связанными в рамках G. Параметр "c" представляет собой набор емкостей и других ограничений, сопряженных с E и V. Мы будем рассматривать G как основу сетевой топологии.

    Пусть H = (U, F, d) является наведенным MPLS-графом, где U — субнабор V, представляющй набор LSR в сети, или более точно — набор LSR, которые являются конечными точками, по крайней мере, одного LSP. Здесь F представляет собой набор LSP, так что для x и y из U, объект (x, y) находится в F, если существует LSP с x и y в качестве конечных точек. Параметр d представляет собой набор требований и ограничений, ассоциированных с F. Очевидно, H является ориентированным графом. Можно видеть, что H зависит от переходных характеристик G.

    Фундаментальные проблемы управления трафиком в MPLS

    Существует три фундаментальных проблемы, относящиеся к управлению трафиком в MPLS.

  • Первая проблема касается того, как определять соответствие пакетов определенному классу FEC (Forwarding Equivalence Class).
  • Вторая проблема касается того, как определять соответствие FEC и каналов передачи данных.
  • Третья проблема касается того, как определять соответствие каналов передачи данных физической топологии сети через маршруты с коммутацией по меткам.
  • Здесь не рассматриваются первые две проблемы (хотя они весьма важны). Вместо этого далее анализируются возможности, которые позволяют третей функции осуществлять эффективную и надежную работу сетей. Установление соответствия между наведенным MPLS-графом ( H ) и базовой топологией сети ( G ) является достаточно важной проблемой.

    Расширенные возможности управления трафиком с помощью MPLS

    Выше были рассмотрены базовые функции управления трафиком в современном Интернет. Далее описываются функциональные возможности, необходимые для полномасштабного поддержания управления трафиком в больших сетях через посредство протокола MPLS. Предлагаемые возможности включают в себя:

  • набор атрибутов, связанных с каналами передачи данных, совокупность которых характеризует рабочее состояние сети;
  • набор атрибутов, связанных с ресурсами, которые ограничивают размещение пути информационных потоков. Они могут рассматриваться также как топологические ограничения;
  • "маршрутизация на основе ограничений", которая используется для выбора пути канала передачи данных в соответствии с набором параметров пунктов 1 и 2, приведенных выше. Маршрутизация на основе ограничений не должна являться частью протокола MPLS. Однако они должны быть тесно связаны.
  • Атрибуты, связанные с каналами передачи данных и ресурсами, а также параметры, ассоциированные с маршрутизацией, в совокупности представляют собой набор управляющих переменных, которые могут быть модифицированы в результате действий либо администратора, либо автоматических агентов, для того, чтобы привести сеть в желательное состояние.

    В рабочей сети крайне желательно, чтобы эти атрибуты можно было менять динамически в реальном масштабе времени без неблагоприятных последствий.

    Атрибуты и характеристики канала передачи данных

    В этом разделе обсуждаются атрибуты, которые можно ассоциировать с каналами передачи данных и которые могут определять рабочие характеристики сети. Базовые свойства каналов передачи данных перечислены ниже.

  • Канал передачи данных представляет собой объединение потоков данных, принадлежащих одному классу. В определенном контексте может быть желательно смягчить это определение и позволить каналам передачи данных содержать мультиклассные объединения потоков.
  • В одноклассовой модели обслуживания, такой, как современный Интернет, канал передачи данных может включать в себя все потоки между входным и выходным LSR.
  • Каналы передачи данных являются маршрутизируемыми объектами (аналогично ATM VC).
  • Канал передачи данных отличается от LSP, через который он проходит. В операционном контексте канал передачи данных может быть перенесен из одного пути в другой.
  • Каналы передачи данных являются однонаправленными.
  • На практике канал передачи данных может характеризоваться своими входным и выходным LSR, FEC, которому он соответствует, и набором атрибутов, которые определяют его рабочие характеристики.

    Имеется два пункта особой важности: (1) параметризация каналов передачи данных и (2) положение маршрута и правила управления каналом передачи данных.

    Двунаправленные каналы передачи данных

    Хотя каналы передачи данных являются концептуально однонаправленными, во многих практических контекстах полезно одновременно анализировать два канала передачи данных с идентичными конечными точками, но с разным направлением потоков. Два канала передачи данных логически связаны друг с другом. Один канал, называемый прямым, транспортирует трафик от исходного узла к узлу места назначения. Другой канал, называемый обратным, транспортирует трафик от узла места назначения к исходному узлу. Объединение двух таких каналов называется двунаправленным каналом передачи данных BTT (bidirectional traffic trunk), если выполняются следующие два условия:

  • оба канала передачи данных инициализированы одновременно одним и тем же LSR, называемым исходным узлом, или возникли в результате одномоментной операции сетевой управляющей станции;
  • ни один из образующих такую пару каналов не может существовать отдельно. То есть, оба создаются и исчезают одновременно.
  • Следует также рассмотреть топологические свойства BTT. BTT может быть топологически симметричным или асимметричным. BTT считается топологически симметричным, если составляющие его каналы передачи данных имеют одни и те же физические маршруты. Если, однако, составляющие его каналы передачи данных маршрутизированы через разные пути, тогда BTT называется топологически асимметричным.

    Нужно заметить, что двунаправленные каналы передачи данных имеют в основном административное удобство. На практике большинство функций управления трафиком могут быть реализованы с использованием исключительно однонаправленных каналов передачи данных.

    Базовые операции для канала передачи данных

    Базовые операции в канале передачи данных, важные для целей управления трафиком, перечислены ниже.

  • Установить (Establish): создать канал передачи данных.
  • Активировать (Activate): запустить информационный обмен через канал передачи данных. Установление и активизация канала передачи данных — логически не связанные события. Они могут, однако, быть реализованы в рамках одной операции.
  • Деактивировать (Deactivate): останавливать информационный поток через канал передачи данных.
  • Модифицировать атрибуты (Modify Attributes): изменить атрибуты канала передачи данных.
  • Сменить маршрут (Reroute): изменить маршрут канала передачи данных. Это может быть сделано административно или автоматически с помощью базовых протоколов.
  • Ликвидировать (Destroy): ликвидировать канал передачи данных и уведомить об имеющихся ресурсах. К таким ресурсам относится пространство меток и, возможно, дополнительная полоса пропускания.
  • Выше рассматривались базовые операции каналов передачи данных. Возможны и дополнительные операции, сопряженные с реализацией политики и формированием трафика.

    Мониторирование аккоунтинга и работы

    Возможности мониторинга аккоутнтинга и рабочих характеристик являются крайне важным для задач биллинга и контроля параметров трафика. Статистика трафика, полученная с помощью такой системы мониторинга, может использоваться для оптимизации рабочих характеристик канала и для планирования управления трафиком.

    Возможность получения статистики на уровне канала передачи данных так важна, что это следует рассматривать как существенное требование управления трафиком через MPLS.

    Базовые атрибуты управления трафиком каналов передачи данных

    Атрибут канала передачи данных является параметром, который влияет на рабочие характеристики канала.

    Атрибуты могут быть явно присвоены каналам передачи данных администратором или заданы неявно базовыми протоколами, когда пакеты классифицируются и сортируются по классам эквивалентности (FEC) на входе в область MPLS. Независимо от того, как атрибуты были первоначально присвоены, для целей управления трафиком нужно допустить их административную модификацию.

    Основные атрибуты каналов передачи данных наиболее важные для управления трафиком перечислены ниже.

  • Атрибут политики (Policing)
  • Атрибут приоритета
  • Атрибут приоритетного прерывания обслуживания (Preemption)
  • Атрибут устойчивости (Resilience)
  • Атрибуты управления и выбора пути
  • Атрибуты параметров трафика
  • Комбинация параметров трафика и атрибутов политики аналогична использованию параметрического управления в сетях ATM. Большинство атрибутов, перечисленных выше, имеют аналоги в хорошо установившихся технологиях. Следовательно, следует достаточно непосредственно установить соответствие между атрибутами канала передачи данных и многими существующими архитектурами переключения и маршрутизации.

    Приоритет и приоритетное прерывание обслуживания могут рассматриваться как относительные атрибуты, так как они выражают определенные отношения между каналами передачи данных. Концептуально, эти двоичные отношения определяют способ взаимодействия каналов между собой, когда они соревнуются за получение сетевых ресурсов в процессе установления пути и его рабочих параметров.

    Атрибуты параметров трафика

    Параметры трафика могут использоваться при сборе данных об информационных потоках (или более точно FEC), которые надлежит транспортировать через информационный канал. Такие характеристики могут включать пиковые загрузки или средние потоки. Параметры трафика важны потому, что они указывают требования к ресурсам канала передачи данных. Это полезно для выделения ресурсов и исключения перегрузки за счет политики предвидения.

    Атрибуты управления и выбора пути

    Атрибуты управления и выбора пути определяют правила выбора пути канала передачи данных, а также правила работы с маршрутами, которые уже существуют.

    Маршруты могут быть вычислены автоматически с помощью протоколов маршрутизации или могут быть определены сетевым администратором. Если требований к ресурсам или ограничений, сопряженных с каналом передачи данных, нет, тогда для выбора пути может быть использован протокол, управляемый топологией. Однако, если требования к ресурсам или ограничения, связанные с политикой, имеются, тогда следует использовать маршрутизацию, основанную на ограничениях.

    Управление касается всех аспектов, имеющих отношение к поддержанию путей, через которые проходят каналы передачи данных. В некоторых операционных контекстах желательно, чтобы реализация MPLS могла динамически себя реконфигурировать для адаптации к состоянию системы. Адаптивность и устойчивость являются аспектами динамического управления маршрутом.

    Чтобы контролировать выбор пути и процесс управления, необходим набор атрибутов. Базовые атрибуты и рабочие характеристики, связанные с выбором пути и управлением каналом передачи данных, описаны ниже.

    Административно специфицированные маршруты

    Административно специфицированный путь для канала передачи данных конфигурируется в результате действий оператора. Административно специфицированный путь может быть определен полностью или частично. Путь полностью специфицирован, если указаны все шаги между начальной и конечной точками. Путь частично специфицирован, если представлен только субнабор промежуточных шагов. В этом случае нужны базовые протоколы, чтобы сформировать окончательный маршрут. Из-за ошибок оператора административно специфицированный путь может оказаться несогласованным или нелогичным. Базовые протоколы маршрутизации должны быть способны детектировать такую несогласованность и вносить необходимые коррективы.

    Атрибут path preference rule (правило предпочтения пути) должен быть ассоциирован с административно специфицированными путями. Атрибут "правила предпочтения пути" представляет собой двоичную переменную, которая указывает, является ли административно сконфигурированный путь обязательным или нет.

    Если административно сконфигурированный путь выбран с обязательным атрибутом, должен использоваться этот (и только этот) путь. Если обязательный путь недопустим (например, конечные пункты топологически разделены) или если путь не может быть использован, так как его ресурсы неадекватны, тогда процесс установки пути (setup) потерпит неудачу. Другими словами, если путь специфицирован как обязательный, то альтернативный путь не может использоваться ни при каких обстоятельствах. Обязательный путь, который успешно приписан, является неявно закрепленным. Раз путь присвоен, его нельзя изменить, а можно только ликвидировать или заменить новым.

    Однако если административно специфицированный путь выбран со значением атрибута предпочтения "необязательный", тогда путь следует использовать, если это возможно. В противном случае может использоваться альтернативный путь, предлагаемый маршрутным протоколом.

    Иерархия предпочтений для мультимаршрутов

    В некоторых практических контекстах, может быть полезно административно специфицировать набор кандидатов маршрутов для данного канала передачи данных и определить иерархию предпочтения этих маршрутов. Во время установления пути правила предпочтения используются при выборе подходящего пути из списка кандидатов. В случае неполадки правила предпочтения применяются для выбора альтернативного пути из списка кандидатов.

    Атрибуты сродства классов ресурсов (Resource Class Affinity)

    Атрибуты сродства классов ресурсов, ассоциированные с каналом передачи данных, могут использоваться для спецификации класса ресурсов, которые следует включить явно или исключить из пути канала передачи данных. Эти атрибуты политики могут понадобиться для введения дополнительных ограничений для маршрута канала передачи данных. Атрибуты сродства классов ресурсов могут быть специфицированы для трафика в виде последовательности пар:

    <resourceclass, affinity>; <resourceclass, affinity>;

    Параметр resource-class идентифицирует класс ресурса, для которого определено соотношение сродства в отношении канала передачи данных. Параметр affinity указывает на соотношение сродства; то есть, включены или исключены члены класса ресурсов для канала передачи данных. В частности, параметр affinity может быть двоичной величиной, которая принимает одно из следующих значений: (1) явное включение и (2) явное исключение.

    Если атрибут сродства является двоичной переменной, можно использовать булевы выражения для спецификации сродства класса ресурсов, ассоциированных с данным каналом передачи данных.

    Если не специфицировано никакого атрибута сродства класса, тогда предполагается значение отношения сродства "don't care" (безразлично) между каналом передачи данных и ресурсами. То есть, не существует никаких требований по включению или исключению каких-либо ресурсов для пути канала передачи данных. На практике — это режим по умолчанию.

    Атрибуты сродства классов ресурсов очень полезны и эффективны, так как они могут быть использованы при реализации самых разных политик. Например, они могут быть применены для размещения определенных каналов передачи данных в заданных топологических областях сети.

    Маршрутизация на основе ограничений может использоваться для вычисления точного пути для канала передачи данных так, чтобы удовлетворить ограничениям сродства класса ресурсов следующим образом:

  • для прямого включения перед началом вычисления пути удалить все ресурсы, не принадлежащие специфицированным классам;
  • для прямого исключения перед началом вычисления пути удалить все ресурсы, принадлежащие специфицированным классам.
  • Атрибут адаптивности

    Характеристики сети и ее состояние изменяются со временем. Например, появляются новые ресурсы, утраченные ресурсы могут быть снова активизированы, а выделенные ресурсы могут оказаться недоступными. Вообще, иногда могут оказаться доступными более эффективные пути. Следовательно, с точки зрения управления трафиком, необходимо иметь административные параметры управления, которые могут использоваться для спецификации того, как канал передачи данных будет реагировать на этот динамизм. При некоторых сценариях может оказаться желательным динамически изменить пути некоторых информационных каналов в ответ на изменения состояния сети. Этот процесс называется реоптимизацией. При других сценариях повторная оптимизация может оказаться нежелательной.

    Атрибут адаптивности ( adaptivity ) является частью блока параметров пути, ассоциированного с каналом передачи данных. Атрибут адаптивности, ассоциированный с каналом передачи данных, указывает на то, является ли канал субъектом реоптимизации. То есть, атрибут адаптивности представляет собой двоичную переменную, которая принимает одно из следующих значений: (1) разрешить реоптимизацию и (2) запретить реоптимизацию.

    Если реоптимизация разрешена, канал передачи данных может под действием маршрутных протоколов изменить путь в ответ на изменение состояния сети. Напротив, если реоптимизация запрещена, канал передачи данных является закрепленным и его маршрут не может быть изменен при вариации ситуации в сети.

    Стабильность является главным соображением, когда разрешена реоптимизация. Чтобы содействовать стабильности, реализация MPLS не должна быть слишком реактивной в ответ на эволюционные изменения в сети. В то же время, она должна достаточно быстро адаптироваться, чтобы оптимально использовать появляющиеся сетевые ресурсы. Отсюда следует, что частота реоптимизаций должна определяться административно, чтобы допускать настройку.

    Следует заметить, что реоптимизация не то же самое, что и устойчивость к внешним воздействиям. Для спецификации характеристик устойчивости канала передачи данных используются другие атрибуты. На практике представлялось бы разумным ожидать, что канал передачи данных, подвергающийся реоптимизации, должен быть устойчив против отказов вдоль его пути. Однако канал передачи данных, который не подвергается реоптимизации и чей маршрут не специфицирован административно как обязательный, также должен быть устойчивым против отказов связей и узлов вдоль своего пути.

    Формально, можно утверждать, что адаптивность к состоянию эволюции через реоптимизацию влечет за собой устойчивость к отказам, тогда как устойчивость к отказам не предполагает общей адаптивности к изменениям состояния сети.

    Распределение нагрузки в параллельных каналах передачи данных

    Распределение нагрузки по нескольким параллельным каналам передачи данных между двумя узлами является крайне важным.

    Во многих практических контекстах суммарный трафик между узлами может быть таким, что ни один канал в отдельности (следовательно, и ни один маршрут) не сможет его пропустить. Однако суммарный поток может быть меньше, чем максимально допустимый поток через поперечное сечение ("mincut"), разделяющее два узла. В этом случае единственно возможным решением может быть деление трафика на несколько потоков.

    В домене MPLS эта проблема может быть решена с помощью нескольких каналов, соединяющих два узла. Следовательно, нужны гибкие средства назначения нагрузки для параллельных каналов передачи данных, соединяющих два узла.

    В частности, в ситуациях, где параллельные потоки данных оправданы, было бы полезно иметь некоторые атрибуты, которые могут применяться для указания доли трафика, проходящего через каждый из каналов. Базовые протоколы реализуют нагрузку каналов в указанной пропорции. Желательно также обеспечивать порядок передачи пакетов, принадлежащих одному и тому же микропотоку (идентичные адреса отправителя и получателя плюс номера порта).

    Атрибут приоритета

    Атрибут priority (приоритет) определяет относительную важность канала передачи данных. Если с MPLS применяется маршрутизация, базирующаяся на ограничениях, тогда приоритеты становятся очень важными, так как они используются в случае отказов для определения порядка, в котором выбираются пути для канала передачи данных из имеющегося списка.

    Приоритеты важны также в реализациях, допускающих приоритетное обслуживание, так как они могут быть нужны для определения политики обслуживания каналов передачи данных.

    Атрибут Preemption

    Атрибут preemption определяет, может ли канал передачи данных заместить другой канал на данном пути и может ли другой канал передачи данных заместить заданный канал. Приоритетная подмена полезна как для схемы оптимизации, ориентированной на трафик, так и для схемы, ориентированной на ресурс. Приоритетное замещение может использоваться, чтобы гарантировать то, что канал передачи данных маршрутизирован через вполне определенный путь, а это особенно важно при оказании дифференцированных услуг

    Приоритетное замещение может также применяться при реализации различных политик восстановления, вступающих в силу при отказах оборудования или программ.

    Атрибут preemption может использоваться для спецификации четырех режимов приоритетного замещения для канала передачи данных: (1) замещающий объект активирован (preemptor enabled), (2) nonpreemptor (не является замещающим объектом), (3) допускающий подмену и (4) не допускающий подмены. Канал передачи данных, где разрешено приоритетное замещение (preemptor enabled), может заменять каналы с более низким приоритетом, признанные как приемлемые для замены. Канал передачи, специфицированный как не подлежащий подмене, не может быть замещен каким-либо иным каналом, вне зависимости от их относительных приоритетов. Канал передачи данных, допускающий замещение, может быть замещен другим каналом с более высоким приоритетом, который имеет атрибут preemptor enabled.

    Достаточно просто понять, что некоторые режимы замещения являются взаимно исключающими. Используя схему нумерации, описанную выше, можно назвать допустимые комбинации режимов для канала передачи данных: (1, 3), (1, 4), (2, 3) и (2, 4). Комбинация (2, 4) является режимом по умолчанию.

    Канал передачи данных, скажем "A", может заместить другой канал, скажем "B", только если все следующие пять условий будут выполнены:

  • "A" имеет относительно более высокий приоритет, чем "B",
  • "A" претендует на ресурс, используемый "B",
  • ресурс не может одновременно поддерживать "A" и "B",
  • "A" может быть приемником, и
  • "B" допускает подмену.
  • Атрибут preemption не рассматривается как обязательный атрибут современной модели обслуживания в Интернет (best effort service), хотя и является полезным. Однако, в сценарии с дифференциальными услугами необходимость подмены становится очевидной. Более того, в появляющихся архитектурах оптического Интернет, где функции защиты и восстановления, чтобы уменьшить цену, могут быть перенесены с оптического уровня на информационные сетевые элементы (такие, как гигабитные и терабитные маршрутизаторы с коммутацией по меткам), стратегии приоритетного замещения могут использоваться для сокращения времени восстановления канала в условиях сбоев.

    Атрибут устойчивости (Resilience)

    Атрибут resilience определяет поведение канала передачи данных в случае возникновения ошибок — то есть, когда ошибка происходит на пути, через который проходит канал. При таких обстоятельствах должны быть рассмотрены следующие проблемы: (1) детектирование ошибки, (2) уведомление об ошибке, (3) восстановление после сбоя. Очевидно, реализация MPLS должна содержать механизмы для решения всех этих задач.

    Многие политики восстановления могут быть специфицированы для каналов передачи данных, чьи маршруты подвержены отказам. Ниже представлены примеры приемлемых схем.

  • Не нужно изменять маршрут канала передачи данных (traffic trunk). Например, схема живучести может уже существовать и реализовываться за счет альтернативного механизма, который гарантирует непрерывность обслуживания в случае сбоя без необходимости изменения маршрута канала передачи данных. Примером такой альтернативной схемы (конечно, существует и много других), является ситуация, когда между двумя узлами имеется несколько параллельных каналов и в случае отказа одного LSP его трафик будет перераспределен между остальными LSP согласно некоторой заданной политике.
  • Перенаправить маршрут на приемлемый путь с достаточными ресурсами. Если такового нет, тогда маршрут не изменять.
  • Поменять маршрут на любой доступный, игнорируя ограничения по ресурсам.
  • Возможно много других схем, включая комбинации перечисленных выше.

    Базовый атрибут resilience указывает на процедуру восстановления, которая должна быть запущена для данного канала при возникновении отказа. В частности, базовый атрибут resilience является двоичной переменной, которая определяет, будет ли данный канал изменять маршрут, если сегмент его пути выдал отказ. Расширенный атрибут resilience может применяться для подробной спецификации в случае сценария отказа. Например, расширенный атрибут resilience может специфицировать набор альтернативных путей, которые следует использовать в случае отказа, а также правил, которые управляют относительным предпочтением для каждого специфицированного пути. Атрибуты resilience обеспечивают тесное взаимодействие между MPLS и маршрутизацией.

    Атрибут Policing

    Атрибут policing определяет действия, которые следует предпринять в рамках базовых протоколов, когда канал передачи данных становится нерабочим — то есть, когда какие-то параметры канала отклонились за оговоренные пределы. Вообще, атрибуты policing могут указывать, является ли неуправляемый канал передачи данных лимитированным по полосе пропускания или он просто переадресуется без каких-либо действий, учитывающих местную политику. Если используется политика, тогда для реализации таких функций могут применяться адаптации алгоритмов, таких, как ATM GCRA [11].

    Использование политики необходимое во многих рабочих сценариях, может быть неприемлемо в других. Вообще, обычно желательно реализовать какую-то политику на входе сети (чтобы обеспечить согласование с требованиями уровня обслуживания) и минимизировать применение политики в ядре, за исключением ситуации, когда ограничение емкости диктуют обратное.

    Следовательно, с точки зрения управления трафиком необходимо иметь возможность административно разрешать и запрещать применение политики для каждого канала передачи данных (traffic trunk).

    Атрибуты ресурсов

    Атрибуты resource являются частью параметров состояния топологии, которые используются, чтобы установить ограничения на маршрутизацию каналов передачи данных в рамках имеющихся ресурсов.

    Максимально выделяемая доля (MAM)

    Максимально выделяемая доля MAM (maximum allocation multiplier) ресурса является административно задаваемым атрибутом, который определяет долю ресурса, доступную для канала передачи данных. Этот атрибут нужен в основном для распределения полосы пропускания. Однако он может быть применен также для резервирования ресурсов LSR. Концепция MAM аналогична концепции параметров подписки и резервирования в сетях Frame Relay и ATM.

    Значения MAM могут быть выбраны так, чтобы ресурс был недораспределен или перераспределен. Ресурс считается недораспределенным, если суммарные требования всех каналов передачи данных, которые могут его использовать, меньше емкости ресурса. В противном случае ресурс считается перераспределенным.

    Недораспределение может применяться, чтобы установить предел использования ресурсов. Однако, в случае MPLS это сложнее, чем в схемах с коммутацией каналов, так как для MPLS некоторые потоки могут маршрутизоваться посредством обычных протоколов шаг-за-шагом без рассмотрения каких-либо ресурсных ограничений.

    Перераспределение может использоваться, чтобы реализовать преимущества статистических характеристик трафика в рамках более эффективной политики использования имеющихся ресурсов. В частности, перераспределение можно применить в ситуации, когда пики загрузки трафика в разных каналах не совпадают по времени.

    Атрибут класса ресурса

    Атрибуты класса ресурса являются параметрами, присваиваемыми административно, и вводят понятие класса для ресурсов. Атрибуты класса ресурса могут рассматриваться как цвета, приписанные ресурсам, такие, что набор ресурсов с одним цветом концептуально принадлежит к одному классу. Атрибуты класса ресурса могут использоваться для реализации разнообразных политик. Ключевыми ресурсами здесь являются связи. В случае применения в отношении связей, атрибут класса ресурса становится эффективной характеристикой параметров состояния связи.

    Концепция атрибутов класса ресурса является достаточно мощной абстракцией. С точки зрения управления трафиком она может применяться для реализации различных политик при оптимизации характеристик канала по трафику или по ресурсам. В частности, атрибуты класса могут использоваться для:

  • реализации одинаковых политик для набора ресурсов, которые не обязательно находятся в одной и той же топологической области;
  • спецификации относительного предпочтения для набора ресурсов, связанных с положением маршрута, по которому транспортируется поток данных;
  • ограничения положения каналов передачи данных для заданного субнабора ресурсов;
  • реализации обобщенного включения/исключения политик;
  • реализации политики ограничения локальности трафика — то есть, политики, которая ищет способы размещения трафика в пределах оговоренных топологических областей сети.
  • Кроме того, атрибуты класса ресурса могут использоваться для целей идентификации.

    Вообще, ресурс может быть ассоциирован более чем с одним атрибутом класса ресурса. Например, все каналы OC-48 в заданной сети могут быть приписаны определенному атрибуту класса ресурса. Субнаборы каналов OC-48, могут быть приписаны к дополнительным атрибутам класса, чтобы реализовать специальную политику или построить нужную вам сеть.

    Маршрутизация, базирующаяся на ограничениях

    В современной терминологии маршрутизация, основанная на ограничениях, часто называется QoS-маршрутизацией (смотри [11.5,6,11.7,[11.10]).

    Здесь используется термин маршрутизация на основе ограничений, однако, если быть точным, QoS-маршрутизация является лишь ее составной частью.

    Маршрутизация на основе ограничений делает возможным резервирование ресурсов по запросу и сосуществование с имеющимися внутренними протоколами маршрутизации Интернет, работающими по принципу шаг-за-шагом.

    Маршрутизация на основе ограничений использует следующие данные в качестве входных:

  • атрибуты, связанные с каналами передачи данных;
  • атрибуты, связанные с ресурсами;
  • другую информацию, характеризующую состояние топологии сети.
  • Базируясь на этой информации, процесс маршрутизации на основе ограничений автоматически вычисляет маршрут для каждого потока, исходящего из данного узла. В этом случае маршрут для каждого информационного потока представляет собой спецификацию пути с коммутацией по меткам, который удовлетворяет требованиям, записанным в атрибутах канала. Ограничения формулируются на основе доступности ресурсов, административной политики и статусной топологической информации.

    Маршрутизация на основе ограничений может существенно сократить уровень ручной конфигурации и необходимого вмешательства для актуализации политики управления трафиком.

    На практике инженер трафика, оператор или даже автоматическая система специфицирует конечные точки канала передачи данных и приписывает набор атрибутов, который объединяет ожидаемые рабочие характеристики канала. Предполагается, что маршрутизация на основе ограничений найдет приемлемый путь, который удовлетворит имеющимся ожиданиям. Если необходимо для более тонкой оптимизации, инженер трафика или система поддержки управления трафиком может затем использовать административно сконфигурированные маршруты.

    Базовые характеристики маршрутизации на основе ограничений

    Маршрутизация на основе ограничений должна, по крайней мере, иметь возможность автоматически получать базовые, приемлемые решения задачи размещения пути для канала передачи данных.

    Вообще, известно, что проблема маршрутизации на основе ограничений трудно разрешима для большинства реалистичных ограничений. Однако, на практике для нахождения приемлемого пути, если он существует, может использоваться очень простая хорошо известная эвристика (смотри, например, [11.9]).

  • Сначала отбрасываются ресурсы, которые не удовлетворяют требованиям атрибутов канала передачи данных.
  • Затем, для оставшегося графа связей запускается алгоритм поиска кратчайшего пути.
  • Ясно, что если приемлемый путь для заданного канала передачи данных существует, тогда предложенная выше простая процедура его найдет. Могут быть специфицированы дополнительные правила для разрубания узлов и выполнения дальнейшей оптимизации. Вообще, оптимизация обычно сводится к минимизации перегрузки. Однако когда нужно маршрутизировать несколько каналов передачи данных, можно показать, что выше предложенный алгоритм не всегда находит решение, даже когда такое решение существует.

    Соображения реализации

    Многие коммерческие реализации коммутаторов Frame Relay и ATM уже поддерживают некоторые аспекты маршрутизации на основе ограничений. Для таких приборов или для новых MPLS-реализаций должно быть относительно просто расширить существующие варианты маршрутизации на основе ограничений, чтобы удовлетворить специфическим требованиям MPLS.

    Для маршрутизаторов, которые используют топологически управляемые IGP, определяющие маршрут шаг-за-шагом, маршрутизацию на основе ограничений можно внедрить одним из двух способов:

  • путем расширения существующих IGP протоколов, таких, как OSPF и IS-IS для поддержки маршрутизации на основе ограничений. Прилагаются усилия для решения этой задачи в отношении протокола OSPF (смотри [5,7]);
  • путем добавления процесса маршрутизации на основе ограничений в каждый маршрутизатор, который может сосуществовать с имеющимися IGP. Этот сценарий представлен на рис. 11.7.
  • (рис 11.7) Процесс маршрутизации, базирующийся на ограничениях, на уровне 3 LSR

    Существует много важных деталей, связанных с реализацией маршрутизации на основе ограничений в устройствах уровня 3, которые здесь не обсуждались. Сюда входят:

  • Механизмы обмена статусной топологической информацией (данные о доступности ресурсов, информация о состоянии связи, информация об атрибутах ресурсов) между процессами маршрутизации на основе ограничений.
  • Механизмы работы с топологической статусной информацией.
  • Взаимодействие между процессами маршрутизации на основе ограничений и процессами традиционных IGP.
  • Механизмы выполнения требований адаптивности каналов передачи данных.
  • Механизмы выполнения требований устойчивости и живучести каналов передачи данных.
  • Короче говоря, маршрутизация на основе ограничений помогает при осуществлении оптимизации сетей путем автоматического поиска приемлемых маршрутов, которые удовлетворяют набору ограничений, налагаемых на каналы передачи данных. Она может существенно уменьшить усилия по административной конфигурации и ручному вмешательству для решения задач управления трафиком.

    Вернуться к учебному плану