Difference between revisions of "Zenoh"

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")
 
 
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 07: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