第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 扩展)

LLDP TLV 结构 - 图示

2.3 LLDP 应用场景

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

三、技术细节

3.1 LLDP 工作流程

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 暴露设备信息,接入端口应限制发送

思考

  1. LLDP 使用组播 MAC 地址 01:80:C2:00:00:0E。这个地址属于 IEEE 保留的"本地管理组播地址"范围,交换机默认不在 VLAN 间转发。如果两台 LLDP 邻居之间经过了 Trunk 链路,LLDP 报文是否需要携带 VLAN 标签?

  2. LLDP 只能发现直连邻居。如果需要获取整个网络的拓扑信息,仅靠 LLDP 是否足够?网管系统如何将各设备的 LLDP 邻居信息汇总为全网拓扑图?

  3. LLDP-MED 可以通告语音 VLAN ID 和优先级。如果 IP 电话不支持 LLDP-MED,交换机如何告知它使用语音 VLAN?

下篇预告:第125篇:NTP 时间同步:网络设备的时钟校准