Le ZigBee

Ainsi, vous voulez vous piquer d'en savoir plus sur le ZigBee?

Sachez que le nom provient de la danse des abeilles au retour à la ruche, pour indiquer aux autres la localisation de pollen. Ca, c'était la partie simple.

Introduction à ZigBee

La ZigBee Alliance a été créée en 2002. C'est elle qui émet la norme ZigBee, n'importe qui peut rejoindre l'Alliance pour participer à son élaboration. En 2012, il existe 400 compagnies avec un produit et 600 produits certifiés ZigBee: on peut dire que cette norme se répand avec un succès certain, bien que d'autres normes soient directement concurrentes.

Le ZigBee s'appuie sur une autre norme, l'IEEE 802.15.4, qui définit les couches physiques de communication, en particulier les bandes de fréquences et les types de modulation. Cette norme évolue de son coté, et de nouvelles bandes sont considérées, ajoutées, ce qui peut devenir ennuyeux pour l'interopérabilité. Et d'ailleurs, c'est déjà le cas, car le ZigBee a spécifié le 2.4 GHz globalement, on peut aussi utiliser le 915 MHz dans les Amériques ou le 868 MHz en Europe, et ne vous attendez pas à ce qu'un appareil en 868 MHz communique avec un appareil à 915 MHz. Pour arranger les choses, l'IEEE 802.15.4 spécifie aussi de nouveaux types de modulation et de nouvelles fréquences...

Comme l'IEEE 802.15.4 ne spécifie pas les couches hautes, en particulier la manière de gérer le réseau, la norme ZigBee comble cet espace en proposant une méthode. On parle alors de stack (ça fait bien dans la conversation). ZigBee va même plus loin en émettant des spécifications concernant des applications particulières.

Voici les diverses versions de ZigBee, ainsi que celles de l'IEEE 802.15.4 pertinentes:

StandardDateCommentaires
IEEE 802.15.4-20032003- Première version, celle que ZigBee doit suivre
ZigBee 20042005- première stack release plus ou moins obsolète
IEEE 802.15.4-20062006- Ajout de types de modulation
ZigBee 20062006- seconde stack release
Smart Energy 2.02006 - profil n'exigeant pas l'IEEE 82.15.4, le WiFi ou autres protocoles sont envisagés.
ZigBee PRO 20072007 - compatible avec ZigBee 2006, dans les deux sens (un produit 2006 comprend un produit 2007).
- standard recommandé
- propose en option du Green Power (récupération d'énergie), ainsi qu'un certain nombre d'optimisations.
Profils- le premier fut Home automation en 2007.
RF4CE2009 - Radio Frequency for Consumer Electronics
- profil particulier pour les télécommandes (en frontal avec l'IrDA).
Zigbee 3.02015 - IEEE 802.15.4

D'une manière générale, les profils étendent la portée de ZigBee bien au-delà du simple moyen de communication.


Fonctionnement de ZigBee

Bandes de fréquence

ZigBee s'appuie sur l'IEEE 802.15.4-2003 qui spécifie différentes bandes de fréquences et divers types de modulation. Historiquement, ce sont les trois suivantes qui sont proposées:

Portée estimée de 10 à 75 m, voire 1500 m avec ZigBee PRO, avec une puissance de 0 dBm (soit 1 mW).

En pratique, c'est plutôt le 2.4 GHz qui est utilisé pour la raison évidente de compatibilité worldwide. Mais bon, méfiez-vous si jamais vous achetez un appareil, vaut mieux vérifier avant quelles sont les bandes de fréquence supportées.

Routage réseau

Il est recommandé d'abord de voir ce qui est spécifié en terme de connexion MAC au niveau de l'IEEE 802.15.4, vu qu'il existe déjà un certain nombre de contraintes.

Donc, une fois passé la couche IEEE 802.15.4, on sait que deux dispositifs arrivent à se parler, mais maintenant il faut passer au niveau supérieur, le routage d'un message dans un ensemble de dispositifs qui ne communiquent pas forcément tous ensemble: un réseau. Pour arranger les choses, tous les dispositifs n'ont pas forcément les mêmes caractéristiques, les mêmes puissances de calculs, donc cela peut devenir vite compliqué.

Au niveau de la couche réseau, le routage est soit direct, soit indirect.

Le routage est direct lorsqu’un dispositif voulant transmettre des données connaît l'adresse réseau du destinataire. Cette adresse est donc transmise dans la trame pour atteindre et agir sur le dispositif prévu.

Dans le cas contraire, le routage indirect se fait lorsqu'un dispositif ne connaît pas l'adresse du destinataire. Un équipement de type routeur ou coordinateur PAN fait la relation avec le vrai destinataire d'après la table de routage et la table de découvertes des routes.

Un dispositif qui n'a pas les capacités de routage (ZED) doit router les données suivant le routage hiérarchique (il remonte l'arbre).

La table de routage contient les données sur les destinataires. Il s'agit de l'adresse de destination de la route et le prochain dispositif à atteindre pour se « rapprocher » du destinataire.

La table de découverte d'une route contient les informations sur les sources du message. Elle stocke l'adresse d'origine du dispositif qui a fait la demande et l'adresse du dispositif qui va transmettre les données en tant qu'intermédiaire (entre la source et la destination). Elle contient aussi les coûts de transmission entre la source jusqu'au nœud actuel et du nœud jusqu'au destinataire. Elle peut donc adapter la route pour être plus performante en mettant à jour les adresses à utiliser.

Le choix d'une route, lorsque plusieurs routeurs en parallèle relaient l'information, se fait par rapport au routeur (ou coordinateur) au niveau du deuxième nœud au minimum. Lors de la demande de création de route, la table va recevoir plusieurs demandes à partir de la même adresse d'origine. Elle va alors comparer les « coûts » de transmission pour choisir le chemin ayant le coût le plus faible.

L'algorithme de routage suggéré par la ZigBee Alliance pour les réseaux maillés est AODV (Ad hoc On-Demand Vector Routing). C'est un protocole de routage dit « réactif » : une route est établie uniquement sur demande. L'avantage est qu'il ne charge pas le trafic. La source envoie son message à tous ses voisins, qui font de même jusqu'à ce que la destination soit atteinte. Elle retourne alors un message avec le coût minimal d'envoi à la source. La source met alors à jour sa table de routage pour la prochaine fois, avec son coût d'envoi.

ZigBee a défini 3 types de dispositifs vis-à-vis des capacités de routage:

  • ZigBee Co-ordinator (ZC): dispositif le plus évolué, c'est la racine du réseau, celui qui saura éventuellement causer avec d'autres réseaux (il sert de bridge), qui stockera les infos réseau, ainsi que les clés de sécurité. Il y aura un coordinateur par réseau, mais cependant, la spécification ZigBee LightLink autorise un fonctionnement sans coordinateur pour les produits comme une lampe.
  • ZigBee Router (ZR): dispositif servant de routage intermédiaire pour transmettre les infos, en plus de sa fonction applicative habituelle.
  • ZigBee End Device (ZED): dispositif minimal seulement capable de transmettre son info à un routeur ou un coordinateur. Du coup, ce dispositif peut dormir la plupart du temps (utile pour économiser la pile), et ne contient que très peu de ressource CPU et mémoire (= moins cher).

Un routeur, et a forciori un coordinateur, se doit d'écouter en permanence le réseau, et donc aura besoin d'une alimentation plus robuste. Dans l'exemple d'une lampe secteur commandée par une télécommande, la lampe -alimentée par le secteur- écoutera en permanence et sera au minimum un routeur ZR, et la télécommande un End Device ZED. La télécommande dort la plupart du temps, sauf quand elle transmet un ordre: la lampe ZR écoute, reçoit le message, envoie un acquittement qui permet à la télécommande de s'assurer que l'ordre est bien reçu et de retourner dormir.


Applications et profils

Entre le niveau application et le routage, ZigBee a défini les ZDO ZigBee device objects dont le but est de faciliter le développement des applications sans trop se soucier des couches inférieures: c'est une interface. Les ZDO sont responsables de tenir à jour le rôles des dispositifs, les requêtes d'accès au réseau, la découverte des dispositifs et la sécurité.

Des profils ont été définis par ZigBee: on trouvera la liste sur le site de la ZigBee Alliance, c'est d'ailleurs le point d'entrée pour les standards sur leur site


Sécurité

ZigBee est sensé pouvoir réaliser des communications sécurisées, permettre l'établissement et le transport de clés cryptographiques, chiffrer les trames et contrôler les dispositifs. Ceci repose sur l'encadrement défini par la 802.15.4, et une gestion correcte de clés symétriques (= partage de secret, pas forcément le plus pratique, il existe aussi des mécanismes de clés publiques asymétriques apparemment non considérées dans ZigBee, mais c'est une autre histoire).

Une clé (secrète) doit toujours être transportée sur un canal sécurisé, et ceci pose toujours un problème la première fois, lorsqu'un nouveau dispositif non configuré rejoint le réseau.

Il n'y a pas de miracle, et ce n'est pas parce que ZigBee utilise des clés de 128 bits que c'est sécurisé pour autant: si la sécurité est un élément critique pour votre application, il faudra commencer par allez voir comment les clés sont générées (à partir d'une master key) puis transportées et utilisées. Ce n'est pas ici que vous trouverez des réponses définitives concernant la sécurité, mais au moins on souhaite vous sensibiliser... C'est vraiment un travail de spécialiste.


Certification

Un produit peut être ZigBee Certified: on trouvera les détails sur le site de la ZigBee Alliance.


Simulateur de réseau ZigBee

OPNET, NetSim et NS2, des simulateurs de réseau, peuvent être utilisé pour simuler un réseau ZigBee, afin de valider de nouveaux algorithmes avant de passer à la réalisation hardware.


Vendeurs de chip ZigBee

Quelques références si jamais vous cherchez une puce ZigBee (mais ça commence à dater):

Voir aussi la comparaison des modules radio 802.15.4 sur Wikipedia, pour en savoir plus concernant les détails et autres protocoles supportés par les puces.

A noter: Le Leti a aussi fait sa puce démonstrateur 802.15.4, la LetiBee, une puce performante très basse consommation.


  • ZigBee Alliance
  • Wikipedia Zigbee (français)
  • Wikipedia Zigbee (anglais) évidemment différente.