Доставка данных о LDP-протоколе
LDP-протокол используется между узлами MPLS-сети для формирования и обработки привязок маркеров. Для корректного функционирования MPLS-сети информация о доставке маркеров должна передаваться надёжно, а сообщения LDP-протокола, принадлежащие определённому FEC-классу, должны транслироваться последовательно. Также для этого необходимо обеспечить управление потоком, так как оно обеспечит доставку сообщений с несколькими маркерами в одной дейтаграмме.
Одним из решений указанных выше проблем является использование протокола транспортного уровня с установлением соединения, в частности ТСР-протокола (RFC-4271, RFC-5036).
Глава 34 | Кодирование набора маркеров в MPLS-системах |
В этой главе рассматриваются правила кодирования и процедуры обработки различных полей набора маркеров, используемые LSR-маршрутизаторами при передаче помеченных IP-пакетов по сквозным каналам передачи данных, организуемых PPP-протоколом (Point-to-Point Protocol, протокол (канального уровня) сквозного канала передачи данных), и каналам передачи данных ЛВС.
Набор маркеров
Кодирование набора маркеров
Набор маркеров представляет собой последовательность «записей набора маркеров». Каждая запись в наборе включает четыре байта (рис. 34.1).
Записи в наборе маркеров начинаются после протокольных заголовков канального уровня, но заканчиваются перед протокольными заголовками сетевого уровня (рис. 33.5). Вначале идут верхние записи набора, а нижняя запись в наборе является его окончанием. Пакет сетевого уровня следует сразу же за записью набора маркеров, в которой бит «S» установлен в единицу.
0 19 | 20 22 | 23 | 24 31 |
Значение маркера | Экспериментальные | S | «Время жизни» |
Рис. 34.1. Формат записи набора маркеров
Каждая запись набора маркеров включает следующие поля:
1. бит «S» (окончание набора маркеров). Этот бит указывает на окончание набора маркеров, если он установлен в «1». Если же он нулевой, то за этой записью набора ещё будут следовать записи;
2. «время жизни» (Time to Live, TTL). Это 8-битовое поле используется для кодирования TTL-значения;
3. «экспериментальное поле» (3 бита). Это 3-битовое поле зарезервировано для экспериментальных исследований;
4. «значение маркера потока» (20 бит). Это 20-битовое поле содержит реальное значение маркера потока.
Когда принят помеченный пакет, то значение верхнего маркера в наборе подвергается анализу. В результате успешного анализа становятся известными:
a) следующий РУ, по которому будет далее транслироваться IP-пакет;
b) процедура обработки набора маркеров, которая должна быть выполнена перед тем, как будет отправлен IP-пакет. В результате этой процедуры может быть заменена верхняя запись в наборе на другую запись, либо удалена верхняя запись из набора, либо заменена верхняя запись в наборе и затем вставлена одна или несколько дополнительных записей в набор маркеров.
В дополнение к этой информации могут быть получены данные, позволяющие определить необходимую выходную процедуру повторного обрамления на канальном уровне, а также и возможные другие данные, которые позволят уточнить особенности дальнейшей доставки IP-пакета.
Существуют несколько следующих зарезервированных значений маркеров:
i. значение «0» представляет собой «явный нулевой маркер для IPv4-протокола» (IPv4 explicit NULL label). Это значение может располагаться только (и только) на самом нижнем уровне набора маркеров. Оно указывает на то, что набор маркеров должен быть удалён, а дальнейшая доставка IP-пакета, должна осуществляться на основе IPv4-заголовка;
ii. значение «1» представляет собой «маркер-предупреждение для маршрутизатора» (router alert label). Этот маркер может располагаться на любом, кроме самого нижнего, уровне набора маркеров. Если полученный IP-пакет содержит, на самом верхнем уровне набора, маркер с таким значением, то он должен быть обработан локальным программным модулем. Реальная доставка IP-пакета определяется маркером, расположенным ниже этого маркера в наборе. Однако, если IP-пакет направляется дальше, то целесообразно перед отправкой вставить «маркер-предупреждение» обратно в набор маркеров. Использование такого маркера аналогично использованию дополнительной функции в IP-пакетах «функция предупреждения для маршрутизатора» (router alert option, RFC-2113[2]). Так как этот маркер не может размещаться на самом нижнем уровне набора маркеров, он никак не связан с каким-либо протоколом сетевого уровня;
iii. значение «2» представляет собой «явный нулевой маркер для IPv6-протокола» (IPv6 explicit NULL label). Это значение может располагаться только (и только) на самом нижнем уровне набора маркеров. Оно указывает на то, что набор маркеров должен быть удалён, а дальнейшая доставка IP-пакета, должна осуществляться на основе IPv6-заголовка;
iv. значение «3» представляет собой «неявный нулевой маркер» (implicit NULL label). Такой маркер назначается и распространяется LSR-маршрутизаторами, но никогда не подвергается процедуре повторного обрамления. Если LSR-маршрутизатору следует заменить маркер верхнего уровня в наборе на новый маркер, а новым маркером является неявный нулевой маркер, то LSR-маршрутизатор просто удалит весь набор маркеров вместо возможной замены маркеров. Несмотря на то, что это значение маркера никогда не может быть подвергнуто повторному обрамлению, это необходимо отразить в LDP-протоколе, т.е. это значение зарезервировать;
v. значения «4…15» зарезервированы.
Определение протокола сетевого уровня
Когда из набора маркеров пакета удаляется последний маркер (в результате чего набор «опустошается»), дальнейшая обработка пакета основывается на заголовке сетевого уровня. LSR-маршрутизатор, который удаляет последний маркер из набора, обязан, вследствие этого, определить к какому протоколу сетевого уровня принадлежит пакет. Тем не менее, набор маркеров не содержит каких-либо полей, с помощью которых можно точно установить протокол сетевого уровня. Это означает, что идентификация протокола сетевого уровня должна осуществляться на основе анализа значения маркера, который последним удаляется из набора маркеров, возможно совместно с содержанием самого заголовка сетевого уровня.
Следовательно, если в пакет сетевого уровня вставляется первый маркер, то маркер должен быть таким, который используется только, либо в пакетах определённого сетевого уровня, либо в некоторой совокупности протоколов сетевого уровня, т.е. пакеты конкретного протокола сетевого уровня могут быть установлены путём анализа заголовка сетевого уровня. Более того, всякий раз, когда такой маркер замещается маркером с другим значением (в течение ретрансляции пакета), новое значение маркера должно удовлетворять одному и тому же установленному критерию. Если же эти условия не выполняются, то LSR-маршрутизатор, который удаляет последний маркер из набора, не способен идентифицировать протокол сетевого уровня, которому принадлежит пакет.
Соблюдение этих условий не обязательно обеспечит для промежуточных сетевых узлов способность идентифицировать протокол сетевого уровня, которому принадлежит пакет. Даже нет необходимости в соблюдении обычных условий, но, тем не менее, в случае возникновения нештатной ситуации желательно, чтобы сетевые узлы были способны идентифицировать протокол сетевого уровня. Например, если промежуточный LSR-маршрутизатор определит, что пакет «нетранспортабелен», то желательно, чтобы LSR-маршрутизатор мог сформировать сообщения об ошибке, которые, в свою очередь, определяли бы протокол сетевого уровня, которому принадлежит пакет. Единственным средством для промежуточного LSR-маршрутизатора при определении им протокола сетевого уровня является проверка (анализ) маркера верхнего уровня в наборе или заголовок сетевого уровня. Действительно, если промежуточные сетевые узлы способны формировать определённые протокольные сообщения об ошибках для помеченных пакетов, то все маркеры в наборе должны удовлетворять определённым критериям, указанным выше для маркеров, которые располагаются на самом нижнем уровне в наборе маркеров.
Если по какой-либо причине пакет не может быть доставлен (например, он превышает максимальной допустимый MTU-размер для канального уровня), а также если не может быть определён протокол сетевого уровня, которому принадлежит пакет, или не известны правила процедурной характеристика протокола для выхода из нештатной ситуации, то такой пакет должен быть уничтожен в режиме «по умолчанию».
Формирование сообщений ICMP-протокола для помеченных
IP-пакетов
Ранее обсуждались ситуации, в которых было бы желательно формировать ICMP-сообщения для помеченных IP-пакетов. Чтобы соответствующий LSR-маршрутизатор был способен формировать ICMP-пакет и в последующем мог его отправить источнику IP-пакета, должны быть выполнены следующие два условия:
1. у LSR-маршрутизатора должна быть возможность определения, что соответствующий помеченный пакет является IP-пакетом;
2. у LSR-маршрутизатора должна быть возможность определения маршрута до адреса отправителя IP-пакета.
Обработка TTL-поля
Термин «входящее TTL-время» (incoming TTL) помеченного пакета определяет значение в TTL-поле самой верхней записи набора маркеров в момент получения пакета.
Термин «исходящее TTL-время» (outgoing TTL) помеченного пакета определяет значение, которое должно быть больше:
a) входящего TTL-времени, уменьшенного на единицу;
b) нуля.
Независимые от протоколов правила. Если значение исходящего TTL-времени помеченного пакета равно нулю, то, либо помеченный пакет не должен больше никуда доставляться, либо из такого пакета должен быть удалён набор маркеров, а сам пакет должен доставляться как не помеченный. Время жизни пакета в сети определяется его предельным значением.
В зависимости от значения маркера в записи набора маркеров пакет может быть просто уничтожен, либо может быть направлен на сетевой уровень для его последующей обработки (например, для формирования ICMP-сообщения об ошибке). Когда помеченный пакет доставлен, тогда в TTL-поле самой верхней записи в наборе маркеров должно быть установлено значение исходящего TTL-времени.
Следует заметить, что исходящее TTL-время является исключительно функцией значения исходящего TTL-времени, и не зависит ни от каких-либо маркеров, которые были вставлены или удалены перед отправкой пакета. Совершенно неважно, какое значение содержится в TTL-поле любой записи набора маркеров, если она не расположена на самом верху набора маркеров.
Зависимые от IP-протокола правила. Введём обозначение «IP/TTL-поле». Значение этого поля должно быть равно значению, которое содержится в TTL-поле заголовка IPv4-пакета или в поле «Hop Limit» (максимальное число РУ, RFC-2460) заголовка IPv6-пакета (в зависимости от того, какая версия IP-протокола используется).
Когда IP-пакет маркируется впервые, тогда значение в TTL-поле записи набора маркеров должно быть равно значению IP/TTL-поля. (Если значение IP/TTL-поля следует уменьшить на единицу, как часть обработки IP-пакета, то подразумевается, что это уже было сделано.)
Если маркер «удаляется», и в результате набор маркеров остаётся пустым, то значение IP/TTL-поля должно быть заменено на значение исходящего TTL-времени, как было рассмотрено выше. В IPv4-протоколе это потребует изменения контрольной проверочной суммы IPv4-заголовка пакета.
Это указывает на то, что могут возникнуть ситуации, в которых сетевая администрация предпочитает уменьшать на единицу значение в TTL-поле заголовка IPv4-пакета, как это осуществляется в сетевом MPLS-сегменте, вместо уменьшения значения в TTL-поле заголовка IPv4-пакета на число РУ LSP-маршрута, в границах сетевого сегмента.
Трансляция между узлами, реализующими различные типы процедуры повторного обрамления. Иногда LSR-маршрутизатор может получить помеченный пакет, который, например, был передан с выходного интерфейса ATM/LSR-коммутатора (LC/ATM-интерфейс, RFC-3035[3]), и может понадобиться передать такой пакет по сквозному соединению канального уровня (PPP-протокол), либо через ЛВС. Тогда входящий пакет не будет обработан с использованием процедуры повторного обрамления, устанавливаемой данным стандартом, в то время как исходящий пакет будет обработан с использованием такой процедуры.
В таком случае, значение входящего TTL-времени определяется с помощью процедур, используемых при доставке помеченных пакетов, например, с помощью ATM/LSR-коммутаторов. А обработка TTL-поля осуществляется, как было описано ранее.
Иногда LSR-маршрутизатор может получить помеченный пакет, который, например, был передан по сквозному соединению канального уровня (PPP-протокол), либо через ЛВС, и может понадобиться передать такой пакет, скажем, на входной интерфейс ATM/LSR-коммутатора.
Тогда входящий пакет будет обработан с использованием процедуры повторного обрамления, устанавливаемой данным стандартом, в то время как исходящий пакет будет не обработан с использованием такой процедуры. В таком случае, процедура доставки значения исходящего TTL-времени определяется процедурами, используемыми при доставке помеченных пакетов, например, с помощью ATM/LSR-коммутаторов.
Дата добавления: 2016-01-03; просмотров: 661;