You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We require a tunnel or gateway to connect multiple iceoryx2 instances on different machines with each other.
A Gateway utilizes another host-to-host-capable communication mechanism to connect iceoryx2 instances on different hosts. Applications using this mechanism will also be able to hook into the traffic.
A tunnel writes iceoryx2 payloads directly to the transport, which requires more configuration and does not enable hooking into the network traffic from non-iceoryx2 applications, but the reduced overhead improves latency.
Detailed information
Requirements
The gateway shall be configurable
it comes with a allow/deny list - services can automatically be shared with the world or are explicitly excluded
the configuration is in TOML - like the rest of the iceoryx2 configuration
a gateway config shall also contain protocol specific configurations
the config shall contain options for peer2peer as well as multicast communications
peer2peer example: provide a list of all iceoryx2 endpoints with ip/port
If possible, the gateway shall not come with extra background threads. The user shall be able to handle everything in the main thread.
Certain protocol enforce background threads, but our implementation shall not
The gateway shall be traffic efficient
only publish things that are required from an endpoint in the network
Gateway shall be usable right out-of-the-box
Sane default configuration
iceoryx2 provides a service discovery service that is provided by every gateway. this allows other gateways to discover local services
Service Discovery is written so that it does not require a background thread
it shall be split into two parts: 1. the library that performs the service discovery, 2. a binary that can be started and provides the service discovery service
the library shall be usable from within an arbitrary application. in the main loop one can call the loop callback of the service discovery to update the internal state and send out updates
publish-subscribe: service diff details like: service X, new publisher
request-response: to provide full service state
event: to notify others about service diff details
requires a user side struct for convenience to handle the service diffs(pubsub), state(rpc), events with one convenenient API
so that samples are not forwarded in circle we need to be able to determine the machine origin of a sample
(if possible) find a way to generate a machine unique id automatically and use it in the gateway, otherwise the user must provide a unique id
the pubsub header must be extended so that the id can be stored there
gateways and service discovery must be able to support multiple service styles:
ipc::Service, local::Service and future gpu::Service or hypervisor::Service
Brief feature description
We require a tunnel or gateway to connect multiple
iceoryx2
instances on different machines with each other.A Gateway utilizes another host-to-host-capable communication mechanism to connect
iceoryx2
instances on different hosts. Applications using this mechanism will also be able to hook into the traffic.A tunnel writes
iceoryx2
payloads directly to the transport, which requires more configuration and does not enable hooking into the network traffic from non-iceoryx2 applications, but the reduced overhead improves latency.Detailed information
Requirements
and https://docs.rs/iceoryx2/latest/iceoryx2/config/index.html
Next Steps
Service::list()
to acquire all static service infos, see: https://docs.rs/iceoryx2/latest/iceoryx2/service/trait.Service.html#method.listdynamic_config.__internal_list_subscribers()
,dynamic_config.__internal_list_publishers()
dynamic_config.__internal_list_listeners()
,dynamic_config.__internal_list_notifiers()
The text was updated successfully, but these errors were encountered: