Zenoh (ZEro Network OverHead) is a distributed, multi meshed “global state distribution” and computation network on same level as DDS.
The conceptual elements are
- Topics for publish–subscribe of resources
- Resources as key-value set
- stored (put) and
- queried (pull/ queryable)
used to provide adaptive, fault tolerant, brokering and routing … also on Constrained Devices
zenoh implementations can be extremely resource constrained. Our smallest implementation takes as little as 300 bytes footprint on an Atmel 8-bit microcontroller.
Notes: DDS has its distributed Global Data Space (GDS) resisted at each node. Zenoh in comparison has routers, comparable to broker in MQTT.
Each mesh is a graph on “peer” (aka nodes). Meshes are bridged via “router“. Routers are meshed with other routes and other peers.
Code examples: https://zenoh.io/docs/getting-started/first-app/ . Available languages C, Python, Java and, Go-Lang.
Integration with ROS(2) happens via the “router“, here called the “bridge” instantiated via the “zenoh-bridge-dds” program. Each “bridge” maps a ROS(2) domain. ROS(2), or better DDS, domains are logical networks share the same physical network.