问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

LLDP协议详解:如何获取网络拓扑信息

创作时间:
作者:
@小白创作中心

LLDP协议详解:如何获取网络拓扑信息

引用
1
来源
1.
https://www.cnblogs.com/liulianzhen99/articles/18001560

LLDP(链路层发现协议)是一种用于网络设备间信息通告的协议,主要用于获取网络拓扑和相关管理配置信息。它是一个二层协议,通过将设备的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/Value),并封装在LLDPDU(链路层发现协议数据单元)中,发送给接入同一个局域网络的其他设备。

LLDP协议的工作模式

LLDP协议有四种工作模式:

  • TxRx:既发送也接收LLDP帧
  • Tx:只发送不接收LLDP帧
  • Rx:只接收不发送LLDP帧
  • Disable:既不发送也不接收

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 数据报文中。

获取lldp邻居信息

通过lldptool

Linux提供了一个工具 lldptool 来查询和管理lldp信息。在安装了lldptool 相关工具的服务器上,我们可以获取到该服务器的物理拓扑信息:连接的交换机和交换机的相关端口信息。

通过原始套接字,抓取lldp数据帧

当然除了使用lldptool 工具来获取拓扑 信息,还可以自己通过抓取lldp 报文来分析相关的TLV信息,进而获取相连的邻居信息。

下面是一个通过原始套接字抓取的lldp 信息:

可以看到,列表中的每一项均为,key,value的 元组形式,其中key表示的就是TLV type,value就是该type的所表示的具体信息,当前是以二进制的形式,需要将二进制解码为字符串,就可以得到与lldptool 一样的拓扑信息。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号