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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • MLP综述

    MLP综述MLP整体思路反向传播算法梯度下降算法

  • 问答:程序员到底是一群怎样的存在?[通俗易懂]

    点击上方☝,轻松关注!及时获取有趣有料的文章话不多说,反正就是很牛逼的存在!可以接受反驳,但就是牛逼~下面来看看我的一些朋友是怎么说的吧~火星????哥就是苦逼的码农加班狗,35岁后面临…

  • wing是什么_最短路径floyd算法例题

    wing是什么_最短路径floyd算法例题给定一个由 n 行数字组成的数字梯形如下图所示。梯形的第一行有 m 个数字。从梯形的顶部的 m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径。规则 1:从梯形的顶至底的 m 条路径互不相交。规则 2:从梯形的顶至底的 m 条路径仅在数字结点处相交。规则 3:从梯形的顶至底的 m 条路径允许在数字结点相交或边相交。对于给定的数字梯形,分别按照规则 1,规则 2,和规则 3 计算出从梯形的顶至底的 m 条路径,使这 m 条路径经过的数字总和最大。输入格式第 1

  • yum安装telnet命令_centos 安装telnet

    yum安装telnet命令_centos 安装telnet简介Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登…

  • intelli idea2021激活码【在线注册码/序列号/破解码】

    intelli idea2021激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • cpickle支持的python版本_Python中cPickle

    cpickle支持的python版本_Python中cPicklecPickle模块:在python中,一般可以使用pickle类来进行python对象序列化,而cPickle提供了一个更快速简单的接口,如python文档所说:“cPickle-Afasterpickle”。cPickle可以对任意一种类型的python对象进行序列化操作,比如:list,dict,甚至是一个类的对象等。而所谓的序列化,是为了能完整地保存并能够完全可逆的恢复。在cPic…

发表回复

您的电子邮箱地址不会被公开。

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