第124篇:LLDP 与 CDP:邻居自动发现协议
关键词:LLDP、CDP、邻居发现、TLV、自动拓扑发现、LLDP-MED、IEEE 802.1AB、网络管理
一、引言
在网络运维中,了解设备之间的物理连接关系是日常管理的基础工作。传统上,这依赖运维人员手动记录线缆走向、查阅施工图纸或到现场查看端口标签。当网络规模扩大到数百台交换机、上千条线缆时,人工维护的拓扑图很快与实际脱节。
LLDP(Link Layer Discovery Protocol,链路层发现协议)是 IEEE 802.1AB 标准定义的开放协议,允许设备通过交换 TLV(Type-Length-Value)信息自动发现直接相连的邻居设备。CDP(Cisco Discovery Protocol)是 Cisco 的私有实现,功能类似但仅限 Cisco 设备间使用。
二、核心概念
2.1 LLDP 与 CDP 对比
| 特性 | LLDP | CDP |
|---|---|---|
| 标准归属 | IEEE 802.1AB(开放标准) | Cisco 私有协议 |
| 跨厂商支持 | 所有主流厂商(华为、Cisco、Juniper、H3C) | 仅 Cisco 设备(少数厂商兼容) |
| 以太网类型 | 0x88CC | 0x2000(旧版)/ 0x88CD(CDPv2) |
| 目标 MAC | 01:80:C2:00:00:0E(IEEE 保留组播 MAC) | 01:00:0C:CC:CC:CC(Cisco 组播 MAC) |
| 报文结构 | TLV(Type-Length-Value) | TLV(Type-Length-Value,格式不同) |
| 扩展能力 | 标准化 TLV + 组织专用 TLV | 有限的私有 TLV |
| 推荐程度 | ✅ 首选,跨厂商通用 | 仅在纯 Cisco 环境使用 |
2.2 LLDP TLV 结构
LLDP 报文由多个 TLV 单元组成,每个 TLV 包含类型、长度和值三个字段:
| TLV Type | 名称 | 长度 | 说明 |
|---|---|---|---|
| 1 | Chassis ID | 6/7 字节 | 设备标识(MAC 地址/系统名称/IP/端口索引) |
| 2 | Port ID | 变长 | 端口标识(MAC/接口名/IP) |
| 3 | Time To Live | 2 字节 | 信息存活时间(秒),过期后邻居条目被删除 |
| 127 | End of LLDPDU | 0 字节 | 报文结束标记,每个 LLDPDU 必须有 |
| 4 | Port Description | 变长 | 端口描述字符串 |
| 5 | System Name | 变长 | 设备主机名 |
| 6 | System Description | 变长 | 设备描述(型号、版本等) |
| 7 | System Capability | 6 字节 | 设备能力(桥/路由器/交换机/WLAN 接入点) |
| 8 | Management Address | 变长 | 管理 IP 地址(用于远程管理) |
| 128 | VLAN ID(802.1ak) | 4 字节 | 端口所在的 VLAN |
| 125~128 | Organization Specific | 变长 | 厂商自定义 TLV(华为/ Cisco 扩展) |

2.3 LLDP 应用场景
| 应用场景 | 说明 |
|---|---|
| 自动拓扑发现 | 网管系统收集 LLDP 邻居信息,自动生成物理拓扑图 |
| 线缆验证 | 确认端口对端连接的设备名称和端口号 |
| 语音 VLAN 发现 | 交换机通过 LLDP-MED 通告语音 VLAN,IP 电话自动加入 |
| PoE 功率协商 | 交换机通过 LLDP-MED 通告可用功率,终端申报需求 |
| 网络审计 | 发现未授权设备接入(陌生 LLDP 邻居) |
三、技术细节
3.1 LLDP 工作流程

3.2 LLDP-MED(媒体终端发现)
LLDP-MED(IEEE 802.1AB 扩展,原 802.3af 定义的 Power via LLDP 已并入 LLDP-MED)专为语音和多媒体终端设计:
| LLDP-MED TLV | 说明 |
|---|---|
| 设备定位(Location Identification) | 设备安装的物理位置描述(楼栋/楼层/房间号) |
| 网络策略(Network Policy) | 语音 VLAN ID、优先级(802.1p) |
| 扩展标记(Extended Statistics) | 终端的电话号码、设备标签 |
| 电源协商(Power via MDI) | 交换机通告可用 PoE 功率(Class 0~8),终端申报需求 |
| 传输配置(Inventory Management) | 终端的序列号、硬件版本、固件版本 |
3.3 CDP 基本结构
CDP 报文结构:
| 字段 | 说明 |
|---|---|
| Version | CDP 版本(1 或 2) |
| TTL | 信息存活时间(默认 180 秒) |
| Device ID | 设备主机名 |
| Address List | 设备 IP 地址列表(支持多地址) |
| Port ID | 本地端口标识 |
| Capability | 设备能力(Router/SW/IGS/Repeater/Host/IGS+Host) |
| Software Version | IOS 版本字符串 |
| Platform | 硬件平台型号 |
| Dual Address | CDPv2 新增,支持 IPv4 + IPv6 |
四、实战配置/案例分析
4.1 华为设备 LLDP 完整配置
# ========== 全局启用 LLDP ==========
<HUAWEI> system-view
[HUAWEI] sysname Access-SW-01
# 全局启用 LLDP
[HUAWEI] lldp enable
# ========== 配置 LLDP 全局参数 ==========
[HUAWEI] lldp timer transmit 30
# LLDPDU 发送间隔 30 秒(范围:5~32768 秒)
[HUAWEI] lldp timer hold-multiplier 4
# 保持倍数 4(邻居信息超时 = TTL × hold-multiplier)
[HUAWEI] lldp ageout enable
# 启用 TTL 老化机制
[HUAWEI] lldp max-neighbor 256
# 最大邻居数量 256
# ========== 配置端口发送的 TLV 类型 ==========
# 默认发送所有 TLV,也可选择性地只发送部分 TLV
[HUAWEI] lldp tlv-select transmit chassis-id port-id ttl system-description system-name system-capability management-address vlan-ids
# ========== 接口级 LLDP 配置 ==========
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] lldp enable
# 在接口上启用 LLDP(发送和接收)
# 可选:只接收不发送
[HUAWEI-GigabitEthernet0/0/1] lldp tx-disable
# 禁用该接口的 LLDP 发送
# 可选:只发送不接收
[HUAWEI-GigabitEthernet0/0/1] lldp rx-disable
# 禁用该接口的 LLDP 接收
[HUAWEI-GigabitEthernet0/0/1] quit
4.2 LLDP-MED 配置(语音 VLAN)
# ========== LLDP-MED 配置 ==========
# 全局启用 LLDP-MED
[HUAWEI] lldp med enable
# 接口级 LLDP-MED 配置
[HUAWEI] interface GigabitEthernet 0/0/10
[HUAWEI-GigabitEthernet0/0/10] lldp med enable
# 通告语音 VLAN ID 为 200,优先级为 5(EF)
[HUAWEI-GigabitEthernet0/0/10] lldp med network-policy vlan 200 priority 5
# 通告 PoE 功率信息
[HUAWEI-GigabitEthernet0/0/10] lldp med power-via-mdi enable
[HUAWEI-GigabitEthernet0/0/10] quit
# ========== 验证 ==========
[HUAWEI] display lldp med interface GigabitEthernet 0/0/10
4.3 查看 LLDP 邻居信息
# ========== 查看所有邻居 ==========
[HUAWEI] display lldp neighbor
# Local Interface : GigabitEthernet0/0/1
# Neighbor Device : Core-SW-01
# Neighbor Interface: GigabitEthernet1/0/24
# Neighbor System Name: Core-SW-01
# Neighbor Description: HUAWEI S6730-H48X6C Switch
# Neighbor Management IP: 10.100.0.1
# ========== 查看简要邻居信息 ==========
[HUAWEI] display lldp neighbor brief
# Local Port Neighbor Device Neighbor Port
# GigabitEthernet0/0/1 Core-SW-01 GigabitEthernet1/0/24
# GigabitEthernet0/0/2 Agg-SW-01 GigabitEthernet0/0/24
# ========== 查看特定接口的邻居 ==========
[HUAWEI] display lldp neighbor interface GigabitEthernet 0/0/1
# ========== 查看 LLDP 统计信息 ==========
[HUAWEI] display lldp statistics
4.4 故障案例:通过 LLDP 排查跳线错误
场景描述
某新园区数据中心上架完成后,运维人员报告汇聚交换机 Agg-SW-02 的 GE1/0/1 端口无法与核心交换机通信。施工图纸显示该端口应连接至 Core-SW-01 的 GE1/0/24,但实际测试不通。
排查过程
# 步骤一:检查本地端口状态
[Agg-SW-02] display interface GigabitEthernet 1/0/1
# 端口状态为 Up,物理层正常
# 步骤二:检查 LLDP 邻居
[Agg-SW-02] display lldp neighbor interface GigabitEthernet 1/0/1
# Local Interface : GigabitEthernet1/0/1
# Neighbor Device : Agg-SW-01
# Neighbor Interface: GigabitEthernet1/0/2
# !!!对端是 Agg-SW-01,不是 Core-SW-01!!!
# 步骤三:确认跳线错误
# 根据 LLDP 信息,GE1/0/1 实际连接的是 Agg-SW-01 的 GE1/0/2
# 而非图纸标注的 Core-SW-01 的 GE1/0/24
处理
# 查看正确的线缆走向
[Agg-SW-01] display lldp neighbor interface GigabitEthernet 1/0/2
# Local Interface : GigabitEthernet1/0/2
# Neighbor Device : Agg-SW-02
# Neighbor Interface: GigabitEthernet1/0/1
# 确认:Agg-SW-02 GE1/0/1 ↔ Agg-SW-01 GE1/0/2(跳线错误)
# 重新跳线:将 Agg-SW-02 GE1/0/1 连接到 Core-SW-01 GE1/0/24
# 验证修复
[Agg-SW-02] display lldp neighbor interface GigabitEthernet 1/0/1
# Neighbor Device : Core-SW-01
# Neighbor Interface: GigabitEthernet1/0/24
# ✅ 跳线正确
4.5 故障案例:LLDP 邻居信息泄露安全风险
场景描述
某企业网络的安全审计中发现,攻击者将笔记本电脑接入网络后,通过抓包获取了 LLDP 报文,获得了所有直连交换机的主机名、IP 地址、端口信息、IOS/VRP 版本等敏感信息。
排查
# 抓包分析 LLDP 报文
# 目标 MAC: 01:80:C2:00:00:0E(组播,所有设备接收)
# EtherType: 0x88CC
# TLV 内容包含:
# - System Name: Core-SW-01
# - System Description: HUAWEI S6730-H48X6C Switch, VRP(VRP) software, Version 8.180
# - Management Address: 10.100.0.1
# - Port Description: GigabitEthernet1/0/24
处理
# 方案一:在不需要 LLDP 的接口上禁用 LLDP
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] lldp tx-disable
# 只接收,不发送(不向外暴露信息)
# 方案二:限制 LLDP 发送的 TLV 类型(不发送管理 IP)
[HUAWEI] lldp tlv-select transmit chassis-id port-id ttl system-name
# 只发送基础 TLV,不发送 Management Address TLV
# 方案三:在接入端口启用端口安全,防止未授权设备接入
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] port-security enable
[HUAWEI-GigabitEthernet0/0/1] port-security max-mac-count 1
五、总结
| 项目 | 说明 |
|---|---|
| LLDP | IEEE 802.1AB 标准,跨厂商通用,推荐首选 |
| CDP | Cisco 私有协议,仅在纯 Cisco 环境使用 |
| TLV 结构 | 类型-长度-值,灵活扩展 |
| LLDP-MED | 面向语音/多媒体终端,支持 VLAN 通告和 PoE 协商 |
| 发送间隔 | 默认 30 秒,可调整 |
| 邻居发现 | 仅能发现直连(一跳)邻居 |
| 华为实现 | lldp enable(全局)+ lldp enable(接口) |
| 安全风险 | LLDP 暴露设备信息,接入端口应限制发送 |
思考
-
LLDP 使用组播 MAC 地址 01:80:C2:00:00:0E。这个地址属于 IEEE 保留的"本地管理组播地址"范围,交换机默认不在 VLAN 间转发。如果两台 LLDP 邻居之间经过了 Trunk 链路,LLDP 报文是否需要携带 VLAN 标签?
-
LLDP 只能发现直连邻居。如果需要获取整个网络的拓扑信息,仅靠 LLDP 是否足够?网管系统如何将各设备的 LLDP 邻居信息汇总为全网拓扑图?
-
LLDP-MED 可以通告语音 VLAN ID 和优先级。如果 IP 电话不支持 LLDP-MED,交换机如何告知它使用语音 VLAN?
下篇预告:第125篇:NTP 时间同步:网络设备的时钟校准