Az LLDP és SNMP egy nagy káosz

Küzdök egy hálózat monitorozó/nyilvántartó programmal: https://github.com/csikfer/lanview2
Ennek egyik modulja felderíti (vagy inkább felderítené) a hálózati topológiát az SNMP/LLDP protokollok segítségével. SNMP-n keresztül lekérdezi a switch-eket, és megkísérli értelmezni az LLDP "info"-kat.
Elvileg az LLDP protokoll egyszerű lehetne mint a faék, de valószínűleg nem ez volt a cél. A protokoll ugyan nem túl bonyolult, de maximálisan támogatja, hogy mindenki azt küldjön amit akar, és úgy értelmezze ahogy csak akarja. És ezt a fantasztikus, kihagyhatatlan lehetőséget nem is hagyja ki senki.
A portok azonosítására az ifIndex és az ifDescr alapján lehetséges az SNMP-ben. Ezt így közvetlenül szinte senki nem küldi el.
A PeoCurve switch-ek elküldik ezeket, de ez a protokoll definíció alapján nem egyértelmű, csak ha detektáltuk hogy ez egy ProCurve Switch
A ProCurve Web management switch-eknél már nem így van. Ráadásul a portokat újra indexelték.(A lehetőség definíció szerint adott, csak tudnám kinek jó ez).
Kiolvashatók az LLDP szerinti indexek, de az IfDescr-et ebben a táblában a gyártótól függően hol névnek, hol descriptornak hívják, vagy éppen nem ezt adják meg, hanem a MAC-et (Van, hogy egyik portot a descriptor, másikat a MAC-el azonosítja pl. volt 3COM most HP switch).
A Windows egy külön kategória. Implementálták a protokollt, pont úgy, ahogyan azt Ők szokták. Semmilyen információt nem találtam, hogy lehetne konfigurálni. Csak annyi tudható meg egy Windows-ról, hogy mi a MAC-címe, két mező küld, mindkettő a port MAC, minden más mező üres.
Windows Server esetén sem találtam semmilyen infót, azon kívül, hogy nem működik, de még annyira sem mint Windows munkaálomásóknál. (Árnyalja a dolgot, hogy az LLDP csak a trunk portra engedélyezhető, aminek nem biztos, hogy van értelme, a trunk tagjaira ( a fizikai interfészekre) viszont nem mertem engedélyezni, mert pampog miatta, és nem lenne népszerű akció, ha bedönteném a Windows Cluster-t.

Már kezdtem abban a hiú ábrándban ringatni magam, hogy megküzdöttem a problémával, legalábbis a rendelkezésemre álló eszközök esetén, de tévedtem. Tartogattak számomra egy újabb fícsört: néha hülyeségeket is kapok. A programban millió ellenőrzés van, és mindent naplóz. Eszerint nem tud azonosítani egy távoli eszközt, mert az IP cím, és a MAC cím nem ugyan annak az eszköznek a címe. Ha lekérdezem az "show lldp info remote-device" -t:

LLDP Remote Devices Information

LocalPort | ChassisId PortId PortDescr SysName
--------- + ------------------------- ------ --------- ----------------------
1 | 00 21 f7 df 21 00 119 E23 D4R-SW0
2 | 00 21 f7 df 21 00 120 E24 D4R-SW0
4 | 90 1b 0e 69 a7 e2 90 ... eth0 kkfk-d154-csfli
14 | 00 1f 28 ee c6 00 26 26 DF47I-SW
15 | 00 1f 28 ee c6 00 25 25 DF47I-SW
16 | f0 62 81 e2 7c 00 26 26 df47d-sw
17 | 00 1f 28 ee a8 c0 26 26 DF47F-SW
18 | 00 1f fe b7 bc 00 26 26 D41R-SW
19 | 00 1f fe b7 bc 00 25 25 D41R-SW
19 | K159-07225 eth1
21 | 00 21 f7 df 21 00 117 E21 D4R-SW0
22 | 00 21 f7 df 21 00 118 E22 D4R-SW0
23 | 44 31 92 27 80 30 Gig... Gigabi... E3R-SW0
24 | 44 31 92 27 80 30 Gig... Gigabi... E3R-SW0

És tényleg, a LocalIndex=19, az két sor, és két különböző eszközt azonosít, a második sor fals, az a D41R-SW másik portján lóg, és nem ezen a switch-en. A program számít arra, hogy egy eszközről az infó nem feltétlenül egy sorban jelenik meg (pl. a K159-07225 -ről a K41R-SW -en amire valóban csatlakozik, két sor fog vonatkozni, és a kettő együtt azonosítja ezt a HP AP-t).
Ja, most pont nem így van, általában a HP AP-król két sor szokott lenni, de a második sor valahogy át transzportált a másik switch-re.

Szóval van egy olyan sanda gyanúm, hogy a legtöbb gyártó számára az SNMP és azzal kapcsolatos protokollok nem jelentenek mást, mint egy pipát a műszaki leírásban.
Az a pipa akkor is jól mutat, ha az egész egy nagy rakás trágya.

Hozzászólások

igy jar aki HP switcheket hasznal :))

Neked ebből csak az jött le, hogy csak a HP switch-ekkel van baj?
Amúgy a ProCurve switch-ek (nem a Web-es) küldik a legegyszeribben értelmezhető infót magukról (mint távoli eszköz). Igaz a fenti hibát is egy ProCurve switch produkálja (mint lokál eszköz).
Amit a Windows alkotott ez ügyben az is egy szánalom (a speckóban egy pipához elég).

Alapvetően nem akarok ellent mondani, vagy védeni a HP-t, mert láttam tőlük igen érdekes dolgokat. Lassan 10 éve admisztrálok túlnyomó többségben HP eszközöket.
De itt nem egészen arról van szó, hogy ezt a HP elbaszta. Inkább arról, hogy aki az LLDP-t vagy az SNMP-t kitalálta, annak a tökére kéne lépni, és (abbszolúte csak pedagógiai jelleggel) hanyatt lökni. El vannak bonyolítva, hatalmas szabadságot adnak a szabvány értelmezésében, szinte lehetetlen értelmezni az egészet, anélkül, hogy ismernénk a gyártó általi éppen ennél a típusnál mit hogyan gondolt. A MIB fájlok ugyan olvashatóak, értelmezhetőek ember és gép számára is, de egyik szempontból sem optimálisak. Aki egy MIB fájlon elmegy az nem is kocka, inkább hiperkocka. A hivatkozások legfeljebb azokon segít, akik fejből fújják az összes ide vonatkozó ajánlást, csak ezekre azoknak nincs szüksége.
Ennek az egésznek a káosz jellege akkor érzékelhető teljes mivoltában, ha vegyes eszközkészlet van, Ha minden eszköz pl. Cisco, akkor valószínűleg fel sem tűnik. Nekem sem lenne semmi problémám, ha mindegyik switch ProCurve menedzselt switch lenne, észre sem venném, hogy mindenki máshogy értelmezi a szabványt ill. ajánlásokat. De egyfelől szerettem volna minnél több infót begyüjteni, nem csak switch-ekről, másrészt sajnos olcsóbb eszközök felé kellet nyitnom, mivel jól teljesítő országunk, jól teljesítő kormánya úgy határozott, hogy ha egy informatikai eszköz 200eFt nál drágább, akkor azt csak a Miniszterelnök Nertárs személyesen engedélyezheti (és bár engedélyezheti, de nem nagyon szokta). Ja, és ettől függetlenül is egyre több pénz folyik az oktatásba, mint tudjuk. Tehát annak is örüljünk, hogy vannak switch-ek és nem a markomban kel széthordani a biteket.
És nem utolsó sorban: nem mindegy, hogyan, mire használod az LLDP-t. Ha van egy programod, ami már sikeresen kibogozta az őskáoszt, akkor könnyen vered a melledet. Egy LLDP riport értelmezése személy szerint nekem sem szokott problémát okozni, de sajnos jelenleg még egy nálam butább intelligenciát sem tudok leprogramozni.