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.