# IEEE 802.15.4

Le 802.15.4 est un protocole de communication défini par l'IEEE. Il est destiné aux réseaux sans fil de la famille des LR WPAN (Low Rate Wireless Personal Area Network) du fait de leur faible consommation, de leur faible portée et du faible débit des dispositifs utilisant ce protocole.
802.15.4 est utilisé par de nombreuses implémentations basées sur des protocoles propriétaires ou sur IP (Internet Protocol), comme le ZigBee et le 6LoWPAN.
Les caractéristiques des LR WPAN sont :
* la formation d'un réseau de type étoile ou maillé
* l'allocation d'une adresse de 16 bits ou de 64 bits
* l'utilisation de CSMA/CA pour communiquer
* la faible consommation d'énergie
* la détection d'énergie (ED)
* l'indication de la qualité de la liaison (LQI)
* l'utilisation de :
** 16 canaux dans la bande de fréquence de 2,4 à 2,483 5 GHz,
** 10 canaux dans la bande de fréquence de 902 à 928 MHz,
** 1 canal dans la bande de fréquence de 868 à 868,6 MHz.
L'IEEE a défini deux types de dispositifs pouvant participer à un réseau
* le dispositif ayant toutes les fonctions possibles (FFD : Full Function Device)
* le dispositif ayant des fonctions limitées (RFD : Reduced Function Device)
Le FFD peut assurer trois rôles dans un réseau : coordinateur PAN, routeur ou dispositif relié à un capteur (plus petite fonction possible, appelé dispositif de fin).
Le RFD est prévu pour des applications simples (signaler l'état d'un capteur, contrôler l'activation d'un actionneur). Il est considéré comme un dispositif "d'extrémité" (end device), dans le sens où il n'est pas essentiel au réseau.
Pour communiquer sur un même réseau, un FFD (au moins) et des RFD doivent utiliser le même canal physique parmi ceux définis selon la bande de fréquence choisie. Le FFD peut dialoguer avec des RFD et des FFD, tandis que le RFD dialogue avec un FFD uniquement.

## Topologie du réseau

802.15.4 propose comme fonctionnement une topologie en étoile, maillée et en arborescence. Les dispositifs sont définis au niveau MAC comme :
* des coordinateurs du réseau ;
* des dispositifs FFD (Full Function Device) ;
* des dispositifs RFD (Reduced Function Device).

## La couche physique

La couche physique (PHY) contient l'émetteur/récepteur radio (RF), avec un mécanisme de contrôle de bas niveau (contrôle de la qualité du signal, détection d'énergie et CCA). Les fréquences basses permettent d'avoir une plus grande portée grâce à une plus faible perte de propagation. Les plus grandes permettent des débits plus élevés, une plus faible latence et des cycles de travail plus courts.

## La couche d'accès au médium (MAC)

Les caractéristiques de la couche MAC sont la gestion des balises, l'accès au canal, la gestion des GTS (Guaranteed Time Slot), la validation des trames, etc. La couche MAC permet aussi d'utiliser des mécanismes de sécurité liés à l'implémentation des applications.
Il existe cependant deux modes de fonctionnement de la couche MAC selon le type de topologie utilisé et le besoin en débit garanti, à savoir :
* le mode non-beacon utilisant CSMA/CA ;
* le mode beacon, avec l'envoi à période régulière d'une balise pour synchroniser les dispositifs, garantissant un débit au capteur ayant un GTS.
En résumé, CSMA/CA n'est pas utilisé en mode beacon pour l'envoi de la balise, l'envoi de l'accusé de réception.

### Réseau dit "non-beacon"

Il existe une méthode de réseau "sans balise" (non-beacon). Cela signifie que le coordinateur reste par défaut dans l'état d'attente de données.
Le dispositif qui veut transmettre regarde si le canal est libre. Si c'est le cas, alors il transmet sinon il attend une période aléatoire (définie dans le protocole IEEE 802.15.4-2003).
Lorsque le coordinateur a des données à transmettre à un dispositif, il attend que le dispositif entre en contact et lui demande les données. Le coordinateur envoie alors un accusé de réception de la requête. Si des données sont en suspens, le coordinateur transmet les données en utilisant le même principe (CSMA/CA). S'il n'y a pas de données en suspens, le coordinateur envoie une trame de données vide (longueur 0). Le dispositif accuse réception des données.
Le mode non-beacon est généralement utilisé pour les capteurs (type interrupteur) qui dorment la majorité du temps (99 %). Quand un événement se passe, les capteurs se réveillent instantanément et envoient une trame d'alerte. Le coordinateur dans ce type de réseau doit être alimenté sur secteur, car il ne dort jamais : il est par défaut dans l'état d'écoute d'une trame d'événement ou de présence. Dans ce type de réseau, le coordinateur n’émet pas de balise et empêche toute synchronisation des dispositifs.
Cette solution a pour avantage d’optimiser l’autonomie des batteries des capteurs et d’utiliser le canal uniquement lorsqu’il est nécessaire de transmettre des données utiles. En revanche, du fait de CSMA/CA, l’accès au canal n’est pas garanti dans une période donnée (tout dépend de la densité du réseau et du nombre de dispositifs voulant transmettre en même temps).

### Réseau avec envoi de balise, dit "beacon"

L'objectif d'un réseau fonctionnant avec l'envoi périodique d'une balise est de synchroniser les dispositifs avec le coordinateur. Dans un réseau IEEE 802.15.4, tous les dispositifs (y compris le coordinateur) fonctionnent de façon indépendante. En revanche, pour communiquer sur le réseau, ils doivent savoir à quel moment se réveiller pour transmettre. Pour cela il est nécessaire qu'ils se synchronisent par rapport au réveil du coordinateur (ou d'un routeur) comme il est responsable du routage des données à travers le réseau.
Lors de la réception d'une balise, tous les dispositifs sont informés de la durée de la superframe (période d'activité du coordinateur) et à quel moment ils peuvent transmettre des données. Ils recevront aussi une indication à partir de quel moment le coordinateur entre en hibernation et pour quelle durée. Les dispositifs savent alors quand ils peuvent entrer en hibernation ou transmettre. L'envoi régulier d'un beacon permet de resynchroniser l'ensemble des dispositifs et d'informer des changements dans la superframe (par exemple la réservation d'un GTS).
De plus, le beacon d'un coordinateur ou d'un routeur est transmis sans utiliser CSMA/CA. En effet, tous les dispositifs doivent se réveiller quelques instants avant l'émission du beacon et sont mis en attente de cette trame pour se synchroniser. Le dispositif écoute la balise du réseau, se resynchronise sur la balise et transmet des trames de données en utilisant les slots de la superframe. Les fins de slots sont alignées lors de la transmission d'une balise.

#### Description de la CAP et CFP

En mode beacon le coordinateur a une période d'activité et une période d'hibernation permettant d'économiser de l'énergie. La superframe est en fait la période d'activité du coordinateur qui mesure 16 slots de temps. Celle-ci se divise en deux parties :
* la CAP (Contention Access Period) similaire au mode sans beacon : tous les dispositifs peuvent transmettre de façon aléatoire, mais en respectant la durée d'un slot (une transmission ne peut pas démarrer au milieu d'un slot) ;
* la CFP (Contention Free Period) permettant de garantir l'accès au canal à un dispositif pendant une durée déterminée en nombre de slots, appelée GTS (Guarantee Time Slot).
Tous les dispositifs voulant communiquer pendant la CAP (contention access period) entre deux balises sont mis en concurrence avec les autres en utilisant CSMA/CA. Comme les capteurs peuvent émettre uniquement à partir d’un nouveau slot, l’intervalle de temps entre deux tentatives d’accès au canal sera aligné sur les slots. La transmission est cependant limitée par la taille de la CAP. Si le dispositif n'a pas pu émettre pendant la CAP, il devra attendre la prochaine superframe pour accéder au canal. De même, si le nombre de slots nécessaires à la transmission de données est plus important que le nombre de slots restants dans la CAP, alors le dispositif devra différer l'envoi à la prochaine superframe.
Toutes les transactions doivent être terminées avant le prochain beacon du réseau.
Le coordinateur peut dédier des portions de la superframe à des applications. Ces portions sont appelées guaranteed time slots (GTS). Les GTS forment le CFP (contention free period). Ces slots sont réservés en partant du dernier slot de la superframe et en revenant vers le beacon. Le coordinateur peut allouer jusqu'à sept GTS. Un GTS peut occuper plus d'un slot. Mais une portion suffisante du CAP doit être réservée pour prévoir l'arrivée de nouveaux dispositifs dans le réseau (défini dans le protocole IEEE 802.15.4-2003).

#### Utilisation de la CFP et des GTS

L'allocation d'un GTS fait suite à une demande de la part d'un dispositif pendant la CAP. L'information sur la réservation d'un GTS (et l'affectation du GTS dans la CFP) est inscrite dans la prochaine balise, avec l'adresse du dispositif concerné, la durée du GTS et le slot de départ. Un intervalle de temps est alors alloué pour chaque GTS d'après la méthode FIFO, et ils sont "placés" en partant de la fin de la superframe.
La libération d'un GTS se fait soit par demande de la part du dispositif, soit parce que le coordinateur n'arrive plus à joindre le dispositif.

#### Configuration de la balise et de la durée d'activité du coordinateur

Le coordinateur détermine l'ordre de la balise et de la superframe (durée d'activité) pour chaque dispositif du réseau. L'objectif est de permettre aux nœuds d'un réseau de "dormir" pour économiser de l'énergie. La configuration de la balise permet de prévoir les intervalles d'activité de la superframe de chaque dispositif pour qu'il n'y ait pas de recouvrement.
Une balise est envoyée de façon périodique et elle est définie par le coordinateur. La durée de la superframe et la période d'envoi de la balise varie entre 15,38 ms et 252 s. La période d'inactivité est définie comme la différence entre l'intervalle entre l'émission de deux balises et la durée de la superframe.