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类型(如eth0、GigabitEthernet1/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 监听接口(如
eth2或eth3)。 -
根据知识库,
bmc.kepler.Managers.LldpConfig是bmc_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.log和network_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 位识别是否失败?
- 是否影响带外网络策略切换?
- 若仅日志报错但功能正常,可能是非关键告警,可考虑优化日志级别或增加默认处理逻辑。
解决建议
- 对端设备配置调整:确保交换机 LLDP 配置中启用了
Port ID字段,并使用标准接口名称格式。 - BMC 软件升级:检查是否存在已知的
bmc_coreLLDP 解析缺陷,参考openUBMC社区或 GitCode 上是否有相关修复补丁(如gitcode.com/openUBMC/pcie_device/issues/12类似问题跟踪)。 - 临时规避:若问题不影响业务,可在日志中过滤该错误,避免日志刷屏。
- 提交问题跟踪:向
openUBMC社区提交 issue,提供app.log和lldp.pcap抓包文件,请求bmc_core团队分析lldp_proc.c的容错能力。
参考信息
bmc_core负责 LLDP 处理,相关文件为lldp_proc.c和ntp_config.c。app.log是核心诊断日志,记录了bmc_core、network_adapter等组件的运行状态。- 类似问题曾因 LLDP 解析失败导致固件升级超时,说明 LLDP 健康状态对系统稳定性有影响。
建议优先检查对端 LLDP 报文完整性,并结合抓包与日志分析定位根本原因。
lldp是关闭的,理论上不应该有这个报错。管理网络中肯定会有一些跟bmc无关的lldp报文。AI给的都是报文相关的分析,帮助不是很大。感觉跟network_adapter适配有关系,社区有没有lldp处理流程相关的介绍?
@SemptianUser1 LLDP在BMC的北向接口上的开关是针对 BMC 发出的 LLDP 报文,当前原始问题是 BMC 收到网上邻居发送的 LLDP,并且该LLDP触发了交换机端口解析并且解析无端口,该问题需要 BMC SDK 进行进一步分析。
@L_Ling 请跟踪处理一下该问题
- 出现这个错误日志的原因为解析LLDP报文时,未获取到正确的Port ID TLV;
- 根据LLDP协议,LLDP报文中Port ID TLV为必选TLV LLDP帧 - IP报文格式大全 - 华为;
- 建议抓包分析一下组网中是否有设备频繁发送该错误报文,如果存在,建议关闭或修复对应设备中错误报文的周期发送;
本端lldp功能是disable的,理论上直接丢弃对端的lldp报文就可以,设计上可以做到吗?
- “本端lldp功能是disable的”是啥意思?
- 这个是固定配置,未提供接口设置能力,默认都是要解析LLDP报文的。
- 这里只会关闭LLDP报文自动发送,自动接收没有开关;
- 日志限频已在25Q4落地
后期是否考虑规划自动接收开关?
长期可能会规划,因为需求排序的原因,目前还没有具体计划。
