]>
Commit | Line | Data |
---|---|---|
43c02e7b VB |
1 | lldpd: implementation of IEEE 802.1ab (LLDP) |
2 | -------------------------------------------- | |
3 | ||
f0c42642 VB |
4 | https://trac.luffy.cx/lldpd/ |
5 | ||
43c02e7b VB |
6 | LLDP (Link Layer Discovery Protocol) is an industry standard protocol |
7 | designed to supplant proprietary Link-Layer protocols such as | |
8 | Extreme's EDP (Extreme Discovery Protocol) and CDP (Cisco Discovery | |
9 | Protocol). The goal of LLDP is to provide an inter-vendor compatible | |
10 | mechanism to deliver Link-Layer notifications to adjacent network | |
11 | devices. | |
12 | ||
13 | lldpd implements both reception and sending. It also implements an | |
14 | SNMP subagent for net-snmp to get local and remote LLDP | |
15 | information. The LLDP MIB is partially implemented but the most useful | |
b193e97e | 16 | tables are here. lldpd also partially implements LLDP-MED. |
43c02e7b VB |
17 | |
18 | lldpd supports bridge, vlan and bonding. bonding need to be done on | |
19 | real physical devices, not on bridges, vlans, etc. However, vlans can | |
20 | be mapped on the bonding device. You can bridge vlan but not add vlans | |
21 | on bridges. More complex setups may give false results. | |
22 | ||
52ac3f37 VB |
23 | To compile lldpd, use the following: |
24 | ./configure | |
25 | make | |
26 | sudo make install | |
27 | ||
28 | If it complains about a missing agent/struct.h, your installation of | |
45444847 VB |
29 | Net-SNMP is incomplete. The easiest way to fix this is to provide an |
30 | empty struct.h: | |
31 | touch src/struct.h | |
52ac3f37 | 32 | |
35097709 VB |
33 | If you are missing some headers or if some headers are incorrect |
34 | (if_vlan.h and if_bonding.h on RHEL 2.1 for example), you can copy | |
35 | some more current version (for example from Debian Lenny or from | |
36 | Fedora) in some directory like "extra-headers/": | |
37 | - ./extra-headers/linux/if_vlan.h | |
38 | - ./extra-headers/linux/if_bonding.h | |
39 | Then, configure like this: | |
40 | ./configure CFLAGS="-Wall -I${PWD}/extra-headers" | |
41 | This has been tested with RHEL 2.1. | |
42 | ||
13dce469 VB |
43 | lldpd uses privilege separation to increase its security. Two |
44 | processes, one running as root and doing minimal stuff and the other | |
45 | running as an unprivileged user into a chroot doing most of the stuff, | |
46 | are cooperating. You need to create a user called "_lldpd" in a group | |
47 | "_lldpd" (this can be change with ./configure). You also need to | |
48 | create an empty directory "/var/run/lldpd" (it needs to be owned by | |
49 | root, not "_lldpd"!). | |
50 | ||
33aced7a VB |
51 | lldpctl allows to query information collected through the command |
52 | line. If you don't want to run it as root, just install it setuid or | |
53 | setgid _lldpd. | |
43c02e7b | 54 | |
031118c4 VB |
55 | lldpd also implements CDP (Cisco Discovery Protocol), FDP (Foundry |
56 | Discovery Protocol), SONMP (Nortel Discovery Protocol) and EDP | |
57 | (Extreme Discovery Protocol). However, recent versions of IOS should | |
58 | support LLDP and most Extreme stuff support LLDP. When a EDP, CDP or | |
59 | SONMP frame is received on a given interface, lldpd starts sending | |
60 | EDP, CDP, FDP or SONMP frame on this interface. Informations collected | |
61 | through EDP/CDP/FDP/SONMP are integrated with other informations and | |
62 | can be queried with lldpctl or through SNMP. | |
43c02e7b VB |
63 | |
64 | For bonding, you need 2.6.24 (in previous version, PACKET_ORIGDEV | |
65 | affected only non multicast packets). See: | |
66 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=80feaacb8a6400a9540a961b6743c69a5896b937 | |
67 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=8032b46489e50ef8f3992159abd0349b5b8e476c | |
68 | ||
69 | Otherwise, real device will be choosen randomly. | |
70 | ||
71 | On 2.6.27, we are able to receive packets on real interface for bonded | |
72 | devices. This allows to get neighbor information on active/backup | |
73 | bonds. Without the 2.6.27, lldpd won't receive any information on | |
74 | inactive slaves. Here are the patchs (thanks to Joe Eykholt): | |
75 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0d7a3681232f545c6a59f77e60f7667673ef0e93 | |
76 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cc9bd5cebc0825e0fabc0186ab85806a0891104f | |
77 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f982307f22db96201e41540295f24e8dcc10c78f | |
78 | ||
79 | More information: | |
80 | http://en.wikipedia.org/wiki/LLDP | |
81 | http://standards.ieee.org/getieee802/download/802.1AB-2005.pdf | |
82 | http://wiki.wireshark.org/LinkLayerDiscoveryProtocol | |
83 | ||
84 | lldpd is distributed under the following license: | |
85 | * Permission to use, copy, modify, and distribute this software for any | |
86 | * purpose with or without fee is hereby granted, provided that the above | |
87 | * copyright notice and this permission notice appear in all copies. | |
88 | * | |
89 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
90 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
91 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
92 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
93 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
94 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
95 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
96 | ||
97 | OpenLLDP is another implementation of LLDP. It supports several OS | |
98 | (Windows, Mac OS X, *BSD) and LLDP-MED extensions but does not include | |
99 | an SNMP subagent or the support for CDP/SONMP. | |
100 | http://openlldp.sourceforge.net/ |