【lldptool】LLDP工具|lldptool命令

目录

# lldptool描述

#LLDP协议

#安装lldp包

#守护进程及配置

#lldptool常用命令

#样例

语法

格式

command

options

 lldpad与lldpd的对比

LLDP的工作原理


# lldptool工具简介

可使用lldptool在操作系统里查看网口交换机连接的状态信息,

比如说:

和eth1网口相连的网络交换机的Vlan ID是多少?

网络交换机的名称和mac地址是什么?

网线插在网络交换机的哪个口上方?

交换机是否使能了PFC等

#LLDP协议


LLDP = Link Layer Discovery Protocol = 链路层发现协议,以太网交换机基本都内置该功能。

LLDP协议使一台设备可将其主要的 配置信息,发送给同一个局域网的其它设备。

lldptool是使用LLDP协议获取 设备的物理拓扑结构和 管理配置信息的工具。

#安装lldp包

yum install lldpad -y
启动lldpad 服务
systemctl start lldpad

client <-→server 模式

lldptool是client,lldpad 进程是server,它们之间通过收发LLDPDU (LLDP数据单元,可理解为报文)协商。

#守护进程及配置

1、首先确保交换机上已经启用lldp协议。

2、待安装完软件之后默认配置文件是没有的,当启动lldp守护进程时自动生成。

# lldpad –d    或 /etc/init.d/lldpad start

默认的配置文件存放路径:/var/lib/lldpad/lldpad.conf

#lldptool常用命令

(常用选项:-t、 获取tlv获取指定接口的TLV信息;-T、 设置tlv,设置指定接口的TLV信息;-i [ifname] 网口名,如eth0;-V[tlvid],指定TLV标识符)

##查询

加-i 指定网口,不加-i 就是对所有网口。

ethx=ens1f0

lldptool -t -n -i ${ethx} 查看端口所连接详细信息(链接哪个交换机等)

lldptool -l -i ${ethx} adminStatus 查询网口eth3的LLDP状态

lldptool -S -i ${ethx}  adminStatus 查询网口eth3的LLDP统计

lldptool -t -i ${ethx}  查询已经传过来的给eth3用的TLV (TLV 可理解为信息段)

lldptool -t -n -i ${ethx}  查询eth3接收到的邻居(neighbor)的TLV (TLV 可理解为信息段)

--信息太多时,可以选择只显示某TLV 段(-V):lldptool -t -n -i eth3 -V sysDesc    查询eth3的邻居的sysDesc  段的信息

lldptool -T -i ${ethx} -V portDesc  enableTx=yes   #让lldp server 把portDesc信息段放入LLDPDU中(每次查询,lldp server会返回LLDPDU报文)

IEEE/CEE/CIN  DCBX   协议版本,默认DCBX   (lldptool-dcbx(8) —https://manpages.debian.org/testing/lldpad/lldptool-dcbx.8.en.html

lldptool -t -i ${ethx} -V PFC

在返回的结果中,可以看到“IEEE 8021QAZ”,说明主机该接口和对端DCBX协商用的是IEEE 协议版本:

[root@master02 ~]# lldptool -t -i ${ethx} -V PFC
IEEE 8021QAZ PFC TLV
         Willing: yes
         MACsec Bypass Capable: no
         PFC capable traffic classes: 8
         PFC enabled: none

##设置

ethtool --set-priv-flags ens5f0 fw-lldp-agent off      设置端口的私有属性
lldptool -Ti ens5f0 -V PFC willing=no enabled=0     (如下信息,端口有多个TLV,设置端口的PFC TLV的willing为no enabled为0)

[root@master03 ~]# lldptool -t -i ${INTERFACE} 
……
Port ID TLV
        MAC: b4:96:91:c1:aa:02
IEEE 8021QAZ ETS Configuration TLV
         Willing: yes
         CBS: not supported
         MAX_TCS: 8
         PRIO_MAP: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 
         TC Bandwidth: 0% 0% 0% 0% 0% 0% 0% 0% 
         TSA_MAP: 0:strict 1:strict 2:strict 3:strict 4:strict 5:strict 6:strict 7:strict 
IEEE 8021QAZ ETS Recommendation TLV
         PRIO_MAP:  0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 
         TC Bandwidth: 0% 0% 0% 0% 0% 0% 0% 0% 
         TSA_MAP: 0:strict 1:strict 2:strict 3:strict 4:strict 5:strict 6:strict 7:strict 
IEEE 8021QAZ PFC TLV
         Willing: yes
         MACsec Bypass Capable: no
         PFC capable traffic classes: 8
         PFC enabled: none
End of LLDPDU TLV

设置PFC:

lldptool -T -i <ethX> -V PFC enabled=x,x,x,x,x,x,x,x
如:lldptool -T -i <ethX> -V PFC enabled=1,2,4

查看PFC:
lldptool -t -i <ethX> -V PFC

关闭所有prio的PFC
lldptool -T -i <ethX> -V PFC enabled=none


关闭willing(不从交换同步设置)
lldptool -Ti ens5f0 -V PFC willing=no enabled=0

ethtool -a ens5f0
lldpad -d
ethtool --set-priv-flags ens5f0 fw-lldp-agent off
lldptool -Ti ens5f0 -V PFC willing=no enabled=0
lldptool -Ti ens5f0 -V ETS-CFG willing=no up2tc=0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0 tsa=0:ets,1:strict,2:strict,3:strict,4:strict,5:strict,6:strict,7:strict        

tcbw=100,0,0,0,0,0,0,0

lldptool set-lldp -i $i adminStatus=rxtx   【配置LLDP模式】

LLDP协议有4种工作模式:

TxRx:既发送也接收LLDP报文。

Tx:只发送不接收LLDP报文。

Rx:只接收不发送LLDP报文。

Disable:既不发送也不接收LLDP报文。

(rxtx  配置LLDP模式为既发送也接收LLDP 帧这样就和网络交换机建立了邻居关系,接下来就可以查询连接的交换机信息了)

lldptool -T -i $i -V  sysName enableTx=yes; 【sysName TLV信息段的发送 使能】#让lldp server 把sysName 信息段放入返回给客户端LLDPDU报文中(每次查询,lldp server会返回LLDPDU报文)

lldptool -T -i $i -V  portDesc enableTx=yes ; 【portDesc TLV信息段的发送 使能】#让lldp server 把portDesc 信息段放入返回给客户端LLDPDU报文中(每次查询,lldp server会返回LLDPDU报文)

lldptool -T -i $i -V  sysDesc enableTx=yes;  【sysDesc TLV信息段的发送 使能】#让lldp server 把sysDesc 信息段放入返回给客户端LLDPDU报文中(每次查询,lldp server会返回LLDPDU报文)

TLV:(Type/Length/Value)

portDesc     : Port Description TLV

sysName      : System Name TLV

sysDesc      : System Description TLV

-

#样例

查看端口所连接详细信息:lldptool -t -n -i eth1     

查看端口所连接详细信息:lldptool -t -n -i eth1     (n 既 neighbor)

#为网口eth2配置LLDP的收发工作模式(Configure LLDP adminStatus to Receive and Transmit for interface eth2)
lldptool -L -i eth2 adminStatus=rxtx


#让所有网口都不可用LLDP(Disable the LLDP adminStatus for all interfaces ) 
lldptool set-lldp adminStatus=disabled

#查询网口eth3的LLDP状态(Query the LLDP adminStatus for interface eth3)  
lldptool -l -i eth3 adminStatus


#查询网口eth3的统计信息(Query the LLDP statistics for interface eth3 )
lldptool -S -i eth3 adminStatus


#查询为给定接口传输的本地(Query the local TLVs which are being transmitted for a given interface: )
lldptool -t -i eth3

#查询给定接口上收到的接收邻居TLV(Query the received neighbor TLVs received on a given interface: )
lldptool -t -n -i eth3

#查询从邻居给定接口上的接收的系统描述TLV的值:Query the value of the System Description TLV as received from the neighbor on a given interface:
lldptool -t -n -i eth3 -V sysDesc

#禁用给定接口的IEEE 802.3 MAC/PHY配置状态TLV的传输:Disable transmit of the IEEE 802.3 MAC/PHY Configuration Status TLV for a given interface:
lldptool -T -i eth3 -V macPhyCfg enableTx=no
 

#启用所有接口的端口的“Description TLV”的传输:Enable transmit of the Port Description TLV for all interfaces:
lldptool -T -V portDesc enableTx=yes
 

#查询给定接口的"端口描述TLV传输"的设定值:Query value of the transmit setting for the Port Description TLV for a given interface:
lldptool -t -V portDesc -c enableTx
 

#在eth3上设置一个 管理地址的TLV 以携带IPv4地址192.168.10.10(Set a Management Address TLV on eth3 to carry IPv4 address 192.168.10.10)
lldptool -T -i eth3 -V mngAddr ipv4=192.168.10.10

#在eth3上设置一个 管理地址的TLV 以携带IPv4地址192.168.10.10(Set a Management Address TLV on eth3 to carry IPv6 address ::192.168.10.10)
lldptool -T -i eth3 -V mngAddr ipv6=::192.168.10.10

#获取eth3管理地址TLV里配置IPv4地址(Get the configured IPv4 address for the Management Address TLV on eth3)
lldptool -t -i eth3 -V mngAddr -c ipv4

#获取eth3管理地址TLV里的所有信息(Get all configured attributes for the Management Address TLV on eth3)
lldptool -t -i eth3 -V mngAddr -c

#查询lldpad重新启动时将使用的当前DCBX模式。(这不是持久设置)Query the current DCBX mode that will be used if lldpad is restarted. (this is not a persistent setting)
lldptool -t -i eth3 -V IEEE-DCBX -c mode

#在下一次lldpad重启后,将DCBX模式重置为“自动”(以IEEE DCBX模式启动)Reset the DCBX mode to be 'auto' (start in IEEE DCBX mode) after the next lldpad restart
lldptool -T -i eth3 -V IEEE-DCBX mode=reset

#启用接口eth4的Edge Virtual Bridging TLV传输(Enable transmit of the Edge Virtual Bridging TLV for interface eth4)
lldptool -i eth4 -T -V evbCfg enableTx=yes

#配置EVB TLV以设置reflective relay 和RTE、ECP和VDP功能(Configure EVB TLV to set reflective relay and RTE,ECP and VDP capabilities)
lldptool -T -i eth4 -V evbCfg fmode=reflectiverelay
 

#启用接口eth4的VDP传输(Enable transmit of the VDP for interface eth4)
lldptool -i eth4 -T -V vdp enableTx=yes

#上面的命令的等价表达
  

#为网口eth2配置LLDP的收发工作模式
lldptool -L -i eth2 adminStatus=rxtx       

lldptool set-lldp -i eth2 adminStatus=rxtx

#查询网口eth3的LLDP状态 
lldptool -l -i eth3 adminStatus

lldptool get-lldp -i eth3 adminStatus


#查询网口eth3的统计信息
lldptool -S -i eth3 adminStatus 

lldptool stats -i eth3 adminStatus


#查询为给定接口传输的本地
lldptool -t -i eth3    

lldptool get-tlv -i eth3

#查询给定接口上收到的接收邻居TLV
lldptool -t -n -i eth3 

lldptool get-tlv -n -i eth3

#查询从邻居给定接口上的接收的系统描述TLV的值:
lldptool -t -n -i eth3 -V sysDesc  

lldptool get-tlv -n -i eth3 -V 6

#禁用给定接口的IEEE 802.3 MAC/PHY配置状态TLV的传输:
lldptool -T -i eth3 -V macPhyCfg enableTx=no 

lldptool set-tlv -i eth3 -V 0x120f01 enableTx=no

#启用所有接口的端口的“Description TLV”的传输:
lldptool -T -V portDesc enableTx=yes
lldptool set-tlv -V 4 enableTx=yes

#查询给定接口的"端口描述TLV传输"的设定值:
lldptool -t -V portDesc -c enableTx
lldptool get-tlv -V 4 -c enableTx

#配置EVB TLV以设置reflective relay 和RTE、ECP和VDP功能

lldptool -T -i eth4 -V evbCfg fmode=reflectiverelay
lldptool -T -i eth4 -V evbCfg capabilities=rte,ecp,vdp


使用lldptool查看网口与交换机连接状态:

```
[root@wow ~]# lldptool -t -n -i eth0                    
Chassis ID TLV
        MAC: 48:xx:xx:xx:xx:51  #mac地址
Port ID TLV
        Ifname: GE1/0/1    #网线插在交换机上的端口位置
Time to Live TLV
System Name TLV
        xx-xx-CE5850-xxxxx  #交换机设备名
System Description TLV
        Huawei Versatile Routing Platform Software
VRP (R) software, Version 8.150 (CE5855EI V200R002C50SPC800)
Copyright (C) 2012-2017 Huawei Technologies Co., Ltd.
HUAWEI CE5855-xxxx-xxx  #华为的交换机

System Capabilities TLV
        System capabilities:  Bridge, Router
        Enabled capabilities: Bridge, Router
Management Address TLV
        IPv4: xx.xxx.xxx.xx  #ip地址
        Ifindex: 4
        OID: +[)
Port VLAN ID TLV
        PVID: 
Port and Protocol VLAN ID TLV
        PVID: 0, not supported, not enabled
VLAN Name TLV
        VID 3652: Name VLAN3652
MAC/PHY Configuration Status TLV
        Auto-negotiation supported and enabled
        PMD auto-negotiation capabilities: 0xxxxx
        MAU type: 1000 BaseXFD
Link Aggregation TLV
        Aggregation capable
        Currently not aggregated
        Aggregated Port ID: 0
Maximum Frame Size TLV
End of LLDPDU TLV
```

```

使能传输

ethx=ens1f0

[root@master02 ~]# lldptool -t -i ${ethx} -V portDesc       #使能传输之前,portDesc信息没有在LLDPDU (lldp数据单元,可以理解为协商的包文)中,此时lldp server给lldp客户端lldptool返回portDesc段的信息
[root@master02 ~]# lldptool -T -i ${ethx} -V portDesc  enableTx=yes
enableTx = yes
[root@master02 ~]# lldptool -t -i ${ethx} -V portDesc     #使能传输之后,此时lldp server给lldp客户端lldptool返回portDesc段的信息
Port Description TLV
        Interface   4 as ens1f0

```

语法

格式

lldptool    <command>   [options]   [argument]

command

license
显示许可证信息
-h、 帮助
显示使用信息
-v、 版本
显示版本信息
-S、 统计数据
获取指定接口的LLDP统计信息
-t、 获取tlv
获取指定接口的TLV信息
-T、 设置tlv
设置指定接口的TLV信息
-l、 获取lldp
获取指定接口的LLDP参数
-五十、 设置lldp
为指定接口设置LLDP参数
-p、 ping(ping)
显示正在运行的lldpad进程的进程标识符
-q、 退出
退出交互模式


options


-i [ifname]

网口名,如eth0

-V[tlvid]

指定TLV标识符
tlvid是用于识别特定LLDP TLV的整数值。tlvid值是不等于127(组织特定类型)的类型的Type值。对于组织特定的TLV,tlvid是由3字节OUI和1字节子类型表示的值,其中子类型是tlvid的最低阶字节。
tlvid可以作为数值(例如10或0xa)输入,或者对于支持的TLV,可以作为关键字输入。查看lldptool帮助输出以查看支持的TLV关键字列表。

-n
"neighbor" option for commands which can use it (e.g. get-tlv)

-g[bridge scope]


指定此命令操作的网桥作用域。允许设置和查询所有LLDP TLV模块的“nearest_bridge”(简称:“nb”)、“nearest_customer_bridge”(“ncb”)和“nearest_nontpmr_bridge(“nntpmrb”)组mac地址。配置保存在lldpad.conf中的独立部分中。如果未提供网桥作用域,则默认为“最近的网桥”以保持先前的行为。


-c<参数列表>

TLV查询的“config”选项。指示查询针对指定TLV的配置元素。参数列表指定要查询的特定元素。如果未列出任何参数,则返回TLV的所有配置元素。

-r(r)
显示原始客户端界面消息

-R(R)
仅显示原始客户端界面消息

ARGUMENTS

本节列出了可用于LLDP参数管理的参数。还描述了基本TLV(非组织特定TLV)的论点。有关其他lldptool手册页的参考信息,请参阅See ORO部分,其中包含各种组织特定TLV的用法详细信息和参数。

adminStatus

get-lldp/set-lldp命令的参数。为指定接口配置LLDP adminStatus参数。有效值为:disabled、rx、tx、rxtx

enableTx

get-tlv/set-tlv命令的参数。可以针对指定TLV的每个接口应用。有效值为:yes,no。如果DCBX TLV enableTx设置为no,则所有DCB功能TLV DCBX通告设置也将关闭。将enableTx设置为yes将启用DCBX播发设置。

ipv4

与管理地址tlv相关的get-tlv/set-tlv命令的参数。get命令将检索配置的值。设置值采用IPv4地址的形式:A.B.C.D

ipv6

与管理地址tlv相关的get-tlv/set-tlv命令的参数。get命令将检索配置的值。设置值采用IPv6地址的形式:1111:2222:3333:4444:5555:66666:7777:8888和各种速记变体。

报错记录

1 Failed to connect to lldpad - clif_open: Connection refused

connect: Connection refused
Failed to connect to lldpad - clif_open: Connection refused

原因:lldpad 还没有启动

处理方法:

lldpad -d Or
service lldpad start

2 lldptool: command not found

原因:还没有安装lldpad

处理方法:

yum install -y lldpad

 lldpad与lldpd的对比

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

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

  1. lldpd比较新。

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

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

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

  1. lldpd使用方便。

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


关于更多lldpd见链接:https://www.jianshu.com/p/1c4aca526f1f
 

LLDP的工作原理

LLDP协议,从本质上来讲就是一个信息发现和通告协议。设备中的LLDP实体维护了两个MIB(Management Information Base) 库,一个是local system MIB,用来维护本地设备的相关信息;一个是remote system MIB,用来维护远端设备的相关信息。

LLDP 通过与相关的MIB库交互来初始化并维护本地MIB,并经本地的相关信息通告出去,同时接收其他设备的通告信息,并将其更新到remote system MIB。通过这种方式,就可以获取设备的邻居信息。用户就可以使用这两个MIB 库来完成自己的需求。

LLDP 报文格式

封装有LLDPDU (lldp 协议的协议数据单元)的报文,称之为LLDP帧。其封装格式有两种:Ethernet II 和 SNAP(Subnetwork Access Protocol,子网访问协议)。我们经常使用的就是以太帧,所以这儿就重点说一下基于Ethernet II 的LLDP报文。

Destination MAC address:目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。

Source MAC address:源MAC地址,为端口MAC地址或设备桥MAC地址(如果有端口地址则使用端口MAC地址,否则使用设备桥MAC地址)

Type:报文类型,固定为0x88CC。

Data:数据,为LLDPDU

FCS:帧检验序列

其中LLDPDU 就是封装在LLDP报文数据部分的数据单元。只不过在组成LLDPDU之前,设备会先将本地的相关信息封装成TLV,然后再将多个TLV组合成一个LLDPDU,封装在LLDP报文的数据部分进行传送。

LLDPDU 格式

每个LLDPDU 最多可以携带28种TLV,LLDP报文预订,Chasis ID TLV, Port ID TLV, TTL TLV 和 End TLV 这四种是必须携带的,其余的TLV则是可选的。

下面是一个基本TLV的list:

TLV 格式

TLV是组成LLDPDU的单元,其基本格式如下:

其中TLV Type 和 TLV Info String Length 称为TLV的header, 剩下的信息就是TLV的数据部分,根据TLV Length字段的值,就可以拿到具体的TLV数据。

其中 TLV Type的定义和分配如下表:

其中type 0-8为基本的TLV集合,其中Mandatory 则为必须的TLV,必须包含在lldp 数据报文中。

使用例子

ethtool -a ens5f0
lldpad -d
ethtool --set-priv-flags ens5f0 fw-lldp-agent off
lldptool -Ti ens5f0 -V PFC willing=no enabled=0
lldptool -Ti ens5f0 -V ETS-CFG willing=no up2tc=0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0 tsa=0:ets,1:strict,2:strict,3:strict,4:strict,5:strict,6:strict,7:strict         tcbw=100,0,0,0,0,0,0,0
 

IEEE and CEE 

MyMellanoxGen2

type-length-values (TLVs) (IEEE and CEE examples)

IEEE 格式用4个不同的帧分别表示: ETS configuration, ETS Recommendation, PFC, and Application priority.

CEE 格式用一个 TLV 帧: for PFC and Application priority, and does not include ETS. See attached.

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值