I have some unexpected behavior from the Intel node manager on an Intel board. Maybe you can help me. When I call the NMPRK_GetStatistics()-function it returns relatively often an error. The error is NMPRK_INVALID_RSP_LENGTH.
In the attachment are some of the build-in debugging logs of the NMPRK.
_nmprkshort.log: There are two times the same request. The first one is the one with the error and the second is without.
_nmprklong.log: The same as nmprk_short.log with the full communication.
reproducer.cpp: Compile with g++ reproducer.cpp -I[path]/NMPRK/NMPRK/nmprkC -L. -lnmprkc -pthread pkg-config --cflags opensslpkg-config --libs openssl -o reproducer
As you can see request puts out two responses. If the response with the data is sent first the error is thrown.
I looked into the code of NMPRK and followed the calls to the function SendBridgedCommand() in transportInterfaceSlim.cpp. There are two function for the socket communication p->RequestResponse(bReq) and p->GetAsyncResponse(5000). They both resolve in two variants of IpmiSession::sendRecv(). So I thought the packages don't received in the order in they where sent because the RMCP protocol is UDP based. Even if I put a sleep(5) between the two sendRecv(), to nearly guarantee the right order, the error occurs.
test system:
Intel(R) Xeon(R) Gold 5120
Base Board Information
Manufacturer: Intel Corporation
Product Name: S2600BPB
Version: H87926-500
BMC Firmware Build Time : Sat Sep 7 13:21:40 2019
BIOS ID : SE5C620.86B.02.01.0009.092820190230
BMC FW Rev : 2.22.59c3b83a
Backup BMC FW Rev : 1.93.870cf4f0
Build ID : 59C3B83A
SDR Package Version : 1.41
Mgmt Engine (ME) FW Rev : 04.01.04.323
Hello everyone,
I have some unexpected behavior from the Intel node manager on an Intel board. Maybe you can help me. When I call the NMPRK_GetStatistics()-function it returns relatively often an error. The error is NMPRK_INVALID_RSP_LENGTH.
In the attachment are some of the build-in debugging logs of the NMPRK.
_nmprkshort.log: There are two times the same request. The first one is the one with the error and the second is without. _nmprklong.log: The same as nmprk_short.log with the full communication. reproducer.cpp: Compile with g++ reproducer.cpp -I[path]/NMPRK/NMPRK/nmprkC -L. -lnmprkc -pthread
pkg-config --cflags openssl
pkg-config --libs openssl
-o reproducerAs you can see request puts out two responses. If the response with the data is sent first the error is thrown.
I looked into the code of NMPRK and followed the calls to the function SendBridgedCommand() in transportInterfaceSlim.cpp. There are two function for the socket communication p->RequestResponse(bReq) and p->GetAsyncResponse(5000). They both resolve in two variants of IpmiSession::sendRecv(). So I thought the packages don't received in the order in they where sent because the RMCP protocol is UDP based. Even if I put a sleep(5) between the two sendRecv(), to nearly guarantee the right order, the error occurs.
test system:
Intel(R) Xeon(R) Gold 5120 Base Board Information Manufacturer: Intel Corporation Product Name: S2600BPB Version: H87926-500
BMC Firmware Build Time : Sat Sep 7 13:21:40 2019 BIOS ID : SE5C620.86B.02.01.0009.092820190230 BMC FW Rev : 2.22.59c3b83a Backup BMC FW Rev : 1.93.870cf4f0 Build ID : 59C3B83A SDR Package Version : 1.41 Mgmt Engine (ME) FW Rev : 04.01.04.323
Thank you for your help.
nmprk_full.log nmprk_short.log reproducer.cpp.zip