在Linux上使用LLDP,自动发现互联设备

LLDP简介

链路层发现协议(Link Layer Discovery Protocol,LLDP)是一种数据链路层协议。它提供了一种标准的链路层发现方式,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息组织成不同的 TLV,并封装在 LLDP DU 中发布给自己的远端设备,本地设备将收到的远端设备信息以标准MIB的形式保存起来。

简单说来,LLDP是一种邻居发现协议,通过它可以通告和发现直连的远端设备,主要用于维护和诊断等。

Linux LLDP实现过程

Linux上一般通过lldpad和lldpd两种软件来实现,其中CentOS中默认集成lldpad软件包,这里主要通过这个来进行展示。

lldpad安装、启动

$ yum install -y lldpad $ systemctl start lldpad

初始化配置

先设置lldptool的工作模式,通过发送和接收LLDP帧和 络交换机建立邻居关系,注意这里使用的interface是eno1,具体要根据环境情况自行调整:

$ lldptool set-lldp -i eno1 adminStatus=rxtx

四种工作模式:

TxRx:既发送也接收LLDP 帧

Tx:只发送不接收LLDP 帧

Rx:只接收不发送LLDP 帧

Disable:既不发送也不接收

接下来就可以在主机端查询上l连交换机的具体信息了:

$ lldptool -tni eno1Chassis ID TLV MAC: 50:98:b8:c1:xx:xxPort ID TLV Ifname: GigabitEthernet1/0/21Time to Live TLV 121Port Description TLV to node01System Name TLV TEST-Switch-01……

这里看到,服务器连接到了TEST-Switch-01这台交换机,接口是GigabitEthernet1/0/21,很管用~

那么在交换机侧能看到什么呢

<TEST-Switch-01> dis lldp neighbor-information list LocalIf        Nbr chassis ID      Nbr port ID           Nbr system name GE1/0/21   2c44-fd7b-xxxx    2c44-fd7b-xxxx      ……

只能看到G1/0/21口连接了一块 卡,MAC地址是2c44-fd7b-xxxx,这是服务器eno1的mac地址,其它信息并没有。

继续调整主机侧发送的LLDP信息

增加发送sysName、sysDesc、portDesc TLV,这基本能满足日常需求了

$ lldptool -T -i eno1 -V sysName enableTx=yes $ lldptool -T -i eno1 -V sysDesc enableTx=yes$ lldptool -T -i eno1 -V portDesc enableTx=yes

查看交换机侧收到的LLDP信息:

<TEST-Switch-01> dis lldp neighbor-information list LocalIf        Nbr chassis ID      Nbr port ID           Nbr system name GE1/0/21   2c44-fd7b-xxxx    2c44-fd7b-xxxx      node01……

能看到服务器主机名node01~

看详细的

能看到主机名、接口和系统信息,大功告成~

补充点其它信息,比较枯燥,了解即可

LLDP 文收发机制

LLDP 文发送机制: 设备周期性地向邻居设备发送LLDP 文。如果设备的本地配置发生变化则立即发送LLDP 文,以将本地信息的变化情况尽快通知给邻居设备。为了防止本地信息的频繁变化而引起LLDP 文的大量发送,每发送一个LLDP 文后都需延迟一段时间后再继续发送下一个 文。

LLDP 文接收机制: 设备会对收到的LLDP 文及其携带的TLV进行有效性检查,通过检查后再将邻居信息保存到本地设备,并根据LLDPDU 文中TLV携带的TTL值设置邻居信息在本地设备的老化时间。如果接收到的LLDPDU中的TTL值等于零,将立刻老化掉该邻居信息。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月9日
下一篇 2022年10月9日

相关推荐