LLDP
Материал из Xgu.ru
- Автор: Наташа Самойленко
Link Layer Discovery Protocol (LLDP) — протокол канального уровня, который позволяет сетевым устройствам анонсировать в сеть информацию о себе и о своих возможностях, а также собирать эту информацию о соседних устройствах.
LLDP это стандартный протокол, который описан в IEEE 802.1AB.
[править] Описание протокола
Каждое устройство, на котором включен LLDP, отправляет информацию о себе соседям независимо от того, отправляет ли сосед информацию о себе. При обмене сообщениями LLDP, не используется механизм запрос/ответ.
Устройство, использующее LLDP, хранит информацию о соседях, но не перенаправляет её дальше (независимо от того поддерживает ли устройство протокол LLDP).
Каждое устройство хранит информацию о соседях в MIB. Поэтому эта информация может использоваться различными управляющими хостами с помощью протокола SNMP.
Например, ProCurve Manager использует информацию LLDP для построения топологии сети и сбора инвентарной информации.
Информация об устройстве, которая может передаваться с помощью LLDP:
- Имя устройства (System Name),
- Описание устройства (System Description),
- Идентификатор порта (Port ID),
- Описание порта (Port Description),
- Возможности устройства (System Capabilities),
- Управляющий адрес (Management Address),
- и др.
[править] Принципы работы
Протокол работает только между непосредственно присоединенными устройствами. Это значит, что, например, на рисунке:
- Коммутатор sw4 получит LLDP-информацию от двух соседей core_sw (через два порта) и sw5400;
- Коммутатор core_sw получит LLDP-информацию только от sw4 (но через оба порта);
- Коммутатор sw5400 получит LLDP-информацию только от sw4.
Сообщения 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):
- Type — описывает тип информации, которая передается этой частью сообщения (7 бит);
- Length — размер поля Value (9 бит);
- Value — описывает определенную характеристику устройства.
LLDPDU состоит как минимум из четырёх обязательных TLV полей:
- Chassis ID TLV (Type = 1);
- Port ID TLV (Type = 2);
- Time To Live TLV (Type = 3);
- End of LLDPDU TLV (Type = 0).
Между обязательными TLV (после первых трёх и перед последним) могут размещаться другие (опциональные) TLV, например:
- Port Description TLV (Type = 4);
- System Name TLV (Type = 5);
- System Description TLV (Type = 6);
- System Capabilities TLV (Type = 7).
[править] LLDP на коммутаторах ProCurve
|
Коммутаторы ProCurve поддерживают протоколы LLDP и CDP. Однако, LLDP-сообщения они могут и генерировать и принимать, а CDP — только принимать. В коммутаторах ProCurve таблицы LLDP и CDP взаимно пополняют друг друга. То есть, командами просмотра соседей обнаруженных по LLDP, можно увидеть и CDP-соседей. И наоборот. |
[править] Настройки по умолчанию
По умолчанию на коммутаторах ProCurve включен LLDP, с такими параметрами:
- Режим отправки и получения — коммутатор и отправляет и принимает сообщения LLDP;
- Отправка SNMP-оповещений — выключена;
- Управляющий адрес (Management Address):
- если порт принадлежит только одному VLAN и в нем есть IP-адрес(а) — он анонсирует наименьший IP-адрес,
- если порт принадлежит только одному VLAN и в нем нет IP-адреса — он анонсирует 127.0.0.1,
- если порт принадлежит нескольким VLAN — он анонсирует наименьший IP-адрес из VLAN с наименьшим VID;
- Таймеры:
- Transmit Interval — 30 секунд. Частота отправки LLDP-сообщений соседям;
- Holdtime Multiplier — 4. Множитель, на который умножается Transmit Interval для получения TTL;
- Время жизни (TTL) — 120 секунд. Время в течении которого сосед будет хранить информацию об устройстве;
- Delay Interval — 2 секунды. Интервал, который коммутатор использует для задержки отправки объявлений LLDP, которые отправляются из-за изменений в LLDP MIB;
- Reinit Interval — 2 секунды. Минимальное время, которое порт должен подождать прежде чем он инициализируется снова после выключения LLDP, за которым следует изменение режима передачи сообщений LLDP.;
- Notification Interval — 5 секунды. Интервал между отправкой оповещений об изменении информации LLDP.
[править] Информация о локальном устройстве
Информация об устройстве на котором выполняется команда:
sw4# show lldp info local-device LLDP Local Device Information Chassis Type : mac-address Chassis Id : 00 16 b9 10 60 00 System Name : sw4 System Description : ProCurve J8692A Switch 3500yl-24G, revision K.13.51,... System Capabilities Supported:bridge, router System Capabilities Enabled:bridge Management Address : LLDP Port Information Port | PortType PortId PortDesc -------- + -------- -------- -------- 1 | local 1 1 2 | local 2 2 ...... 22 | local 22 22 23 | local 23 23 24 | local 24 24
[править] Информация о соседях
Пример топологии (команды выполняются на коммутаторе sw4):
Информация о соседях:
sw4(config)# show lldp info remote-device LLDP Remote Devices Information LocalPort | ChassisId PortId PortDescr SysName --------- + ------------------------- ------ --------- ---------------------- 1 | 00 15 60 ea 4e 00 1 1 core_sw 7 | 00 15 60 ea 4e 00 3 3 core_sw 24 | 00 17 08 ca eb 00 5 A5 sw5400
Более подробная информация о соседе на 1 интерфейсе (коммутатор 3 уровня, но в данный момент работает как коммутатор 2 уровня):
sw4(config)# show lldp info remote-device 1 LLDP Remote Device Information Detail Local Port : 1 ChassisType : mac-address ChassisId : 00 15 60 ea 4e 00 PortType : local PortId : 1 SysName : core_sw System Descr : ProCurve J4906A Switch 3400cl-48G, revision M.10.30, ROM ... PortDescr : 1 System Capabilities Supported : bridge, router System Capabilities Enabled : bridge Remote Management Address Type : all802 Address : 00 15 60 ea 4e 00
Более подробная информация о соседе на 24 интерфейсе (коммутатор 3 уровня):
sw4(config)# show lldp info remote-device 24 LLDP Remote Device Information Detail Local Port : 24 ChassisType : mac-address ChassisId : 00 17 08 ca eb 00 PortType : local PortId : 5 SysName : sw5400 System Descr : ProCurve J8697A Switch 5406zl, revision K.13.23, ROM K.12... PortDescr : A5 System Capabilities Supported : bridge, router System Capabilities Enabled : bridge, router Remote Management Address Type : ipv4 Address : 10.1.67.1
[править] Настройки LLDP
[править] Включение и выключение LLDP на коммутаторе
По умолчанию на коммутаторе включен LLDP.
Отключение LLDP:
sw4(config)# no lldp run
Если после отключения LLDP, необходимо его снова включить:
sw4(config)# lldp run
[править] Изменение интервалов
[править] Transmit Interval
Transmit Interval — частота отправки LLDP-сообщений соседям. По умолчанию — 30 секунд.
Настройка transmit interval (из-за используемой команды называется также refresh interval):
sw4(config)# lldp refresh-interval <5-32768>
|
Значение refresh-interval должно быть большим чем или равным 4 * delay-interval. Иначе коммутатор выдаст сообщение об ошибке. Для изменения delay-interval необходимо использовать команду setmib lldpTxDelay.0 -i <1-8192>. По умолчанию delay-interval равен 2 секундам. |
[править] Time-to-Live
Time-to-Live (TTL) — время в течении которого сосед будет хранить информацию об устройстве, которое отправило сообщение LLDP. По умолчанию — 120 секунд.
Значение TTL получается по формуле:
- refresh-interval * holdtime-multiplier
Изменение holdtime multiplier (по умолчанию 4):
sw4(config)# lldp holdtime-multiplier <2-10>
[править] Delay Interval
Delay Interval — коммутатор использует этот интервал для задержки отправки объявлений LLDP, которые отправляются из-за изменений в LLDP MIB. По умолчанию delay-interval равен 2 секундам.
Если на коммутаторе часто изменяется LLDP MIB, то увеличение интервала может уменьшить количество отправляемых сообщений.
Интервал может быть изменен с помощью управляющего хоста SNMP (NMS) или с помощью команды setmib.
|
Значение refresh-interval должно быть большим чем или равным 4 * delay-interval. Иначе коммутатор выдаст сообщение об ошибке. |
Изменение delay interval:
sw4(config)# setmib lldpTxDelay.0 -i <1-8192>
[править] Reinit Interval
Reinit Interval — минимальное время, которое порт должен подождать прежде чем он инициализируется снова после выключения LLDP, за которым следует изменение режима передачи сообщений LLDP. По умолчанию — 2 секунды.
Изменение reinit interval:
sw4(config)# setmib lldpReinitDelay.0 -i <1-10>
[править] Notification Interval
Notification Interval — интервал между отправкой оповещений об изменении информации LLDP. Если на интерфейсе включена отправка SNMP-сообщений, то частое изменение информации LLDP может привести к большому количеству trap. По умолчанию — 5 секунд.
Изменение notification interval:
sw4(config)# setmib lldpnotificationinterval.0 -i <1-3600>
[править] Просмотр информации о текущих значениях интервалов
Просмотр информации о текущих значениях интервалов на коммутаторе:
sw4# show lldp config LLDP Global Configuation LLDP Enabled [Yes] : Yes LLDP Transmit Interval [30] : 30 LLDP Hold time Multiplier [4] : 4 LLDP Delay Interval [2] : 2 LLDP Reinit Interval [2] : 2 LLDP Notification Interval [5] : 5 .....
[править] Изменение режима отправки и получения сообщений LLDP
По умолчанию коммутатор и отправляет и принимает сообщения LLDP.
Синтаксис команды изменения режима отправки сообщений LLDP:
sw4(config)# lldp admin-status <port-list> <txonly | rxonly | tx_rx | disable>
Параметры команды:
- port-list — перечень портов к которым применяется режим,
- txonly — только отправка LLDP-сообщений, входящие сообщения LLDP блокируются,
- rxonly — только получение LLDP-сообщений, исходящие сообщения LLDP блокируются,
- tx_rx — отправка и получение LLDP-сообщений (режим по умолчанию),
- disable — отключение отправки и получения LLDP-сообщений.
Пример перевода порта 3 в режим txonly:
sw4(config)# lldp admin-status 3 txonly
Просмотр информации о текущем режиме портов:
sw4# show lldp config LLDP Global Configuation LLDP Enabled [Yes] : Yes LLDP Transmit Interval [30] : 30 LLDP Hold time Multiplier [4] : 4 LLDP Delay Interval [2] : 2 LLDP Reinit Interval [2] : 2 LLDP Notification Interval [5] : 5 LLDP Port Configuration Port | AdminStatus NotificationEnabled ----- + ----------- ------------------- 1 | Tx_Rx False 2 | Tx_Rx False 3 | TxOnly False 4 | Tx_Rx False 5 | Tx_Rx False .....
Просмотр информации о текущем режиме порта 2:
sw4(config)# sh lldp config 2 LLDP Port Configuration Detail Port : 2 AdminStatus [Tx_Rx] : Tx_Rx ....
[править] Указание управляющего адреса
По умолчанию коммутатор анонсирует управляющий адрес по таким правилам:
- если порт принадлежит только одному VLAN и в нем есть IP-адрес(а) — он анонсирует наименьший IP-адрес,
- если порт принадлежит только одному VLAN и в нем нет IP-адреса — он анонсирует 127.0.0.1,
- если порт принадлежит нескольким VLAN — он анонсирует наименьший IP-адрес из VLAN с наименьшим VID.
Однако, адрес может быть назначен административно.
Назначение IP-адреса, который будет анонсироваться как управляющий
sw4(config)# lldp config <port-list> ipAddrEnable <ip-address>
|
Эта команда не позволяет назначить адрес полученный по DHCP или адрес, который не назначен статически в VLAN на коммутаторе. Если, например, попытаться назначить несуществующий адрес как управляющий, то коммутатор выдаст такую ошибку: sw4(config)# lldp config 1-3 ipAddrEnable 10.1.1.1 10.1.1.1: This IP address is not configured or is a DHCP address. |
Просмотр информации о том, какой адрес этот коммутатор анонсирует как управляющий:
sw4(config)# sh lldp info local-device LLDP Local Device Information Chassis Type : mac-address Chassis Id : 00 16 35 b2 16 00 System Name : sw1 System Description : ProCurve J4905A Switch 3400cl-24G, revision M.10.68,... System Capabilities Supported:bridge, router System Capabilities Enabled:bridge Management Address : Type:ipv4 Address:192.168.25.101 .....
Просмотр информации о том, какой адрес сосед анонсирует как управляющий:
sw4(config)# sh lldp i r 24 LLDP Remote Device Information Detail Local Port : 24 ChassisType : mac-address ChassisId : 00 21 f7 62 6b 00 PortType : local PortId : 5 SysName : sw5400 System Descr : ProCurve J8698A Switch 5412zl, revision K.12.57, ROM K.12... PortDescr : A5 System Capabilities Supported : bridge, router System Capabilities Enabled : bridge Remote Management Address Type : ipv4 Address : 192.168.25.104
[править] Просмотр информации о настройках LLDP
Настройки LLDP на коммутаторе:
sw4# show lldp config LLDP Global Configuation LLDP Enabled [Yes] : Yes LLDP Transmit Interval [30] : 30 LLDP Hold time Multiplier [4] : 4 LLDP Delay Interval [2] : 2 LLDP Reinit Interval [2] : 2 LLDP Notification Interval [5] : 5 LLDP Port Configuration Port | AdminStatus NotificationEnabled ----- + ----------- ------------------- 1 | Tx_Rx False 2 | Tx_Rx False 3 | Tx_Rx False .....
Информация о настройках LLDP на интерфейсе, в том числе какие TLV отправляются (на коммутаторе с поддержкой LLDP-MED):
sw5400(config)# show lldp config a5 LLDP Port Configuration Detail Port : A5 AdminStatus [Tx_Rx] : Tx_Rx NotificationEnabled [False] : False Med Topology Trap Enabled [False] : False TLVS Advertised: * port_descr * system_name * system_descr * system_cap * capabilities * network_policy * location_id * poe * macphy_config IpAddress Advertised:
Информация о настройках LLDP на интерфейсе, в том числе какие TLV отправляются (на коммутаторе без поддержки LLDP-MED):
sw4(config)# show lldp config 24 LLDP Port Configuration Detail Port : 24 AdminStatus [Tx_Rx] : Tx_Rx NotificationEnabled [False] : False TLVS Advertised: * port_descr * system_name * system_descr * system_cap IpAddress Advertised:
[править] Статистика LLDP
Статистика LLDP (на 23 интерфейсе сейчас соседа нет, но статистика о пакетах осталась):
sw4# show lldp stats LLDP Device Statistics Neighbor Entries List Last Updated : 2 days New Neighbor Entries Count : 4 Neighbor Entries Deleted Count : 1 Neighbor Entries Dropped Count : 0 Neighbor Entries AgeOut Count : 1 LLDP Port Statistics Port | NumFramesRecvd NumFramesSent NumFramesDiscarded ----- + -------------- ------------- ------------------ 1 | 8071 8034 0 2 | 0 0 0 3 | 0 0 0 4 | 0 0 0 5 | 0 0 0 6 | 0 0 0 7 | 8071 8034 0 8 | 0 0 0 .......... 23 | 5687 5659 0 24 | 8077 8036 0 25 | 0 0 0
Информация о статистике на конкретном интерфейсе:
sw4(config)# show lldp stats 23 LLDP Port Statistics Detail PortName : 23 Frames Discarded : 0 Frames Invalid : 0 Frames Received : 5687 Frames Sent : 5659 TLVs Unrecognized : 0 TLVs Discarded : 0 Neighbor Ageouts : 1
[править] LLDP в Linux
Вообще, lldpd поддерживает не только LLDP, но также и CDP, EDP, SONMP и AgentX SNMP.
Активация соответствующих протоколов выполняется ключами:
- -x — AgentX SNMP
- -s — SONMP
- -c — CDP
- -f — FDP
- -e — EDP
Установка lldpd осуществляется принятым в дистрибутиве способом:
%# apt-get install lldpd
Ключи демону в Debian передаются через /etc/default/lldpd:
DAEMON_ARGS="-x -c -s -e"
Запуск демона осуществляется командой:
%# /etc/init.d/lldpd start
Просмотреть информацию о LLDP-соседях:
$ sudo lldpctl ------------------------------------------------------------------------------- LLDP neighbors ------------------------------------------------------------------------------- Interface: eth3 ChassisID: 00:15:60:79:8e:c0 (MAC) SysName: mossy SysDescr: ProCurve J4906A Switch 3400cl-48G, revision M.10.06, ROM I.08.11 (/sw/code/build/makf(ts_08_5)) MgmtIP: 192.168.18.1 Caps: Bridge(E) Router(E) PortID: 1 (local) PortDescr: 1 -------------------------------------------------------------------------------
На коммутаторе Linux-машина при этом видна так:
# sh lldp i r LLDP Remote Devices Information LocalPort | ChassisId PortId PortDescr SysName --------- + ------------------------- ------ --------- ---------------------- 1 | 00 04 75 82 53 43 00 ... eth3 xnt1 ...
Виден её MAC-адрес, имя хоста, а также интерфейс, которым хост подключен к коммутатору.
Среди расширенных сведений можно увидеть версию ядра и IP-адрес системы.
# sh lldp i r 1 LLDP Remote Device Information Detail Local Port : 1 ChassisType : mac-address ChassisId : 00 04 75 82 53 43 PortType : mac-address PortId : 00 04 75 82 53 43 SysName : xnt1 System Descr : Linux 2.6.18-6-xen-686 #1 SMP Sun Feb 10 22:43:13 UTC 200... PortDescr : eth3 System Capabilities Supported : bridge, wlan-access-point, router System Capabilities Enabled : bridge Remote Management Address Type : ipv4 Address : 192.168.18.3
[править] LLDP в FreeBSD
Поддержка LLDP в FreeBSD осуществляется при помощи программы openlldp, доступной в виде порта. Демон openlldpd отправляет по указанному ему сетевому интерфейсу информацию о системе, пользуясь протоколом LLDP.
lldpd 0.3 (c) Copyright 2002 - 2006 The OpenLLDP Group Dual licensed under the GPL and Other/Proprietary licenses. This product borrows some code from the Open1X project. (http://www.open1x.org) Usage: lldpd [-c config file] [-i device] [-d debug_level] [-f] [-s] -c <path> : Use the config file <path> instead of the default. -i <interface> : Use <interface> for LLDP transactions -d <debug_level/flags> : Set debug verbosity. -f : Run in forground mode. -s : Remove the existing control socket if found. (Should only be used in system init scripts!) <debug_level> can be any of : A : Enable ALL debug flags. c : Enable CONFIG debug flag. s : Enable STATE debug flag. t : Enable TLV debug flag. i : Enable INT debug flag. n : Enable SNMP debug flag. x : Enable EXCESSIVE debug flag.
Домашний сайт проекта: OpenLLDP (англ.)
[править] LLDP в Windows
Для того чтобы хосты Windows также могли использовать LLDP, необходимо установить LLDP-агент. Например, haneWIN LLDP Agent. Этот агент платный, однако в течении 30дневного периода его можно потестировать бесплатно.
Теперь хост по LLDP получил информацию о коммутаторе, к которому он подключен:
Более подробная информация о коммутаторе:
На коммутаторе Windows-машины с установленным LLDP-агентом видны так:
switch# show lldp info remote-device LLDP Remote Devices Information LocalPort | ChassisId PortId PortDescr SysName --------- + ------------------------- ------ --------- ---------------------- 25 | gMTcheha 00 ... Attans... PC1 27 | Q78hheha 00 ... Attans... PC2 29 | qD89heha 00 ... Attans... PC3
Более подробная информация:
switch# show lldp info remote-device 25 LLDP Remote Device Information Detail Local Port : 25 ChassisType : local ChassisId : gMTcheha PortType : mac-address PortId : 00 1b fc 7d bb 1e SysName : PC1 System Descr : x86 Family 6 Model 15 Stepping 11, GenuineIntel - Windows... PortDescr : Attansic L1 Gigabit Ethernet 10/100/1000Base-T Controller System Capabilities Supported : station-only System Capabilities Enabled : station-only Remote Management Address Type : ipv4 Address : 192.168.25.1
[править] Сбор информации об устройствах
[править] Написание скриптов для сбора информации об устройствах
Информацию о множестве устройств, обменивающихся информацией по LLDP, можно собрать и представить в виде карты сети.
Вот пример простого скрипта, который обходит коммутаторы по SSH, узнает у них информацию о соседях, полученную по LLDP, и на её основе генерирует описание представления сети в виде graphviz-файла, который после дальнейшей обработки превращается в графическую схему:
#!/usr/bin/perl # lldp2dot # igor chubin, 2009 # Thanks to Natasha Samoylenko for the network @switches=qw/1 2 3 4 5 6 7 8 9/; @switches=map{ 'user@192.168.25.10'.$_ } @switches; $PASSWORD='user'; $trigger=0; =cut # sh lldp i r LocalPort | ChassisId PortId PortDescr SysName --------- + ------------------------- ------ --------- ---------------------- 1 | 00 15 60 7a 58 80 1 1 VIRTUAL 7 | 00 15 60 7a 58 80 3 3 VIRTUAL 23 | 00 16 b9 10 60 00 1 1 sw3 24 | 00 21 f7 62 6b 00 5 A5 sw4 # sh lldp i l LLDP Local Device Information Chassis Type : mac-address Chassis Id : 00 16 35 b2 16 00 System Name : sw1 System Description : ProCurve J4905A Switch 3400cl-24G, revision M.10.68,... System Capabilities Supported:bridge, router System Capabilities Enabled:bridge Management Address : Type:ipv4 Address:192.168.25.101 =cut print "graph G {\nedge[len=2];\n"; for $SWITCH (@switches) { #print $SWITCH; $command="(sleep 2; echo ${PASSWORD}; sleep 2; echo; echo sh lldp i r;". " sleep 2; echo sh lldp i l; sleep 4; echo exit; sleep 2; echo exit; sleep 2; echo y)"; $result = ''; $lldp_i_r=''; @graphviz=(); if (open(SOCAT, "$command | socat - EXEC:'ssh ${SWITCH}',setsid,pty,ctty 2>&1 |")) { while(<SOCAT>) { #print $_; if (m/LocalPort/) { $trigger=1; } if ($trigger) { if ($trigger==1) { $lldp_i_r.=$_; } $result .= $_; if (m/LLDP Port Information/) { $trigger = 0; } if (m/^\s*$/) { $trigger=2; } } } close(SOCAT); } $result =~ m/System Name\s*:\s*(\S*)/; $node=$1; @lines = split /\n/, $lldp_i_r; splice(@lines,0,2); for $line (@lines){ @fields = split /\s+/, $line; if (substr($line,57,10) !~ /^\s*$/) { my $head = substr($line,47,10); #$fields[10]; $_=$head; s/\s*$//; s/^\s*//; s/[.]//g; $head=$_; my $tail = substr($line,2,10); #$fields[1]; $_=$tail; s/\s*$//; s/^\s*//; s/[.]//g; $tail=$_; my $node2 = substr($line,57,20); #$fields[11]; $node2 =~ s/\s*$//; $node2 =~ s/^\s*//; $node2 =~ s/[_.]//; $node =~ s/\s*$//; $node =~ s/^\s*//; $node =~ s/[_.]//; if (not $known{"$node $node2 $head $tail"}) { $known{"$node2 $node $tail $head"}="yes"; push @graphviz, " $node -- ".$node2."[headlabel=$head,taillabel=$tail];"; } } } #print $node, "\n", join("\n", @lines); print "\n", join("\n", @graphviz); } print "};"
Использование:
%$ lldp2dot > /tmp/network.dot %$ neato -Tpng -o /tmp/lldp2dot.png /tmp/network.dot
В результате получаем схему соединения:
Вручную разобраться в хитросплетениях патчкордов было бы значительно сложнее.
[править] Программы для сбора информации об устройствах
Программа 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, которое позволяет:
- Автоматически обнаруживать сетевые политики (VLAN, 802.1p, DSCP),
- Использовать более расширенное и автоматическое управление питанием на PoE хостах,
- Отслеживать местоположения устройств и топологию, в том числе таких устройств как IP-телефоны,
- Выполнять инвентаризацию устройств в сети и определение их характеристик
- Отслеживать перемещения устройств и отправлять SNMP-сообщения на соответствующий управляющий хост.
Описан в стандарте ANSI/TIA-1057.
LLDP-MED определяет такие TIA Organizationally Specific TLV:
- LLDP-MED Capabilities TLV (OUI = 00-12-BB, Subtype = 1)
- Network Policy TLV (OUI = 00-12-BB, Subtype = 2)
- Location Identification TLV (OUI = 00-12-BB, Subtype = 3)
- Extended Power-via-MDI TLV (OUI = 00-12-BB, Subtype = 4)
- Inventory - Hardware Revision TLV (OUI = 00-12-BB, Subtype = 5)
- Inventory - Firmware Revision TLV (OUI = 00-12-BB, Subtype = 6)
- Inventory - Software Revision TLV (OUI = 00-12-BB, Subtype = 7)
- Inventory - Serial Number TLV (OUI = 00-12-BB, Subtype = 8)
- Inventory - Manufacturer Name TLV (OUI = 00-12-BB, Subtype = 9)
- Inventory - Model Name TLV (OUI = 00-12-BB, Subtype = 10)
- Inventory - Asset ID TLV (OUI = 00-12-BB, Subtype = 11)
[править] Классы устройств в LLDP-MED
Устройства которые поддерживают LLDP-MED разбиты на три класса:
- Class 1 (generic endpoint devices): Эти устройства поддерживают базовые возможности обнаружения по LLDP, анонсирование сетевых политик (VLAN ID, приоритеты 802.1p и DSCP), управление PoE. Этот класс включает такие устройства как IP call controllers и communication-related сервера.
- Class 2 (media endpoint devices): Эти устройства поддерживают все возможности первого класса, плюс возможности media streaming. Это такие устройства как voice/media gateways, conference bridges, и media servers.
- Class 3 (communication devices): Эти устройства поддерживают все возможности первого и второго классов, плюс идентификацию местоположения, emergency 911 capability, поддержку коммутатора 2го уровня, управление информацией об устройстве. Как правило это IP телефоны или софт-телефоны.
[править] Настройка LLDP-MED на коммутаторах ProCurve
[править] Создание voice VLAN
Для того чтобы LLDP-MED анонсировал в TLV информацию о VLAN, должен быть создан voice VLAN и порт, на котором находится IP-телефон должен быть тегированным в этом VLAN.
Создание voice VLAN:
ProCurve(config)# vlan 10 voice
Просмотр информации о VLAN (метка voice выставлена у VLAN 10):
ProCurve(config)# sh vlans Status and Counters - VLAN Information Maximum VLANs to support : 256 Primary VLAN : DEFAULT_VLAN Management VLAN : VLAN ID Name | Status Voice Jumbo ------- -------------------- + ---------- ----- ----- 1 DEFAULT_VLAN | Port-based No No 10 VLAN10 | Port-based Yes No
[править] Обязательные TLV
Для работы LLDP-MED на коммутаторе обязательно должны быть включены такие TVL (они включены по умолчанию):
- capabilities — позволяет коммутатору определить тип подключенного устройства и какие TLV устройство поддерживает;
- network_policy — используется для информирования устройства о номере VLAN (VLAN ID) и настройках QoS, которые ему присвоены. Подключенное устройство использует эту информацию для того чтобы настроить себя для работы в соответствующем VLAN. Если порт принадлежит нескольким voice VLAN, то коммутатор поместит в TLV VLAN с наименьшим VLAN ID.
- location_id — анонсирует настроенную информацию о местоположении устройства;
- poe — коммутатор использует это TLV для того чтобы анонсировать возможности и настройки приоритета PoE для порта. Подключенное устройство использует аналогичное TLV для того чтобы сообщить свои требования к PoE.
- macphy_config — коммутатор и подключенное устройство используют это TLV для того чтобы договариваться о скорости и режиме дуплекса. Поддерживается и в LLDP, но является обязательным только для LLDP-MED.
Информация о TLV на интерфейсе:
ProCurve(config)# show lldp config a5 LLDP Port Configuration Detail Port : A5 AdminStatus [Tx_Rx] : Tx_Rx NotificationEnabled [False] : False Med Topology Trap Enabled [False] : False TLVS Advertised: * port_descr * system_name * system_descr * system_cap * capabilities * network_policy * location_id * poe * macphy_config IpAddress Advertised:
Если какие-либо из LLDP-MED TLV были отключены на интерфейсе, то можно их включить с помощью команды:
ProCurve(config)# lldp config <port-id> medTlvEnable <capabilities | network_policy | location_id | poe>
TLV macphy_config включается так:
ProCurve(config)# lldp config <port-id> dot3TlvEnable macphy_config
[править] Управление PoE с помощью LLDP-MED
Включение/отключение возможности контроля и выделения PoE с помощью LLDP-MED (по умолчанию отключено):
ProCurve(config)# int <port-list> poe-lldp-detect [enabled | disabled]
Включить обнаружение PoE с помощью LLDP TLV advertisement:
ProCurve(config)# lldp config <port-number> medTlvenable poe
[править] Другие протоколы обнаружения
Существуют аналогичные LLDP проприетарные протоколы обнаружения (discovery protocols):
- Cisco Discovery Protocol;
- Extreme Discovery Protocol;
- Nortel Discovery Protocol;
- ZTE Discovery Protocol (+ ZTP ZTE topology collect protocol).
[править] Дополнительная информация
- LLDP-MED и CDP (англ.) — Сравнение LLDP-MED и CDP на сайте Cisco.
- LLDP tutorial (англ.) — Описание протокола LLDP и вариантов его использования.
ProCurve | ||
---|---|---|
Основы | ProCurve Adaptive Edge | ProCurve ProActive Defense | ProCurve Network Access Control | ProCurve Wireless | |
Программы | ProCurve Manager | ProCurve Identity Driven Manager | ProCurve Network Immunity Manager | ProCurve Mobility Manager | |
Устройства | ProCurve Switch | ProCurve Router | ProCurve ONE Module | ProCurve TMS Module | ProCurve NAC 800 | ProCurve Access Point | ProCurve WESM | |
Настройка | ||
Безопасность | ProCurve Security | Доступ к коммутатору ProCurve | DHCP snooping | Dynamic ARP Protection | IP Source Guard | Port security | Аутентификация при доступе к сети | 802.1X в ProCurve | Web-аутентификация в ProCurve | MAC-аутентификация в ProCurve | |
Канальный уровень | CDP | LLDP | VLAN в ProCurve | GVRP | STP в ProCurve | ProCurve Mesh | Агрегирование каналов | Зеркалирование трафика | QinQ | |
Сетевой уровень | RIP в ProCurve | OSPF в ProCurve | VRRP в ProCurve | XRRP в ProCurve | QoS в ProCurve | Multicast в ProCurve | PIM в ProCurve | |
Разное | Опция 82 DHCP | SNMP в ProCurve |