CentOS7配置LLDP服务

CentOS7配置LLDP服务作者:BK运维团队成员官方链接:https://vincentbernat.github.io/lldpd/usage.html官方图片:什么是lldpdLLDP可以让你准确的知道服务器所连接的交换机端口号。LLDP是一种工业标准协议,用于取代EDP或CDP等专用链路层协议。LLDP的目标是提供一个inter-vendor兼容机制,向相邻网络设备发送链路层通知。lldpd是一个L…

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

作者: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测试机
测试机器是有一块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测试机
将结果处理成json格式,只需要在命令后加上:lldpcli show neighbors -f json
来源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测试机

(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测试机

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

6、相关脚本

#!/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测试机

文章引用

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL练习题(经典50题)

    MySQL练习题(经典50题)MySQL练习题(经典50题)–建表–学生表CREATETABLEStudent(s_idVARCHAR(20),s_nameVARCHAR(20)NOTNULLDEFAULT‘’,s_birthVARCHAR(20)NOTNULLDEFAULT‘’,s_sexVARCHAR(10)NOTNULLDEFAULT‘’,PRIMARYKEY(s_id));–课程表CREATETABLECourse(c_idVARCHAR(20),c_nam

    2026年1月19日
    5
  • 两个数组拼接

    两个数组拼接方法一:vara1=[‘aa’,12,13];vara2=[21,22,23];varnewA=a1.concat(a2)方法二:vara1=[‘aa’,12,13];vara2=[21,22,23];varnewA=a1.join()+’,’+a2.join();方法三:vara1=[‘aa’,12,13];vara2…

    2022年5月20日
    46
  • java handlersocket_HandlerSocket java客户端「建议收藏」

    java handlersocket_HandlerSocket java客户端「建议收藏」MySQL中有个handlersocket,直接跳过数据库处理中的sql分析过程,直接调用存储引擎的接口,可以大幅度提升数据库的性能。我的测试中,使用handlersocket与sql,可以提升约3-5倍,在我的环境中单条“增删改查”可以达到2.5TPS左右,没有作者说得可以达到10万TPS。有一个hs4j的java客户端,但是有些功能没有完善,还有一个不太正常的现象,就是连接时间长了,就会断开,…

    2022年8月24日
    7
  • CDMA是什么意思_GPRS/CDMA

    CDMA是什么意思_GPRS/CDMA(1)2G网络:GSM(GlobalSystemForMobileCommunications)全球移动通信系统,GSM数字移动通信系统史源于欧洲,是欧洲电信标准组织制定的数字移动通信标准。它的空中接口采用时分多址技术。它是全球应用最广泛的移动电话标准。GSM较之它以前的标准最大的不同是它的信令和语音信道都是数字式的,因此GSM被看作是第二代(2G)移动电话系统。GSM数字…

    2022年9月27日
    3
  • platform device

    platform deviceplatformdevice================= 头文件:linux/platform_device.h  为什么使用platformdevice?————————–    从硬件的角度来说,集成在嵌入式芯片内部的外设离CPU最近,它们不依附于GPIO或者PCI,I2C此类的 总线,它们挂接在soc内存空

    2022年7月24日
    10
  • ffplay播放器移植VC的工程:ffplay for MFC[通俗易懂]

    ffplay播放器移植VC的工程:ffplay for MFC[通俗易懂]ffplay播放器移植VC的工程:ffplayforMFC本文介绍一个自己做的FFPLAY移植到VC下的开源工程:ffplayforMFC。本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继

    2022年6月24日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号