Протокол 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-MED на коммутаторах для назначения VOIP VLAN
Применение протокола LLDP—MED на коммутаторах Ethernet для настройки Voice VLAN
Протокол LLDP (Link Layer Discovery Protocol) позволяет сетевым устройствам передавать информацию о себе и своих возможностях, а также получать эту информацию о соседних устройствах, подключенных по Ethernet портам.
В кадре LLDP содержится сообщение LLDP PDU (Protocol Data Unit).
Все Organizationally Specific TLV элементы имеют Type = 127 и используются для передачи TLV элементов различных компаний и организаций (например, информацию о VLAN Name и Link Aggregation и др.)
Можно отметить, что оборудование разных производителей может опционально поддерживать автоматическую передачу информации, полученной по протоколу LLDP, на вышестоящий сервер управления по протоколу SNMP. При этом на сервере управления может автоматически отображаться топология сети.
Кроме того, компьютеры под Windows и серверы под Unix \ Linux могут передавать сообщения по протоколу LLDP. В зависимости от версии Windows необходимо установить программное обеспечение для поддержки протокола LLDP.
Можно отметить, что сообщения LLDP-MED не должны передаваться между двумя Ethernet коммутаторами или, например, между Ethernet коммутатором и маршрутизатором.
Функционал LLDP-MED используется для:
Сообщения LLDP-MED имеют Organizationally Specific TLV элементы:
В частности, элемент Network Policy TLV используется для передачи информации и метке VLAN и IP DSCP для QoS (Quality of Service) и элемент Extended Power-via-MDI TLV используется для передачи информации о настройке электропитания PoE (Power over Ethernet).
Пример настройки LLDP—MED на оборудовании Raisecom
Протокол LLDP-MED часто используется в сетях при развертывании VoIP сервисов. Если оборудование IP телефонии поддерживает LLDP-MED, то оно может получать настройки Voice VLAN по протоколу LLDP-MED. На коммутаторах Raisecom можно настроить LLDP-MED таким образом, чтобы передавать информацию о Voice VLAN на подключенные IP-телефоны.
На схеме с примером топологии порт GE 1/1/1 коммутатора соединяет IP-телефон и компьютер с вышестоящей сетью. Требуется разделить голосовой трафик и передачу остальных данных по разным VLAN.
Для этого необходимо настроить GE 1/1/1 в режим Trunk, пустить передачу данных по Native VLAN (VLAN 100), а голосовой трафик по Voice VLAN (VLAN 200). Компьютер (ПК) отправляет untagged пакеты, которые передаются в Native VLAN интерфейса GE 1/1/1. IP телефон при этом будет получать LLDP пакеты, из которых сможет определить номер Voice VLAN. Этот VLAN используется телефоном для дальнейшей работы.
1. Создадим VLAN 100 и VLAN 200, активируем их, настроим VLAN 200 как Voice VLAN.
Raisecom(config)# create vlan 100,200 active
Raisecom(config)# interface gigaethernet 1/1/1
Raisecom(config-gigaethernet1/1/1)# switchport mode trunk
Raisecom(config-gigaethernet1/1/1)# switchport trunk native vlan 100
Raisecom(config-gigaethernet1/1/1)# switchport trunk allowed vlan 100,200 confirm
Raisecom(config-gigaethernet1/1/1)# voice-vlan 200 enable
Raisecom(config-gigaethernet1/1/1)# voice-vlan auto enable
Raisecom(config-gigaethernet1/1/1)# voice-vlan security enable
2. Включим глобально LLDP и LLDP на интерфейсе, чтобы передавать voice VLAN на IP телефон.
Raisecom(config)# lldp enable
Raisecom(config)# interface gigaethernet 1/1/1
Raisecom(config-gigaethernet1/1/1)# lldp enable
3. (Опциональный) по умолчанию интерфейс изменяет CoS и DSCP настройки QoS для голосовых пакетов на 6 и 46 соответственно. Для изменения настроек QoS можно использовать команду:
Raisecom(config-gigaethernet1/1/1)# voice-vlan qos cos 2 dscp 23
или доверять меткам CoS и DSCP от VoIP телефона на этом порте:
Raisecom(config-gigaethernet1/1/1)# voice-vlan qos trust
4. Для сохранения настроек команда «write» :
5. Для просмотра настроек Voice VLAN и LLDP—MED можно использовать команды:
Raisecom# show lldp local config
Raisecom# show lldp statistic
Raisecom# show lldp local system-data gigaethernet 1/1/1
Raisecom# show lldp tlv-select gigaethernet 1/1/1
Raisecom# show lldp remote gigaethernet 1/1/1 detail
Raisecom# show voice-vlan status
Пакет Yealink T26P LLDP-MED
Пакет Raisecom LLDP-MED:
Заключение
В статье описано назначение протокола LLDP и расширения LLDP-MED. Также приведены настройки LLDP-MED и Voice VLAN на Ethernet коммутаторах доступа Raisecom.
Протокол обнаружения сетевых устройств на канальном уровне
Согласованная работа различных узлов в локальной сети (LAN) требует корректной конфигурации протоколов и приложений, которые выполняются и поддерживаются ими. По мере того как число различных типов устройств в сети растет, сетевым администраторам все труднее становится отслеживать правильность конфигурации каждого из них, одновременно все большее количество времени тратится на то, чтобы обнаружить и устранить проблемы. Стандарт 802.1AB, или Link Layer Discovery Protocol (LLDP), обеспечит решение проблем конфигурации, вызванных расширением LAN.
Общие положения
LLDP определяет стандартный метод для устройств в сети Ethernet, таких как коммутаторы, маршрутизаторы и беспроводные точки доступа, с помощью которого устройства распространяют информацию о себе среди других узлов в сети и сохраняют полученные данные. В частности, LLDP определяет набор общих информационных сообщений (advertisement messages), протокол для их передачи и метод хранения. Множество таких сообщений посылается устройством через локальную сеть с помощью одного пакета в форме поля «тип, длина, значение» (Type Length Value – TLV). Первый параметр указывает на вид данных, второй определяет длину пакета в октетах, а третий содержит непосредственно информацию. Все LLDP-устройства должны обязательно поддерживать сообщения с идентификаторами шасси (chassis ID) и портов (port ID), но, как ожидается, большинство реализаций будет также поддерживать такие параметры, как системное имя (system name), системный дескриптор (system descriptor) и системные возможности (system capabilities). Первые два из них обеспечивают полезную информацию для сбора инвентаризационных данных.
LLDP-пакеты передаются периодически и сохраняются в течение определенного времени. Рекомендованная IEEE частота передачи составляет 30 с, но она может регулироваться. Устройства хранят полученные от соседей данные в информационной базе MIB (Management Information Base), которая предусматривается протоколом SNMP. Она актуальна в течение отрезка времени, определяемого значением поля Time to Live (TTL), содержащегося внутри полученного пакета. Рекомендуемое IEEE значение – 120 с, однако допустимый диапазон – от 0 до 65 000 с. Каждый раз, когда устройство получает пакет, оно сохраняет данные и включает таймер, который сравнивается со значением TTL. При совпадении значений устройство удаляет хранимую информацию. Таким образом сетевые системы управления получают только актуальные данные.
Протокол применим для всех сред, предусмотренных стандартом 802. А поскольку он работает только на канальном уровне, то позволяет системам, использующим различные протоколы сетевого уровня, получать информацию друг о друге. Когда два устройства обнаруживают, что они неправильно сконфигурированы, ошибка может быть исправлена с помощью соответствующего приложения. Метод, используемый приложением для разрешения проблемы, протоколом не определяется. Рассмотрим теперь LLDP более детально, не избегая при этом полезных повторений.
Агент LLDP
На сетевом устройстве, которое поддерживает LLDP, должен быть установлен соответствующий агент. Его архитектура просто описывается в терминах SNMP MIB (см. рис.) Информация о локальных (не удаленных) устройствах LAN, передаваемая агентом, сохраняется в базе локальных устройств LLDP local system MIB. В случае, если локальное устройство передает информацию более высокого уровня иерархии – организационного (organization specific information) в формате TLV, она сохраняется в организационной базе локального устройства Organizationally defined local device LLDP. Информация, относящаяся к удаленным устройствам, определяется как удаленная системная информация и хранится в LLDP remote system MIB, а для данных организационного уровня от удаленных устройств предназначается база Organizationally defined remote device LLDP MIB. Следует заметить, что базы организационного уровня не являются обязательными в спецификации протокола.
Как работает агент LLDP
Агент LLDP может оперировать в трех режимах:
В типичном случае операции агента реализуются двумя модулями: передающим и приемным. Правда, двухмодульный подход только рекомендуется стандартом, но не является обязательным. При наличии передающего модуля он посылает информацию о локальных устройствах через регулярные отрезки времени. Данные посылаются в формате соответствующих TLV. При запрещении работы модуль передает TLV со значением TTL 0 в информационном поле. Это позволяет удаленным устройствам изъять из своих баз данных информацию, связанную с этим локальным устройством.
Приемный модуль, если он существует, получает информацию от удаленных устройств и обновляет соответствующую базу LLDP MIB. После приема данных запускается таймер для отсчета их времени актуальности, которое определено значением TTL TLV. Информация об удаленных системах стирается из базы при значении TTL 0 в информационном поле TLV.
Протоколом предусматривается передача данных только в одном направлении. То есть LLDP-устройства не обмениваются информацией в режиме запрос–ответ, а также не подтверждают ее получение. Каждый LLDP-пакет должен содержать четыре обязательных TLV:
Кроме обязательных, протокол может включать ряд опциональных наборов TLV, на которых мы не будем останавливаться.
Таким образом, сам по себе LLDP не конфигурирует устройства и не управляет трафиком – он только распространяет информацию, относящуюся к конфигурации на уровне 2. И хотя сами устройства не могут запросить данные друг у друга, но приложения по управлению сетью имеют возможность запросить информацию, хранящуюся в базе SNMP MIB, построить текущую физическую топологию сети, а также определить несоответствия в имеющейся конфигурации.