BMC redundancy

Deepak Kodihalli dkodihal at
Fri Feb 2 17:28:17 AEDT 2018

On 02/02/18 6:18 am, Andrew Jeffery wrote:
> Hi Deepak,
>> 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
> Applications can cannect to remote dbus servers; the --address option to dbus-daemon allows it to listen on a TCP socket and setting DBUS_SESSION_BUS_ADDRESS will point applications in the right direction. So there are probably two ways we could do this:
> 1. Slave BMCs connect to the master's DBus daemon, and applications namespace their objects appropriately. Multi-BMC aware applications on the master access the namespaced objects as required
> 2. Slave BMCs are willfully ignorant of their role, with the master connecting to the slaves' DBus daemons to form a coherent global view of the bus for its multi-BMC aware applications, which access the remote objects as required.
> Given the support DBus has today it might be easier to go for 1 than for 2, if we go down this path at all.

I've to look at how/if this is possible in a scenario where any BMC can 
take on the role of a master, dynamically.

> [1]
>> - 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.
> Here is someone's attempt at making it easier: though you would struggle to say it's active given the last contribution was 2013-05-14.

Yep, did look at this.

>> - Thoughts on doing remote D-Bus over WebSockets?
> How do websockets come into the picture? Why do we need the extra complication vs normal sockets?

I agree that WebSockets are not the same as plain sockets, there's the 
additional connection scheme and framing, but the protocol itself 
doesn't preclude non-browser clients. Why I brought up WebSockets though 
is for things like sending/receiving (D-Bus) signals asynchronously 
across BMCs, ping/ping heartbeat messages (surveillance).

> Cheers,
> Andrew


More information about the openbmc mailing list