This proposal has been approved and the Eclipse Zenoh project has been created.
Visit the project page for the latest information and development.

Eclipse zenoh

Thursday, December 5, 2019 - 16:02 by Angelo Corsaro
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Project
Parent Project
Working Group
Proposal State
Created
Background

As a consequence of the widespread adoption of Cyber Physical Systems (CPS) and the raise of ed applications, the number of network connected devices is steadily increasingly as is (1) their heterogeneity with respect to computing, storage and communication capabilities,  (2) the scale at which they produce and consume data and (3) the need for geo-distributed storage and queries. Thus, data exchange protocols face new needs with respect to vertical and horizontal scalability, support for constrained networks and devices with low duty cycle – in other terms devices that are disconnected/sleeping most of the time as well as ability to deal with both data in motion and data at rest. Protocols used today to build these systems, such as MQTT, DDS, CoAP and HTTP were not designed with these needs in mind. As a result, architects and developers are forced into patchwork design in which multiple protocols are stitched together to provide some meaningful end-to-end semantics. Zenoh's authors have co-invented and built some of the communication infrastructures deployed today as part of telecommunication, aerospace and early Industrial Internet applications (notably DDS). It is with this baggage of experience that they came to the realization that a new protocol was needed – a protocol designed ground-up to address the needs of large scale CPS as well as edge systems end-to-end. Eclipse zenoh, is a stack  designed to (1) minimize network overhead – the minimal wire overhead of a data message a data message is 4 bytes, (2) support extremely constrained devices – its footprint on Arduino Uno is of 300 bytes, (3) supports devices with low duty-cycle by allowing the negotiation of data exchange modes and schedules, (4) provide a rich set of abstraction for distributing, querying and storing data along the entire system, and (5) provide extremely low latency and high throughput. 

Scope

Eclipse zenoh provides a stack that unifies data in motion, data in-use and data at rest. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.

Eclipse zenoh will build around the zenoh infrastructure and includes zenoh software routers/brokers as well as the zenoh client APIs.

Description

Eclipse zenoh provides is a stack  designed to (1) minimize network overhead, (2) support extremely constrained devices, (3) supports devices with low duty-cycle by allowing the negotiation of data exchange modes and schedules, (4) provide a rich set of abstraction for distributing, querying and storing data along the entire system, and (5) provide extremely low latency and high throughput. 

Why Here?

Zenoh was deisgned with Edge and Fog Computing in mind thus the Eclipse IoT seems to be the right home for it. Beside, Eclipse fog05 relies entirely on zenoh, thus it would make more sense to have the entire fog05 stack to be powered by Eclipse IoT technologies.

Project Scheduling

We are ready to go with incubation as soon as the project is accepted. As you can see at http://pkgs.adlink-labs.tech we already have releases for main streams platforms and our github repositors have been made public (see references below).

Thus we are ready now.

 

Future Work

We plan to work on:

- More client API, next two will be Rust and JavaScript

- Next generation Router rewrite in Rust

 

Project Leads
Committers
Angelo Corsaro
Julien Enoch
Luca Cominardi
Interested Parties

Huawei and Futurewei have been a key partner in identifying and addressing all the key use cases that need to be addressed to propoerly support edge-applications and geo-distributed data management.  

 

Initial Contribution

Our intial contribution will include:

Zenoh Router. The zenoh software router implements a routing infrastructure that allows to run zenoh applications at Internet Scale. Zenoh routers can be connected over arbitrariy graphs and maintain the routing topology through a series of self-stabilising decentralised algorithms.

Zenoh Client API. We will contribute client API for CJava, Python, Go. 

Zenoh Management. Zenoh routers exposed a REST based management API will will be made avaiable.

Zenoh Storage Plug-ins. We will contribute storage plugins for main-memory, MariaDB, PostgreSQL, SQLite, InfluxDB

Zenoh Protocol Specification and Documentation. We will contribute the zenoh protocol specification along with the API documentation and user guides.

Source Repository Type