We often use LLDP (Link Layer Discovery Protocol) to find out which switches are uplinked to other switches. Each switch sends identification packets to the opposing switch identifying its name and the power number it is broadcasting from.
Juniper EX Example
user@core1> show lldp neighbors
Local Interface Parent Interface Chassis Id Port info System Name
ge-2/0/7.0 - 00:26:f2:50:85:c0 47 data_sw1
ge-2/0/14.0 ae15.0 00:26:f5:b1:3d:40 1 data_sw2
ge-2/0/2.0 ae9.0 b4:39:d7:89:48:40 1 pub_sw1
ge-1/0/12.0 ae31.0 b4:39:d3:1a:2c:c0 1 pub_sw2
ge-2/0/12.0 ae31.0 b4:39:d2:1a:2c:c0 2 pub_sw2
Makes it a little simpler to audit the wire maps. I wondered if it would be possible to have servers broadcast as well.
Turns out they can. RHEL6 ships with lldpd already ready to go. Just install the package and start the daemon. We are running CentOS 5 still, and I wasn’t able to find a recent package for that. Eventually I found a src RPM for lldpd 0.4.2 and just updated it. You can find the updated version here.
HP Procurve Example
SW2# show lldp info remote
LLDP Remote Devices Information
LocalPort | ChassisId PortId PortDescr SysName
--------- + ------------------------- ------ --------- ----------------------
2 | 50 c5 8f b7 33 c0 36 vme.0 pub-sw1
19 | 78 2b cf 16 14 f0 78 ... eth2 cache-1.example.com
20 | 78 2b cf 15 a0 2f 78 ... eth2 web-3.example.com
21 | 78 2b cf 16 7c 24 78 ... eth2 web-2.example.com
22 | 78 2b cf 15 bf 9e 78 ... eth2 web-1.example.com
You can query LLDP info manually as noted above, or you can get it via SNMP MIB: lldpRemoteSystemsData 1.0.8802.1.1.2.1.4. Interestingly it looks like you might be able to get remote IP information this way. The lldpd daemon also supports CDP for Cisco environments and a few other features that we don’t use. Windows hosts can broadcast the same data using the haneWIN LLDP Agent. Adding LLDP support is a simple add to your Puppet or Chef recipes, and makes a handy backup to manual wiremaps that your network team will appreciate.

Leave a comment