• Aucun résultat trouvé

Agrégation temps-réel des

6.1 Etat de l’art sur l’agrégation dans les RCsF

6.2.3 Vue d’ensemble de la proposition

R2A est basé sur les coordonnées présentées dans le Chapitre 4. Comme illustré sur la Figure 6.3, le protocole d’agrégation s’exécute seulement durant les périodes de sommeil de RTXP. Sur détection d’un événement les nœuds endormis se réveillent et exécutent R2A (si les nœuds sont en train d’exécuter une période active de RTXP, ils attendent la période de sommeil pour agréger - ce délai est pris en compte dans le délai pire cas de RTXP, cf. Equation 5.6 p.93). R2A réalise deux opérations : il synchronise les nœuds qui détectent un même événement et leurs permet de se départager pour sélectionner lequel d’entre eux envoie un paquet. Pour accomplir ces deux tâches, le protocole utilise seulement des messages non explicites, des jamming codes. On note que la période active de RTXP ne peut pas être retardée par l’agrégation pour conserver la propriété temps-réel de RTXP, il est donc possible que l’agrégation n’ait pas le temps de finir. Plusieurs nœuds envoient alors une alarme vers le puits, l’impact de ce comportement est étudié dans la section 6.3.

Figure 6.3 – R2A s’exécute seulement durant les périodes de sommeil de RTXP, sur détection d’un événement

Synchronisation

Lorsqu’un événement survient dans le réseau, il peut être détecté par plusieurs nœuds au même instant. Les nœuds qui détectent l’événement en premier activent leur radio. Comme illustré par la Figure 6.4, ils utilisent une temporisation durant laquelle ils échantillonnent le canal pour vérifier qu’ils sont effectivement les premiers :

la temporisation est nommée sync timer. Si les nœuds ne détectent aucune activité radio avant l’expiration de la temporisation, ils en déduisent qu’ils sont les premiers à détecter l’événement et émettent périodiquement un jamming code long que nous nommons jamming code P (dans la suite de ce Chapitre, jamming code P désigne un jamming code long et jamming code désigne un jamming code court). La période d’émission des jamming code P est égale à la durée de la temporisation. Ce jamming

code P a pour but de synchroniser les nœuds qui se réveillent plus tard, comme illustré

sur la Figure 6.4 : A et B détectent l’événement dès son apparition, à l’expiration de leur temporisation sync timer ils émettent un jamming code P. C détecte l’événement plus tard, il arme sa temporisation sync timer mais détecte un jamming code P avant la fin de la temporisation, cela signifie qu’il n’est pas le premier à détecter l’événement ; il va donc se synchroniser avec A et B grâce au jamming code P qu’il détecte (il en émettra ensuite périodiquement pour synchroniser ses éventuels voisins).

Figure6.4 – Exemple de synchronisation : A et B détectent le début de l’événement, C est ensuite atteint et se synchronise avec A et B

Tous les nœuds émettent ensuite périodiquement un jamming code P pour syn-chroniser les nœuds qui se réveillent plus tard, au fur et à mesure de la propagation de l’événement. On note que le jamming code P peut être vu comme un beacon de 802.15.4 [IEEE, 2011b] mais ne contenant pas d’information explicite (cela autorise plusieurs nœuds interférants à l’émettre simultanément).

Election de l’expéditeur du paquet

Entre les jamming codes P, les nœuds éveillés entrent en contention pour élire lequel d’entre eux sera l’émetteur du paquet. Cette phase de contention fonctionne de façon similaire à celles de RTXP (voir Chapitre 5 section 5.5). Chaque nœud cal-cule son temps de backoff en fonction de sa coordonnée. Si le backoff d’un nœud expire et qu’il n’a pas détecté de jamming code, il émet un jamming code. S’il détecte

Figure 6.5 – Comportement d’un nœud exécutant R2A entre l’instant de détection de l’événement et l’instant d’envoi de l’alarme (qui correspond au début d’une période d’activité de RTXP).

un jamming code, cela signifie qu’un nœud est plus prioritaire que lui pour émettre le paquet d’alarme. Il répète le jamming code du gagnant dès la réception des pre-miers bits pour informer des nœuds plus éloignés qu’il y a un gagnant. On remarque que l’utilisation de messages non-explicites permettent d’atteindre une fiabilité élevée [Boano et al., 2012] (les paquets n’ont pas besoin d’être décodés), cependant il n’est pas possible avec cette solution de discriminer deux événements de natures différentes qui surviendraient dans la même zone géographique (R2A traite ce cas comme un seul événement).

6.2.4 R

2

A en détails

Le fonctionnement détaillé de R2A est décrit par la Figure 6.5. D’abord, le nœud qui détecte un événement se synchronise avec les nœuds éventuellement déjà éveillés durant la phase Sync décrite dans la section précédente. On distinguera par la suite le comportement des nœuds qui détectent l’événement en premier (comme A et B sur la Figure 6.4) des autres. Après s’être synchronisé, un nœud exécute deux autres phases, la phase de démarrage et la phase de contention. Ces deux phases permettent de déterminer le nœud émetteur du paquet alarme. Ce sont des phases de contention, elles se situent entre les émissions périodiques des jamming codes P et sont divisés en périodes de contention. Les nœuds de gradients égaux entrent en contention dans la même période. Comme nous supposons un modèle d’interférence à 2 sauts, les nœuds à 5 sauts d’écart peuvent utiliser la même période (pour ne pas interférer avec les nœuds de gradients inférieurs et supérieurs). Il est donc possible de réutiliser une période tous les 5 niveaux, dans R2A nous réutilisons une période tous les 6 niveaux pour garder une marge de sécurité qui limite les interférences. La durée entre 2 jamming

codes P est donc divisée en 6 périodes de contention égales comme représenté sur

la Figure 6.5. Un nœud étant à h sauts du puits utilise la période h mod 6. En scrutant l’activité dans les autres périodes de contention, un nœud peut apprendre si des nœuds plus proches ou plus éloignés que lui du puits ont détecté l’événement.

Phase de démarrage

Après la synchronisation (émission ou réception de son premier jamming code P), le nœud passe en phase de démarrage. Cette phase permet au nœud (de gradient h) de déterminer s’il est :

• Gagnant : nœud qui ne détecte aucun nœud plus prioritaire (pas de jamming

code dans les périodes de contention correspondants à h− 2, h − 1 et gagne la contention dans la période correspondant à h). Les nœuds gagnants à la fin de l’agrégation envoient un message d’alarme au puits.

• Quasi-gagnant : nœud qui détecte un jamming code dans la période correspon-dant au gradient h − 1 mais pas dans celui corresponcorrespon-dant à h − 2. Il n’enverra pas de message d’alarme mais il répète les jamming codes du gagnant pour pro-pager l’information qu’il y a un gagnant et ainsi limiter le nombre de gagnants (comme on le verra lors de la description de la Figure 6.6 plus loin dans cette section).

• Perdant : un nœud qui détecte un nœud plus prioritaire dans la période corres-pondant au gradient h − 2. Il n’enverra pas de message d’alarme et ne participe plus au mécanisme d’élection.

Pour connaître leurs états, les nœuds ont un comportement qui dépend de s’ils ont détecté l’événement en premier ou non (s’ils sont dans le cas de A et B de la Figure 6.4 ou bien de C) :

Nœuds détectant l’événement en premier. Dans ce cas, les nœuds vont entrer

en contention dans la phase de démarrage. Dans sa période de contention, c’est-à-dire celui correspondant à h mod 6, un nœud lance son backoff pour un temps qui dépend de sa coordonnée. Si le backoff expire, il émet un jamming code, s’il détecte un

jamming code avant l’expiration de son backoff, il le répète aussitôt (dés la réception

des premiers bits) pour propager aux nœuds moins prioritaires le fait qu’il y a déjà un nœud gagnant pour cet événement.

Dans les autres périodes, un nœud scrute l’activité. Dans les périodes correspon-dants aux nœuds plus proches du puits ([(h − 1) mod 6] et [(h − 2) mod 6]), un nœud qui détecte un jamming code le répète pour propager l’information. Pour les périodes des nœuds les plus éloignés du puits ([(h + 1) mod 6] et [(h + 2) mod 6]) le nœud ne fait rien. La répétition pour la propagation de l’information est utile pour limiter le nombre de nœuds gagnants. Par exemple, avec la topologie représentée sur la Figure 6.6, sans répétition D et G qui ne détectent pas de jamming code de A (ils sont à plus de deux sauts de A) vont croire qu’ils sont des nœuds gagnants, alors que seul A devrait l’être (il est le plus proche du puits). La répétition du jamming code par les autres nœuds prévient ce cas de figure.

A la fin de cette phase, les nœuds peuvent déterminer s’ils sont gagnants quasi-gagnants ou perdants.

Nœuds détectant l’événement après propagation. Dans ce cas, le nœud se

réveille et détecte un jamming code P. Le nœud écoute ensuite ce qui se passe dans toutes les périodes de contention pour déterminer si des nœuds ont déjà détectés l’événement et quelles sont leurs positions par rapport au puits : si un nœud détecte des jamming codes P mais pas de jamming code courts dans les périodes de contention,

Figure 6.6 – Dans cette configuration, si G est plus prioritaire que E et F ; et D est plus prioritaire que C et B ; si B et E ne répètent pas le jamming code de A, alors G et D vont se considérer comme gagnants.

il se considère comme perdant (les nœuds, dans ce cas, n’émettent pas de jamming

code durant la phase de démarrage). S’ils détectent des jamming codes court dans les

périodes de contention, ils définissent leurs états (gagnant, quasi-gagnant, perdant) en fonction des critères précédemment énoncés.

Phase de contention

La fin de la phase de démarrage est marquée par un jamming code P. Durant la phase de contention, les nœuds agissent en fonction de l’état dans lequel ils se trouvent à la fin de la phase de démarrage :

• les nœuds gagnants émettent un jamming code dans leur période de contention ; • les nœuds quasi-gagnants répètent les jamming code des nœuds de gradient

h− 1 ;

• les nœuds perdants se rendorment pour le temps de cette phase (mais continuent à émettre des jamming P).

A la fin de cette phase, les nœuds mettent de nouveau à jour leur état en fonction des événements de la période de contention. Cette période se répète jusqu’à l’envoi du paquet.

Exemple

La Figure 6.7 illustre un exemple d’exécution du protocole R2A. Lors de son ap-parition, l’événement couvre une zone correspondant au disque gris. Il s’étend ensuite au cercle gris en pointillés.

• Les nœuds B, C, D, E, F et G détectent l’événement en premier et simulta-nément lors de son apparition. Ces nœuds attendent pendant un sync timer pour vérifier qu’ils sont effectivement les premiers à détecter l’événement. A l’expiration de cette temporisation, ils envoient un jamming code P.

• Ces nœuds exécutent ensuite leur phase de démarrage. Etant donné qu’ils dé-tectent l’événement en premier, ils entrent en contention dans leur période de

Figure 6.7 – Exemple d’exécution de R2A

contention (h mod 6). Dans une période donnée, le nœud dont le backoff ex-pire en premier émet un jamming code qui est répété par les nœuds à [(h + 1) mod 6] et [(h+2) mod 6]. C’est le cas des nœuds B, D, E et G dont les jamming

codes sont répétés par les nœuds C, D, E, F pour B, par les nœuds C, E, F,

G pour D, par les nœuds F, G pour E et n’est pas répété pour G. A la fin de cette phase, le nœud B est gagnant, les nœuds C et D sont quasi-gagnants et les autres sont perdants.

• Dans la phase suivante, c’est-à-dire la phase de contention, B qui est gagnant, envoie un jamming code dans sa période de contention. Il est répété par les nœuds quasi-gagnants C et D.

• Pendant la phase de démarrage des nœuds B, C, D, E, F et G l’événement se propage et est détecté par les nœuds A et H. Ces nœuds, à la détection de l’événement, échantillonnent le canal pour savoir s’ils sont les premiers. Ils détectent un jamming code P, ce qui les informe qu’il ne sont pas les premiers. Après la réception du jamming code P, A et H entrent en phase de démarrage. • Comme ils n’ont pas détecté l’événement en premier, ils n’entrent pas en conten-tion pendant leur phase de démarrage, mais écoutent le canal. H ne détecte de

jamming codes dans aucune période de contention. Il en déduit qu’il est

per-dant. A détecte un jamming code dans la période qui correspond aux nœuds un saut plus loin que lui du puits (celui de B). Il est donc gagnant à la fin de sa phase de démarrage.

• Dans la phase suivante, la phase de contention, A envoie son jamming code dans sa période, il est répété par B qui passe alors en état quasi-gagnant. Les autres nœuds sont perdants et ne participent donc pas à cette phase.

Dans la section suivante, nous évaluons la capacité de R2A à réduire le nombre d’alarmes envoyées au puits et le gain en énergie que cela permet.