Label Distribution Protocol (LDP) — это протокол, предназначенный для автоматической генерации и обмена метками (labels) между маршрутизаторами в MPLS-сети. Каждый маршрутизатор самостоятельно создает метки для собственных сетей и распространяет эти значения меток своим соседям.
Содержание:
Введение
LDP является открытым стандартом, созданным на основе проприетарного протокола Cisco — TDP (Tag Distribution Protocol, протокол распределения меток). Ситуация аналогична другим примерам из истории сетевых технологий, таким как 802.1Q и ISL или PaGP и LACP: сначала компания Cisco разработала собственный протокол, а позже был утвержден открытый стандарт. В настоящее время большинство специалистов используют в своих сетях именно LDP вместо устаревшего TDP.
Как и многие другие сетевые протоколы, LDP сначала устанавливает соседские отношения (neighbor adjacency), прежде чем начать обмен метками. Однако процесс установления соседства в LDP имеет свои особенности.
Изначально маршрутизаторы рассылают Hello-пакеты с помощью многоадресной расслылки пакетов UDP (UDP multicast), чтобы обнаружить других потенциальных соседей. Если два маршрутизатора принимают решение о формировании соседских отношений, они устанавливают TCP-соединение, которое в дальнейшем используется для обмена информацией о метках. Обычно для этой цели применяется IP-адрес интерфейса Loopback. Ниже на рисунке показан пример:
Как видно в примере, два маршрутизатора отправляют Hello-пакеты на интерфейсы GigabitEthernet друг друга. Ниже показан пример перехвата пакета Hello Message:
Из перехвата пакета можно узнать следующую информацию:
- Оба маршрутизатора отправляют Hello-пакеты по адресу многоадресной рассылки 224.0.0.2 с использованием UDP-порта 646 (как источник, так и назначение). Внутри Hello-пакета содержится так называемый транспортный IP-адрес (transport address), который будет использован для установления TCP-соединения между маршрутизаторами.
- Кроме того, каждый маршрутизатор идентифицируется с помощью уникального LSR ID (Label Switch Router ID). По умолчанию в качестве LSR ID выбирается наивысший IP-адрес среди интерфейсов Loopback. Если интерфейсы Loopback отсутствуют, то используется наивысший IP-адрес среди физических интерфейсов.
Примечание: важно, чтобы транспортный IP-адрес, выбранный LDP, был доступен через используемый маршрутизирующий протокол (например, OSPF или IS-IS). В противном случае маршрутизаторы смогут получать Hello-пакеты друг друга, но не смогут установить соседские отношения, поскольку транспортные адреса окажутся недостижимыми.
Отличия LDP от других протоколов маршрутизации
Протокол LDP формирует соседство иным способом, чем такие протоколы, как OSPF или EIGRP. Например, при использовании OSPF маршрутизаторы устанавливают соседские отношения на всех интерфейсах, где активирован протокол:
В отличие от этого, LDP формирует только одно соседское отношение, независимо от количества физических интерфейсов между маршрутизаторами:
Такой подход напоминает поведение протокола BGP, особенно при использовании Loopback-интерфейсов в качестве источника соединения. В BGP необходимо вручную указывать интерфейс-источник командой update-source
, тогда как LDP автоматически выбирает IP-адрес источника, как правило, IP-адрес интерфейса Loopback.
Обмен информацией о метках
После установления LDP-соседства маршрутизаторы приступают к обмену информацией о метках. Чтобы понять, как именно это работает, необходимо кратко вспомнить структуру таблиц маршрутизации (RIB и FIB) в традиционной IP-сети:
- RIB (Routing Information Base) — база маршрутов (таблица маршрутизации), которая содержит информацию, полученную от протоколов маршрутизации (OSPF, EIGRP, BGP и др.).
- FIB (Forwarding Information Base) — таблица пересылки, которая создается на основе RIB и используется для реальной маршрутизации IP-пакетов.
Однако в MPLS-сетях, и особенно при использовании LDP, дополнительно используются собственные таблицы:
- LIB (Label Information Base) — база меток. В Cisco IOS маршрутизатор с LDP создает метку для каждой сети, найденной в RIB, за исключением BGP-сетей. Эти метки и составляют содержимое LIB.
- LFIB (Label Forwarding Information Base) — таблица пересылки MPLS-пакетов. Она строится на основе LIB и используется для принятия решений при пересылке маркированных MPLS-пакетов.
Таким образом:
- LIB по своему назначению похожа на RIB, но хранит метки для сетей.
- LFIB аналогична FIB, но используется для MPLS-пересылки.
Два маршрутизатора, сформировавшие LDP-соседство, обмениваются данными из своих LIB, чтобы сообщить друг другу, какие метки использовать для каких сетей. Это позволяет всем маршрутизаторам, которые участвуют в LDP, согласованно обрабатывать и пересылать MPLS-пакеты, используя назначенные метки:
Теперь, когда общее представление о LDP сформировано, можно перейти к практической части данной статьи и изучению таблиц, о которых шла речь выше.
Топология
Исследуемая топология состоит из трех маршрутизаторов (Cisco 1941 с образом Cisco IOS Version 15.9(3)M6) и одного коммутатора (Cisco 2960 с ПО Cisco IOS 15.0(2)SE6 LAN Base). Допускается использование других моделей и версий программного обеспечения Cisco IOS. В зависимости от модели и версии программного обеспечения Cisco IOS доступные команды и полученные результаты могут отличаться от показанных в этой статье.
Схема топологии следующая:
У каждого маршрутизатора имеется интерфейс Loopback, который будет использоваться для установления LDP-соседства. IP-адреса этих интерфейсов будут автоматически выбраны в качестве LSR ID и транспортных адресов.
Настройки маршрутизатора R1
Настройки маршрутизатора R2
Настройки маршрутизатора R3
Настройка протокола OSPF
Чтобы LDP мог сгенерировать метки, необходимо иметь информацию в RIB (таблице маршрутизации). Для этого настроим OSPF на всех маршрутизаторах в топологии, который будет анонсировать все интерфейсы этих маршрутизаторов:
Маршрутизатор R1:
Маршрутизатор R2:
Маршрутизатор R3:
На этом этапе маршрутизаторы смогут обменяться маршрутной информацией, и в таблицах RIB появятся все необходимые префиксы.
Активация протокола LDP
Существует два способа включения LDP в Cisco IOS:
- На уровне интерфейса с помощью команды
mpls ip
. - Глобально в процессе OSPF с помощью команды
mpls ldp autoconfig
.
Оба метода позволяют включить LDP, и в обоих случаях по умолчанию будет создана метка для каждого префикса. В данном примере используем настройку на уровне интерфейса:
Маршрутизатор R1:
Маршрутизатор R2:
Маршрутизатор R3:
Спустя несколько секунд после включения LDP на интерфейсах, на консоли маршрутизаторов появится сообщение об успешном формировании соседства:
На этом этапе настройка завершена. Теперь можно приступить к проверке работы LDP и анализу таблиц, таких как LIB и LFIB.
Проверка работы
Сообщения на консоли показывают, что соседство LDP сформировано, но всё же полезно самостоятельно провести несколько проверок.
Соседские отношения LDP
Для начала проверим, активирован ли LDP на интерфейсах:
Маршрутизатор R1:
Маршрутизатор R2:
Маршрутизатор R3:
Команда show mpls interfaces
— это быстрый способ определить, активирован ли LDP. Она показывает, какие интерфейсы поддерживают LDP и находятся ли они в рабочем состоянии.
Далее проверим наличие LDP-соседей на R2:
Из вывода команды можно узнать следующую информацию:
- R1 и R2 являются соседями LDP:
- R2 использует LSR ID 2.2.2.2, а R1 — 1.1.1.1.
- TCP-соединение установлено между 2.2.2.2 и 1.1.1.1.
- Hello-пакеты прошли через интерфейс GigabitEthernet0/0.
- R2 и R3 также являются соседями LDP:
- R2 использует LSR ID 2.2.2.2, а R3 — 3.3.3.3.
- TCP-соединение установлено между 2.2.2.2 и 3.3.3.3.
- Hello-пакеты прошли через интерфейс GigabitEthernet0/1.
Теперь, когда наличие соседей LDP подтвердилось, можно перейти к меткам.
Управление LDP
По умолчанию все маршрутизаторы назначают метки, начиная с 16. Это может немного сбивать с толку, особенно если несколько маршрутизаторов используют одинаковые метки. Чтобы упростить анализ таблиц, вручную зададим разные диапазоны меток:
Маршрутизатор R1:
Маршрутизатор R2:
Маршрутизатор R3:
После выполнения этих команд требуется перезагрузка маршрутизаторов — очистка соседства LDP недостаточна!
После перезагрузки всех маршрутизаторов в топологии, посмотрим таблицу маршрутизации R1:
Отлично, префиксы присутствуют в таблице маршрутизации. Теперь посмотрим на таблицу информации о метках (LIB) на R1:
Из вывода команды можно узнать следующую информацию о метках:
- Первая запись относится к префиксу 1.1.1.1/32, который соответствует Loopback-интерфейсу маршрутизатора R1. Метка для этой записи не присваивается, поскольку сеть подключена напрямую. Однако от маршрутизатора R2 поступила информация, что он использует метку 202 для этого префикса.
- Вторая запись — для 2.2.2.2/32. Маршрутизатор R1 выбрал метку 101 для этой записи. Также видно, что маршрутизатор R2 не использует метку для данного префикса, что логично, так как сеть подключена напрямую к нему.
- Третья запись для 3.3.3.3/32 имеет локальное значение метки 103. От маршрутизатора R2 поступила информация об использовании метки 203 для этой записи.
- Четвертая запись — 192.168.10.0/24. Метка не используется, так как сеть напрямую подключена. Аналогично, маршрутизатор R2 также не использует метку для этой сети по той же причине.
- Пятая запись касается сети 192.168.20.0/24. Для неё маршрутизатор R1 использует метку 101.
Теперь давайте посмотрим на таблицу LFIB, которая используется для пересылки пакетов MPLS:
LFIB значительно меньше по размеру. Следует учитывать, что она аналогична таблице CEF, которая используется при IP-маршрутизации. Записи для сетей 1.1.1.1/32 и 192.168.10.0/24 отсутствуют, поскольку для этих сетей не назначены метки.
При передаче пакета к 3.3.3.3/32 в заголовок MPLS добавляется метка со значением 203, после чего пакет пересылается на маршрутизатор R2.
Если маршрутизатор R1 получает пакет для 2.2.2.2/32 или 192.168.20.0/24, то перед пересылкой на R2 происходит удаление метки (Pop Label). Этот процесс называется предпоследнее удаление метки (penultimate hop popping). Его цель — сэкономить ресурсы маршрутизатора R2 за счет предварительного удаления MPLS-заголовка.
Далее посмотрим на таблицы RIB, LIB и LFIB маршрутизатора R2:
Таблица RIB:
Таблица LIB:
Таблица LFIB:
Также посмотрим на таблицы RIB, LIB и LFIB маршрутизатора R3:
Таблица RIB:
Таблица LIB:
Таблица LFIB:
Передача данных в LDP
Все вышеупомянутые таблицы позволяют проверить работоспособность уровня управления (control plane), но как насчёт уровня передачи данных (data plane)? Для этого можно воспользоваться простой командой traceroute
на маршрутизаторе R1, чтобы убедиться, что используется коммутация на основе меток:
При использовании traceroute
на устройствах MPLS отображаются метки, которые задействованы в процессе пересылки. Такой маршрут называется маршрутом с коммутацией по меткам (Label Switched Path, LSP).
Итоги
В этой статье был рассмотрен механизм работы LDP, в частности — как он использует многоадресную рассылку (multicast) для отправки Hello-пакетов с целью обнаружения других маршрутизаторов LDP. Также был проанализирован процесс установления соседских отношений (neighbor adjacency) с использованием TCP-соединения и транспортных адресов, указанных в Hello-пакете.
Были рассмотрены различные таблицы, применяемые при маршрутизации IP и MPLS-трафика. И наконец, продемонстрирована работа некоторых меток на практике.
Выводы
Спасибо за уделенное время на прочтение статьи. Теперь Вы настроить протокол LDP в MPLS на маршрутизаторах Cisco.
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.