How eclipse-zenoh/zenoh works
Eclipse Zenoh is a distributed data platform combining pub/sub, queries, storage, and computation. An application opens a Session, publishes or subscribes to keyed data, or builds a query; the routing layer dispatches it across protocol and transport layers to local or remote resources, then delivers samples or replies back through API handlers. The router daemon adds plugin-hosted services such as storage. This map emphasizes documented capabilities and sampled control points; several internal routing calls are inferred only at subsystem boundaries.
Components 23
Application APIs
- Session API
zenoh/src/api/session.rs - Publisher API
zenoh/src/api/publisher.rs - Subscriber API
zenoh/src/api/subscriber.rs - Query Builder
zenoh/src/api/builders/query.rs - Queryable API
zenoh/src/api/queryable.rs - Extended APIs
zenoh-ext/src/lib.rs
Routing Core
- Runtime Orchestrator
zenoh/src/net/runtime/orchestrator.rs - Routing Dispatcher
zenoh/src/net/routing/dispatcher/mod.rs - Routing Protocols
zenoh/src/net/protocol/mod.rs - Key Expressions
commons/zenoh-keyexpr/src/lib.rs
Transport Layer
- Transport Manager
io/zenoh-transport/src/manager.rs - Unicast Manager
io/zenoh-transport/src/unicast/manager.rs - Multicast Manager
io/zenoh-transport/src/multicast/manager.rs - Message Pipeline
io/zenoh-transport/src/common/pipeline.rs - Link Implementations
io/zenoh-links
Storage Services
- Plugin Manager
plugins/zenoh-plugin-trait/src/manager.rs - Storage Manager
plugins/zenoh-plugin-storage-manager/src/lib.rs - Storage Backend
plugins/zenoh-plugin-storage-manager/src/memory_backend/mod.rs - Router Daemon
zenohd/src/main.rs
Wire and Memory
- Protocol Codec
commons/zenoh-codec/src/lib.rs - Shared Memory
commons/zenoh-shm/src/lib.rs
Other components
- Application
- Remote Zenoh Peer
Connections 29
- Application → Session API: opens session
- Session API → Publisher API: declares publisher
- Session API → Subscriber API: declares subscriber
- Session API → Query Builder: builds queries
- Session API → Queryable API: declares queryable
- Application → Extended APIs: uses extensions
- Extended APIs → Session API: fetches data
- Query Builder → Session API: sends query
- Publisher API → Runtime Orchestrator: publishes samples
- Subscriber API → Runtime Orchestrator: registers interest
- Query Builder → Runtime Orchestrator: dispatches query
- Queryable API → Runtime Orchestrator: serves queries
- Runtime Orchestrator → Routing Dispatcher: runs routing
- Routing Dispatcher → Key Expressions: matches keys
- Routing Dispatcher → Routing Protocols: dispatches messages
- Routing Protocols → Transport Manager: sends traffic
- Transport Manager → Unicast Manager: manages unicast
- Transport Manager → Multicast Manager: manages multicast
- Unicast Manager → Link Implementations: opens links
- Multicast Manager → Link Implementations: opens links
- Transport Manager → Message Pipeline: queues traffic
- Message Pipeline → Protocol Codec: encodes frames
- Link Implementations → Remote Zenoh Peer: carries traffic
- Router Daemon → Session API: opens runtime
- Router Daemon → Plugin Manager: loads plugins
- Plugin Manager → Storage Manager: starts service
- Storage Manager → Storage Backend: stores samples
- Storage Manager → Routing Dispatcher: serves queries
- Transport Manager → Shared Memory: uses buffers