Linux. Поддержка LLDP
2026-09-18
·
3 мин. для прочтения
Linux. Поддержка LLDP.
Содержание
1 Общая информация
- LLDP (Link Layer Discovery Protocol).
2 Поддержка LLDP
2.1 Демоны
- Основная логика работы с LLDP реализована в пользовательских демонах.
- Наиболее распространены два:
lldpd- Универсальный демон, реализующий стандарт IEEE 802.1AB.
- Умеет отправлять и принимать LLDP-пакеты, а также поддерживает совместимость с проприетарными протоколами (CDP от Cisco, EDP от Extreme, SONMP от Nortel).
- Управление осуществляется через утилиту
lldpcli.
lldpad- Демон, изначально созданный Intel для поддержки Data Center Bridging (DCB).
- Он также реализует LLDP и DCBX (расширение для обмена параметрами DCB).
- Управляется с помощью утилиты
lldptool.
2.2 Поддержка в ядре Linux
- Для работы некоторых функций, особенно связанных с DCB и аппаратной обработкой LLDP на высокоскоростных сетевых картах, требуется поддержка в ядре.
- Параметр:
CONFIG_DCB. - Если он не включен, некоторые сетевые карты (например, Intel) могут блокировать работу LLDP-агента на уровне прошивки.
2.3 Интеграция с NetworkManager
- NetworkManager с версии 1.47.91 включает собственную библиотеку для приема LLDP-пакетов, основанную на коде из systemd.
- nmstate начиная с версии 0.3.2 предоставляет возможность включать и настраивать LLDP через бэкенд NetworkManager.
2.4 Утилиты
ethtoolдля некоторых сетевых карт (например, Intel) позволяет управлять настройками FW-LLDP (Firmware LLDP).
3 Использование lldpd
lldpdявляется наиболее популярным решением.
3.1 Установка
3.1.1 Debian/Ubuntu
sudo apt install lldpd
3.1.2 RHEL
sudo dnf -y install lldpd
3.1.3 Gentoo
emerge net-misc/lldpd
3.2 Конфигурация
3.2.1 Ключи
-x: Включает SNMP-субагент.-c: Включает совместимость с Cisco Discovery Protocol (CDP).-s: Включает совместимость с Nortel (SONMP).-e: Включает совместимость с Extreme (EDP).
3.2.2 Debian/Ubuntu
- Файл
/etc/default/lldpd:DAEMON_ARGS="-x -c -s -e"
3.2.3 RHEL
Файл
/etc/sysconfig/lldpd:LLDPD_OPTIONS="-x -c -s -e"Каталог
/etc/default/lldpd.d.
3.2.4 Gentoo
Файл
/etc/conf.d/lldpd:LLDPD_OPTS="-c"Юнит systemd не поддерживает конфигурацию из
/etc/conf.d/lldpdдля OpenRC.Используем механизм drop-in для systemd.
Создайте drop-in файл:
sudo systemctl edit lldpd
- В открывшемся редакторе добавьте:
[Service]
EnvironmentFile=-/etc/conf.d/lldpd
ExecStart=
ExecStart=/usr/sbin/lldpd $LLDPD_OPTS
- Пустая строка
ExecStart=необходима, чтобы сбросить исходную команду запуска. - Без неё systemd добавит вторую команду, что приведёт к ошибке.
3.2.5 Каталог /etc/default/lldpd.d.
3.3 Запуск службы
sudo systemctl enable --now lldpd
- Проверить статус можно командой
sudo systemctl status lldpd.
3.4 Просмотр информации о соседях
Для управления демоном и просмотра информации используется утилита
lldpcli.Просмотр всех соседей:
sudo lldpcli show neighborsДетальная информация о соседях:
sudo lldpcli show neighbors detailsИнформация о локальных интерфейсах:
sudo lldpcli show interfacesПросмотр информации о локальном устройстве:
sudo lldpcli show chassis
4 Использование NetworkManager
4.1 Включение LLDP через nmcli
Необходимо установить свойство
connection.lldpдля нужного сетевого соединения.Имя соединения:
nmcli connection showВключите LLDP для соединения:
sudo nmcli connection modify <имя_соединения> connection.lldp enableПерезапустите соединение:
sudo nmcli connection up <имя_соединения>
4.2 Просмотр информации о соседях
- Показать всех соседей LLDP для всех интерфейсов:
nmcli device lldp list
- Показать соседей для конкретного интерфейса:
nmcli device lldp list ifname eth0
4.3 Декларативная настройка через nmstate
Пример YAML-файла для включения LLDP на интерфейсе (
enable-lldp.yml):interfaces: - name: enp1s0 type: ethernet lldp: enabled: trueПримените конфигурацию командой:
sudo nmstatectl apply enable-lldp.yml
- Далее можно использовать утилиту
nmstate-autoconfдля автоматического создания VLAN-интерфейсов на основе данных LLDP от коммутатора.
