A.1.Присвоение меток
Краткое изложение:
Отклик LSR на присылку FEC-метки от LDP-партнера может включать одну или более следующих операций:
- Передача партнеру LDP сообщения освобождения метки для FEC;
- Передача одному или более партнерам LDP сообщения присвоения метки для FEC,
- Инсталляция LSR вновь полученных меток для переадресации пакетов.
Контекст:
- LSR. LSR, обрабатывающий события.
- MsgSource. LDP-партнер, который посылает сообщение.
- FEC. Специфицированный в сообщении FEC.
- Метка. Специфицированная в сообщении метка.
- PrevAdvLabel. Метка для FEC, если имеется, ранее анонсированная вышестоящим партнером.
- StoredHopCount. Число шагов ранее записанное для FEC.
- RAttributes. Атрибуты, полученные с сообщением. Напр., число шагов, вектор пути.
- SAttributes должны быть включены в сообщение присвоения метки, если имеются, то пересылаются вышестоящим партнерам.
Алгоритм:
LMp.1 | Соответствует ли полученная метка запросу метки FEC, посланному ранее MsgSource. Если нет, goto LMp.3. |
LMp.2 | Стереть запись запроса метки FEC. |
LMp.3 | Выполнить процедуру Check_Received_Attributes (MsgSource, LabelMapping, RAttributes). Если не зарегистрировано петель, goto LMp.9. |
LMp.4 | Получил ли LSR от MsgSource метку для FEC? (Смотри замечание 1.) Если нет, goto LMp.8. (Смотри замечание 2.) |
LMp.5 | Соответствует ли требованиям метка, полученная ранее от MsgSource (т.e., метка полученная в сообщении)? (Смотри замечание 3) Если нет, goto LMp.8. (Смотри замечание 4.) |
LMp.6 | Стереть ассоциацию метки для FEC, полученную ранее от MsgSource. |
LMp.7 | Удалить метку из таблицы маршрутизации. (Смотри замечание 5.) Goto LMp.33. |
LMp.8 | Исполнить процедуру Send_Message (MsgSource, Label Release, FEC, Label, Loop Detected Status code). Goto LMp.33. |
LMp.9 | Получил ли LSR ранее ассоциацию метки и FEC от MsgSource для рассматриваемого LSP? (Смотри замечание 6.) Если нет, goto LMp.11. |
LMp.10 | Соответствует ли метка, полученная ранее от MsgSource, метке в сообщении? (Смотри замечание 3.) Если нет, goto LMp.32. (Смотри замечание 4.) |
LMp.11 | Определить следующий шаг для FEC. |
LMp.12 | Является ли MsgSource следующим шагом для FEC? Если да, goto LMp.14. |
LMp.13 | LSR выполнить процедуру освобождения метки: |
Для консервативного сохранения меток:
1. Goto LMp.32.
Для свободного сохранения меток:
1. Записать ассоциацию метки и FEC и RAttributes, полученные от MsgSource.
Goto LMp.33.
LMp.14 | Является ли LSR входным для FEC? Если нет, goto LMp.16. |
LMp.15 | Начать использование метки для переадресации пакетов. |
LMp.16 | Запись ассоциации метка-FEC и RAttributes были получены от MsgSource. |
LMp.17 | Продолжить итерацию через LMp.31 для каждого партнера. (Смотри замечание 7). |
LMp.18 | Послал ли ранее LSR ассоциацию метки и FEC партнерам LSP? (Смотри замечание 8.) Если да, goto LMp.22. |
LMp.19 | Используется ли LSR режим упорядоченного управления рассылкой меток Downstream Unsolicited? Если нет, goto LMp.28. |
LMp.20 | Исполнить процедуру Prepare_Label_Mapping_Attributes Peer,FEC,RAttributes,SAttributes, IsPropagating, StoredHopCount). |
LMp.21 | Исполнить процедуру Send_Message (Peer, Label Mapping, FEC, PrevAdvLabel, SAttributes). Goto LMp.28 |
LMp.22 | Продолжить итерацию через LMp.27 для каждой ассоциации метки и FEC, посланной ранее партнеру. |
LMp.23 | Являются ли RAttributes в полученной ассоциации метки взаимно согласующимися с ранее посланными партнеру? Если да, продолжить итерацию через LMp.22 для следующей метки. (Смотри замечание 9.) |
LMp.24 | Выполнить процедуру Prepare_Label_Mapping_Attributes(Peer, FEC, RAttributes, SAttributes, IsPropagating, StoredHopCount). |
LMp.25 | Исполнить процедуру Send_Message(Peer, Label Mapping, FEC, PrevAdvLabel, SAttributes). (Смотри замечание 10.) |
LMp.26 | Обновить запись ассоциации метки с FEC, посланную ранее партнеру, включить новые атрибуты. |
LMp.27 | Завершить итерацию через LMp.22. |
LMp.28 | Имеет ли LSR какие-либо запросы метки для FEC от партнера, помеченные как ожидающие? Если нет, goto LMp.30. |
LMp.29 | LSR выполнить процедуру рассылки метки: |
Для упорядоченного управления в режиме Downstream unsolicited
- Процедура исполнения
Prepare_Label_Mapping_Attributes(Peer, FEC, RAttributes, SAttributes, IsPropagating, UnknownHopCount).
- Выполнить процедуру Send_Label (Peer, FEC, SAttributes). Если процедура терпит неудачу, продолжить итерацию для следующего партнера с LMp.17.
- Если нет ожидающих запросов для партнера goto LMp.30. (Смотри замечание 11.)
Для независимого управления в режиме Downstream On Demand ИЛИ
Для упорядоченного управления в режиме Downstream On Demand
- Продолжить итерацию через шаг 5 для каждого ожидающего запроса метки для FEC.
- Исполнить процедуру Prepare_Label_Mapping_Attributes(Peer, FEC, RAttributes, SAttributes, IsPropagating, UnknownHopCount)
- Исполнить процедуру Send_Label (Peer, FEC, SAttributes). Если процедура потерпела неудачу, продолжить итерацию для следующего партнера с LMp.17.
- Стереть запись ожидающего запроса.
- Завершить итерацию с шага 1.
- Goto LMp.30.
LMp.30 | LSR выполняет процедуру Label Use: |
для использования, когда нет детектированных петель
- Продолжить итерацию через шаг 3 для каждой ассоциации метки и FEC, посланных ранее партнеру.
- Начать применение метки, полученной и посланной партеру, для переадресации пакетов.
- Завершить итерацию с шага 1.
- Goto LMp.31.
LMp.31 | Завершить итерацию через LMp.17. Goto LMp.33. |
LMp.32 | Исполнить процедуру Send_Message (MsgSource, Label Release, FEC, Label). |
LMp.33 | DONE. |
- Если LSR способен объединять метки, он должен получить как минимум одну ассоциацию метки и FEC для рассматриваемого LSP. В случае без объединения может быть получено много ассоциаций меток для FEC.
- Если LSR детектировал петлю и он ранее не получил от MsgSource ассоциацию метки и FEC, он просто освобождает метку.
- Соответствует ли метка, полученная в сообщении, какой-либо одной или более ассоциаций, идентифицированных на предыдущем шаге (LMp.4 или LMp.9)?
- Добровольная ассоциация с разными метками от одного и того же партнера будет пытаться установить коммутацию по меткам для нескольких путей, которая не поддерживается в данной версии LDP.
- Если метка не используется для целей коммутации, шаг LMp.7 не имеет значения.
- Если полученное сообщение присвоения метки, соответствует запросу шага LMp.1, тогда (по определению) LSR не получил ранее ассоциации метки и FEC. Если LSR объединяет полученные сверху метки для рассматриваемого LSP, тогда должна быть получена, по крайней мере, одна ассоциация. В случае без объединения, могут быть несколько ассоциаций меток для заданного FEC, по одной для каждого LSP.
- LMp.17 итерация включает MsgSource, для того чтобы обработать случай, когда LSR работает в режиме упорядоченного управления Downstream Unsolicited. Упорядоченное управление предотвращает анонсирование метки LSR для FEC, до тех пор пока не получит ассоциацию метки с FEC от узла следующего шага (MsgSource).
- Если LSR объединяет LSP, он может иметь ранее посланные ассоциации меток и FEC до одного или более партеров. Если LSR не может объединять метки, он может посылать ассоциации меток LSP по большей части до одного LSR.
- При этом тестировании рассматривается атрибут детектирования петель в векторе пути. Если полученный RAttributes включает в себя вектор пути, и ранее партнеру вектор пути не посылался, или если полученный вектор пути не согласуется с аналогичным вектором, посланным ранее партнеру, тогда атрибуты считаются несогласованными. Заметим, что от LSR не требуется запоминание полученного вектора пути, после того как он переслал вектор в сообщении ассоциации метки. Если LSR не запоминает вектор пути, у него нет способа проверить взаимную согласованность вновь полученного вектора пути. Это означает, что когда бы LSR ни получал сообщение, содержащее вектор пути, он должен всегда передавать его дальше.
- Шаги с LMp.22 по LMp.27 имеют дело с ситуацией, которая может иметь место, когда LSR использует независимое управление и получает метки со стороны нижерасположенного партнера, после этого он посылает эти сообщения вверх по течению. В этой ситуации LSR следует передавать любые изменения атрибутов, таких как число шагов, вверх. Если сконфигурировано детектирование петель, передаваемые атрибуты должны содержать вектор пути.
- LSR, работающий в режиме Downstream Unsolicited, должен обработать любое приходящее сообщение запроса метки. Если имеются отложенные запросы метки, переходим в режим Downstream on Demand, для того чтобы удовлетворить отложенные запросы.