LLDP is a wonderful protocol which paints a picture of datacenter topology. lldpd is a daemon to run on your servers to receive LLDP frames outputs network location and more. There’s also a recently patched lldp Ansible module.
Like all tools, using LLDP/lldpd has had some issues. Here’s the ones I’ve seen in practice, with diagnosis and resolution:
Switch isn’t configured to send LLDP frames
tcpdump -i eth0 -s 1500 -XX -c 1 'ether proto 0x88cc'
Switches will send the LLDP frames by default every 30s. The switchport’s configuration needs to enable LLDP.
Host isn’t reporting LLDP frames
Generally, this means lldpd isn’t running on the server. If the lldp frames are arriving (from the above tcpdump), but lldpctl will returns nothing.
lldpctl # returns nothing pgrep -f lldpd # returns nothing service lldpd restart
Be sure that the lldpd service is set to run at boot and take a look at configuration options.
NIC is dropping LLDP frame
By far the most frustrating- NIC firmware issues which can cause the NIC to drop lldp frames. (Page 10, item 14)
The way this one manifests:
- lldpctl reports nothing
- lldpd is running
- switch is configured to send LLDP frames
Run a packet capture on the switch to ensure that the LLDP frames are being sent to the port. If you’re able to see the frame go out on the wire and traffic is otherwise functioning normally to the host, the problem lies with the NIC.
The fix here was to apply the NIC firmware upgrade- after that, lldp was good to go!