RSVP-TE
Протокол RSVP-TE (Resource Reservation Protocol – Traffic Engineering) работает в режиме распределения меток по запросу от нижележащего узла (downstream-on-demand). Запрос на выделение метки для LSP (Label Switch Path) передаётся в сообщении Path, которое отправляется из входящего (ingress) маршрутизатора (iLER). Сами метки распределяются, начиная с конечной точки (egress маршрутизатора, eLER), с использованием сообщений Resv. Сообщение Resv передаётся последовательно (hop-by-hop) от egress-узла к ingress-узлу. Важно отметить, что сообщение Path может как содержать явно заданный маршрут (explicit route) и запрос на резервирование определенной полосы пропускания, так и не содержать их.
Следует подчеркнуть, что RSVP-TE не является протоколом маршрутизации. Его задача — запрашивать ресурсы сети и метку для однонаправленного потока данных; то есть, он резервирует ресурсы только в одном направлении. Для организации двунаправленного потока требуется создание двух LSP — по одному для передачи трафика в каждом направлении. В описании протокола термины «нижележащий» (downstream) и «вышестоящий» (upstream) обозначают направление потока данных в рамках LSP.
Логический туннель RSVP-TE, представляющий собой сквозное соединение между двумя точками, идентифицируется уникальным Tunnel ID. Однако этот туннель может быть реализован не одним, а несколькими физическими LSP. Каждый из этих путей имеет свой собственный уникальный идентификатор LSP ID, но при этом все они относятся к одному и тому же туннелю, то есть имеют общий Tunnel ID. Такая архитектура обеспечивает повышенную надёжность и гибкость. Например, один LSP может быть основным, а второй — резервным для обеспечения мгновенного восстановления связи в случае сбоя. Новый LSP с уникальным LSP ID автоматически создаётся при каждой перенастройке туннеля или при запуске механизма резервирования, что позволяет туннелю адаптироваться к изменениям в сети, сохраняя при этом своё логическое тождество.
Сообщениe Path
При установлении LSP RSVP-TE в сообщении Path указываются требования к узлам на пути. Сообщение Path состоит из нескольких объектов:
- SESSION — однозначно идентифицирует туннель RSVP-TE. Все LSP, принадлежащие одному туннелю, имеют один и тот же объект SESSION. Он содержит IP-адрес назначения туннеля, идентификатор туннеля и расширенный идентификатор туннеля (системный IP-адрес начальной точки туннеля).
- HOP — cодержит IP-адрес выходного интерфейса, используемого для отправки сообщения Path на следующий по пути (Next Hop) маршрутизатор.
- TIME_VALUES — ожидаемый интервал обновления сессии RSVP-TE.
- EXPLICIT ROUTE (ERO) — является необязательным и содержит список заданных строго (strict) или нестрого (loose) узлов перехода, которым должен следовать LSP.
- LABEL REQUEST — запрашивает метку для LSP.
- SENDER_TEMPLATE — объекты SESSION и SENDER_TEMPLATE однозначно идентифицируют отдельный LSP. SENDER_TEMPLATE содержит IP-адрес системы-отправителя и идентификатор LSP. Каждый LSP в туннеле RSVP-TE имеет уникальный идентификатор LSP.
- SENDER_TSPEC — содержит параметры управления трафиком для LSP, такие как требуемая полоса пропускания или параметры быстрой перемаршрутизации.
- RECORD ROUTE (RRO) — является необязательным и содержит список переходов, пройденных сообщением Path.
Исходный IP-адрес сообщения Path — это системный адрес головного маршрутизатора. Адрес назначения — системный адрес конечного маршрутизатора. Однако в IP-заголовке используется опция Router Alert. Это указывает маршрутизатору следующего перехода, что он должен обработать сообщение, даже если он не является конечным пунктом назначения.
RSVP-TE может указать LSP следовать пути выбранному протоколом IGP (аналогично работе LDP), или может наложить некоторые ограничения на маршрут. Эти ограничения перечислены в ERO (объект EXPLICIT_ROUTE) как строгие (strict) или нестрогие (loose) переходы. Если ограничений нет, в сообщении Path отсутствует ERO, и сообщение следует на следующий узел по пути, проложенному IGP в сторону конечного узла.
По ходу следования сообщения Path на каждом маршрутизаторе на пути LSP создаётся объект PSB (Path State Block). PSB содержит критически важную информацию о прямом направлении туннеля, получаемую из сообщений Path. Каждое новое сообщение Path обновляет информацию в PSB. При обработке сообщений Resv, PSB позволяет однозначно определить, какому LSP принадлежит данное сообщение и какому вышестоящему соседу его переслать.
Сообщение Resv
Сообщение Resv используется для присвоения меток и подтверждения резервирования ресурсов на узлах вдоль LSP. Сообщение Resv состоит из следующих объектов:
- SESSION — однозначно идентифицирующий туннель RSVP-TE, как и в сообщении Path. Он содержит IP-адрес назначения туннеля, идентификатор туннеля и расширенный идентификатор туннеля (системный адрес начальной точки туннеля).
- HOP — содержит IP-адрес выходного интерфейса, через который сообщение Resv отправляется на следующий вышестоящий маршрутизатор.
- TIME_VALUE — ожидаемый интервал обновления сессии RSVP-TE.
- STYLE — определяет стиль резервирования ресурсов: разделяемое Shared Explicit (SE) или фиксированное Fixed Filter (FF).
- FLOW_SPEC — соответствует SENDER_TSPEC из сообщения Path. Содержит параметры управления трафиком, такие как зарезервированная для LSP полоса пропускания.
- FILTER_SPEC — соответствует SENDER_TEMPLATE сообщения Path. Содержит IP-адрес системы отправителя и идентификатор LSP.
- LABEL — метка LSP, передаваемая этим маршрутизатором маршрутизатору следующего перехода.
- RECORD ROUTE (RRO) — является необязательным и содержит список переходов, пройденных сообщением Path. В сообщении Resv поле RRO также содержит метку, назначенную каждому узлу.
Когда конечный узел получает сообщение Path, он создаёт PSB, но ему не нужно выделять ресурсы полосы пропускания, поскольку он является выходом для туннеля. Он выделяет метку и создаёт сообщение Resv для передачи в восходящем направлении.
В отличие от сообщения Path, которое адресовано конечному маршрутизатору, сообщение Resv адресовано следующему маршрутизатору в восходящем направлении. Адрес следующего маршрутизатора берётся из PSB. Он не поступает из RRO (помните, что это необязательное поле в сообщениях Resv и Path). В качестве значения адреса в объекте HOP и исходящего адреса сообщения Resv устанавливается IP-адрес выходного интерфейса.
При генерации сообщения конечный маршрутизатор также создаёт Resv State Block (RSB). RSB хранит сообщение Resv и метку, выделенную для LSP. Сообщение Resv отправляется следующему вышестоящему узлу в том виде, в котором оно хранится в PSB. Сообщение Resv отправляется следующему вышестоящему маршрутизатору с использованием IP-адреса из объекта HOP в PSB.
Получение сообщения Resv вышестоящим маршрутизатором инициируется выделение ресурсов и метки. Для управления резервированием создаётся RSB, а для следующего маршрутизатора — сообщение Resv. Сообщение Resv отправляется на вышестоящий маршрутизатор, используя адрес из объекта HOP, хранящегося в PSB.
Процесс создания RSB и назначения меток продолжается в восходящем направлении до достижения головного маршрутизатора. После чего LSP создан и готов к работе.
Туннели RSVP-TE и LSP
С туннелем RSVP-TE может быть связано несколько LSP. Вторичный (запасной) путь использует отдельный путь LSP, но принадлежит одному и тому же туннелю RSVP-TE. Если в туннеле RSVP-TE несколько LSP, каждый LSP фактически является отдельным LSP и управляется отдельно.
Идентификатор туннеля RSVP-TE содержится в объекте SESSION. Путь LSP определяется идентификатором LSP. В сообщении Path идентификатор LSP содержится в объекте SENDER_TEMPLATE. В сообщении Resv идентификатор LSP содержится в объекте FILTER_SPEC.
Сообщения PathTear и ResvTear
Сообщения PathTear и ResvTear используются для явного сброса параметров резервирования LSP. Сообщение PathTear передаётся вниз по цепочке и маршрутизируется по тому же пути, что и соответствующее сообщение Path. То есть, PathTear адресовано конечному маршрутизатору, и в нём установлена опция Router Alert, что позволяет обрабатывать его на каждом узле. Адрес источника — это адрес головного маршрутизатора, даже если сообщение отправлено промежуточным узлом. ResvTear передаётся вверх по цепочке и маршрутизируется по тому же пути, что и соответствующее сообщение Resv.
Сообщения PathTear или ResvTear также инициируются истечением таймера состояния пути или резервирования на любом маршрутизаторе. Возьмём цепочку маршрутизаторов, объединённых RSVP-TE туннелем: R1—R2—R3—R4. Если между R2 и R3 произойдёт потеря соединения, это приведёт к тому, что R2 не получит сообщения Resv от R3. Состояние Resv истекает по таймеру, и R2 отправляет сообщение ResvTear в восходящем направлении. Аналогично, состояние Path истекает по таймеру на R3, и R3 отправляет сообщение PathTear в нисходящем направлении для сброса состояния LSP. Если сообщения PathTear или ResvTear не будут успешно доставлены другим узлам, состояние LSP в конечном итоге истечёт по таймерам на других узлах.
RSVP-TE может использовать приветственные сообщения для поддержания смежности. Когда маршрутизатор R2 обнаруживает, что смежность MPLS с маршрутизатором R3 нарушена, он отправляет сообщение ResvTear маршрутизатору R1. После получения сообщения ResvTear маршрутизатором R1 LSP операционно выключен.
При выключении туннеля RSVP-TE в результате получения сообщения PathTear или ResvTear соответствующие параметры резервирования на маршрутизаторах также корректируются в соответствии с действительностью. То, как именно будут скорректированы параметры резервирования, зависит от используемого стиля резервирования.
Сообщения об ошибках
Сообщения PathErr и ResvErr сообщают об ошибках RSVP-TE. Эти сообщения содержат объект ERROR, содержащий код ошибки и значение ошибки, указывающие на причину ошибки, а также на узел, где она произошла. Сообщения PathErr передаются вверх по пути к головному узлу и адресуются по каждому узлу. Сообщения ResvErr также адресуются по каждому узлу и передаются вниз по пути к конечному узлу. Важно отметить, что сообщения PathErr и ResvErr не изменяют состояние LSP ни на одном из узлов; они только сообщают о состоянии ошибки.
Если у промежуточного маршрутизатора нет маршрута к следующему узлу, передача сообщения Path не может быть завершена. PathErr отправляется в восходящем направлении к головному узлу от узла, который не может переслать сообщение Path. Головной маршрутизатор устанавливает LSP в состояние операционного сбоя и отправляет сообщение PathTear вниз по LSP, чтобы освободить связанное состояние LSP и, таким образом, освободить все зарезервированные ресурсы на вдоль пути LSP.
