Протокол LDP (Label Distribution Protocol) встречается в конфигурации почти любой сети провайдера, где используется MPLS: без него маршрутизаторы не смогут обменяться метками, и трафик между узлами пойдёт по обычной IP-маршрутизации или не пойдёт вовсе. Если на стыке двух LSR-соседей сессия LDP не поднимается, типичный симптом — VPN-сервисы поверх MPLS перестают работать, хотя IGP-соседство и связность по IP при этом в порядке.

Разберёмся, что именно делает этот протокол, какие сообщения он использует, как проверить его состояние на оборудовании и где чаще всего кроются причины проблем. Материал ориентирован на тех, кто впервые сталкивается с MPLS-сетями или диагностирует отказ LDP на маршрутизаторах Cisco, Juniper, Huawei или MikroTik.

Назначение LDP в архитектуре MPLS

MPLS (Multiprotocol Label Switching) пересылает пакеты не по IP-адресу назначения, а по короткой метке, которую маршрутизаторы навешивают на пакет. Но чтобы коммутация по меткам работала, каждый узел сети должен знать, какая метка соответствует какому префиксу. Именно эту задачу решает LDP — он распределяет привязки «метка ↔ префикс» между соседними маршрутизаторами.

Протокол описан в RFC 5036 и работает поверх двух транспортов: обнаружение соседей идёт через UDP (multicast-hello), а сама сессия устанавливается по TCP между адресами соседей. После установления сессии маршрутизаторы начинают обмениваться сообщениями о метках для всех префиксов, известных из таблицы маршрутизации.

Важно понимать границу ответственности: LDP не строит маршруты сам. Он опирается на таблицу, которую сформировал IGP-протокол (OSPF или IS-IS). Поэтому метки распределяются строго вдоль путей, выбранных внутренним протоколом маршрутизации, — это называется «hop-by-hop» распределение.

💡

LDP не маршрутизирует трафик, а лишь распределяет метки по путям, которые уже выбрал IGP (OSPF или IS-IS). Без работающего IGP сессии LDP бесполезны.

Как устанавливается сессия LDP

Процесс состоит из двух этапов: обнаружение соседей и установление сессии. На первом этапе маршрутизатор рассылает Hello-сообщения на multicast-адрес из включённых интерфейсов. Получив ответное Hello, узлы узнают друг о друге и переходят ко второму этапу — установлению TCP-сессии между своими LSR ID (обычно это адрес loopback-интерфейса).

После установления сессии соседи обмениваются сообщениями инициализации, согласуя параметры: версию протокола, таймеры keepalive, диапазон меток. Дальше начинается собственно обмен привязками меток.

  • 🔍 Discovery — периодические UDP Hello для поиска соседей на линке.
  • 🤝 Session establishment — TCP-сессия между LSR ID соседей.
  • 🏷️ Label advertisement — рассылка привязок меток к префиксам.
  • ⏱️ Keepalive — поддержание сессии, разрыв при истечении таймера.

Если TCP-сессия не устанавливается, хотя Hello проходят, в первую очередь проверьте доступность loopback-адресов друг друга по IGP — это самая частая причина «полурабочего» состояния, когда соседи видятся, а сессии нет.

Режимы распределения и удержания меток

LDP поддерживает несколько режимов работы, и их понимание помогает читать чужие конфигурации и предсказывать поведение сети.

  • 📤 Downstream Unsolicited (DU) — маршрутизатор сам рассылает метки соседям, не дожидаясь запроса. Стандартный режим на большинстве платформ.
  • 📥 Downstream on Demand (DoD) — метка выдаётся только по запросу. Встречается редко, в основном на старых ATM-коммутаторах.
  • 🗂️ Liberal / Conservative retention — хранить ли метки от соседей, которые не являются next-hop. Liberal-режим ускоряет сходимость при смене маршрута.

На практике почти везде используется связка DU + Liberal + Independent control. Если на двух соседях режимы совместимы, сессия поднимется без дополнительной настройки — несовпадение режимов анонсирования обычно не блокирует сессию, но может менять поведение при перестроении путей.

📊 Где вы чаще всего встречаете LDP?
В сети провайдера (MPLS backbone)
В корпоративной сети
В лабораторных стендах при обучении
Только читал теорию, вживую не настраивал

Базовая настройка и проверка

Точный синтаксис зависит от вендора и версии ОС, поэтому сверяйтесь с документацией на вашу модель. Общая логика везде одинаковая: включить MPLS/LDP глобально, задать router-id (loopback), активировать LDP на транзитных интерфейсах.

Пример для Cisco IOS (минимальная конфигурация):

mpls ip

mpls ldp router-id Loopback0

!

interface GigabitEthernet0/0

mpls ip

После настройки обязательно проверьте состояние соседства и привязок. На Cisco это делается командами show mpls ldp neighbor и show mpls ldp bindings, на Juniper — show ldp session и show ldp database. Отсутствие соседа в выводе при корректной конфигурации — повод проверять фильтры и маршрутизацию loopback-адресов.

☑️ Диагностика LDP-сессии

Выполнено: 0 / 5

⚠️ Внимание: LDP использует порты UDP 646 (hello) и TCP 646 (сессия). Если между соседями есть ACL или файрвол, блокирующий эти порты, сессия не поднимется, причём Hello могут проходить, а TCP — нет. Проверяйте фильтры в обе стороны.

Типичные проблемы и их диагностика

Самая частая жалоба звучит так: «IGP работает, LDP — нет». Разложим возможные причины по вероятности. Первая — недоступность адресов, на которых строится TCP-сессия: loopback не анонсируется в IGP или попал под summarization. Вторая — фильтрация портов 646 на промежуточных устройствах или на самом маршрутизаторе. Третья — несовпадение паролей, если включена MD5-аутентификация сессии.

Отдельный класс проблем — рассинхронизация LDP и IGP. Когда линк восстанавливается, IGP может сойтись раньше, чем LDP обменяется метками, и трафик начнёт дропаться, потому что меток ещё нет. Для этого существует механизм LDP-IGP synchronization, который заставляет IGP ждать готовности LDP, прежде чем объявлять линк рабочим.

СимптомВероятная причинаЧто проверить
Сосед виден, сессии нетНедоступен LSR ID соседаМаршрут до loopback в IGP
Сессия постоянно падаетОшибка MD5-пароля или таймеровЛоги, настройки аутентификации
Сессия есть, меток нетФильтрация анонсов (label filtering)Настройки advertisement ACL
Трафик дропается после аварииРассинхронизация LDP и IGPВключён ли LDP-IGP sync
Сосед не обнаруживаетсяLDP не включён на интерфейсеКонфигурация интерфейса с двух сторон
💡

При первичной диагностике всегда начинайте с простого: ping до loopback-адреса соседа с source loopback. Если пинг не проходит — проблема в IGP или фильтрах, а не в самом LDP.

LDP и альтернативы: RSVP-TE, BGP-LU, SR

LDP — не единственный способ распределения меток. Для инженерии трафика (TE) применяется RSVP-TE, который строит туннели с резервированием и явными путями. Метки для междоменных сценариев может раздавать BGP-LU (labeled unicast). А относительно новый подход — Segment Routing, где метки распространяются самим IGP и отдельный протокол сигнализации вообще не нужен.

Это не значит, что LDP устарел: он остаётся основой огромного числа действующих сетей благодаря простоте. Но при проектировании новой сети стоит оценить, не проще ли сразу использовать SR-MPLS — он убирает целый класс проблем с рассинхронизацией протоколов.

Почему LDP называют «unsolicited downstream»

Термин означает, что маршрутизатор, находящийся «ниже по потоку» (ближе к получателю префикса), сам инициирует рассылку метки «вверх» — всем соседям, не дожидаясь запросов. Входящий маршрутизатор затем выбирает метку от того соседа, который является next-hop по таблице IGP.

Безопасность LDP

Базовый LDP не шифрует и не подписывает сообщения. Любой узел, получивший доступ к транзитному сегменту, теоретически может попытаться установить фальшивую сессию и подменить привязки меток, перенаправив трафик. Поэтому в реальных сетях применяют несколько защитных мер.

Во-первых, MD5-аутентификация TCP-сессий (TCP-AO или классический TCP MD5) между известными соседями. Во-вторых, фильтрация: принимать Hello и сессии только с ожидаемых адресов. В-третьих, на границах сети LDP вообще не должен быть включён на клиентских интерфейсах — это базовая гигиена конфигурации.

⚠️ Внимание: не включайте LDP на интерфейсах, выходящих за пределы вашего домена доверия (клиентские порты, пиринговые стыки). Посторонний сосед сможет повлиять на таблицу меток и перехватить или нарушить трафик.

💡

Минимальный набор защиты LDP: MD5-аутентификация сессий, ACL на порты 646 и отключение протокола на всех нетранзитных интерфейсах.

FAQ: частые вопросы про LDP

Чем LDP отличается от MPLS?

MPLS — это общая технология коммутации по меткам, а LDP — лишь один из протоколов, которые эти метки распределяют. MPLS может работать и с RSVP-TE, и с BGP-LU, и с Segment Routing без LDP.

Работает ли LDP без OSPF или IS-IS?

Технически сессия может подняться и при статических маршрутах, но так делать не принято: LDP следует за таблицей маршрутизации, и без динамического IGP сеть теряет отказоустойчивость и предсказуемость.

Какие порты использует LDP?

Обнаружение соседей — UDP-порт 646 на multicast-адрес, сама сессия — TCP-порт 646 между LSR ID соседей. Оба должны быть открыты на пути между узлами.

Что такое LSR ID и зачем он нужен?

Это идентификатор маршрутизатора в LDP, обычно адрес loopback-интерфейса. На него устанавливается TCP-сессия, поэтому адрес должен быть уникальным, стабильным и доступным через IGP.

Почему сессия LDP не поднимается, хотя сосед обнаружен?

Чаще всего недоступен loopback-адрес соседа (проверьте IGP), заблокирован TCP 646 фильтром или не совпадают пароли MD5-аутентификации. Начните диагностику с ping до LSR ID соседа.