Local Transport — iceoryx2
Ultra-low latency communication between processes on the same machine.| Property | Value |
|---|---|
| ⚡ Latency | < 1 μs (~60 ns typical) |
| 📦 Serialization | None — raw bytes in shared memory |
| 🧠 Mechanism | Publisher writes to shared memory, subscriber reads from the same location |
| 📐 Range | Same machine only |
| 🔄 Throughput | Limited by memory bandwidth, not CPU |
The zero-copy design means that for local communication, Cerulion is essentially a shared memory allocator. There’s no serialization overhead — a 6 MB camera image has the same transport cost as a 24-byte pose message.
Network Transport — Zenoh
Reliable communication across machines and networks.| Property | Value |
|---|---|
| ⚡ Latency | 1–10 ms (network dependent) |
| 📦 Serialization | Automatic (raw bytes for Copy types) |
| 🧠 Mechanism | Background thread serializes and sends via Zenoh |
| 📐 Range | Any machine on the network |
| 🔄 Semantics | Latest-message — stale data is replaced, not queued |
Network publishing happens asynchronously on a background thread. Local publishing never blocks waiting for network I/O — even if the network is congested, local subscribers see data in nanoseconds.
Transport Comparison
| Dimension | Local (iceoryx2) | Network (Zenoh) |
|---|---|---|
| ⚡ Latency | < 1 μs | 1–10 ms |
| 📦 Serialization | None | Automatic |
| 🔒 Blocking | Minimal (memory alloc) | Non-blocking (background thread) |
| 📐 Range | Same machine | Any machine on network |
| 🔄 Semantics | Immediate | Latest-message |
| 🎯 Best for | High-frequency sensors, real-time control | Distributed systems, cross-machine communication |
Automatic Selection
Cerulion selects the transport for each topic automatically:- Publisher starts local-only — writes to shared memory, no network overhead
- Remote subscriber appears — TopicManager enables network publishing for that topic
- Remote subscriber disconnects — TopicManager disables network, stops serializing
Like how your phone switches between Wi-Fi and cellular without you choosing — Cerulion routes each topic through the fastest available path.
Per-Topic Overrides
Coming Soon For structured environments where you know the network topology, you will be able to override transport per topic:When to use TCP (coming soon)
When to use TCP (coming soon)
Reliable streaming — video feeds between robots, loop closure frames, map updates. TCP handles ordering, retransmission, and flow control natively. No chunking overhead for large payloads.
When to use UDP (coming soon)
When to use UDP (coming soon)
Low-latency small messages — control commands, heartbeats, status updates. UDP avoids TCP’s connection overhead and head-of-line blocking. Best for payloads under ~1 KB.
When to let Cerulion decide
When to let Cerulion decide
Most of the time — and always in the current release. Automatic selection handles the common case correctly: shared memory for local, Zenoh for network. Per-topic TCP/UDP overrides are coming soon.