eclipse-iceoryx / iceoryx

Eclipse iceoryx™ - true zero-copy inter-process-communication
https://iceoryx.io
Apache License 2.0
1.57k stars 373 forks source link

Multiple environments (RouDis) #1129

Open niclar opened 2 years ago

niclar commented 2 years ago

Hi what's the recommended path of running two separate iceoryx environments on the same box if possible ?

I rather not send under separate topics and share RouDi. I see that Roudi can start with an unique Id but the PoshRuntime can't register per runtime Id... -I suspect I'm missing something.

Please advice. Thanks!

Edited from elBoberido on Feb 13th 2024

Tasks

Since this is a larger feature and most probably won't be finished at once, the changes will either live on a separate feature branch or if possible behind a feature flag, e.g. IOX_EXPERIMENTAL_POSH

elfenpiff commented 2 years ago

@niclar This is a feature we have in mind and is on our todo list but sadly not in the next weeks. @budrus can you shine some light on it when we could start working on this?

But if you want to separate the RouDi instance for security/safety reasons we already have a feature in place which separates the process in a way that they cannot read/write data/memory which they aren't supposed to. For this you configure multiple shared memory segments and let the processes run under different groups, see: https://github.com/eclipse-iceoryx/iceoryx/blob/master/doc/website/advanced/configuration-guide.md for the documentation and https://github.com/eclipse-iceoryx/iceoryx/tree/master/iceoryx_examples/ice_access_control for the code example.

This feature is not yet finalized but you could use this as a starting point and when we finalize the feature you do not have to change much in the code (or in the best case nothing). The missing piece is that all application at the moment require read/write access to the shared memory management segment of roudi - this should not be necessary.

budrus commented 2 years ago

As @elfenpiff wrote, we currently do not support this. The unique ID for RouDi is a first step and supporting this is definitely on the wish list for a 2.1 or 3.0 release. What exactly is your use case @niclar?

niclar commented 2 years ago

@burus I want to run two separate systems / stacks (production-staging, production) on the same machine (different prio, communicating modules, config, etc.). Until this feature is in place I'll "just" publish under different topics (instanceIds) and share RouDi.

elBoberido commented 2 years ago

@niclar would it be an option to run the production-staging RouDi in a docker environment?

niclar commented 2 years ago

We don't run docker and that would introduce discrepancies in A/B testing wrt networking, latencies etc.