Zenoh: Difference between revisions

From air
Jump to navigation Jump to search
(Created page with "http://zenoh.io/ the zero network overhead protocol =Links= * https://www.dropbox.com/s/5vk476h2bbagygz/2019.02.19-MakingFog.pdf?dl=0 * http://zenoh.io/download/pdf/zenoh.pdf")
 
No edit summary
 
Line 1: Line 1:
Auteur: Nicolas Huchet

=Zenoh - Zero Network Overhead Protocol=

http://zenoh.io/
http://zenoh.io/


the zero network overhead protocol




== Introduction==

Zenoh est un protocole de communication visant à minimiser l'overhead
inclut avec les autres protocoles. De plus, il a été pensé pour
tourner sur des appareils possédant une faible capacité de calcul ou
nécessitant de réduire au minimum les calculs (par exemple dans
le cadre d'un appareil fonctionnant sur batterie).

Points:

* Très faible empreinte (faible mémoire, temps CPU)
* Protocol efficace (peu d'overhead)
* Support des appareils qui ont des cycles de sommeil aggressifs

== Fonctionnement ==

=== Ressources===

Zenoh utilise le concept de ressources pour pouvoir identifier
les informations à échanger. Par exemple:

* zenoh://myhouse/**/bedroom/*/LightStatus
* zenoh://myhouse/floor/1/musicroom/LightStatus
* zenoh://myhouse/floor/2/bedroom/erik/LightStatus

Ces chemins permettent d'accéder à une/des ressources en particulier
de manière asynchrone. Les wildcards supportées sont:

* *: remplacé par n'importe quel caractères (à part le /)
* **: remplacé par n'importe quel caractères
* ?: remplacé par n'importe quel caractère (à part le /)

=== Messages===

Les messages sont composés d'un seul octet de header et du corps.
Le header est composé de flags (3 bits) et du messageId (5 bits).
Un certain nombre de messageId ainsi que de body types sont définis,
ils sont listés dans le fichier de spécifications.

Les flags permettent d'indiquer une particularité dans le message.
Les flags disponibles sont:

* S, I, M, P, O, L = flag 5
* C, R, H, N = flag 6
* F, U, G, A, Z = flag 7

Les définitions des flags sont eux aussi disponibles dans la spec.

=== Fonctionnalités===

Ce protocole propose certaines fonctionnalités assez utiles pour le
discovery.
Par exemple, un système de découverte permet de trouver les services ou
clients qui correspondent à une certaine description. Pour cela, on envoie
un message "Scout" avec la description des noeuds qui nous intéressent
et les noeuds qui correspondent répondent avec un message "Hello"
contenant les informations les concernant.

De plus, un système de session permet de configurer des données entre
plusieurs noeuds lors d'une communication pendant plusieurs échanges.
La session s'établit après avoir reçu un message Open et envoyé un
message Accept entre les machines, et se ferme sur quelques conditions
(reçu un message Close, expiration de connexion...).


== Resources==


* http://zenoh.io/
=Links=
* http://zenoh.io/public/resources/pdf/zenoh.pdf
* https://www.dropbox.com/s/5vk476h2bbagygz/2019.02.19-MakingFog.pdf?dl=0
* https://www.dropbox.com/s/5vk476h2bbagygz/2019.02.19-MakingFog.pdf?dl=0
* http://zenoh.io/download/pdf/zenoh.pdf
* http://zenoh.io/download/pdf/zenoh.pdf

Latest revision as of 05:10, 8 April 2019

Auteur: Nicolas Huchet

Zenoh - Zero Network Overhead Protocol

http://zenoh.io/


Introduction

Zenoh est un protocole de communication visant à minimiser l'overhead inclut avec les autres protocoles. De plus, il a été pensé pour tourner sur des appareils possédant une faible capacité de calcul ou nécessitant de réduire au minimum les calculs (par exemple dans le cadre d'un appareil fonctionnant sur batterie).

Points:

  • Très faible empreinte (faible mémoire, temps CPU)
  • Protocol efficace (peu d'overhead)
  • Support des appareils qui ont des cycles de sommeil aggressifs

Fonctionnement

Ressources

Zenoh utilise le concept de ressources pour pouvoir identifier les informations à échanger. Par exemple:

  • zenoh://myhouse/**/bedroom/*/LightStatus
  • zenoh://myhouse/floor/1/musicroom/LightStatus
  • zenoh://myhouse/floor/2/bedroom/erik/LightStatus

Ces chemins permettent d'accéder à une/des ressources en particulier de manière asynchrone. Les wildcards supportées sont:

  • *: remplacé par n'importe quel caractères (à part le /)
  • **: remplacé par n'importe quel caractères
  • ?: remplacé par n'importe quel caractère (à part le /)

Messages

Les messages sont composés d'un seul octet de header et du corps. Le header est composé de flags (3 bits) et du messageId (5 bits). Un certain nombre de messageId ainsi que de body types sont définis, ils sont listés dans le fichier de spécifications.

Les flags permettent d'indiquer une particularité dans le message. Les flags disponibles sont:

  • S, I, M, P, O, L = flag 5
  • C, R, H, N = flag 6
  • F, U, G, A, Z = flag 7

Les définitions des flags sont eux aussi disponibles dans la spec.

Fonctionnalités

Ce protocole propose certaines fonctionnalités assez utiles pour le discovery. Par exemple, un système de découverte permet de trouver les services ou clients qui correspondent à une certaine description. Pour cela, on envoie un message "Scout" avec la description des noeuds qui nous intéressent et les noeuds qui correspondent répondent avec un message "Hello" contenant les informations les concernant.

De plus, un système de session permet de configurer des données entre plusieurs noeuds lors d'une communication pendant plusieurs échanges. La session s'établit après avoir reçu un message Open et envoyé un message Accept entre les machines, et se ferme sur quelques conditions (reçu un message Close, expiration de connexion...).


Resources