app.log周期性打印Can't find port name from LLDP

1,lldp未开启, app.log周期性打印bmc_core ERROR: lldp_proc.c(318): Can’t find port name from LLDP,此部分代码暂未开源,该如何解决周期日志输出的问题?

答案内容由AI生成,仅供参考:

问题分析

app.log 中周期性出现日志错误:

bmc_core ERROR: lldp_proc.c(318): Can't find port name from LLDP

该问题表明 BMC 的 bmc_core 组件在处理 LLDP(链路层发现协议)报文时,无法从中提取出端口名称信息。LLDP 通常用于网络设备之间交换拓扑信息,包括端口 ID、设备名称、VLAN 等。BMC 使用 LLDP 来识别连接的交换机端口,用于网络管理、资产识别和 rack 管理等功能。

根据知识库内容,bmc_core 是 BMC 系统的核心模块,负责低层功能处理,包括 LLDP 协议解析。该错误发生在 lldp_proc.c 文件的第 318 行,说明 LLDP 消息解析过程中未能成功获取 PortName 字段。


排查思路

1. 确认 LLDP 报文来源是否正常

  • 检查对端网络设备(如交换机)是否已启用 LLDP 功能。

  • 确认交换机发送的 LLDP 报文中是否包含 Port ID TLV(Type-Length-Value),特别是 Port ID 是否以 Interface Name 类型(如 eth0GigabitEthernet1/0/1)发送,而非 MAC 地址或其他格式。

  • 可通过抓包工具(如 tcpdump)在 BMC 带外网口监听 LLDP 报文:

    tcpdump -i eth2 -s 1500 -w lldp.pcap ether proto 0x88cc
    

    使用 Wireshark 分析 lldp.pcap,查看 Port ID 是否存在且格式正确。

2. 检查 BMC 端 LLDP 配置与解析逻辑

  • 确认 BMC 是否正确配置了 LLDP 监听接口(如 eth2eth3)。

  • 根据知识库,bmc.kepler.Managers.LldpConfigbmc_network 组件提供的 LLDP 配置接口,可用于查看或设置 LLDP 行为。

  • 检查 bmc_network 组件是否正常运行:

    busctl --user list | grep bmc_network
    
  • 查看 app.log 中是否有 bmc_network 启动失败或 LLDP 初始化异常的记录。

3. 检查 bmc_core 组件的 LLDP 处理逻辑

  • 错误发生在 lldp_proc.c(318),该文件属于 bmc_core 组件,负责 LLDP 报文解析。
  • 根据知识库,bmc_core 曾因 LLDP 处理失败导致固件管理超时问题,说明其对 LLDP 的依赖较强。
  • 若对端 LLDP 报文缺少 PortName 字段,或字段格式不兼容,可能导致此错误。
  • 建议检查 lldp_proc.c 源码逻辑,确认其是否严格要求特定 TLV 类型,或是否具备容错机制。

4. 查看相关组件日志与上下文

  • 除了 app.log,还可查看 framework.lognetwork_adapter 组件日志,确认是否有相关错误。

  • 使用以下命令提取相关日志:

    grep -i "lldp" /var/log/app.log
    grep -i "bmc_core" /var/log/app.log | grep -i "error"
    
  • 观察该错误是否伴随其他异常,如网络接口无法识别、交换机信息缺失、rack 管理 U 位错误等。

5. 验证系统行为影响

  • 该错误是否影响实际功能?例如:
    • 网络端口信息是否在 Web 界面显示为“未知”?
    • Rack 管理中的 U 位识别是否失败?
    • 是否影响带外网络策略切换?
  • 若仅日志报错但功能正常,可能是非关键告警,可考虑优化日志级别或增加默认处理逻辑。

解决建议

  1. 对端设备配置调整:确保交换机 LLDP 配置中启用了 Port ID 字段,并使用标准接口名称格式。
  2. BMC 软件升级:检查是否存在已知的 bmc_core LLDP 解析缺陷,参考 openUBMC 社区或 GitCode 上是否有相关修复补丁(如 gitcode.com/openUBMC/pcie_device/issues/12 类似问题跟踪)。
  3. 临时规避:若问题不影响业务,可在日志中过滤该错误,避免日志刷屏。
  4. 提交问题跟踪:向 openUBMC 社区提交 issue,提供 app.loglldp.pcap 抓包文件,请求 bmc_core 团队分析 lldp_proc.c 的容错能力。

参考信息

  • bmc_core 负责 LLDP 处理,相关文件为 lldp_proc.cntp_config.c
  • app.log 是核心诊断日志,记录了 bmc_corenetwork_adapter 等组件的运行状态。
  • 类似问题曾因 LLDP 解析失败导致固件升级超时,说明 LLDP 健康状态对系统稳定性有影响。

建议优先检查对端 LLDP 报文完整性,并结合抓包与日志分析定位根本原因。

lldp是关闭的,理论上不应该有这个报错。管理网络中肯定会有一些跟bmc无关的lldp报文。AI给的都是报文相关的分析,帮助不是很大。感觉跟network_adapter适配有关系,社区有没有lldp处理流程相关的介绍?

@SemptianUser1 LLDP在BMC的北向接口上的开关是针对 BMC 发出的 LLDP 报文,当前原始问题是 BMC 收到网上邻居发送的 LLDP,并且该LLDP触发了交换机端口解析并且解析无端口,该问题需要 BMC SDK 进行进一步分析。
@L_Ling 请跟踪处理一下该问题

  1. 出现这个错误日志的原因为解析LLDP报文时,未获取到正确的Port ID TLV;
  2. 根据LLDP协议,LLDP报文中Port ID TLV为必选TLV LLDP帧 - IP报文格式大全 - 华为
  3. 建议抓包分析一下组网中是否有设备频繁发送该错误报文,如果存在,建议关闭或修复对应设备中错误报文的周期发送;

本端lldp功能是disable的,理论上直接丢弃对端的lldp报文就可以,设计上可以做到吗?

  1. “本端lldp功能是disable的”是啥意思?
  2. 这个是固定配置,未提供接口设置能力,默认都是要解析LLDP报文的。

WEB端的LLDP使能配置是关闭的。这里的配置并不会关闭LLDP的报文解析是吧?

  1. 这里只会关闭LLDP报文自动发送,自动接收没有开关;
  2. 日志限频已在25Q4落地

后期是否考虑规划自动接收开关?

长期可能会规划,因为需求排序的原因,目前还没有具体计划。