[riot-devel] Distributed Messaging
kaspar at schleiser.de
Wed Aug 14 13:10:09 CEST 2013
On 08/13/2013 05:47 PM, Carsten Bormann wrote:
> Proxying IPC to a remote system may be a useful tool, but there are a number of dangers:
> -- don't put things in the wrong layer (should the IPC layer be concerned with network addresses? Application names?);
I totally agree.
The whole idea of proxying was to not have to change the IPC layer and
keep on-node messaging as small as possible as in don't make compromises
for embedded systems without networking / distribution.
Have inter-node messaging as option using proxy mechanisms, it can be
used wherever needed, without any drawbacks when not needed. All the
networking and application name stuff should be optional and not in the
core IPC code.
Also the proxying can be hand-taylored to whatever routing / networking
layer is present.
> -- make sure you have a place to handle the leakiness of the abstraction (distributed systems are different from local access);
I think most of the issues can be handled in the proxy code.
But an application definately has to be written with distribution in mind.
Right now, most apps will wait forever if they don't get the desired
reply to a message. The programmer has to take care of a possibly
unexpected reply (e.g., from the proxy, "timeout" or "other node down"
or "network error").
> -- don't change everything in the abstraction you are "extending" (length, pointers, ...);
Right now, IPC depends on shared address space between threads to be
usable. With minor changes (and the same API), we can send some data
along with a message. As far as I can see, this is the only change
needed in the core messaging code.
> -- don't move to the wrong focus (is RIOT about distributed computing?).
Well, aren't WSNs inherently distributed systems? :)
Many embedded systems consist of more than one MCU. Distributed IPC
might be an easy way to link them up from a programmers perspective,
like, connect SPI or serial, write a minimal serial-to-IPC-proxy and
have them share ressources via IPC.
I've always been fascinated with distributed systems. I'll experiment
with that even if it's of no use to RIOT at all. ;)
More information about the devel