Обнаружение топологии по LLDP

Started by sabonez, August 02, 2012, 11:00:09 AM

Previous topic - Next topic

sabonez

Собственно, бэктрейс ;)

(gdb) backtrace
#0  0xb7eb41a6 in LookupInterfaceDescription (snmpVersion=1, var=0x8097e48, transport=0x80a0d28, arg=0x8110600) at lldp.cpp:93
#1  FindRemoteInterface (snmpVersion=1, var=0x8097e48, transport=0x80a0d28, arg=0x8110600) at lldp.cpp:156
#2  LLDPTopoHandler (snmpVersion=1, var=0x8097e48, transport=0x80a0d28, arg=0x8110600) at lldp.cpp:208
#3  0xb7f4689b in SnmpEnumerate (dwVersion=1, pTransport=0x80a0d28, szRootOid=0xb7f22d63 ".1.0.8802.1.1.2.1.4.1.1.5",
    pHandler=0xb7eb3b60 <LLDPTopoHandler>, pUserArg=0x8110600, bVerbose=0) at snmp.cpp:227
#4  0xb7ec735d in Node::CallSnmpEnumerate (this=0x80a04f0, pszRootOid=0xb7f22d63 ".1.0.8802.1.1.2.1.4.1.1.5", pHandler=0xb7eb3b60 <LLDPTopoHandler>,
    pArg=0x8110600) at node.cpp:3766
#5  0xb7eb3b0c in AddLLDPNeighbors (node=0x80a04f0, nbs=0x8110600) at lldp.cpp:261
#6  0xb7eb39fc in BuildLinkLayerNeighborList (node=0x80a04f0) at lln.cpp:96
#7  0xb7ece0a5 in Node::topologyPoll (this=0x80a04f0, pSession=0x0, dwRqId=0, nPoller=57) at node.cpp:4258
#8  0xb7ee09c6 in TopologyPoller (arg=0x39) at poll.cpp:560
#9  0xb7c4d955 in start_thread () from /lib/i686/cmov/libpthread.so.0
#10 0xb7a945ee in clone () from /lib/i686/cmov/libc.so.6

Victor Kirhenshtein


sabonez

Нет, старый.

Сейчас заработало! Огромное спасибо!  :D

Погоняю на боевой базе, на разных моделях д-линков. О результатах отпишусь.

debian/rules не выложите для сборки?

Victor Kirhenshtein

Я не знаю к сожалению что такое debian/rules :) Я собираю деб файлы "в лоб", вот так: https://svn.netxms.org/public/netxms/trunk/packages/linux/debian/README. Все скрипты и .control файлы здесь: https://svn.netxms.org/public/netxms/trunk/packages/linux/debian. Подозреваю, что должен быть более правильный способ :) Но нет времени разбиратся в этом...

sabonez

Отлично. Этого вполне достаточно для сборки.
Просто я не поискал как следует ))

Огромное вам спасибо!

sabonez

Первое наблюдение - дискавер по LLDP отлично работает с моделями, у которых Port Description вида "RMON Port 10 on Unit 1", но не работает с теми, у которых такое - "D-Link DES-1228/ME R2.00 Port 25". Подобное описание портов имеется у серий Gigabit- и Metro- Ethernet Switch.

Похоже писатели прошивок для d-link имеют своеобразное представление о стандартизации ;)

Вот snmpwalk с Metro-свитча DES-1228ME:

snmpwalk -v2c -c public 10.4.255.23 .1.0.8802.1.1.2.1.3

iso.0.8802.1.1.2.1.3.1.0 = INTEGER: 4
iso.0.8802.1.1.2.1.3.2.0 = Hex-STRING: 1C 7E E5 6F 2E 00
iso.0.8802.1.1.2.1.3.3.0 = STRING: "Bondarenko_23_p4"
iso.0.8802.1.1.2.1.3.4.0 = STRING: "Metro Ethernet Switch"
iso.0.8802.1.1.2.1.3.5.0 = STRING: "`"
iso.0.8802.1.1.2.1.3.6.0 = STRING: "`"
iso.0.8802.1.1.2.1.3.7.1.2.1 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.2 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.3 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.4 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.5 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.6 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.7 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.8 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.9 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.10 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.11 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.12 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.13 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.14 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.15 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.16 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.17 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.18 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.19 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.20 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.21 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.22 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.23 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.24 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.25 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.26 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.27 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.2.28 = INTEGER: 7
iso.0.8802.1.1.2.1.3.7.1.3.1 = STRING: "1/1"
iso.0.8802.1.1.2.1.3.7.1.3.2 = STRING: "1/2"
iso.0.8802.1.1.2.1.3.7.1.3.3 = STRING: "1/3"
iso.0.8802.1.1.2.1.3.7.1.3.4 = STRING: "1/4"
iso.0.8802.1.1.2.1.3.7.1.3.5 = STRING: "1/5"
iso.0.8802.1.1.2.1.3.7.1.3.6 = STRING: "1/6"
iso.0.8802.1.1.2.1.3.7.1.3.7 = STRING: "1/7"
iso.0.8802.1.1.2.1.3.7.1.3.8 = STRING: "1/8"
iso.0.8802.1.1.2.1.3.7.1.3.9 = STRING: "1/9"
iso.0.8802.1.1.2.1.3.7.1.3.10 = STRING: "1/10"
iso.0.8802.1.1.2.1.3.7.1.3.11 = STRING: "1/11"
iso.0.8802.1.1.2.1.3.7.1.3.12 = STRING: "1/12"
iso.0.8802.1.1.2.1.3.7.1.3.13 = STRING: "1/13"
iso.0.8802.1.1.2.1.3.7.1.3.14 = STRING: "1/14"
iso.0.8802.1.1.2.1.3.7.1.3.15 = STRING: "1/15"
iso.0.8802.1.1.2.1.3.7.1.3.16 = STRING: "1/16"
iso.0.8802.1.1.2.1.3.7.1.3.17 = STRING: "1/17"
iso.0.8802.1.1.2.1.3.7.1.3.18 = STRING: "1/18"
iso.0.8802.1.1.2.1.3.7.1.3.19 = STRING: "1/19"
iso.0.8802.1.1.2.1.3.7.1.3.20 = STRING: "1/20"
iso.0.8802.1.1.2.1.3.7.1.3.21 = STRING: "1/21"
iso.0.8802.1.1.2.1.3.7.1.3.22 = STRING: "1/22"
iso.0.8802.1.1.2.1.3.7.1.3.23 = STRING: "1/23"
iso.0.8802.1.1.2.1.3.7.1.3.24 = STRING: "1/24"
iso.0.8802.1.1.2.1.3.7.1.3.25 = STRING: "1/25"
iso.0.8802.1.1.2.1.3.7.1.3.26 = STRING: "1/26"
iso.0.8802.1.1.2.1.3.7.1.3.27 = STRING: "1/27"
iso.0.8802.1.1.2.1.3.7.1.3.28 = STRING: "1/28"
iso.0.8802.1.1.2.1.3.7.1.4.1 = STRING: "D-Link DES-1228/ME R2.00 Port 1"
iso.0.8802.1.1.2.1.3.7.1.4.2 = STRING: "D-Link DES-1228/ME R2.00 Port 2"
iso.0.8802.1.1.2.1.3.7.1.4.3 = STRING: "D-Link DES-1228/ME R2.00 Port 3"
iso.0.8802.1.1.2.1.3.7.1.4.4 = STRING: "D-Link DES-1228/ME R2.00 Port 4"
iso.0.8802.1.1.2.1.3.7.1.4.5 = STRING: "D-Link DES-1228/ME R2.00 Port 5"
iso.0.8802.1.1.2.1.3.7.1.4.6 = STRING: "D-Link DES-1228/ME R2.00 Port 6"
iso.0.8802.1.1.2.1.3.7.1.4.7 = STRING: "D-Link DES-1228/ME R2.00 Port 7"
iso.0.8802.1.1.2.1.3.7.1.4.8 = STRING: "D-Link DES-1228/ME R2.00 Port 8"
iso.0.8802.1.1.2.1.3.7.1.4.9 = STRING: "D-Link DES-1228/ME R2.00 Port 9"
iso.0.8802.1.1.2.1.3.7.1.4.10 = STRING: "D-Link DES-1228/ME R2.00 Port 10"
iso.0.8802.1.1.2.1.3.7.1.4.11 = STRING: "D-Link DES-1228/ME R2.00 Port 11"
iso.0.8802.1.1.2.1.3.7.1.4.12 = STRING: "D-Link DES-1228/ME R2.00 Port 12"
iso.0.8802.1.1.2.1.3.7.1.4.13 = STRING: "D-Link DES-1228/ME R2.00 Port 13"
iso.0.8802.1.1.2.1.3.7.1.4.14 = STRING: "D-Link DES-1228/ME R2.00 Port 14"
iso.0.8802.1.1.2.1.3.7.1.4.15 = STRING: "D-Link DES-1228/ME R2.00 Port 15"
iso.0.8802.1.1.2.1.3.7.1.4.16 = STRING: "D-Link DES-1228/ME R2.00 Port 16"
iso.0.8802.1.1.2.1.3.7.1.4.17 = STRING: "D-Link DES-1228/ME R2.00 Port 17"
iso.0.8802.1.1.2.1.3.7.1.4.18 = STRING: "D-Link DES-1228/ME R2.00 Port 18"
iso.0.8802.1.1.2.1.3.7.1.4.19 = STRING: "D-Link DES-1228/ME R2.00 Port 19"
iso.0.8802.1.1.2.1.3.7.1.4.20 = STRING: "D-Link DES-1228/ME R2.00 Port 20"
iso.0.8802.1.1.2.1.3.7.1.4.21 = STRING: "D-Link DES-1228/ME R2.00 Port 21"
iso.0.8802.1.1.2.1.3.7.1.4.22 = STRING: "D-Link DES-1228/ME R2.00 Port 22"
iso.0.8802.1.1.2.1.3.7.1.4.23 = STRING: "D-Link DES-1228/ME R2.00 Port 23"
iso.0.8802.1.1.2.1.3.7.1.4.24 = STRING: "D-Link DES-1228/ME R2.00 Port 24"
iso.0.8802.1.1.2.1.3.7.1.4.25 = STRING: "D-Link DES-1228/ME R2.00 Port 25"
iso.0.8802.1.1.2.1.3.7.1.4.26 = STRING: "D-Link DES-1228/ME R2.00 Port 26"
iso.0.8802.1.1.2.1.3.7.1.4.27 = STRING: "D-Link DES-1228/ME R2.00 Port 27"
iso.0.8802.1.1.2.1.3.7.1.4.28 = STRING: "D-Link DES-1228/ME R2.00 Port 28"
iso.0.8802.1.1.2.1.3.8.1.3.1.4.10.4.255.23 = INTEGER: 4
iso.0.8802.1.1.2.1.3.8.1.4.1.4.10.4.255.23 = INTEGER: 1
iso.0.8802.1.1.2.1.3.8.1.5.1.4.10.4.255.23 = INTEGER: 0
iso.0.8802.1.1.2.1.3.8.1.6.1.4.10.4.255.23 = OID: SNMPv2-SMI::enterprises.171.11.116.2

Victor Kirhenshtein

А что у этих свитчей под .1.3.6.1.2.1.2.2?

sabonez

Много всего ;)
ifDescr-ы такие же как я писал постом выше.
Прикрепил файлик с выхлопом

Victor Kirhenshtein

А как выглядят успешный и неуспешный topology poll?

sabonez

Успешный:

[07.08.12 16:25:09] **** Poll request sent to server ****
[07.08.12 16:25:09] Poll request accepted
[07.08.12 16:25:09] Starting topology poll for node Bondarenko_19_p7
[07.08.12 16:25:10] Switch forwarding database retrieved
[07.08.12 16:25:11] Link layer topology retrieved (1 connections found)
[07.08.12 16:25:11] Updating peer information on interfaces
[07.08.12 16:25:11] Link layer topology processed
[07.08.12 16:25:11]    Local interface 1/19 linked to remote interface Majskaja_8_p1:1/25
[07.08.12 16:25:11] VLAN list successfully retrieved from node
[07.08.12 16:25:11] Finished topology poll for node Bondarenko_19_p7
[07.08.12 16:25:11] **** Poll completed successfully ****

Неуспешный:
[07.08.12 16:25:13] **** Poll request sent to server ****
[07.08.12 16:25:13] Poll request accepted
[07.08.12 16:25:14] Starting topology poll for node Bondarenko_23_p4
[07.08.12 16:25:14] Switch forwarding database retrieved
[07.08.12 16:25:14] Link layer topology retrieved (0 connections found)
[07.08.12 16:25:14] Updating peer information on interfaces
[07.08.12 16:25:14] Finished topology poll for node Bondarenko_23_p4
[07.08.12 16:25:14] **** Poll completed successfully ****

[07.08.12 16:25:14] VLAN list successfully retrieved from node
[07.08.12 16:25:14] Link layer topology processed

Хотя, эти 2 свитча друг-друга "видят" по LLDP через Tools-Info-Topology table(LLDP)

Victor Kirhenshtein

А что под .1.3.6.1.2.1.2.2 у свитчей, подключенных к тем, где не проходит полл, Bondarenko_23_p4 например?

sabonez

#26
А я же по нему и гонял, Bondarenko_23
В аттаче тут https://www.netxms.org/forum/oe-oo/oaee-tooo-o-lldp/?action=dlattach;attach=875

Хм, некоторые свитчи 1228 ME в сетке стали показывать соседей....
Я возьму таймаут, пока потестирую, а завтра, если не заработает, вернемся к вопросу.

sabonez

В-общем, такие результаты. Выяснилось, что разные модели д-линков плохо понимают друг друга. ;)


DES-1228ME, DES-3028 - прекрасно видят друг друга, но не видят свитчи других моделей, например 3526 и 3550.
Соответственно, 35ХХ - не видят других моделей.

DEG-3200-28  - друг на друга не тестировал, ибо мало их в сети, но другие модели тоже не видят.

Дескрипшены и ИД портов - на разных моделях выглядят по-разному :)

Виктор, если осталось желание допилить д-линки, могу скинуть выхлопы snmpwalk по всем моделям что есть у меня в сети, скажите какие нужны OID-ы.


Victor Kirhenshtein

Да, я думаю стоит доделать. Меня интересуют OID'ы .1.3.6.1.2.1.1, .1.3.6.1.2.1.2.2, .1.0.8802.1.1.2.1.

sabonez

Итак, вот что получилось. По последнему oid-у д-линки нагенерили кучу бесполезной инфы, потому дампы такие большие ;)
DGS-3627 по последнему oid-у выдал ошибку, попробую поискать его родные mib-ы,там скорее всего у них нестандартно что-то, как это водится у д-линков.