LLDP——链路层发现协议

LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab定义的一种标准的二层发现方式,用于交换设备间的管理地址、设备标识等信息。本文介绍了LLDP的工作原理及其三种主要工作模式:TxRx(发送和接收)、Tx(仅发送)和Rx(仅接收),并解释了Disable模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab中定义的链路层发现协议。LLDP是一种标准的二层发现方式,可以将本端设备的管理地址、设备标识、接口标识等信息组织起来,并发布给自己的邻居设备,邻居设备收到这些信息后将其以标准的管理信息库MIB(Management Information Base)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。

工作模式:

 

TxRx:既发送也接收LLDP报文。
Tx:只发送不接收LLDP报文。
Rx:只接收不发送LLDP报文。

Disable:既不发送也不接收LLDP报文.



### 使用Python实现基于SNMP和LLDP协议的后端拓扑发现 #### SNMP与LLDP概述 简单网络管理协议(SNMP)用于收集并提供关于被管设备的信息[^1]。链路层发现协议(LLDP)则允许同一物理连接或相邻网络节点之间交换系统识别信息和其他管理信息[^4]。 #### 数据解析流程 对于SNMP而言,可以通过Net-SNMP库发起请求来读取目标系统的特定OID对象标识符下的值,这些OID定义于MIB文件之中,涵盖了路由表、接口状态等多种属性[^2]。而针对LLDP消息,则需特别注意其对应的MIB结构——即`lldpRemTable`(远程设备表格),从中可以提取到诸如邻居MAC地址、端口ID等关键字段。 ```python from pysnmp.hlapi import * def get_snmp_data(target_ip, oid): iterator = getCmd( SnmpEngine(), CommunityData('public', mpModel=0), UdpTransportTarget((target_ip, 161)), ContextData(), ObjectType(ObjectIdentity(oid)) ) errorIndication, errorStatus, errorIndex, varBinds = next(iterator) if errorIndication: print(errorIndication) elif errorStatus: print('%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex)-1][0] or '?')) else: for varBind in varBinds: result = ' = '.join([x.prettyPrint() for x in varBind]) return result # 示例调用 print(get_snmp_data("192.168.1.1", "1.3.6.1.2.1.1.5")) # 获取主机名 ``` 上述代码片段展示了如何利用PySNMP库执行基本的GET操作以检索指定OID处的数据。 #### 存储方案设计 考虑到后续可能涉及到大量关联关系处理以及图形化展示需求,在此推荐采用图数据库作为底层存储引擎,比如Neo4j就是一个不错的选择。它能够高效地表示实体间复杂的多级链接情况,并支持Cypher查询语言来进行模式匹配和路径查找等功能[^3]。 当完成一次完整的扫描周期之后,应将所获知的所有节点及其相互间的连通状况持久化保存至选定的数据库实例当中;与此同时还要定期更新已有记录以便维持最新状态同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值