MCTP 0x7E 通道无响应

// 此模板仅供参考,如果不适用可以修改

问题描述

  1. 服务器配置 Huawei SP681 (Hi1822) 智能网卡,BMC Web UI 上不显示交换机(Switch)信息。
  2. 网卡基本信息和网口信息显示正常,但交换机相关页面空白;多台机器均无法显示交换机信息。
  3. 交换机信息走LLDP接口,交换机向网卡发送的LLDP报文能被正常抓取,且有内容;
  4. 抓取LLDP 上报BMC的通信报文,发现没有报文,另一台机器 Endpoint_23_126 同样无报文。

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. 网卡SP681
  2. mdbctl
    lsobj Endpoint
    attach mctpd
    lscmd
    tracemctp Endpoint_65_126 start
    
    tracemctp Endpoint_65_126 stop
    
  3. 将Endpoint_65_126换成自己机器上有的ep对象,126是vdpci通道

期望结果

能抓取到报文

实际结果

无报文

尝试过的解决方案

1.追踪抓取通信报文

LLDP 上报通道确定

-- network_adapter/src/lualib/device/class/network_adapter.lua:1245-1252
function c_network_adapter:setup_vdpci_lldp_listener(ports)
    -- 网卡lldp over mctp走的是mctp vdpci(0x7e)通道
    local endpoint = self:create_mctp_endpoint(mctp_lib.MCTP_MESSAGE_TYPE_VDPCI)
    local bus = c_object_manage.get_instance().bus
    local sig =
        MatchRule.signal('MessageReceived', 'bmc.kepler.Systems.Mctp.PCIeEndpoint'):with_path(
            endpoint.path)

LLDP 上报走 MCTP 的 VDPCI 消息类型(message type 0x7E = 126),承载在 MCTP over PCIe VDM 之上(MediumType = 0x0F);而"使能"走的是 NCSI(0x02)的 0x0E 命令。

确定Endpoint

(1)BDF 地址

BDF=“0000:41:00.1”

(2)把 BDF 映射到 phy_addr

MCTP 的物理地址(phy_addr)和 PCIe 的 BDF 有对应关系。0000:41:00.1 里的设备号是 0x41,换算成十进制就是 65。

(3)在 MCTP 注册信息(mctp_info)里找 phy_addr=65 的条目

idx:12, module_name = network_adapter, phy_addr = 65, msg_src_eid = 24, msg_type = 126, pid = 5611, process_tag = 3224632059
idx:13, module_name = network_adapter, phy_addr = 65, msg_src_eid = 24, msg_type = 1, pid = 5611, process_tag = 3224632059
idx:14, module_name = network_adapter, phy_addr = 65, msg_src_eid = 24, msg_type = 2, pid = 5611, process_tag = 3224632059

phy_addr = 65 对应的 EID 是 24,而 msg_type =126 是mctp vdpci(0x7e)通道,也就是 LLDP 数据上报用的消息类型。

tracemctp Endpoint_65_126 没有获取到报文

tracemctp Endpoint_23_2 stop

mdbctl
lsobj Endpoint
attach mctpd
lscmd
tracemctp Endpoint_65_126 start

tracemctp Endpoint_65_126 stop

2.查看日志rpc_records.log

所有被调用 Request 的端点,消息类型都是 /2(NC-SI),调用次数都在 1 万次以上,说明 NC-SI 通道业务非常活跃。

所有 /126(厂商自定义 0x7E)和 /1(MCTP 控制)端点,都只有属性查询,从未发起过实际业务请求。

----------RPC Performance Statistics----------
bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011408 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011B01 bmc.kepler.Object.Properties GetWithContext 3

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011403 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/65/1 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.persistence /bmc/kepler/persistence org.freedesktop.DBus.Peer Ping 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_PCIeCard_01011B03 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011405 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011B03 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.devmon /bmc/dev/ObjectGroup org.freedesktop.DBus.ObjectManager GetManagedObjects 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/0101 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/214/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12767

bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms org.freedesktop.DBus.Properties Get 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/65/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12300

bmc.kepler.persistence /bmc/kepler/persistence bmc.kepler.persistence BatchRead 2

bmc.kepler.maca /bmc/kepler/MdbService bmc.kepler.Mdb GetObject 50

bmc.kepler.bios /bmc/kepler/Systems/1/SmBios bmc.kepler.Object.Properties GetWithContext 13

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011401 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011407 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011406 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/0101 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.bmc_network /bmc/kepler/Managers/1/EthernetInterfaces org.freedesktop.DBus.Peer Ping 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/66/1 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup org.freedesktop.DBus.ObjectManager GetManagedObjects 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B01 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011403 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B02 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B03 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms/1/ComputerSystem/Systems/1/InfiniBands org.freedesktop.DBus.ObjectManager GetManagedObjects 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/206/126 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.hwproxy /bmc/kepler/Scanner/Scanner_OcpPrsnt_0101 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.hwproxy /bmc/kepler/Accessor/Accessor_NCSI_0101 bmc.kepler.Object.Properties GetWithContext 2276

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011401 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011406 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms/1/ComputerSystem/Systems/1/Storage/1/FC org.freedesktop.DBus.ObjectManager GetManagedObjects 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011402 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B02 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B02 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011406 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B01 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B01 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011C02 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011C02 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011406 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011C03 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011401 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011402 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/66/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011404 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011404 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/66/126 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011407 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011407 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011402 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/65/126 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/204/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/206/1 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011402 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011C02 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011402 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011404 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011C02 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/66/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12351

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011C02 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/8/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 11365

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011B02 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011C02 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.persistence /bmc/kepler/persistence bmc.kepler.persistence Save 85

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/206/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12392

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/204/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12863

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011403 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011403 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011404 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011407 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwproxy /bmc/kepler/Accessor/Accessor_NCSIChannel_0101 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011403 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011404 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011C03 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011C03 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011B02 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011403 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011404 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011407 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.maca /bmc/kepler/MdbService bmc.kepler.Mdb GetSubPaths 3

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011B02 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011B02 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011405 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011408 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011408 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011C03 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.hwproxy /bmc/kepler/Scanner/Scanner_PowerGood_01011C03 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.ipmi_core /bmc/kepler/IpmiCore bmc.kepler.IpmiCore Request 14262

bmc.kepler.hwproxy /bmc/kepler/Chip/Complex/Chip_Hi1822_01011B01 bmc.kepler.Chip.BlockIO WriteRead 657

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011401 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/85/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12800

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B03 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011B03 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011405 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011408 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011401 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.bmc_network /bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Object.Properties GetWithContext 5

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011C02 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.hwproxy /bmc/kepler/Scanner/Scanner_PowerGood_01011B01 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/97/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/87/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12787

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_PCIeCard_01011C03 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms/1/ComputerSystem/Systems/1/EthernetInterfaces org.freedesktop.DBus.ObjectManager GetManagedObjects 1

bmc.kepler.hwproxy /bmc/kepler/Chip/Complex/Chip_Hi1822_01011C03 bmc.kepler.Chip.BlockIO WriteRead 813

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/217/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 11297

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/214/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/99/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011C03 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/97/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12824

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/87/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/85/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/229/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/hwdiscovery/MicroComponent org.freedesktop.DBus.Properties Get 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011C03 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011405 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011402 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/226/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011B01 bmc.kepler.Object.Properties GetWithContext 12

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011B03 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.fructrl /bmc/kepler/Systems/1/FruCtrl/FruCtrl_1_0_00 bmc.kepler.Object.Properties GetWithContext 7076

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011405 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/226/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12795

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/206/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/229/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12790

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011405 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.maca /bmc/kepler/MdbService bmc.kepler.Mdb GetInterfaceOwners 7101

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011405 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.hwproxy /bmc/kepler/Scanner/Scanner_PowerGood_01011B03 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.hwproxy /bmc/kepler/Chip/Complex/Chip_Hi1822_01011B03 bmc.kepler.Chip.BlockIO WriteRead 741

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeDevice_1_01011407 bmc.kepler.Object.Properties GetWithContext 20

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011404 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/99/2 bmc.kepler.Systems.Mctp.PCIeEndpoint Request 12835

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/217/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/0101 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011407 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011408 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011401 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011401 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011B03 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011402 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011403 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011406 bmc.kepler.ObjectGroup GetBinaryObjects 1

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_PCIeCard_01011B01 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Frus/Fru_CX7_01011408 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.pcie_device /bmc/kepler/Systems/1/PCIeDevices/PCIeCards/PCIeCard_1_01011408 bmc.kepler.Object.Properties GetWithContext 4

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/8/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011406 bmc.kepler.Object.Properties GetAllWithContext 1

bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011406 bmc.kepler.Object.Properties GetWithContext 1

bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/65/2 bmc.kepler.Object.Properties GetWithContext 2

bmc.kepler.frudata /bmc/kepler/Systems/1/Components/Component_PCIeCard_01011B01 bmc.kepler.Object.Properties GetWithContext 2


3.手动调用

(1)通过 D-Bus 调用 mctpd 的 Request 方法

请求超时

~ ~ $ busctl --user introspect bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/65/126 bmc.kepler.Systems.Mctp.PCIeEndpoint
NAME                                 TYPE      SIGNATURE          RESULT/VALUE      FLAGS
.Request                             method    a{ss}ayia{ss}a{ss} ay                -
.Send                                method    a{ss}aya{ss}       -                 -
.MediumType                          property  y                  15                emits-change
.MessageType                         property  y                  126               emits-change
.ServiceName                         property  s                  "network_adapter" emits-change
.Status                              property  y                  1                 emits-change
.TargetEid                           property  y                  23                emits-change
.TargetPhyAddr                       property  q                  65                emits-change
.MessageReceived                     signal    a{ss}ay            -                 -
.OnMessage                           signal    a{ss}ay            -                 -
~ ~ $ busctl --user call bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/65/126 bmc.kepler.Systems.Mctp.PCIeEndpoint Request a{ss}ayia{ss}a{ss} 0 0 0 0 0
Call failed: {"name":"kepler.mctpd.MctpRequestTimeout","format":"The Mctp request timeout."}

(2)用bmc.kepler.Systems.Mctp.PCIeEndpoint的send发送请求

没有收到响应

~ ~ $ busctl --user call bmc.kepler.mctpd /bmc/kepler/Systems/1/Mctp/Endpoint/65/126 bmc.kepler.Systems.Mctp.PCIeEndpoint Send a{ss}aya{ss} 0 3 0x00 0x01 0x02 0
~ ~ $
~ ~ $
-------------------------------------------------------------------------------------------

% tracemctp Endpoint_65_126 start

% ============= PCIe capture [SEND] =============
7F 00 00 03 01 10 00 72 C8 1A 17 01 B4 1A 00 41
7E 00 01 02

求助

  1. 有没有人遇到过 SP681网卡 在 openUBMC 下交换机信息不显示的问题?最终如何解决?

  2. SP681 固件 17.13.1.0 是否支持 MCTP 0x7E 交换芯片管理?正确的请求格式是什么?

  3. network_adapter 组件触发 0x7E 请求的条件是什么?需要 SR 中定义哪些对象?

  4. 如何确认网卡是否通过 VDPCI 主动上报?network_adapter 是否订阅了 MessageReceived 信号?

  5. 是否有可用的调试命令或工具,能进一步验证网卡固件对 0x7E 的处理能力?

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

总结

MCTP 0x7E 通道无响应的直接原因是 BMC 发出的 VDPCI 请求未获得 SP681 网卡固件的有效应答。 综合日志分析,问题更倾向于是 SP681 固件对 VDPCI 业务的支持不完善或未正确使能。同时,BMC 侧 network_adapter 组件的请求触发逻辑可能也未完全激活。建议优先与网卡厂商确认固件能力,并同时排查 BMC 软件的请求触发和配置完整性。

点击此处查看详细分析解答

根据您提供的详细技术信息,结合知识库中的相关背景,我对 MCTP 0x7E 通道无响应 导致 BMC 无法显示交换机信息的问题进行了综合分析。

核心问题定位

您遇到的根本问题是 BMC 与 SP681 智能网卡之间的 MCTP VDPCI (0x7E 通道) 通信链路未建立,导致承载 LLDP 数据的报文无法从网卡传输到 BMC。

以下是基于您的日志和知识库梳理出的故障链条与关键证据:

  1. 通道配置已识别:

    • 知识库确认,LLDP 上报走的是 MCTP VDPCI 通道,其消息类型为 0x7E(126),承载于 MCTP over PCIe VDM 之上。
    • 通过 MCTP 注册信息,您已正确定位到 phy_addr = 65(BDF对应),其 msg_type = 126 的注册条目存在,说明 BMC 侧已为 LLDP 业务创建了对应的 Endpoint 对象。
  2. 通道业务未激活:

    • 您的 RPC Performance Statistics 日志提供了决定性证据:调用 /126(VDPCI)端点的 Request 方法次数为 0,仅存在属性查询(GetWithContext)。相比之下,NC-SI (/2) 通道的 Request 调用次数高达上万次。
    • 手动通过 D-Bus 调用 Request 方法直接返回 MctpRequestTimeout,这明确表明底层 MCTP 通信失败,即 BMC 发出的 VDPCI 请求未得到 SP681 固件的响应。
  3. 链路与协议栈状态:

    • tracemctp 抓包结果显示了 BMC 发送的 VDPCI 报文(7E 00 01 02),但未收到任何来自网卡的响应报文,这是"无响应"的直接证据。
    • 知识库指出,“MCTP Discovery 失败” 和 “Mctpd 未收到来自 Chip(网卡)的响应” 是 MCTP 通信故障的常见表现。这与此处 BMC 无法与网卡 VDPCI 业务通道通信的现象吻合。

结论与可能原因

综合来看,问题可能出在以下几个环节,这些环节在知识库中均有对应描述:

  1. SP681 固件侧功能未生效或存在缺陷:

    • 这是最可能的原因。知识库中提及 SP681 网卡支持 MCTP 和 LLDP,但其固件版本(您使用的是 17.13.1.0)可能不支持或未正确实现 MCTP 0x7E 交换芯片管理功能。
    • 网卡能够接收来自交换机的 LLDP 报文(您已抓包成功),但没有主动通过 VDPCI 通道上报给 BMC,表明网卡固件侧的 LLDP-over-MCTP 上报功能可能存在缺陷或未启用。
  2. BMC 侧 network_adapter 组件请求逻辑未触发:

    • 知识库中,network_adapter.lua 的 setup_vdpci_lldp_listener 函数负责创建 VDPCI Endpoint 并订阅 MessageReceived 信号。
    • 日志显示 BMC 侧从未主动发起 /126 业务请求,这与 network_adapter 未实际调用 Request 方法(即未向网卡发送 VDPCI 请求)的情况一致。可能是组件逻辑未能满足触发条件,或初始化流程未完成。
  3. 配置不完整:

    • 知识库提到MctpBinding负责绑定物理地址和EID,而BmcKeplerSystemsMctpPcieEndpoint必须在mds/service.json中注册。虽然您的 Endpoint (/65/126) 存在,但特定于 VDPCI 业务的相关配置(如触发条件所需的 SR 对象)可能缺失或错误。

排查与解决方向建议

基于上述分析,建议您从以下几个方向进一步排查:

  1. 聚焦网卡固件功能:

    • 这是您求助中提出的关键问题。固件 17.13.1.0 是否支持 MCTP 0x7E 交换芯片管理? 强烈建议联系华为网卡技术支持,确认该版本是否支持 LLDP-over-MCTP 主动上报功能,以及正确的 VDPCI 请求格式。如有可能,升级到已知支持该功能的网卡固件版本进行对比测试。
  2. 验证 network_adapter 组件的请求逻辑:

    • 深入检查 network_adapter 组件的日志(如 app.log),查找 setup_vdpci_lldp_listener 函数是否被调用,以及是否输出了创建 Endpoint 或订阅信号成功的相关日志。确认是否存在阻止该函数执行的条件。
  3. 检查系统配置完整性:

    • 对照知识库,确认 BmcKeplerSystemsMctpPcieEndpoint 已在 mds/service.json 中声明。
    • 核对 MctpBinding 的配置,确保 BMC 的 SMBus EID 和物理地址等参数正确无误。
    • 检查 LLDP 上报功能所需的软件开关,除了您已尝试的 LLDPEnabled 和 LLDPOverNCSIEnabled,是否还有其他控制 VDPCI 通道业务激活的配置项。
  4. 使用调试工具进一步定位:

    • 利用 tracemctp 持续抓包,不仅查看 BMC 发送的报文,更要关注是否有来自网卡的任何响应(即使不是针对您发送的请求)。
    • 尝试在不同的硬件或操作系统环境下(如非 OpenUBMC 系统)测试同一块 SP681 网卡,以隔离是 BMC 软件问题还是网卡固件问题。

总结

MCTP 0x7E 通道无响应的直接原因是 BMC 发出的 VDPCI 请求未获得 SP681 网卡固件的有效应答。 综合日志分析,问题更倾向于是 SP681 固件对 VDPCI 业务的支持不完善或未正确使能。同时,BMC 侧 network_adapter 组件的请求触发逻辑可能也未完全激活。建议优先与网卡厂商确认固件能力,并同时排查 BMC 软件的请求触发和配置完整性。