0

Let's say I would like to send Get Device Id command from LAN channel to IPMB channel via BMC with message tracking, I need to go through those steps:

  1. Encapsulate Get Device Id command in Send Message command
  2. Send Send Message command from LAN to BMC providing required data like target IPMB address, all those NetFns, LUNs and most relevant in this case: request-unique Sequence Number and message tracking parameter bit set

Here starts my confusion.. because I saw 2 different solutions how BMC handle this kind of requests:

A Response on Get Device Id comes back in the Send Message response

B Separate Send Message and IPMB responses

, which turns out dependent on BMC producer.

So I need some experts knowledge:

Is this how IPMI standard stands for, that BMC implementation can provide A and/or B? Or this is misguided interpretation of BMC producers?

In my opinion and the way I understand IPMI 2.0 spec, only B solution is one and only compatible flow how it should work as confirmed in 6.13.4 Bridged Request Example:

When a request message is bridged to another channel by encapsulating it in a Send Message command (from a source channel other than the system interface), the BMC immediately returns a response to the Send Message command itself. Meanwhile, the request is extracted from the Send Message command and forwarded to the specified target channel.

IPMI 2.0 spec even provide example description:

For example, suppose a Get Device ID command has been encapsulated request in Send Message command directed to the IPMB from a LAN channel. The BMC will immediately send a response to the Send Message command back on LAN. The BMC will extract the encapsulated Get Device ID message content and format it as a Get Device ID request for IPMB. The target device on IPMB responds with a Get Device ID response message in IPMB format. The BMC takes the tracking information that was stored when the Send Message command was issued, and uses it to create a Get Device ID response in LAN format.

Kirizaki
  • 3
  • 1

1 Answers1

0

I'm the maintainer of FreeIPMI. Of all the motherboards I've worked with, "B" has always been the supported implementation. I have personally never seen an implementation of "A". I would consider the "A" implementation minimally "non-standard" (in the sense even if a legal wording was found in the IPMI specification for "A", industry has standardized on "B").

Unsure of your end goal, but if you are developing a product, I would be confident saying "B" will work on most IPMI servers. If you have the ability to speak to the "A" vendor, I would definitely push them to implement "B".

Albert Chu
  • 646
  • 3
  • 5