[riot-devel] Distributed Messaging

Kaspar Schleiser 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 mailing list