目录
文章目录
LLDP
LLDP(Link Layer Discovery Protocol,链路层发现协议)是定义在 802.1ab 中的一个 L2 数据链路层的设备发现协议,用于在局域网中的网络设备之间交换基本信息,以便互相发现和识别相邻设备及其能力参数。解决了不同厂商的设备之间得以在一个标准的协议中交换彼此的数据链路层信息。
LLDP 协议具有广泛的应用场景,例如:自动发现网络中的设备、生成网络拓扑图、监控设备状态、进行故障排查和网络故障恢复等。LLDP 还常与其他网络管理协议(e.g. SNMP)结合使用,提供更全面的设备管理功能。
例如:在基于 LLDP 协议构建网络拓扑的应用场景中,网络设备在发送 LLDPDU 时,会将自己的设备信息和端口信息发布到相邻设备,相邻设备收到后可以将这些信息添加到自己的拓扑表中,从而逐步构建整个网络的拓扑结构。
LLDPDU
LLDP 协议使用 LLDPDU(LLDP Data Unit)作为协议消息。LLDPDU 采用了 TLV(Type-Length-Value,类型-长度-值)数据结构,每种 TLV 的 Length 和 Value 可以根据具体的 Type 而变化,一个 LLDPDU 可以包含多个 TLVs。
更具体而言,LLDPDU 具有 2 种不同的报文封装格式:Ethernet II 和 SNAP(Subnetwork Access Protocol,子网访问协议)。
Ethernet II LLDPDU
- Destination MAC address(目的 MAC 地址):为固定的组播 MAC 地址 0x0180-C200-000E。
- Source MAC address(源 MAC 地址):如果有端口地址则使用端口 MAC 地址,否则使用桥设备 MAC 地址。
- Type(报文类型):为 0x88CC。
- Data(数据):为 LLDPDU TLVs。
- FCS(帧检验序列)
SNAP LLDPDU
- Destination MAC address(目的 MAC 地址):为固定的组播 MAC 地址 0x0180-C200-000E。
- Source MAC address(源 MAC 地址):如果有端口地址则使用端口 MAC 地址,否则使用桥设备 MAC 地址。
- Type(报文类型):为 0xAAAA-0300-0000-88CC。
- Data(数据):为 LLDPDU TLVs。
- FCS(帧检验序列)
LLDPDU TLVs
LLDP 可以封装的 TLV 包括以下 4 大类型:
- 基本 TLV;
- 802.1 定义的 TLV;
- 802.3 定义的 TLV;
- 802.3 定义的 LLDP-MED(Media Endpoint Discovery,媒体终端发现) TLV。
总的来说,每个 LLDPDU 共可携带 28 种 TLVs。
基本 TLV
深蓝色的 Chasis ID TLV、Port ID TLV、TTL TLV 和 End TLV 这 4 种是必须携带的,其余的 TLV 则为可选携带。
- Chassis ID TLV:用于传输设备的唯一标识符,如:设备的 MAC 地址、IP 地址等。在网络中唯一标识一台网络设备。
- Port ID TLV:用于传输设备的端口的唯一标识符,如:端口号、端口名称。
- Time To Live TLV:指示 LLDPDU 的生存期(消息在网络中传播的最大跳数)。
- End TLV:标识 LLDPDU TLVs 的结束。
- System Name TLV:用于传输设备的系统名称。
- System Description TLV:用于传输设备的系统描述信息,如:设备型号、厂商信息等。
- System Capabilities TLV:用于传输设备的系统能力信息,如:是否支持路由、交换、电源管理等。
- Port Description TLV:用于传输关于设备的端口描述信息,如:端口类型、速率等。
- Management Address TLV:用于传输设备的管理地址,用于网络管理和配置。
- Organizationally Specific TLV:用于扩展 LLDP 协议,传输特定厂商或组织定义的自定义信息。
其中,Management Address(管理地址)是网络设备提供给 NMS(网络管理系统)标识一个设备并进行管理的地址。
802.1 定义的 TLV
- Port VLAN ID TLV:端口的 VLAN ID。
- Port And Protocol VLAN ID TLV:端口的协议 VLAN ID。
- VLAN Name TLV:端口的 VLAN 的名称。
- Protocol Identity TLV:端口支持的协议类型。
802.3 定义的 TLV
- MAC/PHY Configuration/Status TLV:端口的速率和双工状态、是否支持端口速率自动协商、是否已使能自动协商功能以及当前的速率和双工状态。
- Power Via MDI TLV:端口的供电能力。
- Link Aggregation TLV:端口是否支持链路聚合以及是否已使能链路聚合。
- Maximum Frame Size TLV:端口支持的最大帧长度,取端口配置的 MTU(Max Transmission Unit,最大传输单元)。
802.3 定义的 LLDP-MED TLV
LLDP-MED(Media Endpoint Discovery,媒体终端发现) TLV 为 VoIP(Voice over IP,在 IP 上传送语音)应用场景提供了许多功能,包括:基本配置、网络策略配置、地址信息以及目录管理等,满足了语音设备的不同生产厂商在成本有效、易部署、易管理等方面的要求,并解决了在以太网中部署语音设备的问题,为语音设备的生产者、销售者以及使用者提供了便利。
- LLDP-MED Capabilities TLV:当前设备的 MED 设备类型以及在 LLDPDU 中可封装的 LLDP-MED TLV 类型。
- Network Policy TLV:端口的 VLAN ID、支持的应用(如语音和视频)、应用优先级以及使用策略等。
- Extended Power-via-MDI TLV:当前设备的供电能力。
- Hardware Revision TLV:MED 设备的硬件版本。
- Firmware Revision TLV:MED 设备的固件版本。
- Software Revision TLV:MED 设备的软件版本。
- Serial Number TLV:MED 设备的序列号。
- Manufacturer Name TLV:MED 设备的制造厂商。
- Model Name TLV:MED 设备的模块名。
- Asset ID TLV:MED 设备的资产标识符,以便目录管理和资产跟踪。
- Location Identification TLV:位置标识信息,供其它设备在基于位置的应用中使用。
LLDP 消息流程
当设备启动 LLDP 协议后,LLDP 消息会从设备的每个端口上周期性的发出,相邻设备(直连设备)的 LLDP 协议会接收并解析这些消息,从而获取有关信息。
LLDP 协议支持每个端口工作在 4 种模式下,包括:
- TxRx:设备既发送也接收 LLDP 消息。
- Tx:设备只发送不接收 LLDP 消息。
- Rx:设备只接收不发送 LLDP 消息。
- Disable:既不发送也不接收 LLDP 消息。
当某个端口工作在 TxRx 或 Tx 模式时,端口除了会周期性地向邻居设备发送 LLDP 消息之外,还会在设备的本地配置发生变化则立即发送 LLDP 消息,以求尽快通知给邻居设备。但为了防止本地信息的频繁变化而引起 LLDP 消息的大量发送,端口每发送一个 LLDP 消息后都需延迟一段时间后再继续发送下一个消息。
当设备的工作模式由 Disable/Rx 切换为 TxRx/Tx,或者发现了新的邻居设备(即收到一个新的 LLDP 消息且本地尚未保存发送该报文设备的信息)时,该设备将自动启用快速发送机制,即将 LLDP 消息的发送周期缩短为 1s,并连续发送指定数量的 LLDP 消息后再恢复为正常的发送周期。
当端口工作在 TxRx 或 Rx 模式时,端口会对收到的 LLDP 消息及其携带的 TLVs 进行有效性检查,通过检查后再将邻居信息保存到本地,并根据 TTL TLV 来设置邻居信息在本地设备上的老化时间,若该值为零,则立刻老化该邻居信息。
LLDP 协议栈
网络设备中 LLDP 协议栈的实现主要完成如下工作:
- 初始化并维护本地 MIB 库中的信息。
- 从本地 MIB 库中提取信息,并将信息封装到 LLDP 消息中。
- 识别并处理接收到的 LLDP 消息。
- 维护远端设备 LLDP MIB 信息库。
- 当本地或远端设备 MIB 信息库中有信息发生变化时,发出通告事件。