A.2.Prepare_Label_Request_Attributes
Краткое изложение:
Эта процедура используется всякий раз, когда нужно послать партнеру запрос метки, чтобы вычислить число шагов и вектор пути для включения в сообщение.
Параметры:
- Peer. LDP-партнер, которому должно быть послано сообщение.
- FEC. FEC, для которого нужно послать запрос метки.
- RAttributes. Атрибуты, которые этот LSR ассоциирует с LSP для FEC.
- SAttributes. Атрибуты, которые следует включить в сообщение запроса метки.
Дополнительный контекст:
- LSR Id. Уникальный Id данного LSR.
Алгоритм :
PRqA.1 | Нужно ли число шагов данному партнеру (Смотри замечание 1.)? ИЛИ Содержат ли RAttributes число шагов? ИЛИ Сконфигурировано ли на данном LSR детектирование петель? Если нет, goto PRqA.14. |
PRqA.2 | Является ли LSR входным для FEC? Если нет, goto PRqA.6. |
PRqA.3 | Включить число шагов 1 в SAttributes. |
PRqA.4 | Сконфигурировано ли на данном LSR детектирование петель? Если нет, goto PRqA.14. |
PRqA.5 | Способен ли LSR объединять метки? Если да, goto PRqA.14. Если нет, goto PRqA.13. |
PRqA.6 | Включают ли RAttributes в себя число шагов? Если нет, goto PRqA.8. |
PRqA.7 | Инкрементировать число шагов в RAttributes и копировать полученное значение в SAttributes. (Смотри замечание 2.) Goto PRqA.9. |
PRqA.8 | Включить число шагов = unknown 0) в SAttributes. |
PRqA.9 | Сконфигурировано ли на данном LSR детектирование петель? Если нет, goto PRqA.14. |
PRqA.10 | Имеют ли RAttributes вектор пути? Если да, goto PRqA.12. |
PRqA.11 | Способен ли LSR объединять метки? Если да, goto PRqA.14. Если нет, goto PRqA.13. |
PRqA.12 | Добавить Id LSR в начало вектора пути из RAttributes и скопировать результат в SAttributes. Goto PRqA.14. |
PRqA.13 | Включить вектор пути с длиной 1, содержащий Id LSR в SAttributes. |
PRqA.14 | DONE. |
Замечания:
- Канал с партнером может требовать, чтобы число шагов было включено в запрос метки; смотри, например [RFC3035] и [RFC3034].
- Для арифметики числа шагов, unknown + 1 = unknown.