前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7配置LLDP服务

CentOS7配置LLDP服务

作者头像
全栈程序员站长
发布2022-09-01 10:06:11
3K0
发布2022-09-01 10:06:11
举报

大家好,又见面了,我是你们的朋友全栈君。

作者:su-sys

官方链接: https://vincentbernat.github.io/lldpd/usage.html

官方图片:

来源官网
来源官网

什么是lldpd

LLDP 可以让你准确的知道服务器所连接的交换机端口号。

LLDP是一种工业标准协议,用于取代EDP或CDP等专用链路层协议。LLDP的目标是提供一个inter-vendor兼容机制,向相邻网络设备发送链路层通知。

lldpd是一个LLDP协议的一种实现,给各种Unixes使用。除此之外,它还支持一些专有协议。

lldpd和lldpad的比较

实现交换机端口的抓取,目前我知道的有两种工具,一种是lldpad,另一种是lldpd。

这两个工具做了一下对比,最终选择了lldpd。原因如下:

1.lldpd比较新

lldpad:https://github.com/jrfastab/lldpad

lldpd:https://github.com/vincentbernat/lldpd

通过对比可以看到lldpad最近一次更新,已经是5年前了。而lldpd的最近一次更新在本月。

2.lldpd使用方便

lldpd可以将输出的信息转化为json格式,非常方便使用。

操作前的准备

1、查看网卡类型

lspci |grep -i ether

网卡类型包括:82599ES 10-Gigabit,Broadcom,Intel Corporation I350,Mellanox,Intel X710 for 10GbE,……

其中需要注意的是X710网卡,因为网卡设置问题,会丢弃LLDP包,造成收集不到相关信息,因此需要做相应的配置,配置方式如下:

mount -t debugfs none /sys/kernel/debug

echo “lldp stop” > /sys/kernel/debug/i40e/xxxx:xx:xx:.x/command

umount /sys/kernel/debug

例:

来源BK测试机
来源BK测试机

测试机器是有一块X710网卡,按照命令分别设置两个端口的lldp stop ,关闭网卡的lldp包处理。

第一种方式:lldpd

1、软件lldpd和lldpcli

yum install lldpd -y

2、默认lldpad服务不需要再配置,默认配置可以满足需求

启动lldpd服务,并设置为开机启动

systemctl start lldpd.service

systemctl enable lldpd.service

3、服务启动后,相关信息可以通过如下命令获取

lldpcli show neighbors

来源BK测试机
来源BK测试机

将结果处理成json格式,只需要在命令后加上:lldpcli show neighbors -f json

来源BK测试机
来源BK测试机

4、输出的信息基本已经可以满足日常运维需求

第二种方式:lldpad

1、安装相关服务软件和工具

##软件lldpad和lldptool

yum install lldpad -y

2、默认lldpad服务不需要再配置,默认配置可以满足需求

启动lldpad服务,并设置为开机启动

systemctl start lldpad.service

systemctl enable lldpad.service

3、配置服务器端口用于接收和发送相关LLDP信息,包括端口,主机名,mac地址和ip地址

(1)查看系统本地网卡设备:

##因为网卡设备名称包含eth,eno,em,p1p1 ……,默认都是以e或者p开头

ls /sys/class/net/ |egrep ‘e|p’

来源BK测试机
来源BK测试机

(2)分别配置每个端口,以eno1为例,如下:

lldptool set-lldp -i eno1 adminStatus=rxtx

lldptool -T -i eno1 -V sysName enableTx=yes

lldptool -T -i eno1 -V portDesc enableTx=yes

lldptool -T -i eno1 -V sysDesc enableTx=yes

lldptool -T -i eno1 -V mngAddr enableTx=yes

##每个端口都配置的原因是防止已经down的端口遗漏掉,新部署服务器可以只配置up状态的接口,具体配置请根据实际需求配置。

4、完成端口配置后,相关信息可以通过如下命令获取

lldptool -t -n -i eno1

来源BK测试机
来源BK测试机

5、输出的信息基本已经可以满足日常运维需求

6、相关脚本

代码语言:javascript
复制
#!/bin/bash

function ins_lldp(){
#installation lldpad and lldptool
yum install -y lldpad & >/dev/null

#Start service
systemctl start lldpad.service

systemctl enable lldpad.service

#set dev
for dev in `ls /sys/class/net/ |egrep 'e|p'`
do
    echo "enabling lldp for interface: $dev"
    lldptool set-lldp -i $dev adminStatus=rxtx
    lldptool -T -i $dev -V sysName enableTx=yes
    lldptool -T -i $dev -V portDesc enableTx=yes
    lldptool -T -i $dev -V sysDesc enableTx=yes
    lldptool -T -i $dev -V mngAddr enableTx=yes
done
}

#show SW info
function show_info() {
    local se_dev=$1
    local ld_tool="lldptool -t -n -i $se_dev"
    local sw_mac=`$ld_tool |grep 'MAC:' |awk -F ': ' '{print $NF}'`
    local sw_If=`$ld_tool |grep 'Ifname:' |awk -F ': ' '{print $NF}'`
    local sw_name=`$ld_tool |grep 'System Name TLV' -A1 |tail -n1 |sed 's/\t//g'`
    local sw_ip=`$ld_tool |grep 'Management Address TLV' -A1 |tail -n1 |awk -F ': ' '{print $NF}' |sed 's/\t//g'`
    echo "se_dev: $se_dev
sw_name: $sw_name
sw_ip: $sw_ip
sw_mac: $sw_mac
sw_If: $sw_If"
}

function get_info() {
for up_dev in `ip a |grep 'state UP' |awk -F ': ' '{print $2}'`
do
    show_info $up_dev
done
}

function check_lldp() {
if [[ -n `lldptool -p` ]]; then
    echo "lldp install success"
fi
}

function main() {
if [[ $1 == "install" ]]; then
    if [[ -f "/var/lib/lldpad/lldpad.conf" ]]; then
        echo "lldp installed,exit!"
    else
        ins_lldp
        check_lldp
    fi
elif [[ $1 == "get" ]]; then
    get_info
else
    echo "install:install lldp
get:get lldp info"
fi
}
main "$@"

7、执行结果

来源BK测试机
来源BK测试机

文章引用

lldpad:https://github.com/jrfastab/lldpad lldpd:https://github.com/vincentbernat/lldpd 官方链接: https://vincentbernat.github.io/lldpd/usage.html

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140099.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是lldpd
  • lldpd和lldpad的比较
  • 操作前的准备
  • 第一种方式:lldpd
  • 第二种方式:lldpad
  • 文章引用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档