LLDP用于发现该局域网内所有网络设备,探测网络拓扑。下面将简要介绍下LLDP协议,以及针对目前主流存在的LLDP开源软件进行分析
LLDP协议
LLDP相关软件
目前本人已知的开源LLDP软件包括:
1、Ubuntu中的lldpd(https://github.com/vincentbernat/lldpd)
2、Centos中的lldpad(https://github.com/jrfastab/lldpad)
3、Open lldp(https://github.com/intel/openlldp)
这三款软件中,在github上看,还有在维护的就是lldpd了,所以将lldpd作为LLDP协议的试验软件,下面就将介绍如何在Centos下安装lldpd(本人的开发/测试环境是Centos7)
下载相关软件及其依赖
首先,下载lldpd和libevent(https://github.com/libevent/libevent) 的源码(安装编译lldpd的时候需要libevent库),我下载的lldpd-1.0.5,依赖libevent-2.0.22
这里下载zip或者git clone都可以
git clone --branch 1.0.5 https://github.com/vincentbernat/lldpd.git
git clone --branch release-2.0.22-stable https://github.com/libevent/libevent.git
编译安装libevent
下面先编译安装libevent(libevent不指定路径的话,默认安装到/usr/local/lib下)
./configure
make
make install
配置环境变量
因为lldpd的configure是通过pkg-config,来检测系统是否含有相关依赖库的,所以在安装完libevent后,还需要配置下pkg-config的环境变量
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
pkg-config --cflags libevent#检查一下,看下pkg-config是否找到了libevent
编译安装lldpd
最后编译安装lldpd
./autogen.sh
./configure --enable-privsep=no #如果libevent有问题,check libevent会提示
make
make install
最后在创建lldp指定的存放unix socket文件的路径
mkdir -p /usr/local/var/run/
以上,便是lldpd的编译安装步骤(编译安装时注意lldpd的configure提示即可),接下来将介绍下lldpd的使用
lldpd的使用
lldpd -d#测试下程序是否可以正常启动
systemctl start lldpd.service#若可以正常启动,则使用systemctl启动lldpd
#启动后,可使用tcpdump抓取lldp数据包(在eth0口,每30s即可抓取到一个本机发出的lldp数据包)
tcpdump -e -x -i eth0 ether dst 01:80:c2:00:00:0e -nn
#还可以使用lldpcli查看本机维护的邻居表
lldpcli show neighbors
#输出json格式的邻居表
lldpcli show neighbors -f json