Вы находитесь на странице: 1из 20

LLDP — Xgu.

ru Page 1 of 20

LLDP
Материал из Xgu.ru

Если вы хотите чтобы Kemari побыстрее интегрировали в код Xen, прочитайте это сообщение [1]
(http://lists.xensource.com/archives/html/xen-devel/2009-07/msg00431.html) и ответьте на него в список рассылки xen-
devel письмом вида "I'm using (no using) Kemari and I want it to be integrated (but I would if it was integrated)". Хорошая
вещь. Поддержим.

Автор: Наташа Самойленко

Link Layer Discovery Protocol (LLDP) — протокол канального уровня, который позволяет
сетевым устройствам анонсировать в сеть информацию о себе и о своих возможностях, а
также собирать эту информацию о соседних устройствах.

LLDP это стандартный протокол, который описан в IEEE 802.1AB.

Содержание
„ 1 Описание протокола
„ 1.1 Принципы работы
„ 1.2 Формат кадра LLDP
„ 2 LLDP на коммутаторах ProCurve
„ 2.1 Настройки по умолчанию
„ 2.2 Информация о локальном устройстве
„ 2.3 Информация о соседях
„ 2.4 Настройки LLDP
„ 2.4.1 Включение и выключение LLDP на коммутаторе
„ 2.4.2 Изменение интервалов
„ 2.4.2.1 Transmit Interval
„ 2.4.2.2 Time-to-Live
„ 2.4.2.3 Delay Interval
„ 2.4.2.4 Reinit Interval
„ 2.4.2.5 Notification Interval
„ 2.4.2.6 Просмотр информации о текущих значениях интервалов
„ 2.4.3 Изменение режима отправки и получения сообщений LLDP
„ 2.4.4 Указание управляющего адреса
„ 2.5 Просмотр информации о настройках LLDP
„ 2.6 Статистика LLDP
„ 3 LLDP в Linux
„ 4 LLDP в FreeBSD
„ 5 LLDP в Windows
„ 6 Сбор информации об устройствах
„ 6.1 Написание скриптов для сбора информации об устройствах
„ 6.2 Программы для сбора информации об устройствах
„ 7 LLDP-MED
„ 7.1 Настройка LLDP-MED на коммутаторах ProCurve
„ 7.1.1 Создание voice VLAN
„ 7.1.2 Обязательные TLV
„ 8 Другие протоколы обнаружения
„ 9 Дополнительная информация

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 2 of 20

„ 10 Материалы по сетевым устройствам ProCurve на Xgu.ru

Описание протокола
Каждое устройство, на котором включен 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- LLDP
информацию только от sw4.

Сообщения LLDP могут передаваться через порты, которые заблокированы STP, но не


передаются через порты, которые заблокированы 802.1X.

Формат кадра LLDP

Сообщения
LLDP
инкапсулируются в Ethernet-кадр и передаются через все активные линки.

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 3 of 20

Для LLDP
зарезервирован
multicast MAC-
адрес —

Формат кадра LLDP

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); Формат LLDP Data Unit (LLDPDU)
„ 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, с такими параметрами:

„ Режим отправки и получения — коммутатор и отправляет и принимает сообщения


LLDP;
„ Отправка SNMP-оповещений — выключена;

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 4 of 20

„ Управляющий адрес (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):

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 5 of 20

Информация о соседях:

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

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 6 of 20

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>

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 7 of 20

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

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 8 of 20

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

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 9 of 20

....

Указание управляющего адреса

По умолчанию коммутатор анонсирует управляющий адрес по таким правилам:

„ если порт принадлежит только одному 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

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 10 of 20

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):

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 11 of 20

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.

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 12 of 20

Активация соответствующих протоколов выполняется ключами:

„ -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-адрес системы.

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 13 of 20

# 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 (http://sourceforge.net/projects/openlldp/) (англ.)

LLDP в Windows
Для того чтобы хосты Windows также могли использовать LLDP, необходимо установить
LLDP-агент. Например, haneWIN LLDP Agent (http://www.hanewin.net/lldp-e.htm). Этот агент
платный, однако в течении 30дневного периода его можно потестировать бесплатно.

Теперь хост по LLDP получил информацию о коммутаторе, к которому он подключен:

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 14 of 20

Более подробная информация о коммутаторе:

На коммутаторе 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

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 15 of 20

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;
}

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 16 of 20

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

В результате получаем схему соединения:

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 17 of 20

Вручную разобраться в хитросплетениях патчкордов было бы значительно сложнее.

Программы для сбора информации об устройствах

Программа wiremaps пользуясь


информацией, которую она может получить
через протоколы LLDP, EDP, CDP и SONMP,
а также из таблиц FDB и ARP, составляет
описание сети и предоставляет его
пользователю.

Подробнее о программе:

„ https://trac.luffy.cx/ web-интерфейс программы wiremaps

Нечто похожее делает программа NetDisco


(http://www.netdisco.org/). Эта информация доступна через web-интерфейс.

Программа NeDi (Network Discovery and Inventory) собирает


информацию с управляемых сетевых устройств и ведет учет
и статистику как самих устройств, так и абонентских нод. Использует LLDP, CDP и ARP
таблицы для построения наглядной топологии в растровом и векторном виде, а также для
автоматического поиска новый управлемых устройств.

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 18 of 20

Подробнее о программе:

„ http://www.nedi.ch/

LLDP-MED
Link Layer Discovery Protocol-Media Endpoint Discovery
(LLDP-MED) — расширение стандарта LLDP, которое
web-интерфейс программы позволяет:
NeDi

Автоматически обнаруживать сетевые политики (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 на коммутаторах ProCurve

Создание voice VLAN

Для того чтобы LLDP-MED анонсировал в TLV информацию о VLAN, должен быть создан
voice VLAN и порт, на котором находится IP-телефон должен быть тегированным в этом
VLAN.

Создание voice VLAN:

sw5400(config)# vlan 10 voice

Просмотр информации о VLAN (метка voice выставлена у VLAN 10):

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 19 of 20

sw5400(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 на интерфейсе:

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-MED TLV были отключены на интерфейсе, то можно их включить


с помощью команды:

http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 20 of 20

sw5400(config)# lldp config <port-id> medTlvEnable <capabilities | network_policy | location_id | poe>

TLV macphy_config включается так:

sw5400(config)# lldp config <port-id> dot3TlvEnable macphy_config

Другие протоколы обнаружения


Существуют аналогичные LLDP проприетарные протоколы обнаружения (discovery
protocols):

„ Cisco Discovery Protocol;


„ Extreme Discovery Protocol;
„ Nortel Discovery Protocol.

Дополнительная информация
„ LLDP-MED и CDP
(http://www.cisco.com/en/US/technologies/tk652/tk701/technologies_white_paper0900aecd804
(англ.) — Сравнение LLDP-MED и CDP на сайте Cisco.
„ LLDP tutorial (http://www.commsdesign.com/design_corner/showArticle.jhtml?
articleID=59200019) (англ.) — Описание протокола LLDP и вариантов его
использования.

Материалы по сетевым устройствам ProCurve на Xgu.ru


„ ProCurve Security
„ ProCurve Router
„ ProCurve NAC 800

Источник — «http://xgu.ru/wiki/LLDP»
Категории: Автор Наташа Самойленко | ProCurve

„ Последнее изменение этой страницы: 09:55, 14 июля 2009.

http://xgu.ru/wiki/LLDP 11.09.2009