Migration / Alternative Middleware
The pain
The clearest signal that DDS pain is real: in 2023 the ROS project officially
adopted an alternative middleware (Zenoh, rmw_zenoh) because DDS, as the
sole middleware, did not work out of the box for a large part of the community
(7 reports, plus this is the conclusion the rest of the corpus points to).
- The official Alternative Middleware Report cites network-wide crashes from DDS multicast packet storms, DDS not working out of the box on managed networks, and the need for expert, application-specific DDS configuration.
- Zenoh was selected as the most-recommended alternative.
Most recent / flagship example
ROS 2 Alternative middleware report (2023-09-27, OSRF). The canonical statement of why DDS alone was deemed insufficient, and the decision to add a non-DDS middleware.
Reference list
| Date | Source | Point |
|---|---|---|
| 2023-09-27 | ROS 2 Alternative middleware report | Official: DDS insufficient alone → adopt Zenoh |
| 2023-10-30 | Eclipse newsroom | Zenoh selected as alternate ROS 2 middleware |
| 2024-06-12 | ZettaScale news | Zenoh experimental support lands in ROS 2 |
| 2024-07-03 | arXiv 2407.03091 | Middleware comparison for multi-robot mesh networks |
| 2025-01-03 | ROS Discourse | rmw_zenoh binaries shipped for Rolling/Jazzy/Humble |
The ZeroDDS position
You don’t have to leave DDS to escape DDS pain.
Zenoh fixes the ergonomics (router-/broker-style discovery, works on WiFi and in the cloud) by leaving the RTPS wire — which means a Zenoh fleet no longer speaks native DDS, and bridging back to existing DDS systems is a separate component. For the large installed base of DDS robots, sensors, and tooling, that is a real cost.
ZeroDDS takes the other path: fix the reasons people left DDS, while staying on the RTPS wire.
- Discovery ergonomics like Zenoh, without leaving RTPS. Multicast-free
unicast peers (no broadcast storms, works on WiFi/Docker/cloud) — but the wire
is still native RTPS 2.5, so ZeroDDS nodes interoperate directly with the
existing Fast DDS / Cyclone / OpenDDS / Connext fleet (verified 20/20 with real
rmw_cyclonedds). - The structural fixes, not a workaround. Loud QoS failures, no silent large-data cap, variable-size zero-copy SHM, robotics-appropriate defaults, full DDS-Security — the specific clusters this trail documents.
- Standard-preserving. A complete, audited OMG DDS spec stack means existing DDS tooling, type systems and security models keep working; there is no new protocol to bridge.
- Memory-safe, MCU-to-server. Pure Rust,
forbid(unsafe_code)safe core,no_std + allocfor embedded — a property neither the incumbent C++ stacks nor a separate-protocol middleware offers.
Why this is the better migration
The choice the community was forced into was “keep DDS and keep the pain” or
“adopt Zenoh and lose native DDS interop.” ZeroDDS is the third option: keep
the DDS standard and the wire interop, and lose the pain — so a team can drop
in rmw_zerodds on one robot, interoperate with the rest of its DDS fleet
unchanged, and validate the improvement incrementally.
Validate it yourself
This whole trail is a set of falsifiable, reproducible claims. Start anywhere:
crates/ros2-rmw/interop/run_interop.sh # live ROS 2 interop
crates/ros2-rmw/interop/run_multicast_free_xvendor.sh # cross-vendor, no multicast
crates/ros2-rmw/interop/run_largedata.sh # large data, byte-perfect
Migration / Alternative Middleware
Der Schmerz
Das klarste Signal, dass DDS-Schmerz real ist: 2023 adoptierte das ROS-Projekt offiziell eine alternative Middleware (Zenoh, rmw_zenoh), weil DDS als alleinige Middleware für einen großen Teil der Community nicht out of the box funktionierte (7 Reports, plus dies ist die Schlussfolgerung, auf die der Rest des Korpus zeigt).
- Der offizielle Alternative-Middleware-Report nennt netzweite Crashes durch DDS-Multicast-Packet-Storms, DDS, das auf verwalteten Netzen nicht out of the box funktioniert, und die Notwendigkeit von Experten-, anwendungsspezifischer DDS-Konfiguration.
- Zenoh wurde als die meistempfohlene Alternative ausgewählt.
Jüngstes / Flaggschiff-Beispiel
ROS 2 Alternative middleware report (2023-09-27, OSRF). Die kanonische Aussage, warum DDS allein als unzureichend erachtet wurde, und die Entscheidung, eine Nicht-DDS-Middleware hinzuzufügen.
Referenzliste
| Datum | Quelle | Punkt |
|---|---|---|
| 2023-09-27 | ROS 2 Alternative middleware report | Offiziell: DDS allein unzureichend → Zenoh adoptieren |
| 2023-10-30 | Eclipse newsroom | Zenoh als alternative ROS-2-Middleware ausgewählt |
| 2024-06-12 | ZettaScale news | Zenoh-Experimental-Support landet in ROS 2 |
| 2024-07-03 | arXiv 2407.03091 | Middleware-Vergleich für Multi-Roboter-Mesh-Netze |
| 2025-01-03 | ROS Discourse | rmw_zenoh-Binaries für Rolling/Jazzy/Humble ausgeliefert |
Die ZeroDDS-Position
Du musst DDS nicht verlassen, um dem DDS-Schmerz zu entkommen.
Zenoh fixt die Ergonomie (Router-/Broker-Style-Discovery, funktioniert auf WiFi und in der Cloud), indem es den RTPS-Draht verlässt — was bedeutet, dass eine Zenoh-Flotte kein natives DDS mehr spricht und das Bridging zurück zu bestehenden DDS-Systemen eine separate Komponente ist. Für die große installierte Basis an DDS-Robotern, -Sensoren und -Tooling ist das eine echte Kostenstelle.
ZeroDDS geht den anderen Weg: behebt die Gründe, aus denen Leute DDS verließen, und bleibt dabei auf dem RTPS-Draht.
- Discovery-Ergonomie wie Zenoh, ohne RTPS zu verlassen. Multicast-freie Unicast-Peers (keine Broadcast-Storms, funktioniert auf WiFi/Docker/Cloud) — aber der Draht ist weiterhin natives RTPS 2.5, sodass ZeroDDS-Nodes direkt mit der bestehenden Fast-DDS- / Cyclone- / OpenDDS- / Connext-Flotte interoperieren (verifiziert 20/20 mit echtem
rmw_cyclonedds). - Die strukturellen Fixes, kein Workaround. Laute QoS-Fehler, kein stiller Large-Data-Cap, variabel-große Zero-Copy-SHM, robotik-passende Defaults, volle DDS-Security — die spezifischen Cluster, die dieser Trail dokumentiert.
- Standard-erhaltend. Ein vollständiger, auditierter OMG-DDS-Spec-Stack bedeutet, dass bestehendes DDS-Tooling, Type-Systeme und Security-Modelle weiterarbeiten; es gibt kein neues Protokoll zu bridgen.
- Memory-safe, MCU-bis-Server. Pure-Rust,
forbid(unsafe_code)-sicherer-Kern,no_std + allocfür Embedded — eine Eigenschaft, die weder die etablierten C++-Stacks noch eine Separate-Protokoll-Middleware bietet.
Warum das die bessere Migration ist
Die Wahl, in die die Community gedrängt wurde, war „DDS behalten und den Schmerz behalten” oder „Zenoh adoptieren und native DDS-Interop verlieren”. ZeroDDS ist die dritte Option: den DDS-Standard und die Wire-Interop behalten und den Schmerz verlieren — sodass ein Team rmw_zerodds auf einem Roboter drop-in einsetzen, mit dem Rest seiner DDS-Flotte unverändert interoperieren und die Verbesserung inkrementell validieren kann.
Selbst validieren
Dieser ganze Trail ist ein Satz falsifizierbarer, reproduzierbarer Aussagen. Starte irgendwo:
crates/ros2-rmw/interop/run_interop.sh # live ROS-2-Interop
crates/ros2-rmw/interop/run_multicast_free_xvendor.sh # cross-vendor, kein Multicast
crates/ros2-rmw/interop/run_largedata.sh # Large-Data, byte-genau