BMC redundancy

Deepak Kodihalli dkodihal at linux.vnet.ibm.com
Wed Jan 31 17:27:07 AEDT 2018


On 29/01/18 9:22 pm, Brad Bishop wrote:
> I know we have a lot of work to do with the basics before tackling something
> like supporting multiple BMCs in a single system, but its never too early to
> brainstorm.
> 
> Quick community poll:  Please share any thoughts you may have around supporting
> systems with multiple BMCs.  Does your organization care?  Thoughts on how it
> could/should be done?  System designs that are a non-starter for OpenBMC?
> 
> Would love to see some brain-dumps here.
> 
> thx - brad
> 

I had some thoughts/questions on messaging protocols that multiple BMCs 
within the same system (potentially managing their own sleds) may employ 
to talk to each other. I'm not getting into how the BMCs discover and 
address each other. I see two broad use-cases for a peer BMC 
communication in such a system :

- A group operation : where an external agent talks to a single BMC (for 
the want of not having to query each BMC), but wants an aggregate of 
information. For eg the agent wants to collect error logs, it talks to a 
single BMC but expects that BMC would give back an aggregation of errors 
across all peer BMCs.

- There may be reasons for a BMC to itself initiate communication with 
one or more peers.


I was interested in brainstorming what protocol should the BMCs use for 
peer communication. What I had in mind though was, can this be done by 
leveraging the existing D-Bus/REST API, as opposed to employing a new 
protocol (I've looked at some such as Protobufs/gRPC, MQTT, etc).


So several of the existing OpenBMC apps implement specific D-Bus 
services. What does it take to make remote D-Bus calls to such apps?
- It doesn't look like the D-Bus spec or libdbus officially has anything 
for D-Bus across computers. There are some good notes at 
https://www.freedesktop.org/wiki/Software/DBusRemote/.
- There are ways to achieve this via Qt D-Bus, but it would involve some 
amount tweaking with the D-Bus configs.
- I'm not aware of any open/active project implementing remote D-Bus.
- Thoughts on doing remote D-Bus over WebSockets? For instance one could 
write a serialized D-Bus message over a WebSocket that has been 
established between two BMCs. Since WebSockets are full-duplex, they 
could also be used to receive events/D-Bus signals from peer BMCs 
asynchronously.


How about using REST for the peer to peer communication? Although this 
would mean each of the peer BMCs in the system would need a REST server 
and client implementation. The 'group operation' I've mentioned above 
seems a logical fit to do this, presuming an external agent would be 
using a REST API to talk to one of the BMCs, and the REST server 
implementation on that BMC has to propagate/multicast that API to all 
its peers, and then aggregate the responses.
If it's a D-Bus app wanting to talk to a counterpart app on a peer BMC, 
then it would have to use the REST client to send an https request.


Thanks,
Deepak





More information about the openbmc mailing list