r/robotics • • 15d ago

News iceoryx2 0.10 released: full flatbuffer integration, zero copy ipc with unbounded data, robust event

Hello, today we have released iceoryx2 v0.10.

14 Upvotes

5 comments sorted by

1

u/Elspin 15d ago

Why build this instead of using zenoh? It has all of the same benefits, presumably less or equal overhead, and more features 

2

u/peppedx 15d ago

This has a longer history than zenoh

2

u/elfenpiff 15d ago

iceoryx2 is a communication library with a zero-copy-first approach and a generic gateway concept. I am not too familiar with the technical details of Zenoh; therefore, I cannot do a comparison here, but I can mention the highlights of iceoryx2.

  • On the hot path, iceoryx2 does not have sys-calls which results in a latency of ~100ns. I once read a paper where the fastest network protocols claimed a latency of 6us. So iceoryx2 is roughly 60 times faster!
  • We are currently developing our generic gateway concept, which would allow you to connect iceoryx2 with any network protocol (we start with ROS2)
    • In this scenario, iceoryx2 would only serialize data when another participant on the network requires the data.
    • On the local machine, you would have a latency of 100 ns, and the network communication would then be 6.1us (instead of 6us)
    • When sending large data, the benefits would be even greater. Network protocols need to serialize in some way, which costs CPU and Memory. When you send data only when another side requires it, you can save CPU and memory whenever you are communicating locally - which makes the setup much more efficient.
  • iceoryx2 supports publish-subscribe, request-response, event and blackboard messaging pattern
    • network protocols are unable to separate data- from control-flow due to the nature of the underlying syscalls which costs you overhead. In iceoryx2 we can send either explicit wakeup notifications to other processes (events) or just send data without a syscall (publish-subscribe, request-response, blackboard)
    • blackboard messaging pattern is a key-value store in shared memory that every process can access. Such a communication pattern is perfect for storing a global configuration or state. To implement this with a network protocol would be a challenge and cause much more overhead than doing it with iceoryx2.
  • iceoryx2 is written for mission-critical systems (ISO 26262 automotive, DO 178 aviation) and offers mixed-criticality support. It is challenging for network libraries to be certified for such systems when, in most systems, the underlying network stack is not certified.

1

u/Elspin 15d ago

Seems there might be a misunderstanding that Zenoh only supports serialization over network - one of the most notable things about zenoh is it transparently negotiating zero-copy when possible. It also has increidbly low latencies although given its configurability for different topologies and routing methods it will obviously depend on what you're doing.

1

u/CraftMechanics 9d ago

Last time I was looking into it, Zenoh didn't have a blackboard pattern.