lldp что это такое
Lldp что это такое
Link Layer Discovery Protocol (LLDP) — протокол канального уровня, позволяющий сетевому оборудованию оповещать локальную сеть о своем существовании и характеристиках, а также собирать такие же оповещения, поступающие от соседнего оборудования. Протокол формально утвержден как IEEE standard 802.1AB-2009, в сентябре 2009 года, и является независимой от производителей сетевого оборудования заменой их патентованным протоколам, таким как Cisco Discovery Protocol, Extreme Discovery Protocol, Foundry Discovery Protocol и Nortel Discovery Protocol (последний также известен как SONMP).
Содержание
Применение
Информация, собранная посредством LLDP, накапливается в устройствах и может быть с них запрошена посредством SNMP. Таким образом, топология сети, в которой используется LLDP, может быть получена с управляющего компьютера посредством последовательного обхода и опроса каждого устройства на предмет собранной им информации. При этом получаемая информация содержит:
Используя эту информацию и опрашивая MIB базы данных обнаруженных устройств, системы управления могут динамически моделировать и отслеживать состояния локальных сетей передачи данных (LAN), а также строить их визуальные схемы для пользователей и администраторов.
Структура кадра
LLDP кадры отсылаются каждым оборудованием через все его порты через фиксированные интервалы времени. Каждый кадр содержит т. н. Link Layer Discovery Protocol Data Unit (LLDPDU), являющуюся набором TLV структур. TLV (от type-length-value) — бинарная конструкция из трех полей (тип, длина, значение), где первые два имеют фиксированный размер и задают размер для третьего, что позволяет легко кодировать/декодировать любую последовательность данных поле-значение. Для LLDPDU, TLV определено так:
+ | Bits 0 — 6 | 7 | 8-15 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Type | Length | ||||||||||||||
16 | Value |
LLDPDU распространяется в Ethernet кадрах, где multicast MAC адрес пункта назначения — 01:80:c2:00:00:0e, а тип кадра — 0x88cc. Любой LLPD кадр должен начинаться с трех обязательных TLV записей:
За обязательными записями может следовать любое количество дополнительных, а в конце последовательности должна находиться специальная end of LLDPDU. Все допустимые типы TLV определены стандартом IEEE 802.1AB, например вот формат для chassis ID:
+ | Bits 0 — 6 | 7 | 8-15 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Type = 1 | Length | ||||||||||||||
16 | Chassis ID subtype | Chassis ID… | ||||||||||||||
32 | Chassis ID (continued)… |
Поддержка производителями и оборудованием
LLDP все ещё новый протокол, но постепенно получает поддержку у производителей сетевого оборудования:
Также доступны некоторое ПО для ПК и серверов:
Lldp что это такое
Link Layer Discovery Protocol (LLDP) — протокол канального уровня, который позволяет сетевым устройствам анонсировать в сеть информацию о себе и о своих возможностях, а также собирать эту информацию о соседних устройствах.
LLDP это стандартный протокол, который описан в IEEE 802.1AB.
Содержание
[править] Описание протокола
Каждое устройство, на котором включен LLDP, отправляет информацию о себе соседям независимо от того, отправляет ли сосед информацию о себе. При обмене сообщениями LLDP, не используется механизм запрос/ответ.
Устройство, использующее LLDP, хранит информацию о соседях, но не перенаправляет её дальше (независимо от того поддерживает ли устройство протокол LLDP).
Каждое устройство хранит информацию о соседях в MIB. Поэтому эта информация может использоваться различными управляющими хостами с помощью протокола SNMP.
Например, ProCurve Manager использует информацию LLDP для построения топологии сети и сбора инвентарной информации.
Информация об устройстве, которая может передаваться с помощью LLDP:
[править] Принципы работы
Протокол работает только между непосредственно присоединенными устройствами. Это значит, что, например, на рисунке:
Сообщения LLDP могут передаваться через порты, которые заблокированы STP, но не передаются через порты, которые заблокированы 802.1X.
[править] Формат кадра LLDP
Адрес получателя | Адрес отправителя | LLDP Ethertype | Данные LLDP | |
LLDP multicast адрес | MAC-адрес | 88-СС | LLDPDU | FCS |
6 байт | 6 байт | 2 байта | 1500 байт | 4 байта |
Сообщения LLDP инкапсулируются в Ethernet-кадр и передаются через все активные линки.
Для LLDP зарезервирован multicast MAC-адрес — 01:80:C2:00:00:0E. Это специальный зарезервированный MAC-адрес, который предполагает, что коммутаторы, получившие кадр с таким адресом получателя, не будут его передавать дальше.
LLDP передает информацию в сообщениях, которые называются LLDP Data Unit (LLDPDU).
В сообщениях LLDP содержатся несколько TLV (Type, Value, Length):
LLDPDU состоит как минимум из четырёх обязательных TLV полей:
Между обязательными TLV (после первых трёх и перед последним) могут размещаться другие (опциональные) TLV, например:
[править] LLDP на коммутаторах ProCurve
Коммутаторы ProCurve поддерживают протоколы LLDP и CDP. Однако, LLDP-сообщения они могут и генерировать и принимать, а CDP — только принимать.
В коммутаторах ProCurve таблицы LLDP и CDP взаимно пополняют друг друга. То есть, командами просмотра соседей обнаруженных по LLDP, можно увидеть и CDP-соседей. И наоборот.
[править] Настройки по умолчанию
По умолчанию на коммутаторах ProCurve включен LLDP, с такими параметрами:
[править] Информация о локальном устройстве
Информация об устройстве на котором выполняется команда:
[править] Информация о соседях
Пример топологии (команды выполняются на коммутаторе sw4):
Информация о соседях:
Более подробная информация о соседе на 1 интерфейсе (коммутатор 3 уровня, но в данный момент работает как коммутатор 2 уровня):
Более подробная информация о соседе на 24 интерфейсе (коммутатор 3 уровня):
[править] Настройки LLDP
[править] Включение и выключение LLDP на коммутаторе
По умолчанию на коммутаторе включен LLDP.
Если после отключения LLDP, необходимо его снова включить:
[править] Изменение интервалов
[править] Transmit Interval
Transmit Interval — частота отправки LLDP-сообщений соседям. По умолчанию — 30 секунд.
Настройка transmit interval (из-за используемой команды называется также refresh interval):
Значение refresh-interval должно быть большим чем или равным 4 * delay-interval. Иначе коммутатор выдаст сообщение об ошибке.
[править] Time-to-Live
Time-to-Live (TTL) — время в течении которого сосед будет хранить информацию об устройстве, которое отправило сообщение LLDP. По умолчанию — 120 секунд.
Значение TTL получается по формуле:
Изменение holdtime multiplier (по умолчанию 4):
[править] Delay Interval
Delay Interval — коммутатор использует этот интервал для задержки отправки объявлений LLDP, которые отправляются из-за изменений в LLDP MIB. По умолчанию delay-interval равен 2 секундам.
Если на коммутаторе часто изменяется LLDP MIB, то увеличение интервала может уменьшить количество отправляемых сообщений.
Интервал может быть изменен с помощью управляющего хоста SNMP (NMS) или с помощью команды setmib.
Значение refresh-interval должно быть большим чем или равным 4 * delay-interval. Иначе коммутатор выдаст сообщение об ошибке.
Изменение delay interval:
[править] Reinit Interval
Reinit Interval — минимальное время, которое порт должен подождать прежде чем он инициализируется снова после выключения LLDP, за которым следует изменение режима передачи сообщений LLDP. По умолчанию — 2 секунды.
Изменение reinit interval:
[править] Notification Interval
Notification Interval — интервал между отправкой оповещений об изменении информации LLDP. Если на интерфейсе включена отправка SNMP-сообщений, то частое изменение информации LLDP может привести к большому количеству trap. По умолчанию — 5 секунд.
Изменение notification interval:
[править] Просмотр информации о текущих значениях интервалов
Просмотр информации о текущих значениях интервалов на коммутаторе:
[править] Изменение режима отправки и получения сообщений LLDP
По умолчанию коммутатор и отправляет и принимает сообщения LLDP.
Синтаксис команды изменения режима отправки сообщений LLDP:
Пример перевода порта 3 в режим txonly:
Просмотр информации о текущем режиме портов:
Просмотр информации о текущем режиме порта 2:
[править] Указание управляющего адреса
По умолчанию коммутатор анонсирует управляющий адрес по таким правилам:
Однако, адрес может быть назначен административно.
Назначение IP-адреса, который будет анонсироваться как управляющий
Эта команда не позволяет назначить адрес полученный по DHCP или адрес, который не назначен статически в VLAN на коммутаторе.
Если, например, попытаться назначить несуществующий адрес как управляющий, то коммутатор выдаст такую ошибку:
Просмотр информации о том, какой адрес этот коммутатор анонсирует как управляющий:
Просмотр информации о том, какой адрес сосед анонсирует как управляющий:
[править] Просмотр информации о настройках LLDP
Настройки LLDP на коммутаторе:
Информация о настройках LLDP на интерфейсе, в том числе какие TLV отправляются (на коммутаторе с поддержкой LLDP-MED):
Информация о настройках LLDP на интерфейсе, в том числе какие TLV отправляются (на коммутаторе без поддержки LLDP-MED):
[править] Статистика LLDP
Статистика LLDP (на 23 интерфейсе сейчас соседа нет, но статистика о пакетах осталась):
Информация о статистике на конкретном интерфейсе:
[править] LLDP в Linux
Вообще, lldpd поддерживает не только LLDP, но также и CDP, EDP, SONMP и AgentX SNMP.
Активация соответствующих протоколов выполняется ключами:
Установка lldpd осуществляется принятым в дистрибутиве способом:
Ключи демону в Debian передаются через /etc/default/lldpd:
Запуск демона осуществляется командой:
Просмотреть информацию о LLDP-соседях:
На коммутаторе Linux-машина при этом видна так:
Виден её MAC-адрес, имя хоста, а также интерфейс, которым хост подключен к коммутатору.
Среди расширенных сведений можно увидеть версию ядра и IP-адрес системы.
[править] LLDP в FreeBSD
Поддержка LLDP в FreeBSD осуществляется при помощи программы openlldp, доступной в виде порта. Демон openlldpd отправляет по указанному ему сетевому интерфейсу информацию о системе, пользуясь протоколом LLDP.
Домашний сайт проекта: OpenLLDP (англ.)
[править] LLDP в Windows
Для того чтобы хосты Windows также могли использовать LLDP, необходимо установить LLDP-агент. Например, haneWIN LLDP Agent. Этот агент платный, однако в течении 30дневного периода его можно потестировать бесплатно.
Теперь хост по LLDP получил информацию о коммутаторе, к которому он подключен:
Более подробная информация о коммутаторе:
На коммутаторе Windows-машины с установленным LLDP-агентом видны так:
Более подробная информация:
[править] Сбор информации об устройствах
[править] Написание скриптов для сбора информации об устройствах
Информацию о множестве устройств, обменивающихся информацией по LLDP, можно собрать и представить в виде карты сети.
Вот пример простого скрипта, который обходит коммутаторы по SSH, узнает у них информацию о соседях, полученную по LLDP, и на её основе генерирует описание представления сети в виде graphviz-файла, который после дальнейшей обработки превращается в графическую схему:
В результате получаем схему соединения:
Вручную разобраться в хитросплетениях патчкордов было бы значительно сложнее.
[править] Программы для сбора информации об устройствах
Программа wiremaps пользуясь информацией, которую она может получить через протоколы LLDP, EDP, CDP и SONMP, а также из таблиц FDB и ARP, составляет описание сети и предоставляет его пользователю.
Подробнее о программе:
Нечто похожее делает программа NetDisco. Эта информация доступна через web-интерфейс.
Программа NeDi (Network Discovery and Inventory) собирает информацию с управляемых сетевых устройств и ведет учет и статистику как самих устройств, так и абонентских нод. Использует LLDP, CDP и ARP таблицы для построения наглядной топологии в растровом и векторном виде, а также для автоматического поиска новый управлемых устройств.
Подробнее о программе:
[править] LLDP-MED
Link Layer Discovery Protocol-Media Endpoint Discovery (LLDP-MED) — расширение стандарта LLDP, которое позволяет:
Описан в стандарте ANSI/TIA-1057.
LLDP-MED определяет такие TIA Organizationally Specific TLV:
[править] Классы устройств в LLDP-MED
Устройства которые поддерживают LLDP-MED разбиты на три класса:
[править] Настройка LLDP-MED на коммутаторах ProCurve
[править] Создание voice VLAN
Для того чтобы LLDP-MED анонсировал в TLV информацию о VLAN, должен быть создан voice VLAN и порт, на котором находится IP-телефон должен быть тегированным в этом VLAN.
Создание voice VLAN:
Просмотр информации о VLAN (метка voice выставлена у VLAN 10):
[править] Обязательные TLV
Для работы LLDP-MED на коммутаторе обязательно должны быть включены такие TVL (они включены по умолчанию):
Информация о TLV на интерфейсе:
Если какие-либо из LLDP-MED TLV были отключены на интерфейсе, то можно их включить с помощью команды:
TLV macphy_config включается так:
[править] Управление PoE с помощью LLDP-MED
Включение/отключение возможности контроля и выделения PoE с помощью LLDP-MED (по умолчанию отключено):
Включить обнаружение PoE с помощью LLDP TLV advertisement:
[править] Другие протоколы обнаружения
Существуют аналогичные LLDP проприетарные протоколы обнаружения (discovery protocols):
Возможности LLDP для работы с IP-телефонией и примеры настройки
Введение В данной статье будет рассмотрен протокол LLDP, его возможности и примеры настройки для работы с VoIP. В качестве платформы будет использоваться сеть, построенная на коммутаторе Qtech c сервером на CentOS 6 и ip-телефон Yealink t21p LLDP Поговорим немного о LLDP. Это канальный протокол, посредством которого устройства могут транслировать информацию о себе в сеть, ну […]
Введение
В данной статье будет рассмотрен протокол LLDP, его возможности и примеры настройки для работы с VoIP. В качестве платформы будет использоваться сеть, построенная на коммутаторе Qtech c сервером на CentOS 6 и ip-телефон Yealink t21p
Поговорим немного о LLDP. Это канальный протокол, посредством которого устройства могут транслировать информацию о себе в сеть, ну и получать подобную информацию об устройствах-соседях. Собранные данные запрашиваются с помощью протокола SNMP (протокол сетевого управления). Для работы LLDP необходимо прямое подключение между устройствами (например, сеть, построенная на коммутаторе).
Работает он примерно таким образом:
LLDP вставляет свое сообщение в Ethernet-кадр и передает его через аплинк. Коммутатор, получивший сообщение идентифицирует его по определенному mac-адресу получателя (уникальному для протокола) и не передает дальше.
Вся основная информация, передаваемая из сообщений LLDP, содержится в DataUnit
LLDP-MED — это расширение протокола LLDP, предназначенное для работы с VoIP. Ключевыми особенностями этого дополнения являются:
В класс 1 входят серверы контроллеров связи, в класс 2 – голосовые и медиа шлюзы, ну а в класс 3 – IP-телефоны, софтфоны.
Qtech + LLDP
Подключаемся по telnet и пробуем настраивать.
Пример простейшей настройки порта на коммутаторе Qtech Qsw:
LLDP на CentOS
После того как протокол был запущен на коммутаторе необходимо настроить его на нашем сервере телефонии. Первым делом мы устанавливаем пакет с протоколом в нашем CentOS:
Запускаем сервис и проверяем его статус:
Следующим шагом необходимо написать простенький скрипт включающий LLDP для наших интерфейсов:
Ну и запустить его:
Второй способ запустить lldp на CentOS это установка lldpd и запуск сервиса. Нет необходимости писать какие либо скрипты, демон работает самостоятельно, нужно лишь убедиться, что помимо него еще запущена служба SNMP:
Теперь включаем LLDP на нашем ip-телефоне (в качестве примера используется Yealink t21p):
На этом настройку можно считать завершенной.
05. LLDP
5.2. Конфигурация LLDP
Включить функцию LLDP и настроить статус порта;
Настроить отправку Trap;
Настроить информацию, передаваемую опционально;
Настроить таблицу соседей;
Вывод информации и отладка.
Включить функцию LLDP и настроить статус порта:
Команда
Описание
! В режиме глобальной конфигурации
Включить LLDP глобально. Команда no отключает эту функцию
! В режиме конфигурации порта
Включить LLDP на порту. Команда no отключает эту функцию
lldp mode (send|receive|both|disable)
! В режиме конфигурации порта
2. Настроить таймеры:
Команда
Описание
no lldp tx-interval
! В режиме глобальной конфигурации
! В режиме глобальной конфигурации
lldp transmit delay
no lldp transmit delay
! В режиме глобальной конфигурации
3. Настроить отправку Trap:
Команда
Описание
! В режиме конфигурации порта
Включить LLDP trap для порта. Команда no отключает эту функцию.
lldp notification interval
no lldp notification interval
! В режиме глобальной конфигурации
4.Настроить информацию, передаваемую опционально:
Команда
Описание
lldp transmit optional tlv [portDesc] [sysName] [sysDesc] [sysCap]
no lldp transmit optional tlv
! В режиме конфигурации порта
Задать LLDP TLV отправляемые опционально:
lldp management-address tlv [A.B.C.D]
no lldp management-address tlv
! В режиме конфигурации порта
Передавать в качестве management-address tlv адрес [A.B.C.D]. Команда no отключает эту функцию.
5. Настроить таблицу соседей:
Команда
Описание
lldp neighbors max-num
no lldp neighbors max-num
! В режиме конфигурации порта
! В режиме конфигурации порта
6. Вывод информации и отладка:
Команда
Описание
Вывести суммарную информацию о конфигурации LLDP на коммутаторе.
show lldp interface ethernet
Вывести информацию по конфигурации LLDP на порту коммутатора.
Вывести суммарную информацию об отправленных и полученных пакетах LLDP.
show lldp neighbors interface ethernet
Вывести информацию о соседях LLDP на интерфейсе
Выводить отладочную информацию о работе протокола LLDP на коммутаторе. Команда no останавливает вывод информации.
debug lldp packets interface ethernet
no debug lldp packets interface ethernet
Выводить отладочную информацию о работе протокола LLDP на порту коммутатора. Команда no останавливает вывод информации.
show debugging lldp
! В Admin режиме
Вывести информацию о состоянии вывода отладки LLDP на коммутаторе.
clear lldp remote-table
! В режиме конфигурации порта
Очистить информацию о соседях LLDP на интерфейсе.
5.3. Пример конфигурации LLDP
2 коммутатора соединены друг с другом одним линком. Порт коммутатора Switch B настроен только для получение LLDP сообщений. Порт коммутатора Switch A должен передавать информацию о описании порта и возможностях системы.
Конфигурация коммутаторов будет выглядеть следующим образом:
Конфигурация коммутатора Switch A:
СОДЕРЖАНИЕ
Собранная информация
Информация, собранная с помощью LLDP, может храниться в информационной базе управления устройством (MIB) и запрашиваться с помощью протокола SNMP, как указано в RFC 2922. Топология сети с поддержкой LLDP может быть обнаружена путем сканирования хостов и запросов. эта база данных. Информация, которую можно получить, включает:
Приложения
Layer Discovery Protocol Link может быть использован в качестве компонента сетевого управления и мониторинга сетевых приложений.
Расширение обнаружения конечных точек мультимедиа
Расширение протокола LLDP-MED было официально одобрено и опубликовано как стандарт ANSI / TIA-1057 Ассоциацией телекоммуникационной промышленности (TIA) в апреле 2006 года.
Коды возможностей системы
Код | Возможность |
---|---|
B | Мост (переключатель) |
C | Кабельное устройство DOCSIS |
О | Другой |
п | Повторитель |
р | Маршрутизатор |
S | Станция |
Т | телефон |
W | Точка доступа WLAN |
Структура кадра
Соответственно, кадр Ethernet, содержащий LLDPDU, имеет следующую структуру:
Преамбула | MAC-адрес назначения | Исходный MAC | Ethertype | ID шасси TLV | TLV идентификатора порта | Время жить TLV | Дополнительные TLV | Конец TLV LLDPDU | Последовательность проверки кадра |
---|---|---|---|---|---|---|---|---|---|
01: 80: c2: 00: 00: 0e, или 01: 80: c2: 00: 00: 03, или 01: 80: c2: 00: 00: 00 | Адрес станции | 0x88CC | Тип = 1 | Тип = 2 | Тип = 3 | Ноль или более полных TLV | Тип = 0, Длина = 0 |
Каждый из компонентов TLV имеет следующую базовую структуру:
Тип | Длина | Ценить |
---|---|---|
7 бит | 9 бит | 0-511 октетов |
Тип TLV | Имя TLV | Использование в LLDPDU |
---|---|---|
0 | Конец LLDPDU | Обязательный |
1 | ID шасси | Обязательный |
2 | ID порта | Обязательный |
3 | Время жить | Обязательный |
4 | Описание порта | По желанию |
5 | Имя системы | По желанию |
6 | Описание системы | По желанию |
7 | Возможности системы | По желанию |
8 | Адрес управления | По желанию |
9–126 | Зарезервированный | — |
127 | Пользовательские TLV | По желанию |
Пользовательские TLV поддерживаются через тип TLV 127. Значение настраиваемого TLV начинается с 24-битного организационно-уникального идентификатора и 1-байтового организационно-специфического подтипа, за которым следуют данные. Базовый формат TLV для конкретной организации показан ниже:
Согласно IEEE Std 802.1AB, §9.6.1.3, «Организационно уникальный идентификатор должен содержать OUI организации, как определено в IEEE Std 802-2001». Каждая организация несет ответственность за управление своими подтипами.