A.1.Запрос получения метки
Краткое изложение:
Отклик LSR на подтверждение запроса FEC-метки от партнера LDP может включать одну или более операций:
- Cообщение уведомления запрашивающему LSR, объясняющее, почему не может быть присвоена метка для данного FEC;
- Передача сообщения присвоения метки для FEC запрашивающему LSR;
- Передача узлу следующего шага запроса метки для FEC;
- Инсталляция меток для переадресации пакетов LSR.
Контекст:
- LSR. LSR, обрабатывающий событие.
- MsgSource. LDP-партнер, который посылает сообщение.
- FEC. FEC, специфицированный в сообщении.
- RAttributes. Атрибуты, полученные в сообщении. Например, число шагов, вектор пути.
- SAttributes. Атрибуты, подлежащие включению в сообщение запроса метки, и передаваемые узлу следующего шага FEC.
- StoredHopCount. Число шагов, если таковые имеются, записанные ранее для FEC.
Алгоритм:
LRq.1 | Исполняемая процедура Check_Received_Attributes (MsgSource, LabelRequest, RAttributes). Если детектирована петля, goto LRq.13. |
LRq.2 | Имеется следующий шаг для FEC? Если нет, goto LRq.5. |
LRq.3 | Является ли MsgSource следующим шагом? Если нет, goto LRq.6. |
LRq.4 | Исполняется процедура Send_Notification (MsgSource, Loop Detected). Goto LRq.13 |
LRq.5 | Исполняется процедура Send_Notification (MsgSource, No Route). Goto LRq.13. |
LRq.6 | LSR получил запрос метки для FEC от MsgSource? Если нет, goto LRq.8. (Смотри замечание 1.) |
LRq.7 | Является ли запрос метки задублированным? Если да, Goto LRq.13. (Смотри замечание 2.) |
LRq.8 | Записать запрос метки для FEC, полученный от MsgSource и пометить его, как ожидающий. |
LRq.9 | LSR выполняет процедуру рассылки метки: |
Для независимого управления в режиме Downstream Unsolicited ИЛИ
Для независимого управления в режиме Downstream On Demand
- Получил ли LSR и сохранил ли метку от узла следующего шага для FEC?.
Если да, установить переадресацию на IsPropagating.
Если нет, установить переадресацию на NotPropagating.
- Исполняемая процедура
Prepare_Label_Mapping_Attributes(MsgSource, FEC, RAttributes, SAttributes, Propagating, StoredHopCount).
- Исполнить процедуру Send_Label (MsgSource, FEC, SAttributes).
- Является ли LSR выходным для FEC? ИЛИ
Получил ли LSR и сохранил ли метку от узла следующего шага для FEC?
Если да, goto LRq.11. Если нет, goto LRq.10.
Для упорядоченного управления в режиме Downstream Unsolicited ИЛИ
для упорядоченного управления в режиме Downstream On Demand
- Является ли LSR выходным для FEC? ИЛИ
Получил ли LSR и сохранил ли метку от узла следующего шага для FEC? (Смотри замечание 3.) Если нет, goto LRq.10.
- Исполняемая процедура
Prepare_Label_Mapping_Attributes(MsgSource,FEC,RAttributes,SAttributes,IsPropagating,StoredHopCount)
- Исполнить процедуру Send_Label(MsgSource, FEC, SAttributes).
Goto LRq.11.
LRq.10 | LSR выполнить процедуру запроса метки: |
1. Goto LRq.13.
Для режима запрос по необходимости ИЛИ
для режима запрос на запрос
- Исполнить процедуру Prepare_Label_Request_Attributes (Next Hop, FEC,RAttributes, SAttributes);
- Исполнить процедуру Send_Label_Request (Next Hop, FEC, SAttributes).
Goto LRq.13.
LRq.11 | Послал ли LSR успешно метку для FEC в MsgSource? Если нет, goto LRq.13. (Смотри замечание 4.) |
LRq.12 | LSR выполнить процедуру Label Use. |
для применения, если петля не детектирована
1. Инсталлировать метку, посланную MsgSource и метку из узла следующего шага (если LSR не является выходным) для выполнения переадресации.
LRq.13 DONE
Замечания:
- В случае, когда MsgSource является LSR, неспособным объединять метки, он пошлет запрос метки каждому партнеру LDP выше по течению, с целью получения метки для заданного FEC. LSR должен быть способен отличать такие запросы от MsgSource без поддержки объединения от дублирующих запросов метки.
LSR использует сообщения, полученного запроса метки, чтобы детектировать дублирующие запросы. Это означает, что LSR (партнер выше по течению) не может повторно использовать ID сообщения, примененного в запросе метки, до завершения транзакции запроса метки.
- Когда LSR посылает партнеру запрос метки, он записывает, что этот запрос послан и помечает его как предстоящий. Пока запрос помечен предстоящим, LSR не должен посылать другой запрос метки тому же партнеру. Такой второй запрос был бы дублирующим. Процедура Send_Label_Request, описанная ниже подчиняется этому правилу.
Дублирующий запрос метки рассматривается как протокольная ошибка и должен отбрасываться LSR-получателем (возможно с соответствующим уведомлением пославшему MsgSource).
- Если LSR не поддерживает объединение меток, такая проверка потерпит неудачу.
- Процедура Send_Label может потерпеть неудачу из-за недостатка ресурсов для меток, в таком случае LSR не должен выполнять процедуру Label Use.