Label Distribution Protocol
Label Distribution Protocol (LDP) — это протокол сигнализации в сетях с коммутацией по меткам (MPLS), предназначенный для распределения меток между маршрутизаторами (LSR, Label Switching Router) в одном домене MPLS. LDP позволяет автоматически устанавливать соответствие между метками и сетевыми префиксами (маршрутами) на основе информации из таблиц маршрутизации (обычно протоколов IGP, таких как OSPF или IS-IS), формируя таким образом пути с коммутацией по меткам (LSP, Label Switched Path) без явного указания каждого узла. Протокол определён в документах RFC 3036 и RFC 5036.
История и развитие
LDP был разработан в конце 1990-х годов как часть стека протоколов MPLS, предложенного Инженерным советом Интернета (IETF) для ускорения и упрощения передачи данных в магистральных сетях. Первоначально протокол был описан в RFC 3036 (январь 2001 года), который позже был заменён на RFC 5036 (октябрь 2007 года) с уточнениями и исправлениями. LDP стал одним из первых протоколов сигнализации MPLS, наряду с CR-LDP (Constraint-based Routing LDP) и RSVP-TE (Resource Reservation Protocol — Traffic Engineering). Однако CR-LDP не получил широкого распространения, и LDP остаётся основным протоколом для базовой установки LSP в сетях операторов связи.
В 2010-х годах, с ростом требований к масштабируемости и гибкости, появились расширения LDP, такие как mLDP (Multicast LDP) для поддержки многоадресной рассылки и LDP-IGP синхронизация для предотвращения потери трафика при сбоях. В современных сетях LDP часто используется совместно с протоколом BGP (Border Gateway Protocol) для построения MPLS L3VPN и VPLS.
Принцип работы
LDP работает на основе обмена сообщениями между LSR через UDP- и TCP-соединения (порт 646). Процесс установки LSP включает следующие этапы:
- Обнаружение соседей (Discovery): LSR отправляет Hello-сообщения по протоколу UDP на многоадресный адрес 224.0.0.2 (все маршрутизаторы в подсети) для обнаружения соседних LSR. После обнаружения устанавливается TCP-сессия (порт 646) между двумя LSR.
- Установление сессии (Session Establishment): После установки TCP-соединения LSR обмениваются Initialization-сообщениями, согласовывая параметры (например, версию протокола, таймеры удержания). Если параметры совпадают, сессия переходит в состояние «Operational».
- Распределение меток (Label Distribution): LSR использует базу данных LIB (Label Information Base) для хранения соответствий между метками и FEC (Forwarding Equivalence Class — класс эквивалентности пересылки, обычно соответствующий IP-префиксу). LSR отправляет сообщения Label Mapping соседям, объявляя, что он может пересылать трафик для определённого FEC с определённой меткой. Сообщения могут быть:
- Downstream Unsolicited (DU): LSR самостоятельно отправляет метки соседям, не дожидаясь запроса.
- Downstream on Demand (DoD): LSR отправляет метки только после запроса от вышестоящего маршрутизатора.
- Поддержание сессии (Session Maintenance): LSR периодически обменивается KeepAlive-сообщениями для проверки работоспособности сессии. Если сообщение не получено в течение таймера удержания, сессия закрывается, и все связанные метки удаляются.
- Освобождение меток (Label Withdrawal): При изменении топологии сети (например, отключении маршрута) LSR отправляет сообщение Label Withdraw для аннулирования метки, инициируя перестроение LSP.
Классификация и виды
LDP можно классифицировать по режиму распределения меток и способу установки LSP:
- По режиму распределения:
- DU (Downstream Unsolicited): LSR активно рассылает метки всем соседям для всех известных FEC. Используется по умолчанию в большинстве реализаций.
- DoD (Downstream on Demand): LSR запрашивает метку только при необходимости, что уменьшает объём служебного трафика, но увеличивает задержку установки LSP.
- По типу LSP:
- Базовый LDP: устанавливает LSP для всех префиксов IGP, создавая полносвязную топологию.
- mLDP (Multicast LDP): расширение для построения многоадресных LSP, используемое в Multicast VPN.
- По способу установки:
- Независимый (Independent): каждый LSR может объявлять метки без ожидания от вышестоящего маршрутизатора. Это ускоряет установку, но может привести к временным петлям.
- Упорядоченный (Ordered): метки распространяются от конечного (egress) LSR к начальному (ingress), что гарантирует отсутствие петель, но требует больше времени.
Устройство и протокольные аспекты
LDP использует несколько типов сообщений, передаваемых через TCP:
- Discovery (UDP): Hello-сообщения для обнаружения соседей.
- Session (TCP): Initialization, KeepAlive, Notification — для установления и поддержания сессии.
- Advertisement (TCP): Label Mapping, Label Request, Label Withdraw, Label Release — для управления метками.
Каждое сообщение содержит TLV (Type-Length-Value) поля, например:
- FEC TLV: определяет класс эквивалентности (обычно IP-префикс).
- Label TLV: содержит значение метки (20 бит в MPLS-заголовке).
- Hop Count TLV: ограничивает количество транзитных узлов для предотвращения петель.
LDP не зависит от протокола маршрутизации, но использует таблицу маршрутизации (RIB) для определения FEC. Для синхронизации с IGP (например, OSPF или IS-IS) используется механизм LDP-IGP Synchronization, который задерживает объявление маршрутов IGP до тех пор, пока LDP не установит все необходимые LSP, предотвращая потерю трафика.
Применение и значение
LDP широко применяется в сетях операторов связи и крупных корпоративных сетях для:
- Построения MPLS-магистралей: LDP автоматически создаёт LSP между всеми LSR, обеспечивая коммутацию по меткам без ручной настройки каждого пути.
- Поддержки MPLS L3VPN и VPLS: LDP распределяет метки для внутренних префиксов, а BGP — для внешних (VPNv4). Это позволяет строить виртуальные частные сети с изоляцией трафика.
- Транспортировки трафика в SD-WAN и 5G: LDP используется в опорных сетях (backbone) для обеспечения низкой задержки и высокой пропускной способности.
- Быстрого восстановления (Fast Reroute): LDP может работать совместно с RSVP-TE для создания резервных LSP.
Преимущества LDP:
- Простота настройки и автоматическое обнаружение соседей.
- Низкая вычислительная нагрузка по сравнению с RSVP-TE.
- Совместимость с большинством MPLS-реализаций (Cisco, Juniper, Huawei и др.).
Недостатки:
- Отсутствие поддержки трафика с гарантированной полосой пропускания (Traffic Engineering) — для этого требуется RSVP-TE.
- Возможность временных петель при независимом режиме распределения.
- Зависимость от стабильности IGP: при частых изменениях топологии LDP может генерировать избыточный служебный трафик.
Интересные факты
- LDP поддерживает механизм LDP Tunneling для вложенных LSP, когда один LSP проходит через другой (например, в иерархических MPLS-сетях).
- Протокол может работать в режиме Targeted LDP (tLDP), когда Hello-сообщения отправляются не на многоадресный, а на конкретный IP-адрес, что позволяет устанавливать LSP между LSR, не являющимися прямыми соседями.
- В некоторых реализациях (например, Cisco IOS) LDP может использовать Label Retention Mode:
- Liberal: LSR сохраняет все полученные метки, даже если они не используются, что ускоряет переключение при сбоях.
- Conservative: LSR хранит только метки, используемые в данный момент, экономя память.
- LDP был разработан как альтернатива более сложному протоколу CR-LDP, который не получил широкого распространения из-за отсутствия поддержки Traffic Engineering.
Источники
- RFC 3036 — LDP Specification (январь 2001, заменён RFC 5036).
- RFC 5036 — LDP Specification (октябрь 2007).
- RFC 5561 — LDP Capabilities.
- RFC 6388 — Label Distribution Protocol Extensions for Point-to-Multipoint and Multipoint-to-Multipoint Label Switched Paths (mLDP).
- Документация Cisco: «MPLS Label Distribution Protocol».
- Документация Juniper Networks: «Understanding LDP».
- Статья «MPLS and Label Distribution Protocol» в журнале «IEEE Communications Magazine» (2002).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →