• Aucun résultat trouvé

La troisième phase est une autre période de backoff (backoff forward ou

Proposition d’une solution de communication temps-réel

Phase 3. La troisième phase est une autre période de backoff (backoff forward ou

Phase 2. Durant la deuxième phase (réception de données, notée phase R), le

nœud (de gradient h) qui a gagné la contention de la phase 1 envoie son paquet. Les nœuds voisins le reçoivent et seuls les nœuds à h − 1 sauts du puits le conservent et passent à la phase 3.

Phase 3. La troisième phase est une autre période de backoff (backoff forward ou

BF). Les nœuds qui reçoivent un paquet lors de la deuxième phase entrent en conten-tion pour sélecconten-tionner lequel d’entre eux relaye le paquet. Comme pour la première phase, la fonction de backoff est bijective et calculée à partir de la coordonnée. Pour le choix du relayeur, nous voulons aussi préserver l’ordre donné par la coordonnée. En effet, nous voulons que les nœuds de gradient h ayant le plus de connections avec les nœuds de gradient h − 1 soient prioritaires pour relayer les paquets (on rappelle que cette information est donnée par l’offset de la coordonnée qui est un affinement du gradient). La fonction de backoff doit donc, en plus, être strictement monotone. Le premier nœud dont le backoff expire notifie aux autres qu’il est le relayeur en envoyant un jamming code. Ce mécanisme est une implémentation du routage oppor-tuniste présenté dans le Chapitre 3.

Organisation des phases. Comme énoncé dans la section 5.4, nous choisissons

d’utiliser une synchronisation globale des nœuds dans le réseau. Cela permet aux pa-quets d’être relayés plusieurs fois durant un cycle d’endormissement, car les relayeurs potentiels sont déjà synchronisés. Le modèle d’interférence à deux sauts permet à des nœuds éloignés de trois sauts de transmettre au même instant sans problème d’inter-férence. Pour donner une chance à chaque nœud du réseau de transmettre durant un

Figure 5.2 – Description détaillée de RTXP

cycle d’endormissement, quel que soit le nombre de sauts qui le sépare du puits, nous définissons 3 périodes d’éveil par cycle d’endormissement (la définition d’une période d’éveil est fournie dans la section 5.2). En effet, il faut une période d’éveil pour les nœuds à 3j sauts du puits, une pour ceux à 3j + 1 et une pour ceux à 3j + 2 avec

j ∈ N. Comme représenté par la figure 5.2, nous nommons “période d’activité” de RTXP la juxtaposition de trois périodes d’éveil. Un paquet peut, au plus, atteindre un nœud à 3j sauts du puits en partant d’un nœud à 3j + 3 sauts du puits durant une période d’activité. Pour que les paquets convergent vers le puits, il faut respecter l’ordre des périodes d’éveil de la Figure 5.2.

La figure 5.2 illustre les différentes phases pour des nœuds à différentes distances du puits en nombre de sauts. Bi, Ri et BFi correspondent respectivement aux phases de backoff, réception, et backoff forward, avec i = h mod 3. Par exemple un nœud à 6 sauts du puits entre en contention pour le canal dans B0 (phase 1) s’il a un paquet à envoyer. Il envoie le paquet dans R2 (phase 2) s’il gagne la contention. Il se réveille dans R0 (phase 2) pour éventuellement recevoir un paquet, et s’il en reçoit un, il exécute la phase 3 dans BF0 pour tenter d’être le relayeur du paquet. Le reste du temps il dort.

Quand un nœud, qui a un paquet à transmettre, perd la contention pendant la phase de backoff, il demande une nouvelle période d’activité (appelée période

vité secondaire) en envoyant un jamming code dans le slot L. Cette nouvelle période d’activité s’exécute à la suite de la première. Seuls les nœuds qui détectent un

jam-ming code durant le slot L restent éveillés pour une période d’activité secondaire.

On peut noter qu’à la fin d’une période d’activité secondaire, une autre peut être déclenchée de nouveau jusqu’à ce que tous les paquets aient avancés d’un saut vers le puits.

Dans les RCsF, les liens radios sont non-fiables (c.f. Chapitre 3), les nœuds sont soumis aux phénomènes de shadowing et de fading. Des paquets peuvent donc être perdus. Pour limiter l’impact des pertes de paquets sur la fiabilité, nous utilisons un routage opportuniste. Comme montré dans le Chapitre 3, ce type de routage permet d’obtenir une meilleure fiabilité que le routage classique pour lequel un paquet est adressé à un voisin en particulier. Dans le cas de RTXP, le nœud relayeur d’un paquet est sélectionné durant la phase BF. De plus, le jamming code envoyé durant la phase d’élection du relayeur (BF) est utilisé comme un acquittement implicite. En effet, un nœud qui envoie un paquet dans la phase R attend un jamming code. S’il ne le reçoit pas, le paquet est considéré comme perdu et le nœud émetteur envoie un jamming

code dans le slot L pour demander une nouvelle période d’activité. Le paquet est

réémis durant cette période.

Figure 5.3 – Exemple avec 4 nœuds, les nœuds A et B ont un paquet à transmettre

Exemple. La Figure 5.3 représente un exemple d’exécution avec un réseau de 4

nœuds. Les nœuds A et B ont un paquet à envoyer. Ils entrent donc en contention dans B0 (car 3 mod 3 = 0). B gagne la contention et envoie son paquet dans R2, il est reçu par C. C est le seul récepteur, il est donc élu comme relayeur dans la phase

BF2. De la même manière que B, C envoie le paquet à D (en utilisant les phases B2, 91

R1 et BF1) et D l’envoie au puits (B1, R0 et BF0). A la fin de la période d’activité, le nœud A envoie un jamming code dans le slot L car il a perdu la contention B0. B, C et D détectent un jamming code, ils restent donc éveillés pour une nouvelle période d’activité. Durant cette période d’activité secondaire, seul A a un paquet à envoyer. Il gagne donc la contention et le paquet est envoyé à C. A la fin de la seconde période d’activité, tous les nœuds s’endorment car aucun ne transmet durant le slot L (chaque paquet a fait au moins un saut en direction du puits).

Symbole Signification

DB Durée d’une phase de backoff (B)

DBF Durée d’une phase backoff forward (BF )

DR Durée d’une phase de reception (R)

DL Durée du slot L

Djamming Durée du jamming code

Dactivity_period Durée d’une période d’activité

Dawake Durée de la période d’éveil d’un nœud pendant une période d’activité

Dsleep Durée de la période de sommeil

W CT TRT XP Borne théorique sur le délai de bout en bout de RTXP

DC Rapport de cycle d’endormissement : durée de la période d’éveil divisée par la durée du cycle d’endormissement

CRT XP Capacité de RTXP

N Bhop_max Nombre maximum de sauts pour atteindre le puits

Ebackof f Energie consommée durant la phase de backoff (B)

Ebackof f_f orward Energie consommée durant la phase backoff forward BF

ET X_packet Energie consommée durant l’émission d’un paquet

ERX_packet Energie consommée durant la réception d’un paquet

E1hop_RT XP Energie consommée par RTXP pour réaliser un saut

k Degré moyen du réseau

Table 5.1 – Notations utilisées pour la description de RTXP

5.6 Calcul des paramètres théoriques de RTXP

Dans cette section nous donnons les équations des paramètres de RTXP et éva-luons les compromis entre le délai, la capacité et l’énergie.

5.6.1 Délai, capacité et énergie

Pour calculer une borne sur le délai de bout en bout (cas pire de délai de bout en bout ou Worst Case Traversal Time, WCTT), nous calculons le pire cas de délai pour un saut et nous multiplions cette valeur par le nombre de sauts maximum pour atteindre le puits. Pour commencer, nous définissons des délais intermédiaires. Les notations utilisées dans cette section sont détaillées dans le Tableau 5.1.

Les durées de B et BF dépendent du temps de backoff qui est fonction de l’offset (backoff = f(offset)). Tous les nœuds doivent avoir la possibilité d’envoyer un

jam-ming code pendant la durée de la phase de backoff. La durée de cette phase doit donc

être égale au temps de backoff maximal plus la durée d’un jamming code :

DB = DBF = max(backoff ) + Djamming (5.1) La durée de la phase R est simplement le temps nécessaire pour transmettre un paquet de données (noté DR). Dans notre cas, un paquet d’alarme a une taille de l’ordre de quelques dizaines d’octets.

La durée du slot L (DL) est égale à la durée d’un jamming code (Djamming). La durée d’une période de sommeil (Dsleep) est déduite de la durée d’une période d’éveil (Dawake). La durée de la période d’éveil d’un nœud est égale à la durée de la phase B, et de la phase BF et de deux phases R (une pour recevoir un paquet et une pour en envoyer un). Le calcul de Dsleepdépend du rapport du cycle d’endormissement (DC), qui dépend de l’application. Nous avons donc :

DC = Dawake/(Dsleep+ Dawake) (5.2)

Dawake= DB+ DBF + 2 × DR+ DL (5.3)

Dsleep = Dawake× (DC1 − 1) (5.4)

Le rapport du cycle d’endormissement dépend de l’application, cet aspect est discuté dans la section 5.6.2.

La période d’activité qui est détaillée sur la Figure 5.2 a une durée de :

Dactivity_period = 3 × (DB+ DBF + DR) + DL (5.5) Le pire cas pour la durée d’un saut correspond à Dactivity_period + Dsleep. En ef-fet, un nœud qui a un paquet à transmettre doit gagner l’accès au canal dans son 2-voisinage (phase B). S’il y a plusieurs paquets dans le 2-voisinage, des périodes d’activité secondaires sont exécutées. Cependant, le dernier paquet doit être transmis avant l’instant de réveil des nœuds du réseau (noté t0). Donc un paquet peut être retardé au plus d’une durée d’un cycle d’endormissement. Pour la borne sur le délai de bout en bout nous prenons le nombre de sauts maximal plus un, car il y a un délai entre la détection de l’événement et l’émission du paquet (ce délai correspond au plus au délai d’un cycle d’endormissement donc d’un saut).

W CT TRT XP = (NBhop_max+ 1) × (Dactivity_period+ Dsleep) (5.6) Le nombre de périodes d’activité est limité par la longueur de la période de som-meil (qui dépend du cycle d’endormissement). Nous définissons la capacité de RTXP (CRT XP) comme étant le nombre de paquets qui peuvent être transmis dans un 2-voisinage pendant la durée d’un cycle d’endormissement. La durée du cycle

missement étant Dactivity_period+ Dsleep, la capacité est :

CRT XP =

$

Dactivity_period+ Dsleep Dactivity_period

%

(5.7) car on peut envoyer un seul paquet d’un 2-voisinage de gradient h durant

Dactivity_period donc CRT XP paquets durant un cycle d’endormissement.