Wireshark LLDP协议分析:网络拓扑发现

Wireshark LLDP协议分析:网络拓扑发现

【免费下载链接】wireshark Read-only mirror of Wireshark's Git repository at https://gitlab.com/wireshark/wireshark. ⚠️ GitHub won't let us disable pull requests. ⚠️ THEY WILL BE IGNORED HERE ⚠️ Upload them at GitLab instead. 【免费下载链接】wireshark 项目地址: https://gitcode.com/gh_mirrors/wi/wireshark

LLDP(Link Layer Discovery Protocol,链路层发现协议)是一种二层网络协议,用于网络设备间交换设备身份、能力和邻居关系等信息,帮助构建网络拓扑。Wireshark通过epan/dissectors/packet-lldp.c实现LLDP协议解析,支持标准TLV(Type-Length-Value)及厂商自定义扩展。

LLDP协议基础

LLDP报文格式遵循IEEE 802.1AB标准,由LLDPDU(LLDP Data Unit)组成,每个LLDPDU包含多个TLV。Wireshark解析逻辑在packet-lldp.c中定义了核心TLV类型,包括:

  • 基础TLV:必选的Chassis ID(0x01)、Port ID(0x02)、Time to Live(0x03),以及可选的Port Description(0x04)、System Name(0x05)等。
  • 扩展TLVOrganization Specific(0x7F)类型,用于厂商自定义数据,如Cisco的PoE信息、Avaya的IP电话配置等。

TLV结构解析

每个TLV包含3字节头部(10位类型+16位长度)和数据字段。例如,packet-lldp.c定义了类型与长度的掩码计算:

#define TLV_TYPE_MASK		0xFE00
#define TLV_TYPE(value)		(((value) & TLV_TYPE_MASK) >> 9)
#define TLV_INFO_LEN_MASK	0x01FF
#define TLV_INFO_LEN(value)	((value) & TLV_INFO_LEN_MASK)

Wireshark LLDP解析实现

核心数据结构

packet-lldp.c定义了profinet_lldp_column_info结构体,存储设备MAC地址、端口标识等拓扑关键信息,用于Wireshark界面列显示。

协议注册流程

  1. 协议初始化proto_register_lldp()函数注册协议名称、字段和子树结构,如packet-lldp.c所示。
  2. 解析器注册proto_reg_handoff_lldp()将LLDP解析器绑定到以太网类型0x88CC,确保LLDP报文被正确捕获。

关键字段解析

  • Chassis ID:设备唯一标识,支持MAC地址(子类型4)、网络地址(子类型5)等格式,解析逻辑见packet-lldp.c
  • System Capabilities:设备功能类型(如交换机、路由器),通过hf_lldp_tlv_system_cap字段解析,包含bridge(0x02)、router(0x08)等标志位。

网络拓扑发现实践

捕获LLDP报文

  1. 启动Wireshark,选择目标网络接口。
  2. 设置过滤规则lldp,捕获设备周期性发送的LLDP报文(默认每30秒)。

解析拓扑关系

Wireshark通过LLDP报文中的Chassis IDPort ID关联设备邻居。例如,某交换机发送的LLDP报文包含:

  • Chassis ID:MAC地址00:1b:44:11:3a:b2
  • Port ID:接口名称Gi1/0/1
  • System NameSwitch-A

通过聚合多设备LLDP数据,可生成如下拓扑片段: mermaid

厂商扩展解析

Wireshark支持解析厂商自定义TLV,如:

  • Cisco PoE信息:通过OUI 0x000af2识别,解析供电状态和功率,见hf_cisco_upoe
  • Avaya IP电话:子类型11包含IP配置信息,如hf_avaya_ipphone_ip解析电话IP地址。

高级应用与工具集成

批量分析与拓扑生成

结合tshark(Wireshark命令行工具)批量提取LLDP数据:

tshark -r capture.pcap -T fields -e lldp.chassis_id -e lldp.port_id -e lldp.system_name > lldp_topology.csv

结果可导入Excel或Python脚本生成拓扑图。

协议调试与问题排查

  • 异常报文检测:Wireshark专家信息(ei_lldp_bad_length)标记长度错误、未知TLV等异常。
  • 厂商兼容性验证:通过organization specific TLV解析,验证第三方设备LLDP扩展是否符合规范。

总结

LLDP协议是网络拓扑可视化的基础,Wireshark通过epan/dissectors/packet-lldp.c提供了完整的解析能力,支持从报文捕获到拓扑关系提取的全流程分析。结合Wireshark的过滤、统计功能,可快速定位网络设备连接问题,优化网络架构。官方文档doc/README.display_filter提供了更多LLDP过滤规则示例。

【免费下载链接】wireshark Read-only mirror of Wireshark's Git repository at https://gitlab.com/wireshark/wireshark. ⚠️ GitHub won't let us disable pull requests. ⚠️ THEY WILL BE IGNORED HERE ⚠️ Upload them at GitLab instead. 【免费下载链接】wireshark 项目地址: https://gitcode.com/gh_mirrors/wi/wireshark

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值