• Aucun résultat trouvé

Multipath Optimized Link State Routing Protocol (MP-OLSR)

Chapitre 1 : Protocole OLSR : Définitions et état de l’art

4.2 Multipath Optimized Link State Routing Protocol (MP-OLSR)

4.2.1 Description de la fonctionnalité de base de MP-OLSR

MP-OLSR [3] est une variante multi-chemins améliorée du standard OLSR [4]. MP- OLSR améliore la qualité de transmission des paquets de données en améliorant le taux de paquets délivrés et l'équilibrage de charge. MP-OLSR hérite certain caractéristiques du protocole OLSR, chaque nœud du réseau MANET maintient la topologie du réseau par l’échange périodique des messages HELLO et TC (Topology Control). Pour réduire les messages TC, comme dans le protocole OLSR, MP-OLSR utilise l’algorithme de sélection des relais multipoints (MPR). Contrairement à OLSR, MP-OLSR ne maintient pas les tables de routage vers tous les nœuds joignable du réseau. La procédure de calcul de chemins multiples est réalisée par le nœud source en suivant une procédure de calcul à la demande, de sorte que le nœud source déclenche le calcul de chemins multiples sauf lorsqu’il y a un besoin d’envoie des paquets de données vers un nœud de destination.

En se basant sur la base de données topologique, MP-OLSR calcule des chemins multiples en utilisant l'algorithme multi-chemins de Dijkstra (voir Algorithme 4.1) sans éliminer les nœuds ou les liens qui composent les chemins précédemment calculés. L'objectif est de construire des chemins multiples dans le cas où le réseau MANET ne contient pas strictement des chemins à nœuds-disjoints ou à liens-disjoints.

Pour obtenir des chemins à nœuds-disjoints ou à liens-disjoints, l'algorithme multi-chemins de Dijkstra implémenté par MP-OLSR utilise, à chaque étape de l'algorithme, deux fonctions de coûts (appelées aussi les fonctions incrémentales) fp : ℛ*+ → ℛ*+ et fe :ℛ*+ → ℛ*+. La fonction

Chapitre 4 : Une Variante Multi chemins du protocole OLSR pour améliorer la QoS et la QoE dans une transmission vidéo

98

chemin calculé précédemment. Cela obligera les chemins futurs à privilégier l’utilisation des liens différents. La fonction fe est utilisée pour augmenter le coût des liens connectés aux

nœuds appartenant au chemin précédemment calculé. L'objectif n'est pas d’éviter les portions de chemin déjà utilisés mais simplement les pénalisées. Donc, si une portion du chemin est inévitable, elle sera empruntée à nouveau. De même, les longs chemins sont évités tandis que les liens qui composent les chemins les plus courts ne sont pas partagés suffisamment, c'est à dire, jusqu'à ce que les chemins les plus courts deviennent suffisamment pénalisés.

Soit fid la fonction identité (fid (c) = c), les fonctions de coûts définissent trois cas:

 Si fid < fe = fp, alors les chemins tend à être nœuds-disjoints,

 Si fid = fe < fp, alors les chemins tend à être liens-disjoints,

 Si fid < fe < fp, alors les chemins tend à être nœuds-disjoints mais, quand ce n'est pas

possible, les chemins ont tendance à être liens-disjoints.

L'utilisation des différentes fonctions de coûts peut obtenir différents ensembles de chemins multiples (avec nœuds-disjoints ou liens-disjoints). Par exemple, dans le réseau MANET présenté par le graphe dans la Figure 4.1 (a), supposons que le nœud S veut construire plusieurs chemins vers le nœud D en utilisant l'algorithme multi-chemins de Dijkstra, le coût c initial de chaque lien est égal à 1, donc:

 Si les fonctions de coûts fp(c) = 3c et fe(c) = c sont utilisées, c’est-à-dire, la pénalité est

appliquée uniquement aux liens utilisés (voir Figure 4.1 (b)). Par l’application de l’algorithme Dijkstra, le premier plus court chemin trouvé est S→F→D. Donc, les coût des liens (S,F) et (F,D) sont changés de 1 à 3 par l’utilisation de la fonction de coût fp. Le

second plus court chemin trouvé est: S→G→H→D. Les coût des liens (S,G), (G,H) et (H,D) sont changés de 1 à 3. Finalement, le troisième plus court chemin trouvé est: S→A→F→E→D. les coûts des liens appartenant au troisième chemin sont changés de 1 à 3. Ces trois chemins sont des chemins à liens-disjoints.

 Si les fonctions de coûts fp(c) = 3c et fe(c) = 2c sont utilisées, c’est-à-dire, la pénalité est

appliquée aux liens et nœuds utilisés (voir Figure 4.1 (c)). Premièrement, le plus court chemin trouvé est S→F→D et les coûts des liens (S,F) et (F,D) sont changés de 1 à 3 par l’utilisation de la fonction de coût fp. Les coûts des liens connectés aux nœuds appartenant

Chapitre 4 : Une Variante Multi chemins du protocole OLSR pour améliorer la QoS et la QoE dans une transmission vidéo

99

à ce chemin (sauf le nœud source S et le nœud de destination D) sont changés de 1 à 2 par l’utilisation de la fonction de coût fe.

Ensuite, le deuxième plus court chemin calculé est S→G→H→D, en utilisant la fonction de coût fp le coût des liens appartenant à ce chemin est changé de 1 à 3 et en utilisant la

fonction de coût fe le coût des liens connectés aux nœuds appartenant au deuxième chemin

trouvé est changé de 2 à 4. Finalement, le troisième plus cours chemin trouvé est S→A→B→C→E→D, le coût des liens appartenant à ce chemin est changé de 1 à 3 et le coût des liens connectés aux nœuds appartenant au troisième chemin trouvé est changé de 2 à 4. Ces trois chemins trouvés sont des chemins à nœuds-disjoints.

Nous notons que l'algorithme multi-chemins de Dijkstra utilisé par le protocole MP-OLSR peut trouver plusieurs chemins avec un ou plusieurs liens partagés.

(a) graphe initiale d’un MANET

(b) Calcul des chemins avec des fonctions de coûts fp(c)=3c et fe(c)=c S A B C E D F G H 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 2 4 1 2 4 1 2 4 1 2 4 1 3 1 2 4 1 2 4 S A B C E D F G H 1 3 1 1 1 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 3 1 3 1 1 S A B C E D F G H 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Chapitre 4 : Une Variante Multi chemins du protocole OLSR pour améliorer la QoS et la QoE dans une transmission vidéo

100

(c) Calcul des chemins avec des fonctions de coûts fp(c)=3c et fe(c)=2c

Figure 4.1: Exemples de calcul des chemins par l’algorithme multi-chemins de Dijkstra Due aux changements de la topologie et de l'instabilité des MANET, des ruptures des liens et des boucles de routage peuvent se produire fréquemment. Pour résoudre ces deux problèmes, des mécanismes de découvert de routage sont intégrés au protocole MP-OLSR pour réduire la perte des paquets. En comparaison au protocole OLSR, MP-OLSR [3][75] peut équilibrer la charge du réseau et augmente le taux de paquets délivrés et de réduire le délai de bout-en-bout.

4.2.2 Calcul des routes

L'objectif du protocole MP-OLSR, est de construire un ensemble P de t chemins, sans boucles, connectant un nœud source s à un nœud destination d. Après avoir présenté le mécanisme de calcul de chemins, nous décrivons les définitions et les notations de base. La topologie du réseau MANET peut être représentée par un graphe G(V,E,c), où V est l’ensemble de sommets (les nœuds), et E ⊂ V×V est l'ensemble des arcs (les liens) définie par E = {(vq,vq+1) |

dist(vq,vq+1) ≤ R}, où dist est la fonction de distance euclidienne et R représente le rayon de

couverture radio des nœuds. Deux nœuds appartenant au même lien peuvent communiquer entre eux. c: V×V → ℛ*+

est la fonction de coût qui défini l'ensemble des poids associés aux liens appartenant à E, donc pour chaque arc eq = (vq,vq+1) ∈ E, il existe un poids c(eq) qui lui

est associé. c(eq) représente le coût ou la métrique associée à l’arc eq, par défaut MP-OLSR

utilise le nombre de sauts comme métrique de routage pour sélectionner plusieurs chemins, dans ce cas c(eq) est égale à 1 pour chaque arc eq ∈ E, par conséquent, il peut représenter

d'autres métriques à QoS.

Un chemin Pi ∈ P entre deux sommets distincts (s, d), est une séquence fini non nulle de

sommets (v1,v2,.., vm) tel que (vq,vq+1) ∈ E, v1 = s and vm = d. Premièrement, nous supposons

que le graphe G est bidirectionnel, c'est-à-dire, (vq,vq+1) ∈ E ⇒ (vq+1,vq) ∈ E où vq ∈ V.

Deuxièmement, le graphe ne possède aucun arc qui relie un nœud à lui-même. Enfin, chaque paire de sommets n'est pas connecté par plus d'un lien. Alors, étant donné un nœud source s, le protocole MP-OLSR maintient un drapeau de mise à jour (updatedFlag) pour identifier si les

Chapitre 4 : Une Variante Multi chemins du protocole OLSR pour améliorer la QoS et la QoE dans une transmission vidéo

101

routes sont toujours valables. Initialement, updatedFlag est définie sur faux, ce qui signifie que les routes ne sont pas encore calculées ou doivent être recalculées. Quand un nœud s a besoin de calculer une route vers le nœud d il vérifie le parmètre updatedFlag comme suit:  Si updatedFlag est égale faux, alors le nœud s appel l’algorithme multi-chemins de

Dijkstra pour calculer t routes. Après, ces t routes sont enregistrées dans la table de routage multi-chemins du nœud s qui modifie par la suite la valeur du paramètre updatedFlag par vrai.

 Si updatedFlag est égale vrai, alors le nœud s peut trouver une route valide vers le nœud d dans sa table de routage multi-chemins.

Algorithme 4.1: L’algorithme multi-chemins de Dijkstra

1 Function MultiPathDijkstra(s, d, G, t) 2 c1 ← c; 3 G1 ← G; 4 for (i ← 1 to t) do 5 SourceTreei ← Dijkstra(Gi, d); 6 Pi ← GetPath(SourceTreei, d); 7 foreach (arc eq ∈ E) do 8 if (eq is in Pi or Reverse(eq) is in Pi) then 9 ci+1(eq) ← fp(ci(eq));

10 else if (the vertex Head(eq) ∩ Pi ≠ ∅) then

11 ci+1(eq) ← fe(ci(eq)); 12 else 13 ci+1(eq) ← ci(eq); 14 end if 15 end for 16 Gi+1 ← (V, E, ci+1); 17 end for 18 return (P1, P2, …, Pt);

Chaque fois le nœud source s reçoit un nouveau message HELLO ou TC et détecte un changement dans la topologie du réseau, la valeur du paramètre updatedFlag est modifiée à faux. l’algorithme multi-chemins de Dijkstra (voir Algorithme 4.1) calcule et retourne un ensemble de t chemins P = (P1,P2,…,Pt) à partir du graphe G. La fonction Dijkstra(G,s)

utilisée dans l’algorithme multi-chemins de Dijkstra correspond à l’algorithme standard de Dijkstra, elle retourne l’arbre source des plus courts chemins à partir du nœuds source s. Initialement, le coût de tous les liens sont initialisés à 1. La fonction GetPath(SourceTree,d) extrait le chemin Pi à partir du nœuds source s vers le nœud d et la fonction Reverse(eq)

Chapitre 4 : Une Variante Multi chemins du protocole OLSR pour améliorer la QoS et la QoE dans une transmission vidéo

102

renvoie l’arc opposé (vq+1,vq) de eq, de sorte que eq = (vq,vq+1). La fonction Head(eq) retourne

le sommet de l’arc sur lequel pointe eq, c'est-à-dire vq+1. Les chemins dans P ne sont pas

nécessairement disjoints, lorsqu'un chemin Pi est calculé, la fonction de coût fp est utilisée pour

augmenter le coût de l'arc eq ou Reverse(eq) qui appartiennent au chemin Pi. Cela fera que les

chemins futurs auront tendance à être des liens disjoints. La fonction de coût fe est utilisée

pour augmenter le coût des arcs si Head(eq) appartient à Pi, ce qui rendre les arcs ont tendance

à être nœuds-disjoints. Les chemins construits par l’algorithme multi-chemins de Dijkstra n'ont pas besoin d'être strictement disjoints. La procédure de calcul est répétée t fois jusqu'à ce que t chemins P soient obtenus à partir du nœud source s vers le nœud destination d.