Обнаружение топологии по LLDP
-
Вроде сделал, можно пробовать: https://www.netxms.org/download/rc/netxms-1.2.3-rc1.tar.gz
-
Собрал. Запустилось, но крэшится :-[
[07-Aug-2012 10:36:14] Switch forwarding database retrieved for node Majskaja_8_ p1 [1555]
[07-Aug-2012 10:36:14] LLDP: collecting topology information for node Majskaja_8 _p1 [1555]
Ошибка сегментированияПопробую базу пересоздать с нуля, у меня там порядка 700 свитчей
Заведу пока небольшую подсеть.Кстати, не поделитесь debian/rules-ом, чтобы в deb-ы сборку скрутить грамотно?
-
-
А можно под gdb запустить и прислать backtrace?
-
Обязательно нужно! Вот что вышло:
[07-Aug-2012 12:21:09] LLDP: collecting topology information for node Bondarenko_23_p4 [143]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb08aab70 (LWP 10172)]
0xb7eb41a6 in LookupInterfaceDescription (snmpVersion=1, var=0x809d5a0, transport=0x81101c0, arg=0x8121198) at lldp.cpp:93
93 if (SnmpEnumerate(snmp->getSnmpVersion(), snmp, _T(".1.0.8802.1.1.2.1.3.7.1.3"), PortIdLookupHandler, pc, FALSE) != SNMP_ERR_SUCCESS) -
-
Собственно, бэктрейс

(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 -
Это уже с новым lldp.cpp?
-
-
Я не знаю к сожалению что такое debian/rules
Я собираю деб файлы "в лоб", вот так: https://svn.netxms.org/public/netxms/trunk/packages/linux/debian/README. Все скрипты и .control файлы здесь: https://svn.netxms.org/public/netxms/trunk/packages/linux/debian. Подозреваю, что должен быть более правильный способ
Но нет времени разбиратся в этом... -
-
Первое наблюдение - дискавер по 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 -
А что у этих свитчей под .1.3.6.1.2.1.2.2?
-
-
А как выглядят успешный и неуспешный topology poll?
-
Успешный:
[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)
-
А что под .1.3.6.1.2.1.2.2 у свитчей, подключенных к тем, где не проходит полл, Bondarenko_23_p4 например?
-
А я же по нему и гонял, Bondarenko_23
В аттаче тут https://www.netxms.org/forum/oe-oo/oaee-tooo-o-lldp/?action=dlattach;attach=875Хм, некоторые свитчи 1228 ME в сетке стали показывать соседей....
Я возьму таймаут, пока потестирую, а завтра, если не заработает, вернемся к вопросу. -
В-общем, такие результаты. Выяснилось, что разные модели д-линков плохо понимают друг друга.

DES-1228ME, DES-3028 - прекрасно видят друг друга, но не видят свитчи других моделей, например 3526 и 3550.
Соответственно, 35ХХ - не видят других моделей.DEG-3200-28 - друг на друга не тестировал, ибо мало их в сети, но другие модели тоже не видят.
Дескрипшены и ИД портов - на разных моделях выглядят по-разному

Виктор, если осталось желание допилить д-линки, могу скинуть выхлопы snmpwalk по всем моделям что есть у меня в сети, скажите какие нужны OID-ы.
-
Да, я думаю стоит доделать. Меня интересуют OID'ы .1.3.6.1.2.1.1, .1.3.6.1.2.1.2.2, .1.0.8802.1.1.2.1.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login