Академический Документы
Профессиональный Документы
Культура Документы
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) — протокол канального уровня, который позволяет
сетевым устройствам анонсировать в сеть информацию о себе и о своих возможностях, а
также собирать эту информацию о соседних устройствах.
Содержание
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
Описание протокола
Каждое устройство, на котором включен LLDP, отправляет информацию о себе соседям
независимо от того, отправляет ли сосед информацию о себе. При обмене сообщениями
LLDP, не используется механизм запрос/ответ.
Каждое устройство хранит информацию о соседях в MIB. Поэтому эта информация может
использоваться различными управляющими хостами с помощью протокола SNMP.
Например, ProCurve Manager использует информацию LLDP для построения топологии сети и
сбора инвентарной информации.
Принципы работы
Сообщения
LLDP
инкапсулируются в Ethernet-кадр и передаются через все активные линки.
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 3 of 20
Для LLDP
зарезервирован
multicast MAC-
адрес —
LLDP передает информацию в сообщениях, которые называются LLDP Data Unit (LLDPDU).
Type — описывает тип информации, которая передается этой частью сообщения (7 бит);
Length — размер поля Value (9 бит);
Value — описывает определенную характеристику устройства.
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, например:
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 4 of 20
Management Address :
Информация о соседях
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 5 of 20
Информация о соседях:
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
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
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 6 of 20
Настройки LLDP
Отключение LLDP:
Изменение интервалов
Transmit Interval
Настройка transmit interval (из-за используемой команды называется также refresh interval):
Time-to-Live
refresh-interval * holdtime-multiplier
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 секундам.
Интервал может быть изменен с помощью управляющего хоста SNMP (NMS) или с помощью
команды setmib.
Reinit Interval
Reinit Interval — минимальное время, которое порт должен подождать прежде чем он
инициализируется снова после выключения LLDP, за которым следует изменение режима
передачи сообщений LLDP. По умолчанию — 2 секунды.
Notification Interval
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 8 of 20
Параметры команды:
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.
Эта команда не позволяет назначить адрес полученный по DHCP или адрес, который
не назначен статически в VLAN на коммутаторе.
Просмотр информации о том, какой адрес этот коммутатор анонсирует как управляющий:
Management Address :
Type:ipv4
Address:192.168.25.101
.....
sw4(config)# sh lldp i r 24
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
Информация о настройках LLDP на интерфейсе, в том числе какие TLV отправляются (на
коммутаторе с поддержкой LLDP-MED):
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
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 интерфейсе сейчас соседа нет, но статистика о пакетах осталась):
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
DAEMON_ARGS="-x -c -s -e"
%# /etc/init.d/lldpd start
$ 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
-------------------------------------------------------------------------------
# sh lldp i r
Виден её MAC-адрес, имя хоста, а также интерфейс, которым хост подключен к коммутатору.
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 13 of 20
# sh lldp i r 1
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
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]
LLDP в Windows
Для того чтобы хосты Windows также могли использовать LLDP, необходимо установить
LLDP-агент. Например, haneWIN LLDP Agent (http://www.hanewin.net/lldp-e.htm). Этот агент
платный, однако в течении 30дневного периода его можно потестировать бесплатно.
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 14 of 20
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
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 15 of 20
Address : 192.168.25.1
Вот пример простого скрипта, который обходит коммутаторы по 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
# sh lldp i l
Management Address :
Type:ipv4
Address:192.168.25.101
=cut
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 "};"
Использование:
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 17 of 20
Подробнее о программе:
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
Для того чтобы LLDP-MED анонсировал в TLV информацию о VLAN, должен быть создан
voice VLAN и порт, на котором находится IP-телефон должен быть тегированным в этом
VLAN.
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 19 of 20
sw5400(config)# sh vlans
Обязательные TLV
Для работы LLDP-MED на коммутаторе обязательно должны быть включены такие TVL (они
включены по умолчанию):
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:
http://xgu.ru/wiki/LLDP 11.09.2009
LLDP — Xgu.ru Page 20 of 20
Дополнительная информация
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 и вариантов его
использования.
Источник — «http://xgu.ru/wiki/LLDP»
Категории: Автор Наташа Самойленко | ProCurve
http://xgu.ru/wiki/LLDP 11.09.2009