X hits on this document

PDF document

February 10, 2006 - page 56 / 238





56 / 238



IPMB header.


System Interface to LAN

TBD - write this, use the formats described in the send/receive message commands.



IPMB provides the main channel for transferring messages around an IPMI system. It is a message bus that works somewhat like Ethernet, it is a CSMA (carrier-sense multiple access) system. It does check to see if another sender is transmitting before sending, and will wait for that sender to complete before starting to transmit. However, it does not have collision detection; so if two MCs attempt to transmit at the same time, both messages will be lost. Because of this, IPMB does not scale very well; careful use needs to be made of the bandwith on the bus.

The format of an IPMB message of n bytes is:

0 1

Destination IPMB address Bits 0-1 - Destination LUN

2 3

4 5

Bits 2-7 - NetFN Checksum for bytes 0-1

Source IPMB address Bits 0-1 - Source LUN

Bits 2-7 - Sequence Number Command

6 .. n-2 n-1

Message Contents Checksum for the whole message

Note that for commands, the “destination LUN” will be called the “responder LUN” and the “source LUN” will be called the “requester LUN.” For responses, the “destination LUN” will be called the “requester LUN” and the “source LUN” will be called the “responder LUN.” IPMB is a peer-to-peer protocol, but there is a strong master-slave sentiment in IPMI.

Unfortunately, IPMI does not have any type of routing handling or transparency of messages. To send a message out on the IPMB, you encapsulate the entire IPMB message in a Send Message command and send it over the proper channel.

Since IPMB can lose messages, the OpenIPMI device driver implements a resend mechanism on commands sent over IPMB; if a response is not seen withing a given period of time, the command will be resent. This will be done a few times before an error is returned.


IPMB Broadcast

One special type of message is the broadcast IPMB message. This message is exactly like a normal IPMB message, but it has a 0 byte prepended to the message. This can only be a Get Device Id command. It is used to discover management controllers in the system. Broadcast is a really bad name, because it will not actually broadcast, it will go to the IPMB address is the second byte of the message. This is used for discovery because it will not have any effect on I2C devices on the bus, but IPMI devices will do a normal

Document info
Document views1029
Page views1029
Page last viewedThu Jan 19 10:15:27 UTC 2017