一、协议简介
为什么会出现LLDP?
随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。
LLDP(Link Layer Discovery Protocol,链路层发现协议)就是用于这个目的的协议。
它提供了一种标准的链路层发现方式,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协议数据单元)中发布给与自己直连的邻居,邻居收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。
二、基本概念
LLDP报文封装有两种格式,一是ethernet II另外一个是SNAP。
网络协议之LLDP_第1张图片
Destination MAC address:目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。
Source MAC address:源MAC地址,为端口MAC地址或设备桥MAC地址(如果有端口地址则使用端口MAC地址,否则使用设备桥MAC地址)。
Type:报文类型,为0x88CC。
Data:数据,为LLDPDU。
FCS:帧检验序列。

网络协议之LLDP_第2张图片
Destination MAC address:目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。
Source MAC address:源MAC地址,为端口MAC地址或设备桥MAC地址(如果有端口地址则使用端口MAC地址,否则使用设备桥MAC地址)。
Type:报文类型,为0xAAAA-0300-0000-88CC。
Data:数据,为LLDPDU。
FCS:帧检验序列
关于Ethernet帧格式的发展与种类之间的区别后面再细说。

LLDPDU
网络协议之LLDP
必须携带chassisID,port id,ttl,和end这四种tlv,其余为optional tlv可选的。

网络协议之LLDP_第3张图片

除了以上基本的TLV,还有一些为了增强网络管理功能的TLV
网络协议之LLDP_第4张图片
网络协议之LLDP_第5张图片
网络协议之LLDP_第6张图片
说明:LLDP-MED TLV是为VoIP(Voice over IP,在IP上传送语音)提供了许多高级的应用,包括基本配置、网络策略配置、地址信息以及目录管理等。

三、工作机制

  1. LLDP的工作模式
    LLDP有以下四种工作模式:
    TxRx:既发送也接收LLDP报文。
    Tx:只发送不接收LLDP报文。
    Rx:只接收不发送LLDP报文。
    Disable:既不发送也不接收LLDP报文。

当端口的LLDP工作模式发生变化时,端口将对协议状态机进行初始化操作。为了避免端口工作模式频繁改变而导致端口不断执行初始化操作,可配置端口初始化延迟时间,当端口工作模式改变时延迟一段时间再执行初始化操作。

  1. LLDP报文的发送机制
    当端口工作在TxRx或Tx模式时,设备会周期性地向邻居设备发送LLDP报文。如果设备的本地配置发生变化则立即发送LLDP报文,以将本地信息的变化情况尽快通知给邻居设备。但为了防止本地信息的频繁变化而引起LLDP报文的大量发送,每发送一个LLDP报文后都需延迟一段时间后再继续发送下一个报文。

当设备的工作模式由Disable/Rx切换为TxRx/Tx,或者发现了新的邻居设备(即收到一个新的LLDP报文且本地尚未保存发送该报文设备的信息)时,该设备将自动启用快速发送机制,即将LLDP报文的发送周期缩短为1秒,并连续发送指定数量的LLDP报文后再恢复为正常的发送周期。

  1. LLDP报文的接收机制
    当端口工作在TxRx或Rx模式时,设备会对收到的LLDP报文及其携带的TLV进行有效性检查,通过检查后再将邻居信息保存到本地,并根据TTL(Time To Live,生存时间) TLV中TTL的值来设置邻居信息在本地设备上的老化时间,若该值为零,则立刻老化该邻居信息。

四、配置(HCL)
有很多可以仿真网络设备的软件,如Cisco packet tracker,h3c的HCL,华为的eNSP。我这里使用的是HCL。可以去h3c官网获取现在最新的版本是v2.1.1,安装后我运行一直报错,查看log后显示“ImportError: DLL load failed: 操作系统无法运行 %1。”,后来觉得应该是之前系统升到了win10,果断右键兼容性运行win7,再运行就好了。
先部署3个交换机
网络协议之LLDP_第7张图片
双击设备的图标会进入命令视图的窗口。
在系统视图下全局开启lldp,然后查看,一般默认都是开启的。
网络协议之LLDP_第8张图片
lldp设置还有很多在具体的端口上进一步设置。
网络协议之LLDP_第9张图片
admin-status就是设置tx,rx,txrx的。
compliance就是与cisco CDP互通兼容的设置。
其他的内容有兴趣的可以实际操作试试。