LLDP 简介
定义
LLDP(Link Layer Discovery Protocol,链路层发现协议)是 IEEE 802.1ab 中定义的第二层发现(Layer 2 Discovery)协议。
LLDP 提供了一种标准的链路层发现方式,可以将本端设备的主要能力、管理地址、设备标识、接口标识等信息封装到 LLDP 报文中传递给邻居节点,邻居节点在收到这些信息后将其以标准 MIB(Management Information Base,管理信息库)的形式保存起来,供 NMS(Network Management System,网络管理系统)查询及判断链路的通信状况。
目的
随着网络规模越来越大,网络设备种类繁多,并且各自的配置错综复杂,对网络管理能力的要求也越来越高。传统网络管理系统多数只能分析到三层网络拓扑结构,无法确定网络设备的详细拓扑信息、是否存在配置冲突等。因此需要有一个标准的二层信息交流协议。
LLDP 提供了一种标准的链路层发现方式。通过 LLDP 获取的设备二层信息能够快速获取相连设备的拓扑状态;显示出客户端、交换机、路由器、应用服务器以及网络服务器之间的路径;检测设备间的配置冲突、查询网络失败的原因。
用户可以通过使用网管系统,对支持运行 LLDP 协议的设备进行链路状态监控,在网络发生故障的时候快速进行故障定位。
通过在网络中部署 LLDP 协议,既能掌握更详细的网络拓扑信息以及网络拓扑变化信息,还能及时发现网络中实际存在的不合理的配置,这些信息有助于用户实时监控网络状态,有效提升网络的安全性和稳定性。
LLDP 基本原理
LLDP 可以将本地设备的信息发送给远端设备,本地设备将收到的远端设备信息以标准 MIB (Management Information Base,管理信息库) 的形式保存起来。
LLDP 协议规定设备的每个接口上都有四个 MIB 库,其中最主要的两个为 LLDP Local System MIB(LLDP 本地系统 MIB)和 LLDP Remote System MIB(LLDP 远端系统 MIB),分别存储着本端设备和邻居节点的状态信息,包括设备 ID、接口 ID、系统名称、系统描述、接口描述、设备能力、网络管理地址。
LLDP 基本原理如图所示

LLDP 基本实现原理如下:
-
LLDP 模块通过 LLDP 代理与设备上物理拓扑 MIB、实体 MIB、接口 MIB 以及其他 MIB 的交互,来更新自己的 LLDP 本地系统 MIB,以及本地设备自定义的 LLDP 扩展 MIB。
-
将本地设备信息封装成 LLDP 帧发送给远端设备。
-
接收远端设备发过来的 LLDP 帧,更新自己的 LLDP 远端系统 MIB,以及远端设备自定义的 LLDP 扩展 MIB。
通过 LLDP 代理收发 LLDP 帧,设备就很清楚地知道远端设备的信息,包括连接的是远端设备的哪个接口、远端设备的 MAC 地址等信息。
LLDP 代理主要完成如下工作:
-
维护 LLDP 本地系统 MIB 信息。
-
向邻居节点发送 LLDP 帧,通告本端设备的状态信息。
-
识别并解析收到的邻居节点发送的 LLDP 帧,维护 LLDP 远端系统 MIB 的信息。
-
LLDP 本地系统 MIB 或 LLDP 远端系统 MIB 的信息发生变化时,向网管发送 LLDP 告警。
LLDP 拓扑发现
在 DeviceA 和 DeviceB 已配置 LLDP 功能的情况下,介绍 LLDP 拓扑发现的实现过程。
LLDP 拓扑发现图

-
DeviceA 将本端的状态信息封装成 LLDP 报文,发送给邻居设备 DeviceB。
-
DeviceB 解析接收到的 LLDP 报文,并将该报文中的关于 DeviceA 的信息存储到设备上的远端系统 MIB 中,供 NMS 提取拓扑信息使用。
-
同样,DeviceB 也将本端的状态信息封装成 LLDP 报文发送给 DeviceA,DeviceA 解析接收到的 LLDP 报文,并将该报文中的关于 DeviceB 的信息存储到设备上的远端系统 MIB 中,供 NMS 提取拓扑信息使用。
-
NMS 通过与 DeviceA 和 DeviceB 交互 SNMP (Simple Network Management Protocol,简单网络管理协议)
报文,从两者的 MIB 库中提取本地信息和邻居信息并进行拓扑分析,最终发现整网的拓扑结构。
LLDP 报文格式
- 封装了 LLDP 数据单元 LLDPDU(LLDP Data Unit)的以太网报文称为 LLDP 报文。其封装格式有两种:Ethernet II 和 SNAP(Subnetwork Access Protocol,子网访问协议),目前设备支持的封装格式为 Ethernet II。
LLDP 报文格式如图所示

LLDP 报文中相关字段的解释如表所示
| 字段 | 说明 |
|---|---|
| Destination MAC address | 目的 MAC 地址,为固定的组播 MAC 地址 0x0180-C200-000E。 |
| Source MAC address | 源 MAC 地址,为接口 MAC 地址或设备桥 MAC 地址(如果有接口地址则使用接口 MAC 地址,否则使用设备桥 MAC 地址)。 |
| Type | 报文类型,固定为 0x88CC。 |
| LLDPDU | LLDP 数据单元,LLDP 信息交换的主体。 |
| FCS(Frame Check Sequence) | 帧校验序列。 |
LLDPDU
LLDPDU 是封装在 LLDP 报文中的数据单元。
组成 LLDPDU 之前,设备先将本地信息封装成 TLV(Type-Length-Value)格式,再由若干个 TLV 组合成一个 LLDPDU,封装在 LLDP 报文的数据部分进行传送。用户可以根据需要将多种不同的 TLV 组合到 LLDPDU 中,设备根据这些不同的 TLV 来通告自己的状态信息,并且学习邻居节点的状态信息。
LLDPDU 的结构如图所示

LLDP 协议规定每个 LLDPDU 共可携带 28 种 TLV,且每个 LLDPDU 固定以 Chassis ID TLV、Port ID TLV 和 Time to Live TLV 开始,以 End of LLDPDU TLV 为结束。其中 Chassis ID TLV、Port ID TLV 和 Time to Live TLV 为必选的 TLV,其他则为可选 TLV,用户可以根据需要自行决定是否要组合到 LLDPDU 中发送。
TLV
TLV 是组成 LLDPDU 的最小单元,表示一个对象的类型、长度和信息。
TLV 的结构如图所示

-
TLV Type 表示 TLV 的类型,它占 7 个 bits。每个 TLV 的类型值不同,比如 End of LLDPDU TLV 的类型值为 0,Chassis ID TLV 的类型值为 1 等。
-
TLV information string length 表示 TLV 内容的长度,它占 9 个 bit。
-
TLV information string 表示 TLV 的内容,最大支持 511bytes 长度的内容。
每个 TLV 代表设备的一种信息,例如设备 ID、接口 ID、管理地址等都各自对应 Chassis ID TLV、Port ID TLV、Management Address TLV 等固定的 TLV。
LLDP 可以封装的 TLV 类型包括基本 TLV、802.1 组织定义的 TLV、802.3 组织定义的 TLV。
-
基本 TLV:基本 TLV 是网络设备管理的一组基础 TLV。
-
基本 TLV 说明
| TLV 名称 | TLV 类型 | 说明 | 是否必须发布 |
|---|---|---|---|
| End of LLDPDU TLV | 0 | 标识 LLDPDU 结束。 | 是 |
| Chassis ID TLV | 1 | 标识发送设备的桥 MAC 地址。 | 是 |
| Port ID TLV | 2 | 标识 LLDPDU 发送端的接口。 | 是 |
| Time To Live TLV | 3 | 标识本设备信息在邻居节点上的存活时间。 | 是 |
| Port Description TLV | 4 | 标识以太网接口的描述信息。 | 否 |
| System Name TLV | 5 | 标识设备的名称。 | 否 |
| System Description TLV | 6 | 标识系统描述信息。 | 否 |
| System Capabilities TLV | 7 | 标识系统的主要功能以及有哪些主要功能被启用。 | 否 |
| Management Address TLV | 8 | 标识管理地址。 | 否 |
| Reserved | 9~126 | 保留,用作特殊用途。 | 否 |
- 组织定义 TLV:组织定义 TLV 是由标准组织定义的 TLV,主要包括 IEEE 802.1 组织定义的 TLV 和 IEEE 802.3 组织定义的 TLV,用于增强对网络设备的管理,可根据实际需要配置是否在 LLDPDU 中发送。
IEEE 802.1 组织定义的 TLV 说明
| TLV 名称 | TLV 类型 | 说明 |
|---|---|---|
| Reserved | 0 | 保留,用作特殊用途。 |
| Port And Protocol VLAN ID TLV | 1 | 标识接口的协议 VLANID。 |
| VLAN Name TLV | 3 | 标识接口 VLAN 名称。 |
| Protocol Identity TLV | 4 | 标识接口支持的协议类型。 |
| Reserved | 5~255 | 保留,用作特殊用途。 |
IEEE 802.3 组织定义的 TLV 说明
| TLV 名称 | TLV 类型 | 说明 |
|---|---|---|
| Reserved | 0 | 保留,用作特殊用途。 |
| MAC/PHY Configuration/Status TLV | 1 | 标识接口是否支持速率自动协商、是否已启用自动协商功能以及接口当前的速率和双工状态。 |
| Link Aggregation TLV | 3 | 标识接口是否支持链路聚合以及是否已启用链路聚合。 |
| Maximum Frame Size TLV | 4 | 标识接口支持的最大帧长度,取接口的最大传输单元 MTU(Max Transmission Unit)。 |
| Reserved | 5~255 | 保留,用作特殊用途。 |
LLDLLDP 四种工作模式
| 模式 | 工作行为 |
|---|---|
| Tx | 只发送 LLDP 报文 |
| Rx | 只接收 LLDP 报文 |
| Tx/Rx | 既发送也接收 LLDP 报文 |
| Disable | 既不发送也不接收 LLDP 报 |
LLDP 功能启用后,默认的工作模式为 Tx/Rx 模式。
说明
当接口的 LLDP 工作模式发生变化时,接口将对协议状态机进行初始化操作。为了避免接口工作模式频繁改变而导致接口不断执行初始化操作,设备支持配置接口初始化延迟时间,当接口工作模式改变时延迟一段时间再执行初始化操作。
下面介绍 LLDP 工作模式下,LLDP 报文的发送和接收机制。
-
LLDP 报文的发送机制
-
一般情况下,启用 LLDP 功能后,设备会周期性地向邻居节点发送 LLDP 报文。如果设备的本地配置发生变化,则立即发送 LLDP 报文,将本地信息的变化情况尽快通知给邻居节点。为了防止本地信息的频繁变化而引起 LLDP 报文的大量发送,设备支持配置接口发送 LLDP 报文的延迟时间,每发送一个 LLDP 报文后都延迟一段时间后再继续发送下一个报文。
当设备发现一个新邻居(即接收到一个新的 LLDP 报文且本地没有保存该报文的发送方设备的信息),或者设备的 LLDP 功能由打开状态变为关闭,或者设备的接口状态由 Down 变为 Up 的时候,为了让其他设备尽快发现本设备,设备支持快速发送机制,即将 LLDP 报文的发送周期缩短为 1 秒,并连续发送指定数量的 LLDP 报文后再恢复为正常的发送周期。
-
LLDP 报文的接收机制
-
设备收到 LLDP 报文时,会对报文及其携带的 TLV 信息进行有效性检查,通过有效性检查后,将邻居信息保存到本地设备,并根据 LLDPDU 中携带的 TTL(Time To Live,生存时间) TLV 值,设置邻居信息在本地设备的老化时间,如果接收到的 LLDPDU 中的 TTL 值等于零,将立刻老化掉该邻居信息。
LLDP 缺省配置
LLDP 常见参数的缺省配置如表所示
| 参数 | 缺省值 |
|---|---|
| LLDP 功能 | 全局未启用 |
| 在 LLDP 报文中发布的管理 IP 地址 | 自动获取管理 IP 地址,管理 IP 地址未绑定任何接口 |
| LLDP 允许发布的 TLV 类型 | 发布除 Protocol Identity TLV 外的所有类型的 TLV |
| 设备发送 LLDP 报文的周期 | 30 秒 |
| 设备发送 LLDP 报文的延迟时间 | 2 秒 |
| 设备本端状态信息在邻居节点中保持的时间倍数 | 4 |
| 接口的 LLDP 功能初始化的延迟时间 | 2 秒 |
| 设备向邻居节点快速发送 LLDP 报文的个数 | 4 |
| 设备发送 LLDP 邻居信息变化告警的延迟时间 | 5 秒 |
via: huawei
LLDP 协议
weixin_58670878 于 2023-06-26 19:56:32 发布
1. 什么是 LLDP
LLDP(Link Layer Discovery Protocol,链路层发现协议). 它可以将本端的设备管理的地址 设备标识 接口标识等构成不同的 TLV (Type/Length/Value,类型 / 长度 / 值 =750x) 将其封装在 LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协议数据单元)中发给与自己直连的邻居,邻居收到这些信息后将其以标准 MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。
2. switch LLDP 的四种工作模式
TxRx :既发送也接收 LLDPDU
Tx :只发送不接收 LLDPDU
Rx :只接收不发送 LLDPDU
Disable:既不发送也不接收 LLDPDU
3. LLDP 的报文格式(两种)

~
| Destination MAC address | 目的 MAC 地址,为固定的组播 MAC 地址 0x0180-C200-000E |
|---|---|
| Source MAC address | 源 MAC 地址,为端口 MAC 地址或设备桥 MAC 地址(如果有端口地址则使用端口 MAC 地址,否则使用设备桥 MAC 地址) |
| Type | 0x88CC(EthernetII) or 0xAAAA-0300-0000-88CC (SNAP =750x) |
| LLDPDU | LLDP 数据是一组 TLV, 每个 TLV 都代表一个信息 |
| FCS(Frame Check Sequence) | 帧校验序列。 |
4. LLDPDU
组成 LLDPDU 之前,设备先将本地信息封装成 TLV(Type-Length-Value)格式,再由若干个 TLV 组合成一个 LLDPDU 封装在 LLDP 报文的数据部分进行传送。

LLDP 协议规定每个 LLDPDU 共可携带 28 种 TLV,且每个 LLDPDU 固定以 Chassis ID
TLV、Port ID TLV 和 Time to Live TLV 开始,以 End of LLDPDU TLV 为结束,这四个
TLV 为必选的 TLV,其他则为可选 TLV.
5. TLV
TLV 是组成 LLDPDU 的最小单元,表示一个对象的类型、长度和信息。每个 TLV 代表设
备的一种信息,例如设备 ID、接口 ID、管理地址等都各自对应 Chassis ID TLV、Port ID
TLV、Management Address TLV 等固定的 TLV。

Type: 表示 TLV 的类型,它占 7 个 bits。每个 TLV 的类型值不同,比如 End of LLDPDU TLV 的类型值为 0,Chassis ID TLV 的类型值为 1 等。
information string length:表示 TLV 内容的长度,它占 9 个 bit。
information string:表示 TLV 的内容,最大支持 511bytes 长度的内容
比如下面,还有其他 TLV 类型,有 802.1 802.3 等,参考:华为文档

6. 工作原理
LLDP 和 MIB(Management Information Base,管理信息数据库)是密不可分的。LLDP 协议规定设备的每个接口上都有四个 MIB 库,其中最主要的两个为 LLDP Local System MIB(LLDP 本地 MIB 库)和 LLDP Remote System MIB(LLDP 远端 MIB 库),分别存储着本端设备和邻居节点的状态信息,包括设备 ID、接口 ID、系统名称、系统描述、接口描述、设备能力、网络管理地址。
LLDP 协议规定设备的每个接口上都有一个 LLDP Agent,主要维护以下
-
维护 LLDP 本地 MIB 的信息。
-
向邻居节点发送 LLDP 报文,通告本端设备的状态信息。
-
识别并解析收到的邻居节点发送的 LLDP 报文,维护 LLDP 远端 MIB 的信息。
-
LLDP 本地 MIB 或 LLDP 远端 MIB 的信息发生变化时,向 NMS 发送 LLDP 告警。
原理图:
* LLDP 模块通过与设备上的 PTOPO MIB、Entity MIB、Interface MIB 以及 Other MIBs 的交互,维护 LLDP 本地 MIB 库。
* LLDP Agent 发送 LLDP 报文,把本端设备的相关信息发送给与其直连的邻居节点。
* 同时,LLDP Agent 通过接收邻居节点发送的 LLDP 报文,更新本端设备的 LLDP 远端 MIB 库。
文章参考:华为文档
-
LLDP 协议_lldp 协议 - 优快云 博客 weixin_58670878 于 2023-06-26 19:56:32 发布
https://blog.youkuaiyun.com/weixin_58670878/article/details/131403715
数据链路层学习之 LLDP
goodluckwhh 于 2013-09-02 20:38:36 发布
一、LLDP 协议概述
随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。
LLDP(Link Layer Discovery Protocol,链路层发现协议)就是用于这个目的的协议。LLDP 定义在 802.1ab 中,它是一个二层协议,它提供了一种标准的链路层发现方式。LLDP 协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。当一个设备从网络中接收到其它设备的这些信息时,它就将这些信息以 MIB 的形式存储起来。
这些 MIB 信息可用于发现设备的物理拓扑结构以及管理配置信息。需要注意的是 LLDP 仅仅被设计用于进行信息通告,它被用于通告一个设备的信息并可以获得其它设备的信息,进而得到相关的 MIB 信息。它不是一个配置、控制协议,无法通过该协议对远端设备进行配置,它只是提供了关于网络拓扑以及管理配置的信息,这些信息可以被用于管理、配置的目的,如何用取决于信息的使用者。
二、LLDP 结构
LLDP 的框架结构如图所示:
此图也表明 LLDP 就是一个信息发现与通告协议,LLDP 的实体主要维护了两个 MIB 库,一个 local system MIB,一个 remote system MIB。从其名字也可以看出,一个用于维护本地相关的设备 MIB 信息,一个用于维护远端设备 MIB 信息。
LLDP 通过与上图中右侧的几个 MIB 库交互来初始化并维护 local system MIB,并将本地的相关信息通告出去;同时当接收到来自其它设备的信息时就将其更新到 remote system MIB 中。通过这种工作方式,一个设备就可以将自己的信息通告出去并获得网络中其它设备的相关信息,最终获得反应网络拓扑以及其它配置信息的两个 MIB 库。这两个库可以被其用户用来完成各种功能。
需要说明的是 LLDP 信息的通告以及接收处理不受端口的 STP 状态的影响。
三、LLDP 基本概念
1.LLDP 帧格式
封装有 LLDPDU 的报文称为 LLDP 帧,其封装格式有两种:Ethernet II 和 SNAP(Subnetwork Access Protocol,子网访问协议)。
1.1 Ethernet II 格式封装的 LLDP 帧
上图是以 Ethernet II 格式封装的 LLDP 帧,其中各字段的含义如下:
-
DA:目的 MAC 地址,为固定的组播 MAC 地址 0x0180-C200-000E。
-
SA:源 MAC 地址,为端口 MAC 地址或设备 MAC 地址(如有端口地址则用端口 MAC 地址,否则用设备 MAC 地址)。
-
Type:帧类型,为 0x88CC。
-
Data:数据,为 LLDPDU。
-
FCS:帧检验序列。
1.2 SNAP 格式封装的 LLDP 帧
上图是以 SNAP 格式封装的 LLDP 帧,其中各字段的含义如下:
-
DA:目的 MAC 地址,为固定的组播 MAC 地址 01-80-C2-00-00-0E。
-
SA:源 MAC 地址,为端口 MAC 地址或设备 MAC 地址(如果有端口地址则用端口 MAC 地址,否则用设备 MAC 地址)。
-
Type:帧类型,为 0xAAAA-0300-0000-88CC。
-
Data:数据,为 LLDPDU。
-
FCS:帧检验序列。
1.3 目地地址
目地地址实际上包括三个,分别为 01-80-C2-00-00-0E,01-80-C2-00-00-03,01-80-C2-00-00-00。这三个地址分别用于不同的目地,它们可以跨越不同的网络。
-
01-80-C2-00-00-0E,也被称为 Nearest Bridge 组地址:无论是 Two-Port MAC Relay (TPMR =750x) 组件还是 S-VLAN 组件还是 C-VLAN 组件,还是 802.1D 网桥都不能转发目地为该地址的帧。简单的说任何类型的网桥都不能转发目地为该地址的帧,目地为该地址的帧被限制在连接两个网桥接口的连接上传输。
-
01-80-C2-00-00-03,也被称为 Nearest non-TPMR Bridge 组地址:对于目地地址为该地址的帧,Two-Port MAC Relay (TPMR =750x) 组件将成为一个中继器,即不接收它。而 S-VLAN 组件,C-VLAN 组件,以及 802.1D 网桥不能转发它,而是需要进行接收并处理。因此目地地址为该地址的帧将跨越 TPMR。
-
01-80-C2-00-00-00,也被称为 Nearest non-Customer Bridge 组地址:对于目地地址为该地址的帧,Two-Port MAC Relay (TPMR =750x) 组件以及 S-VLAN 组件将成为中继器,即不接收它。而 C-VLAN 组件,以及 802.1D 网桥不能转发它,而是需要进行接收并处理。因此目地地址为该地址的帧将跨越 TPMR 以及 S-VLAN。
TPMR 以及 S-VLAN,C-VLAN 都是 802.1Q 中的概念,包括这三者的网络以及各个地址的作用范围如下图所示:
2. LLDPDU
LLDPPDU 是 LLDP 的有效负载,用于承载要发送的消息。LLPDU 的格式如下图所示:
LLDPDU 采用了 TLV 的格式,即 type+lenght+value 的格式,type 表示 TLV 的类型,length 是以字节为单位的 TLV 的长度,value 是该 TLV 的值。其中 Chassis ID TLV,Port ID TLV Time To Live TLV 以及 End Of LLDPDU TLV 是强制的,必须包含的部分,除此之外在 TLV Time To Live TLV 和 End Of LLDPDU TLV 之间可以包含 0 个到多个可选的其它 TLV。
3. TLV
TLV 是组成 LLDPDU 的单元,每个 TLV 都代表一个信息。LLDPDU 的 TLV 可以分为两大类:
-
被认为是网络管理的基础的 TLV 集合,所有的 LLDP 实现都需要支持。
-
组织定义的 TLV 扩展集和,包括 802.1 组织定义 TLV、802.3 组织定义 TLV 以及其他组织定义的 TLV。这些 TLV 用于增强对网络设备的管理,可根据实际需要选择是否在 LLDPDU 中发送。
TLV 的基本格式如图所示:
TLV 的类型域的定义及分配如下图所示:
其中 type0-8 属于基本的 TLV 集合。对于其中的 Mandatory 的 TLV,它是必须包含在 LLDP 中的。
组织定义 TLV 集合的格式如下图所示:
其中:
-
OUI:组织机构的 ID。
-
organizationally defined subtype:组织自定义的类型。
-
organizationally defined information string:传输的信息。
4. 基础 TLV 集合的 TLV 定义
几个强制的必须包含的 TLV 的定义如下。非强制的可以参考 IEEE802.1AB。
4.1 End Of LLDPDU TLV
该 TLV 用于标识 LLDPDU 的结束。其格式如下:
由于 length=0,因此它不包含 value 域。
4.2 Chassis ID TLV
该 TLV 用于通告该 LLDPDU 发送者的 chassis ID。由于有很多方式可用来标识一个 chassis,因此在该类 TLV 中包含一个子类型域用于告诉接收者,发送者的 chassis ID 采用的是哪一种标识方式。其格式如图所示:
每个 LLDPDU 必须包含且仅包含一个该类型的 TLV。由于 chassis ID 实际上是用于标识设备的,因此在连接可用时它应该保持不变。
chassis 子类型所可能的取值如图所示:
4.3 Port ID TLV
它用于标识发送该 LLDPDU 的设备的端口。类似于 chassis ID,有很多方式可以标识一个 Port,因此该 TLV 也包含一个子类型域。其格式如下图所示:
每个 LLDPDU 必须包含一个且只能包含一个该类型的 TLV。同时,当端口可用时,从该端口发送出去的 LLDPDU 的该 TLV 应该保持不变。
其子类型的可能取值如下图所示:
4.4 Time To Live TLV
该 TLV 用于告诉接收端,它接收到的这些信息的有效期有多长。其格式如图所示:
TTL 的时间单位是秒,由于只有 2 个字节长,因而最大有效时间是 65536 秒。如果在这个时间到期了还没有新的 LLDPDU 被收到,则该 TLV 所属的那个 LLDPDU 携带的信息会被从 MIB 中删除。如果收到了新的 LLDPDU,则:
-
如果 TTL 不为 0,则会用新收到的 LLDPDU 的信息替换 MIB 库中的相应的信息(即与该 LLDPDU 的发送者相关的 MIB 信息,LLDP 使用 Chassis ID + Port ID 来判断是否来自于同一个源,这也是要求这两者保持不变的原因)。
-
如果 TTL 为 0,则删除相应的 MIB 库中的信息(即与该 LLDPDU 的发送者相关的 MIB 信息)。因此 TTL 为 0 的 LLDPDU 又被称为 SHUTDOWN LLDPDU。
每一个 LLDPDU 必须包含且只能包含一个该类型的 TLV。
四、工作机制
LLDP 是一个用于信息通告和获取的协议,但是需要注意的一点是,LLDP 发送的信息通告不需要确认,不能发送一个请求来请求获取某些信息,也就是说 LLDP 是一个单向的协议,只有主动通告一种工作方式,无需确认,不能查询、请求(比如像 ARP 协议那样请求某个 IP 的 MAC 地址)。
LLDP 主要完成如下工作:
-
初始化并维护本地 MIB 库中的信息。
-
从本地 MIB 库中提取信息,并将信息封装到 LLDP 帧中。LLDP 帧的发送有两种触发方式,一是定时器到期触发,一是设备状态发生了变化触发。
-
识别并处理接收到的 LLDPDU 帧
-
维护远端设备 LLDP MIB 信息库。
-
当本地或远端设备 MIB 信息库中有信息发生变化时,发出通告事件。
1.LLDPDU 发送
1.1 发送机制
LLDPDU 的发送可以被如下事件触发:
-
与本地 MIB 信息库相关联的定时器 txTTR 到期时,这将确保远端接收系统中的相关信息不会因为 TTL 到期而过期。
-
本地 MIB 信息库中的信息发生了改变时,会立即发送 LLDPDU,这将保证改变能及时被更新。
-
如果一个 “新邻居” 被识别,将会启用快速发送机制,在很短的时间内连续发送指定数量(txFastInit,默认值为 4)的 LLDPDU,以确保 “新邻居” 能被快速更新。如果远端系统 MIB 信息库因为过载(tooManyNeighbors)而不能容纳新的邻居信息,则会为了避免过多的 PDU 传输而抑制快速发送行为。
LLDP 的常规发送时间是建立在系统的 tick 之上的,间隔为 1 秒一个,为了防止在共享介质的 LAN(shared media LAN)中同时出现大量的 LLDPDU(因为接入同一个 LAN 的多个系统的时间是同步的,因而多个系统上的基于 tick 的 1 秒定时器可能同时到期),发送定时器引入了一个随机的抖动,这就使得常规的 LLDP 帧的发送间隔时间的平均值仍是 1 秒,但是具体到某一次到期时间可能并不是准确的 1 秒。
同时为了防止在有多个端口需要发送 LLDPDU 的系统中,所有的端口的定时器都在同一时间到期,因而标准建议将采用某种机制将多个发送实例的定时器到期时间给错开,以避免一个系统在同一时刻发送大量的 LLDPDU。
1.2 发送状态机
LLDPDU 的发送状态机如图所示
对于该状态机:
-
为了防止过于频繁的重新初始化发送状态机,在 LLDP 的发送状态机中引入了一个延时,该延时限制了在关闭发送状态机后,必须至少等待多长时间才能重新初始化发送状态机。
-
是否发送 SHUTDOWNLLDPDU 由本地的 LLDP 工作状态决定。
-
是否发送正常的 LLDPDU 由 txNow 和 txCredit 决定。这两个变量都由发送定时器状态机更新。txNow 决定是否发送,而 txCredit 则是一个信用量,决定了可以发送的量,如果是 0 则不允许发送,只有大于 0 的值才允许发送,每发送一个该值就减 1。更重要的是在本地信息快速改变时,txCredit 即允许连续发送多个 LLDPDU,但是又对可以连续发送的 LLDPDU 帧数做了限制,这使得本地状态的快速改变可以及时被通告出去,但是又不能无限发送导致网络出现大量 LLDPDU 帧。
1.3 发送定时器状态机
LLDP 发送定时器状态机如图所示:
localChange 表示本地信息是否发生改变;txTTR 表示下一次定时器到期的时间;newNeighbor 表示是否发现了新的邻居,并由接收状态设置,由该状态机清除;txTick 表示基于系统时间的 1 秒定时器是否到期。
对于该状态机:
-
SIGNAL_TX 用于触发发送,它会将 txNow 设置为允许发送,并设置本地信息发生改变为 FALSE,如果当前不是在快速发送状态(txFast = 0)就设置发送定时器下次到期时间为 msgTxInterval(msgTxInterval 默认为 30 秒,取值范围 1-3600 秒),否则设置发送定时器下次到期时间为 msgFastTx(msgFastTx 默认值为 1 秒,取值范围 1-3600 秒)
-
如果本地信息发生了改变,就立即进入 SIGNAL_TX
-
如果定时器到期,则如果 txFast 大于 0,则将其减 1 并进入 SIGNAL_TX,否则直接进入 SIGNAL_TX
-
如果发现了新邻居,则首先将发现新邻居的标识更新为没有发现新邻居,然后如果当前已经处于快速发送状态就直接进入发送定时器到期状态(以触发一次立即发送),否则设置 txFast 的值为 txFastInit 的值(txFastInit 默认值为 4,取值范围 1-8)
-
如果基于系统时间的 1 秒定时器到期,则给 txCredit 增加信用量,其最大值为 txCreditMax,txCreditMax 是一个取值在 1 到 10 之间的值,默认值为 5。
这里有取值范围的几个变量都是可配置的变量。
从上述两个状态机的工作状态可以看出,发送定时器状态机用于维护信用量以及是否允许发送 LLDPDU 帧,而发送状态机根据这两个信息来决定是否发送。
另外需要注意的是 LLDP 所使用的所有定时器操作都是基于 “基于系统时间的 1 秒定时器的”,每当这个定时器到期时它除了会将 txTick 设置为 TRUE 外,还会处理其它的定时功能。
2.LLDPDU 接收
2.1 接收机制
LLDP 帧的接收由 3 个阶段组成:帧的识别、帧的校验以及 LLDP 远端 MIB 信息库更新。
2.1.1 帧的识别
帧识别由在 LLDP/LSAP(链路服务访问点)进行,检查的内容是帧的目的地是否是 LLDP 的组播 MAC 地址,帧的类型是否是 LLDP。
2.1.2 帧的验证
该过程会首先根据 TLV 的格式定义依次校验 Chassis ID TLV,Port ID TLV, Time To Live TLV,如果这三个 TLV 都存在且有效,才会进一步的解码可选的 TLV 直到遇到 End Of LLDPDU TLV,然后根据获得的信息更新远端 MIB 信息库。
2.1.3 远端 MIB 信息库更新
在前两步都通过之后,LLDPDU 的接收者就需要根据解析出来的信息更新远端 MIB 信息库。在 MIB 信息库中,LLDP 使用 chassis ID + Port ID 来标识、存储来自不同源的信息。
-
如果远端 MIB 库中已经有对应于该 chassis ID + Port ID 的信息,则使用收到的帧中的新的 TTL 来更新 TTL。并用对于收到的新的 LLDPPDU 中的每一种 type,如果有变化就进行更新,如果某种 type 原来不存在,则需要将其添加到 MIB 库中。
-
如果实现不支持某种类型的 type,则
-
如果 type 不是 127,则按照基本 TLV 的格式将其存储到远端 MIB 库,存储格式为 type, length,value。
-
如果 type 是 127,则按照组织定义 TLV 的格式将其存储到远端 MIB 库,存储格式为 type, length,value,OUI,组织自定义子类型,以及信息域。
更新时,如果需要添加新的 chassis ID + Port ID 的表项,或者为某个 chassis ID + Port ID 添加新的 TLV,则可能遇到没有内存的问题,标准没有规定必须如何处理,只是给出了一些建议:
-
忽略新的 LLDPDU 的信息
-
删除最旧的信息以释放空间给新的信息
-
随机删除一些旧的信息以释放空间给新的信息
LLDPDU 携带的 TTL(Time To Live)值会影响接收端的处理方式,如果它不为 0,则更新相应信息的老化时间,如果接收到的 LLDPDU 中的 TTL 等于 0,则将立刻老化掉相应的信息(即与该 LLDPDU 的发送者相关的 MIB 信息)。
如果一个 chassis ID + Port ID 标识的信息的 TTL 超时,则相应的 MIB 信息会被删除。
2.2 接收状态机
LLDPDU 的接收状态机如图所示:
3. LLDP 工作模式
LLDP 可以工作在多种模式下:
-
TxRx:既发送也接收 LLDP 帧。
-
Tx:只发送不接收 LLDP 帧。
-
Rx:只接收不发送 LLDP 帧。
-
Disable:既不发送也不接收 LLDP 帧(准确的说,这并不是一个 LLDP 的状态,这可能是 LLDP 功能被关闭了,也可能是设备就不支持)。
由于 LLDP 可以单独工作在发送或接收模式下,因此 LLDP 协议的实现需要支持单独初始化发送或者接收功能。当工作模式发生变化时,需要根据老的 / 新的工作模式来关闭 / 打开发送或者接收的功能。
-
数据链路层学习之 LLDP_bras 可以获取到 olt 的 lldp 信息,olt 获取不到 bras 的 lldp 信息 - 优快云 博客
https://blog.youkuaiyun.com/goodluckwhh/article/details/10948065
3560

被折叠的 条评论
为什么被折叠?



