Re: How to ensure DBUS is broken (in clusters and bus-connected NUMA machines)

Simon McVittie <simon.mcvittie-ZGY8ohtN/[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Organization Collabora Ltd.
Message-ID <[email protected]>
On 02/10/15 01:47, Linda A. Walsh wrote:
> re: #4 -- imagine a compute engine that requires expensive authentication
> and/or link encryption over a cluster internal bus  -- it would be
> a design killer.

If this is "a single machine" in the sense that it runs one kernel, then
D-Bus should be using AF_UNIX sockets, as it does by default on all Unix
platforms. Those are basically memory being copied between processes, so
they might not be optimally fast in a NUMA architecture, but that's the
price you pay for having a more complicated memory architecture.

(If AF_UNIX is too slow, then you probably want something with shared
memory where the endpoints implicitly trust each other. D-Bus is not
designed to be that protocol; one of its design assumptions is that
endpoints may be mutually distrusting.)

If it's a cluster of machines each with their own kernel, then D-Bus is
not designed for this, and I would recommend using a different protocol
with different design trade-offs. Quoting D-Bus' specification:

"""
 Uses of D-Bus include notification of system changes (notification of
when a camera is plugged in to a computer, or a new version of some
software has been installed), or desktop interoperability, for example a
file monitoring service or a configuration service.

 D-Bus is designed for two specific use cases:

* A "system bus" for notifications from the system to user sessions, and
to allow the system to request input from user sessions.

* A "session bus" used to implement desktop environments such as GNOME
and KDE.

 D-Bus is not intended to be a generic IPC system for any possible
application, and intentionally omits many features found in other IPC
systems for this reason.

 At the same time, the bus daemons offer a number of features not found
in other IPC systems, such as single-owner "bus names" (similar to X
selections), on-demand startup of services, and security policies. In
many ways, these features are the primary motivation for developing
D-Bus; other systems would have sufficed if IPC were the only goal.
"""

> You really DON'T want encryption in such cases, as no encryption layers
> that I know that can even be used on a 1Gb connection without a notice-able
> impact in speed and latency.

Neither the D-Bus protocol nor the reference implementation is designed
to saturate gigabit links. If it happens to be able to, great (although
I'd be quite surprised).

D-Bus is designed to be a "signalling" protocol, not a "bulk data"
protocol: messages should travel when something "interesting" happens,
not continuously. If your use-case involves a continuous stream of data
between nodes, there are plenty of other options.

-- 
Simon McVittie
Collabora Ltd. <http://www.collabora.com/>

_______________________________________________
dbus mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dbus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.