lldpd is a lldp daemon for GNU/Linux and implements both reception and sending. It supports both LLDP and LLDP-MED (contributed by Michael Hanig). It also implements an SNMP subagent for net-snmp to get local and remote LLDP information. The LLDP MIB is partially implemented but the most useful tables are here.
lldpd supports bridge, vlan and bonding. bonding need to be done on real physical devices, not on bridges, vlans, etc. However, vlans can be mapped on the bonding device. You can bridge vlan but not add vlans on bridges. More complex setups may give false results.
A small utility, lldpctl allows to query information collected through the command line.
lldpd also implements CDP (Cisco Discovery Protocol), FDP (Foundry Discovery Protocol), SONMP (Nortel Discovery Protocol) and EDP (Extreme Discovery Protocol). However, recent versions of IOS should support LLDP and most Extreme stuff support LLDP. When a EDP, CDP or SONMP frame is received on a given interface, lldpd starts sending EDP, CDP or SONMP frame on this interface. Informations collected through EDP/CDP/FDP/SONMP are integrated with other informations and can be queried with lldpctl or through SNMP.
With the help of lldpd, you can get a map of your network. You may also want to look at Wiremaps which is a web application that helps you to see what is connected to where.