Спецификация LDP, RSVPTE, GMPLS
Неизвестный или некорректный TLV
Некорректный TLV, содержащийся в LDP сообщении, которое является частью механизма LDP выявления, приводит к молчаливому отбрасыванию сообщения.
TLV, содержащееся в сообщении LDP, которое получено по TCP-соединению, имеет некорректный формат, если:
- длина TLV слишком велика, то есть указывает, что TLV простирается за пределы содержащего его сообщения. Это фатальная ошибка, сигнализируемая кодом статуса Bad TLV Length (неверная длина TLV);
- тип TLV не известен.
Если тип TLV < 0x8000 ( старший бит 0 ) — это ошибка, сигнализируемая кодом статуса Unknown TLV (неизвестный TLV).
Если тип TLV >= 0x8000 ( старший бит 1 ) — TLV молча игнорируется;
- значение TLV некорректно. Это случается, когда получатель обрабатывает TLV, но не может декодировать значение TLV. Это интерпретируется LSR как ошибка при отправке или получении.Это фатальная ошибка, сигнализируемая кодом статуса Malformed TLV Value (некорректное значение TLV).
Истечение времени таймера KeepAlive сессии
Это фатальная ошибка, сигнализируемая кодом статуса KeepAlive Timer Expired (таймер KeepAlive истек).
Одностороннее прерывание сессии
Это фатальная ошибка, сигнализируемая кодом статуса Shutdown. Сообщение уведомления может опционно включать в себя TLV расширенного статуса, чтобы объяснить причину Shutdown. LSR-отправитель завершает сессию немедленно после отправки уведомления.
События сообщения инициализации
Согласование инициализации сессии может потерпеть неудачу, если параметры сессии, полученные в сообщении инициализации, неприемлемы. Это фатальная ошибка. Специфический код статуса зависит от параметров, оказавшихся неприемлемыми.
События, вызванные другими сообщениями
Причиной событий, о которых необходимо сигнализировать партнерам посредством сообщений уведомления, могут быть и сообщения отличные от инициализации LDP.
Внутренние ошибки
Реализация LDP может быть способна детектировать проблемные ситуации, специфические для конкретного приложения. Когда такая ситуация мешает реализации нормальной работы с партнером, программа должна, когда возможно, использовать внутренний статусный код ошибки, чтобы уведомить о ней партнера. Это фатальная ошибка.
Сообщение Hello
Обмен сообщениями LDP Hello является частью механизма выявления LDP. Формат представления сообщений Hello отображен ниже на рис. 12.17:
ID сообщения
32-битовый код, используемый для идентификации этого сообщения.
Общие параметры TLV Hello
Специфицирует параметры, общие для всех сообщений Hello. Формат представления TLV для общих параметров Hello отображен ниже (рис. 12.18):
Время удержания (Hold Time).
Время удержания Hello в секундах. LSR сохраняет записи Hello, полученные от потенциальных партнеров. Время удержания Hello специфицирует время, в течение которого LSR-отправитель будет сохранять записи Hello от LSR-получателей, без получения других Hello.
Пара LSR согласует времена удержания, которые они используют для Hello, полученных от партера. Каждый предлагает свое время удержания. Используемое время удержание равно минимуму из предложенных значений в сообщениях Hello.
Значение 0 означает использование значения по умолчанию, которое равно 15 секундам для канальных Hello и 45 секунд для целевых Hello. Значение 0xffff означает бесконечность.
T, целевое Hello
Значение 1 указывает на то, что это целевое Hello. Значение 0 означает, что данное сообщение является канальным Hello.
R, Посылка целевых Hello по запросу
Значение 1 требует от получателя периодической посылки отправителю сообщений целевого Hello. Значение 0 не предполагает никаких действий.
LSR, инициализирующий расширенное выявление, устанавливает R=1. Если R=1, принимающий LSR проверяет, был ли он сконфигурирован на посылку целевых Hello в ответ на Hello отправителя. Если нет, то он игнорирует запрос. Если да, то он начинает периодически передавать целевые Hello отправителю такого Hello.
Зарезервировано
Это поле зарезервировано. Оно должно равняться нулю при передаче и игнорироваться при приеме.
Опционные параметры (рис. 12.17)
Это поле переменной длины содержит нуль или более параметров, каждый из которых закодирован в формате TLV. Опционные параметры, определенные данной версией протокола, перечислены ниже (таблица 12.3).
Транспортный адрес IPv4
Специфицирует адрес IPv4, который следует использовать LSR, при открытии сессии LDP через TCP-соединение. Если этот опционный TLV отсутствует, следует использовать адрес отправителя IPv4 из UDP-пакетов, несущих сообщение Hello.
опционный параметр | Тип | Длина | значение |
---|---|---|---|
Транспортный адрес IPv4 | 0x0401 | 4 | Смотри ниже |
Последовательный номер конфигурации | 0x0402 | 4 | Смотри ниже |
Транспортный адрес IPv6 | 0x0403 | 16 | Смотри ниже |
Последовательный номер конфигурации
Специфицирует 4-октетное число без знака, которое является последовательным номером конфигурации LSR-отправителя. Применяется принимающим LSR, чтобы определить изменения конфигурации LSR отправителя.
Транспортный адрес IPv6
Специфицирует адрес IPv6, который следует использовать LSR при открытии сессии LDP через TCP-соединение. Если этот опционный TLV отсутствует, следует задействовать адрес отправителя IPv6 из UDP-пакетов, несущих сообщение Hello.
Процедуры сообщения Hello
LSR, получающий Hello от другого LSR, поддерживает сопредельность Hello. LSR поддерживает таймер удержания, запуская его каждый раз, когда получает Hello, которое соответствует условию сопредельности. Если таймер удержания истечет, LSR аннулирует сопредельность Hello.
Мы рекомендуем, чтобы интервал между посылками Hello составлял не более одной трети от времени удержания Hello. LSR обрабатывает полученные LDP Hello следующим образом:
- LSR проверяет, приемлемо ли сообщение Hello. Критерии определения приемлемости Hello зависят от конкретной реализации;
- если Hello неприемлемо, LSR его игнорирует;
- если Hello приемлемо, LSR проверяет, имеет ли он сопредельность для отправителя Hello. Если да, то он перезапускает таймер удержания. Если нет, то он формирует сопредельность для Hello отправителя и перезапускает таймер;
- если Hello несет в себе какой-либо опционный TLV, LSR обрабатывает его;
- наконец, если LSR не имеет сессий LDP для пространства меток, специфицированного идентификатором LDP в заголовке PDU сообщения Hello, он следует процедурам из раздела "Установление сессии LDP".
Ниже представлены критерии приемлемости для сообщений канального и целевого Hello:
Канальное Hello приемлемо, если интерфейс, через который оно получено, сконфигурирован для коммутации по меткам. Целевое Hello, поступившее от отправителя с адресом A приемлемо, если:
- LSR был сконфигурирован для приема целевых Hello, или
- LSR был сконфигурирован посылать целевые Hello по адресу A.
Далее описано, как LSR обрабатывает опционные TLV Hello.
Транспортный адрес
LSR ассоциирует специфицированные транспортные адреса с сопредельностью Hello.
Порядковый номер конфигурации
Опционный параметр порядковый номер конфигурации используется LSR-отправителем, чтобы сигнализировать принимающему LSR об изменениях конфигурации. При его получении LSR, играющий активную роль в установлении LDP-сессии, детектирует изменение конфигурации LSR-отправителя, при обнаружении изменений он может сбросить установки сессии.
LSR-отправитель, использующий этот опционный параметр, ответственен за поддержание порядкового номера конфигурации, который он передает в сообщениях Hello. Когда бы ни произошло изменение конфигурации LSR-отправителя, он инкрементирует порядковый номер конфигурации.
Сообщение инициализации
Обмен сообщениями инициализации LDP является частью процедуры установления сессии LDP. Формат сообщения инициализации представлен ниже (рис. 12.19):
ID сообщения
32-битовый код, используемый для идентификации этого сообщения.
TLV общих параметров сессии
Специфицирует значения, предлагаемые LSR-отправителем для параметров, которые должны быть согласованы для каждой сессии LDP.
Кодирование TLV общих параметров сессии рассмотрено ниже (рис. 12.20):
Версия протокола
Двухоктетное целое число без знака, содержащее номер версии протокола.
Время KeepAlive
Двухоктетное, не равное нулю целое число без знака, определяющее число секунд, которое LSR-отправитель предлагает в качестве значения времени KeepAlive. LSR-получатель должен вычислить значение для таймера KeepAlive, используя меньшее из предложенных значений KeepAlive. Выбранное значение для времени KeepAlive указывает максимальное число секунд, которое может пройти между получением последовательных PDU от партнера LDP через TCP-соединение. Таймер KeepAlive сбрасывается при каждом приходе PDU.
A, порядок анонсирования меток
Индицирует тип анонсирования меток. A=0 означает анонсирование Downstream Unsolicited; значение = 1 означает Downstream On Demand.
Когда один LSR предлагает Downstream Unsolicited, а другой предлагает Downstream on Demand, правила разрешения конфликта таковы:
- если сессия сформирована для ATM или Frame Relay с коммутацией по меткам, то должен использоваться режим Downstream on Demand;
- в противном случае применяется режим Downstream Unsolicited.
Если порядок анонсирования, определенный таким способом, для LSR не приемлем, он в ответ на сообщение инициализации должен послать сообщение уведомления о том, что режим анонсирования сессии отвергнут; сессия при этом не устанавливается.
D, детектирование петель
Индицирует, активизировано ли детектирование петель в векторе пути. Значение 0 означает, что детектирование петель заблокировано; значение 1 означает, что детектирование петель активизировано.
PVLim, ограничение вектора пути
Конфигурируемая максимальная длина вектора пути. Должна равняться 0, если детектирование петель блокировано ( D=0 ). Если процедуры детектирования петель потребуют от LSR посылки вектора пути, длина которого превышает это ограничение, LSR будет себя вести, как если бы для заданного FEC была детектирована петля.
Когда детектирование петель в части сети активировано, рекомендуется, чтобы все LSR в этой части сети были сконфигурированы с одним и тем же ограничением на длину вектора пути. Хотя знание ограничения на длину вектора пути партнера не изменяет поведения LSR, это позволяет ему предупредить оператора о возможной ошибке в конфигурации.
Резерв
Это резервное поле. Оно должно содержать нуль при передаче и игнорироваться при приеме.
Макс. длина PDU
Двухоктетное целое без знака, которое предлагает максимально допустимую длину LDP PDU сессии. Значение 255 или меньше специфицирует максимальную длину по умолчанию — 4096 октетов.
LSR-приемник должен вычислить максимальную длину PDU для сессии, взяв минимальное из своего значения и предложения партнера. Значение по умолчанию для максимальной длины PDU, использованное до инициализации сессии, более не работает.
Если максимальная длина PDU, определенная таким путем, неприемлема для LSR, он должен послать в ответ на сообщение инициализации уведомление о конфликте со значением длины PDU (Session Rejected/Parameters Max PDU Length) и не устанавливать сессию.
Идентификатор LDP получателя
Идентифицирует пространство меток получателя. Этот идентификатор LDP, совместно с идентификатором отправителя в заголовке PDU, позволяет получателю согласовать сообщение инициализации с одной из его сопредельностей Hello.
Если приемлемых сопредельностей Hello нет, LSR должен послать в ответ на сообщение инициализации сообщение уведомления "Session Rejected/No Hello" и не устанавливать сессию.
Опционные параметры
Это поле переменной длины содержит нуль или более параметров, каждый из которых закодирован согласно формату TLV. Опционными параметрами являются (таблица 12.4).
опционный параметр | Тип | Длина | значение |
---|---|---|---|
Параметры сессии ATM | 0x0501 | переменная | Смотри ниже |
Параметры сессии Frame Relay | 0x0502 | переменная | Смотри ниже |
Параметры сессии ATM
Используется, когда сессия LDP управляет обменом меток в АТМ-канале, для задания специфических параметров ATM-сессии.
M, возможности объединения в ATM
Специфицирует объединение возможностей коммутаторов ATM. В данной спецификации поддерживаются следующие значения (таблица 12.5)
величина | назначение |
---|---|
0 | Объединение не поддерживается |
1 | Поддерживается объединение VP |
2 | Поддерживается объединение VC |
3 | Поддерживается объединение VP & VC |
Если объединяющие свойства LSR различны, то:
- не объединяющие и VC-объединяющие LSR могут легко работать совместно;
- совместная работа коммутаторов, допускающих объединение VP, с коммутаторами, не поддерживающими объединение VP, является объектом будущего изучения. Когда LSR отличаются по использованию объединения VP, сессия устанавливается, но объединение VP не используется;
- заметим, что если объединение VP используется, входной узел несет ответственность за уникальность выбора VCI в домене LSR (смотри [ATM-VP]).
N, число компонент диапазона меток
Определяет число компонент диапазона меток ATM, включенных в TLV.
D, использование VC по направлениям
Значение 0 специфицирует двунаправленную способность VC, то есть способность LSR (в пределах данного VPI) поддерживать использование этого VCI в качестве метки для обмена через канал в обоих направлениях независимо. Значение 1 определяет однонаправленную способность VC, — возможность использования заданного VCI для переадресации по меткам только для одного направления канала. Когда один из или оба партнера специфицируют однонаправленную способность, оба LSR применяют однонаправленную технику коммутации по меткам. LSR сравнивают свои идентификаторы LDP как целые числа без знака. LSR с большим идентификатором LDP может присваивать только нечетные значения VCI в диапазоне меток VPI/VCI. Система с меньшим идентификатором LDP может присваивать только четные значения VCI в диапазоне меток VPI/VCI.
Зарезервировано
Это резервное поле. Оно должно содержать нуль при передаче и игнорироваться при приеме.
Один или более компонентов диапазона меток ATM
Список компонентов диапазона меток ATM, которые в совокупности специфицируют диапазон меток, поддерживаемый LSR-отправителем.
LSR-приемник должен вычислить пересечение между приемным диапазоном и своим поддерживаемым диапазоном меток. Пересечение представляет собой диапазон, в котором LSR может присваивать и воспринимать метки. LSR не должны устанавливать сессии с соседом, для которого область пересечения диапазонов равна нулю. В этом случае LSR должен в ответ на сообщение инициализации послать сообщение уведомления "Session Rejected/Parameters Label Range" и не устанавливать сессию. Формат представления компонента диапазона меток для ATM отображен ниже (рис. 12.22):
Res
Это резервное поле. Оно должно содержать нуль при передаче и игнорироваться при приеме.
Минимум VPI (12 бит)
Это 12-битное поле специфицирует нижнюю границу блока идентификаторов виртуального пути, который поддерживается на исходном коммутаторе.
Если VPI меньше 12 бит, он должен быть выровнен по правому краю, освободившиеся левые биты заполняются нулями.Минимум VCI (16 бит)
Это 16-битное поле специфицирует нижнюю границу блока идентификаторов виртуального пути, который поддерживается исходным коммутатором. Если VCI меньше 16 бит, он должен быть выровнен по правому краю, освободившиеся левые биты заполняются нулями.
Максимум VPI(12 бит)
Это 12 битное поле специфицирует верхнюю границу блока идентификаторов виртуального пути, который поддерживается на исходном коммутаторе.
Максимум VCI (16 бит)
Это 16-битовое поле специфицирует верхнюю границу блока идентификаторов виртуального соединения, который поддерживается исходным коммутатором.
Когда партнеры LSR не соединены непосредственно ATM VP, LSR-отправитель должен установить минимум и максимум поля VPI равным 0, а LSR-получатель должен игнорировать минимум и максимум полей VPI.
Сообщение KeepAlive
LSR посылает сообщения KeepAlive в качестве части механизма, который мониторирует целостность транспортного соединения LDP сессии. Кодирование сообщения KeepAlive представлено ниже (рис. 12.23):
ID сообщения
32-битовое значение, используемое для идентификации этого сообщения.
Опционные параметры
Для сообщения KeepAlive не определено опционных параметров.
Процедуры сообщения KeepAlive
Механизм таймера KeepAlive, рассмотренный в разделе "Поддержка LDP сессий", сбрасывает таймер KeepAlive каждый раз, когда приходит LDP PDU через TCP-соединение сессии. Сообщение KeepAlive предназначено для сброса таймера KeepAlive в обстоятельствах, где LSR не имеет другой информации для обмена с LDP-партнером.
LSR должен позаботиться, чтобы партнер получал от него сообщение, по крайней мере, раз за период KeepAlive. Любое протокольное сообщение LDP годится. В обстоятельствах, когда никакие другие протокольные LDP сообщения не посылаются в течение этого периода, рекомендуется посылать сообщение KeepAlive.
Сообщение Address
LSR посылает сообщение Address партнеру LDP, чтобы анонсировать его адреса интерфейсов. Кодирование сообщения Address представлено ниже (рис. 12.24):
ID сообщения
32-битовый код идентифицирующий это сообщение.
TLV списка адресов
Список адресов интерфейсов, анонсированных LSR-отправителем.
Опционные параметры
Для сообщения адреса опционные параметры не предусмотрены.
Процедуры сообщений Address
LSR, который получает сообщение Address, использует эти адреса, чтобы поддерживать базу данных соответствия между идентификаторами партнеров LDP и адресами узлов следующего шага.
Когда инициализирована новая LDP сессия, перед тем как послать сообщение присвоения и запроса метки, LSR должен анонсировать адреса своих интерфейсов в одном или более сообщениях Address.
Всякий раз, когда LSR активизирует новый адрес интерфейса, он должен анонсировать новый адрес с помощью сообщения адреса.
Всякий раз, когда LSR деактивирует ранее анонсированный адрес, ему следует отозвать адрес с помощью сообщения отзыва адреса (Address Withdraw).
Если LSR не поддерживает семью адресов, специфицированную в TLV списка адресов, он должен послать уведомление "Unsupported Address Family", сигнализируя об ошибке, и прервать обработку сообщения.
Сообщение отзыва адреса (Address Withdraw)
LSR посылает партнеру LDP сообщение отзыва адреса, чтобы отозвать ранее анонсированные адреса интерфейсов. Формат сообщения отзыва адреса представлен ниже на рис. 12.25:
ID сообщения
32-битовый код, используемый для идентификации этого сообщения.
TLV списка адресов
Список адресов интерфейсов, подлежащих отзыву, для LSR-отправителя.
Опционные параметры
Для сообщения адреса опционные параметры пока не предусмотрены.