WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Proposition et simulation d'un algorithme de partage de ressources dans les manets basé sur l'algorithme de Naimi et Tréhel

( Télécharger le fichier original )
par Omar Sami Oubbati
Université Amar Telidji Laghouat - Master en informatique 2011
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

REpuBLiQuE ALGERiENNE DEMocRATiQuE ET PopuLAiRE
MiNisTERE DE L'ENsEiGNEMENT SupERiEuR ET DE LA REcHERcHE SciENTiFiQuE

UNivERsiTI AMMAR TELiDji

LAGHouAT

FAcuLTE DEs SciENcEs ET SciENcEs DE L'INGENiEuR
DEpARTEMENT DE GENiE INFoRMATiQuE

MiMoiRE DE MAsTER

DoMAiNE: MATHEMATiQuEs ET INFoRMATiQuE (MI)
F
iLiERE: INFoRMATiQuE
OpTioN: RisEAuX, sysTEMEs ET AppLicATioNs RtpARTis (ReSar)

Présenté par:

OuBBATi OMAR SAMi

Thème:

PRoposiTioN ET siMuLATioN D'uN

ALGoRiTHME DE pARTAGE DE

REssouRcEs DANs LEs MANETs BAsé

suR L'ALGoRiTHME DE NAiMi ET TREHEL

Soutenu publiquement devant le jury composé de:

Mr.
Mr.

Mlle.

Mr.

M.B. YAGouBi M. DjouDi

r . 7 A

Z. ABDELHAFiDHi T. ALLAoui

Maître de Conférences (A) Maître-assistant (A) Maître-assistant (A) Maître-assistant (A)

Université de Laghouat Université de Laghouat Université de Laghouat Université de Laghouat

(Président) (Examinateur) (Examinatrice) (Rapporteur)

Je dédie ce mémoire
à
mes parents
qui m'ont toujours soutenu et encouragé
au cours de la réalisation de ce mémoire de fin d'étude.
à
tous les professeurs et enseignants universitaires
qui m'ont permis, par leurs efforts, d'atteindre un tel niveau deformation.

REMERCIEMENTS

J

E remercie Dieu tout Puissant de m'avoir permis de mener à terme ce mémoire de fin d'étude. En préambule à ce mémoire, je souhaite adresser ici tous mes remerciements aux per-

sonnes qui m'ont apporté leur aide et qui ont ainsi contribué à l'élaboration de ce mémoire.

Qu'il me soit permis de rendre un vibrant hommage à mon encadreur Mr Allaoui Tahar, qui était pour moi un immense honneur de travailler avec lui durant mon projet de fin d'étude d'ingénieur, et par coïncidence Dieu a voulu que je travail encore une fois avec lui dans ce mémoire. Donc un grand remerciement à lui pour avoir bien voulu superviser ce travail et donner de son temps et de son intelligence à la réussite de ce projet qui pour moi représente un modèle de réussite et une source de motivation permanente, je le remercie également pour sa disponibilité, son sens aigu de l'humanisme pédagogique, et enfin sa rigueur intellectuelle et morale qui est pour moi plus qu'un exemple à suivre, un modèle.

J'aimerais aussi témoigner ma reconnaissance à Mr Nasreddine Lagraa, Maître de conférences à l'université de Laghouat, pour son aide précieuse et le temps qu'il a bien voulu nous consacrer à développer et améliorer l'idée de base de ce projet.

Enfin je remercie les membres du jury qui ont bien voulu accepter, et ce malgré, leur lourdes et exaltantes responsabilités pour procéder à l'évaluation de ce modeste travail.

RéSUMé

C

E mémoire traite le problème de la K-exclusion mutuelle dans les réseaux mobiles AD HOC.

Dans ce mémoire nous allons d'abord introduire le concept des systèmes répartis et les réseaux AD HOC, ce qui va nous permettre de mettre l'accent sur le problème de l'exclusion mutuelle, et sa généralisation en K ressources.

Nous proposons également un algorithme traitant le problème de la K-exclusion mutuelle dans les réseaux AD HOC, cet algorithme sera amélioré et validé par une simulation en utilisant l'outil NS-2.

Un 2ème algorithme qui traite le même problème sera proposé, ce nouvel algorithme permet d'assurer un nombre réduit de messages échangés. L'efficacité de cette solution est prouvée par rapport aux algorithmes déjà évalués.

Mots-clés : Réseaux AD HOC, algorithmique répartie, Exclusion mutuelle, K-exclusion mutuelle, Routage, Simulation, NS-2.

ABSTRACT

T

HIS thesis treats the K-mutual exclusion problem in the AD HOC networks.

In this thesis, we will first introduce the concept of distributed systems and the AD HOC networks, which will allow us to focus on the mutual exclusion problem and its generalization to K resources.

We also propose an algorithm that treats the K-mutual exclusion problem in the AD HOC networks, this algorithm will be improved and validated by a simulation using NS-2 tool.

A second algorithm that treats the same problem will be proposed, this new algorithm ensures a reduced number of messages exchanged. The effectiveness of this solution is proven compared to the algorithms already evaluated.

Key-words : Mobile AD HOC Network (MANET), Distributed algorithm, Mutual exclusion, K-mutual exclusion, Routing, Simulation, NS-2.

TABLE DEs MATièREs

TABLE DEs MATièREs vi

LisTE DEs FiGuREs ix

INTRoDucTioN GéNéRALE 1

1 NoTioNs GéNéRALEs 3

1.1 INTRoDucTioN 4

1.2 LEs sysTèMEs RépARTis 4

1.3 LEs RésEAux MoBiLEs 4

1.3.1 Les réseaux mobiles avec infrastructures 5

1.3.2 Les réseaux mobiles sans infrastructures (AD HOC) 5

1.3.2.1 Définition d'un réseau AD HOC 5

1.3.2.2 Les caractéristiques des réseaux AD HOC 6

1.3.2.3 Les avantages des réseaux AD HOC 7

1.3.2.4 Les inconvénients des réseaux AD HOC 7

1.3.2.5 Les domaines d'applications des réseaux AD HOC 7

1.3.2.6 Les problèmes liés aux réseaux AD HOC 9

1.3.3 Problème de routage dans les réseaux AD HOC 9

1.3.3.1 Définition d'un routage 9

1.3.3.2 Classification des protocoles de routage 9

1.3.3.2.a Les protocoles de routage proactifs 10

1.3.3.2.b Les protocoles de routage réactifs (à la demande) . 10

1.3.3.2.c Les protocoles de routage hybrides 10

1.4 L'ExcLusioN MuTuELLE DANs LEs RésEAux AD HOC 10

1.4.1 L'exclusion mutuelle en réparti 10

1.4.1.1 La notion de l'exclusion mutuelle 10

1.4.1.2 Les états d'un processus 11

1.4.1.3 Notions de base 11

1.4.1.4 Propriétés d'un algorithme d'exclusion mutuelle 11

1.4.1.5 Les classes de solutions d'exclusion mutuelle 12

1.4.1.5.a Algorithmes utilisant des permissions 12

1.4.1.5.b Algorithmes utilisant des jetons 12

1.4.2 Le problème de la K-exclusion mutuelle 12

1.4.2.1 Description du problème 12

1.4.2.2 Résolution du problème 13

1.4.2.2.a Solution utilisant des permissions 13

1.4.2.2.b Solution utilisant des jetons 13

1.4.3 Les solutions de l'EM dans les réseaux ADHOC 13

1.4.4 Les solutions de la K-EM dans les réseaux AD HOC 14

CoNcLusioN 14

2 PRoposiTioN D'uN ALgoRiThME BAsé suR L'ALgoRiThME DE NAiMi ET TREhEL 15

 

2.1
2.2

INTRoDucTioN

L'ALgoRiThME

2.2.1 Structure logique utilisée

2.2.2 Le principe de fonctionnement

2.2.3 Hypothèses

2.2.4 Description de l'algorithme

16
16

16

17

18

18

 
 

2.2.4.1 Les variables locales

18

 
 

2.2.4.2 Les messages utilisés

19

 
 

2.2.4.3 Initialisation des variables

19

 
 

2.2.4.4 Les procédures de l'algorithme

19

 

2.3

MoDiFicATioN 1

22

 

2.4

MoDiFicATioN 2

23

 

CoNcLusioN

24

3

DiscussioN DEs RésuLTATs DE siMuLATioNs

25

 

3.1

INTRoDucTioN

26

 

3.2

LE siMuLATEuR NS-2

26

 
 

3.2.1 Présentation de l'outil de simulation

26

 

3.3

LEs éTApEs DE siMuLATioN

26

 

3.4

CoMMENT RéALisER uNE siMuLATioN?

27

 

3.5

LEs pARAMèTREs DE siMuLATioN

29

 
 

3.5.1 Les paramètres fixes

29

 
 

3.5.2 Les paramètres variables

29

 

3.6

EvALuATioN DE pERFoRMANcEs

30

 

3.7

LEs éTApEs D'uN scéNARio

31

 

3.8

RésuLTATs ET iNTERpRéTATioNs

31

 
 

3.8.1 Variation du nombre de requêtes

31

 
 

3.8.2 Variation de la portée de communication

32

 
 

3.8.3 Variation du nombre de ressources

32

 
 

3.8.4 Variation de la vitesse de mouvement

33

 
 

3.8.5 Variation du nombre de sites

33

 

3.9

RésuLTATs DEs MoDiFicATioNs

34

 
 

3.9.1 Variation du nombre de requêtes

34

 
 

3.9.2 Variation de la portée de communication

34

 
 

3.9.3 Variation du nombre de ressources

35

 
 

3.9.4 Variation de la vitesse de mouvement

35

 
 

3.9.5 Variation du nombre de sites

35

 

CoNcLusioN

36

4

UN NouvEL ALgoRiThME BAsé suR LE pRoTocoLE DE RouTAgE AODV

37

 

4.1

L'iDéE DE BAsE

38

 

4.2

L'ALgoRiThME

38

 
 

4.2.1 Hypothèses

39

 
 

4.2.2 Description de l'algorithme

39

 
 

4.2.2.1 Les variables locales

39

 
 

4.2.2.2 Les messages utilisés

39

 
 

4.2.2.3 Initialisation des variables

40

 
 

4.2.2.4 Les procédures de l'algorithme

40

 
 

4.2.3 Les paramètres de simulation

42

4.2.4 La comparaison de tous les résultats 43

4.2.4.1 Variation du nombre de requêtes 43

4.2.4.2 Variation de la portée de communication 43

4.2.4.3 Variation du nombre de ressources 43

4.2.4.4 Variation de la vitesse de mouvement 44

4.2.4.5 Variation du nombre de sites 44

CoNcLusIoN 44

CoNcLusIoN ET PERsPEcTIVEs 45

BIBLIoGRAPHIE 47

A ANNEXE : ScRIPT DE sIMuLATIoN 49

A.1 LE ScRIPT TCL 50

AcRoNYMEs 55

LISTE DES FIGURES

1.1 Structure d'un système réparti 4

1.2 Le modèle des réseaux mobiles avec infrastructure.[Bou07] 5

1.3 Le modèle des réseaux mobiles sans infrastructure. 6

1.4 Topologie dynamique dans un réseau AD HOC 6

1.5 Application de secours des réseaux AD HOC. 8

1.6 Application collaborative des réseaux AD HOC 8

1.7 Applications commerciales des réseaux AD HOC 8

1.8 Le chemin utilisé dans le routage entre la source et la destination. 9

1.9 Classification des protocoles de routage. 9

1.10 Les états d'un processus.[Ray92] 11

1.11 Les catégories des solutions d'exclusion mutuelle 12

2.1 Structure de la file des requêtes. 16

2.2 Structure d'arbre de chemins vers le dernier demandeur 17

2.3 Les états d'arborescence après chaque requête 18

3.1 Exemple de Création d'une topologie 27

3.2 Les étapes de simulation.[OB10] 28

3.3 Réalisation d'une simulation.[LK09] 28

3.4 Variation des paramètres de simulation 30

3.5 Les étapes de réalisation d'un scénario. 31

3.6 Influence du nombre de requêtes sur le NMM et le TAM. 31

3.7 Influence de la portée de communication sur le NMM et le TAM 32

3.8 Influence du nombre de ressources sur le NMM et le TAM. 32

3.9 Influence de la vitesse de mouvement sur le NMM et le TAM 33

3.10 Influence du nombre de sites sur le NMM et le TAM 33

3.11 Influence du nombre de requêtes sur le NMM et le TAM. 34

3.12 Influence de la portée de communication sur le NMM et le TAM 34

3.13 Influence du nombre de ressources sur le NMM et le TAM. 35

3.14 Influence de la vitesse de mouvement sur le NMM et le TAM 35

3.15 Influence du nombre de sites sur le NMM et le TAM 35

4.1 Influence du nombre de requêtes sur le NMM et le TAM. 43

4.2 Influence de la portée de communication sur le NMM et le TAM 43

4.3 Influence du nombre de ressources sur le NMM et le TAM. 43

4.4 Influence de la vitesse de mouvement sur le NMM et le TAM 44
4.5 Influence du nombre de sites sur le NMM et le TAM 44

INTRODUCTION GéNéRALE

L

'évolution récente de la technologie sans fll et l'apparition des unités de calcul portables poussent aujourd'hui les chercheurs à faire des efforts afln de réaliser le but des

réseaux : (L'accès à l'information n'importe ou , et n'importe quand). Les réseaux sans fll ne sont pas une exception, car ils ont gagné un intérêt majeur et une popularité croissante grâce aux avantages qu'ils offrent, ces réseaux occupent de plus en plus de place dans les communications personnelles et d'entreprise.

Les réseaux mobiles sans fll, peuvent être classés en deux grandes catégories : les réseaux mobiles avec infrastructure ou cellulaire, et les réseaux mobiles sans infrastructure ou les réseaux mobiles AD HOC.

Le concept des réseaux mobiles AD HOC essaie d'étendre les notions de la mobilité à toutes les composantes de l'environnement. Ici, contrairement aux réseaux basés sur la communication avec infrastructure (cellulaire), aucune administration centralisée n'est disponible, ce sont les hôtes mobiles eux-mêmes qui forment une infrastructure du réseau. Aucune supposition ou limitation n'est faite sur la taille du réseau AD HOC, le réseau peut contenir des centaines ou des milliers d'unités mobiles.

Les sites d'un réseau AD HOC peuvent partager des ressources critiques dont l'accès simultané par plusieurs noeuds conduit à des incohérences. Il faut donc assurer l'accès exclusif à cette ressource, cette notion a donné naissance au problème de l'exclusion mutuelle dans les réseaux AD HOC. Et lorsque le système est doté de plusieurs ressources (K ressources), nous pouvons donc parler de la généralisation de ce problème au problème de la K-exclusion mutuelle.

L'étude des performances d'une nouvelle solution apportée à ces problèmes nécessite une intervention direct dans un réseau réel, une chose qui est difflcile voir même impossible, vue la difflculté d'extraction des données, et des coûts de matérielle exorbitant, c'est la raison pour laquelle on utilise des outils de simulation qui nous permettent de tester et évaluer les algorithmes proposés dans des conditions très proches de la réalité.

Dans ce mémoire, nous allons proposer et valider par une simulation, un algorithme de la K-exclusion mutuelle dans les réseaux mobiles AD HOC. Des remarques nous ont permis d'améliorer cet algorithme afln d'avoir une performance très acceptable en terme de temps d'attente, un autre algorithme est également proposé, qui va remplir les lacunes du premier algorithme en terme de nombre de messages échangés.

Le reste de ce mémoire est organisé comme suit:

Dans le 1er chapitre, nous allons aborder des notions générales sur les réseaux mobiles AD HOC et le problème de l'exclusion mutuelle dans ces systèmes, ainsi qu'une illustration par des exemples de solutions apportés à ce problème.

Introduction générale

Le chapitre 2, est entièrement consacré à l'étude de l'algorithme proposé dans le cadre de la K-exclusion mutuelle dans les réseaux mobiles AD HOC. Nous l'expliquons en donnant l'idée de base, le principe de fonctionnement, ainsi que les améliorations apportées.

Dans le chapitre suivant, nous présentons la réalisation de la simulation de cet algorithme, et la discussion des différents résultats obtenus durant la simulation.

Le dernier chapitre, un nouvel algorithme sera proposé, cet algorithme vise à satisfaire toutes les insuffisances qui sont survenues au niveau de l'algorithme proposé dans le chapitre précédent.

La conclusion de ce mémoire résume les travaux faits durant toutes nos études ainsi que des possibles améliorations futures.

À la fin de ce mémoire, on met à la disposition du lecteur, une annexe représentant un exemple d'un script utilisé par l'outil de simulation.

NoTioNs géNéRaLEs 1

SoMMaiRE

1.1 INTRoDucTioN 4

1.2 LEs sysTèMEs RépaRTis 4

1.3 LEs RésEaux MoBiLEs 4

1.3.1 Les réseaux mobiles avec infrastructures 5

1.3.2 Les réseaux mobiles sans infrastructures (AD HOC) 5

1.3.2.1 Définition d'un réseau AD HOC 5

1.3.2.2 Les caractéristiques des réseaux AD HOC 6

1.3.2.3 Les avantages des réseaux AD HOC 7

1.3.2.4 Les inconvénients des réseaux AD HOC 7

1.3.2.5 Les domaines d'applications des réseaux AD HOC 7

1.3.2.6 Les problèmes liés aux réseaux AD HOC 9

1.3.3 Problème de routage dans les réseaux AD HOC 9

1.3.3.1 Définition d'un routage 9

1.3.3.2 Classification des protocoles de routage 9

1.4 L'ExcLusioN MuTuELLE DaNs LEs RésEaux AD HOC 10

1.4.1 L'exclusion mutuelle en réparti 10

1.4.1.1 La notion de l'exclusion mutuelle 10

1.4.1.2 Les états d'un processus 11

1.4.1.3 Notions de base 11

1.4.1.4 Propriétés d'un algorithme d'exclusion mutuelle 11

1.4.1.5 Les classes de solutions d'exclusion mutuelle 12

1.4.2 Le problème de la K-exclusion mutuelle 12

1.4.2.1 Description du problème 12

1.4.2.2 Résolution du problème 13

1.4.3 Les solutions de l'EM dans les réseaux ADHOC 13

1.4.4 Les solutions de la K-EM dans les réseaux AD HOC 14

CoNcLusioN 14

D

aNs ce chapitre, nous allons présenter le concept des réseaux AD HOC et les caractéristiques inhérentes ainsi que quelques domaines d'application de ces réseaux. Nous

introduisons également le concept du problème de l'exclusion mutuelle dans ce type de ré-
seaux, quelques exemples de solutions déjà proposées dans ce domaine seront présentées.

1.1 INTRoDucTioN

Au cours de ces dernières années, le monde des réseaux sans fil est devenu l'un des axes de recherche les plus importants. L'évolution récente des moyens de communication sans fil a permis la manipulation de l'information à travers des unités de calcul mobiles. Les environnements mobiles offrent aujourd'hui une grande flexibilité d'emploi, en particulier, ils permettent la mise en réseau des sites dont le câblage serait trop onéreux à réaliser dans leur totalité, voire même impossible.

1.2 LEs sysTèMEs RépaRTis

Un système réparti est un système composé de plusieurs machines autonomes qui communiquent par l'échange de messages via un réseau de communication quelconque (filaire ou sans fil).(voir la figure 1.1).

Figure 1.1 - Structure d'un système réparti

Chaque ordinateur (dit aussi site), est une entité autonome capable de réaliser des tâches indépendamment des autres entités.

Au niveau de chaque site qui a une mémoire propre et une horloge locale, un ensemble de processus s'exécute soit en collaboration soit en compétition. Pour des raisons de simplicité, on suppose qu'il y a un seul processus au niveau de chaque site, donc, dans tout ce qui suit, les termes : site, noeud et processus seront confondus, et ils représenteront la même chose.[OB10]

1.3 LEs RésEaux MoBiLEs

Un environnement mobile est un ensemble de noeuds mobiles qui permet aux usagers d'accéder à l'information indépendamment de leurs positions géographiques, et sans utiliser une infrastructure câblée.

Les réseaux mobiles (ou sans fil), peuvent être divisés en deux classes:

- Des réseaux avec infrastructure.
- Des réseaux sans infrastructure.

1.3.1 Les réseaux mobiles avec infrastructures

Dans ce modèle, le réseau est composé de deux ensembles d'entités distinctes : les (sites fixes) d'un réseau de communication filaire classique, et les (sites mobiles). Certains sites fixes, appelés stations de bases (SB) sont munis d'une interface de communication sans fil pour la communication directe avec les sites ou les unités mobiles (UM) localisés dans une zone géographique limitée, appelée cellule.

Les stations de base sont interconnectées par un réseau de communication filaire, et délimite une cellule à partir de laquelle des unités mobiles peuvent émettre et recevoir des messages.

Dans ce modèle, une unité mobile ne peut être, à un instant donné, directement connectée qu'à une seule station de base. Elle peut communiquer avec les autres sites à travers la station à laquelle elle est directement rattachée. L'autonomie réduite de sa source d'énergie, lui occasionne de fréquentes déconnexions du réseau, sa reconnexion peut alors se faire dans un environnement nouveau, voir dans une nouvelle localisation.[Lem00] (voir la figure 1.2).

Figure 1.2 - Le modèle des réseaux mobiles avec infrastructure.[Bou07]

1.3.2 Les réseaux mobiles sans infrastructures (AD HOC)

1.3.2.1 Définition d'un réseau AD HOC

Un réseau mobile AD HOC, appelé généralement MANET (Mobile AD HOC NET-work), est un ensemble d'unités mobiles qui se déplacent dans un territoire quelconque. Le seul moyen de communication est l'utilisation des ondes radio qui se propagent entre les différents noeuds mobiles, sans l'aide d'une infrastructure préexistante ou d'une administration centralisée.[LK09]

comme il est illustré dans la figure 1.3

Figure 1.3 - Le modèle des réseaux mobiles sans infrastructure.

À cause de la mobilité des sites, La topologie du réseau peut changer à tout moment, elle est donc dynamique et imprévisible.

1.3.2.2 Les caractéristiques des réseaux AD HOC

Les réseaux AD HOC en tant qu'un nouveau paradigme des réseaux sans fil, présentent de nombreuses caractéristiques dont certaines leur sont bien spécifiques et les différencient des réseaux mobiles classiques.

- Une topologie dynamique : les unités mobiles du réseau, se déplacent d'une façon libre et arbitraire. Par conséquent, la topologie du réseau peut changer à des instants imprévisibles d'une manière rapide et aléatoire. (voir figure 1.4).

Figure 1.4 - Topologie dynamique dans un réseau AD HOC.

- L'absence d'infrastructure : les réseaux AD HOC se caractérisent par l'absence d'infrastructure préexistante et de tout genre d'administration centralisée. Les hôtes mobiles sont responsables d'établir et de maintenir la connectivité du réseau d'une manière continue.

- Rapidité de déploiement : les réseaux AD HOC peuvent être facilement installés dans des endroits difficiles à câbler, ce qui élimine une bonne part du travail et du coût généralement liés à l'installation, et réduit d'autant le temps nécessaire à la mise en route.

- Communication par lien radio : les communications entre les noeuds se font par l'utilisation d'une interface radio. Il est alors important d'adopter un protocole d'accès au médium qui permet de bien distribuer les ressources radio, et ceci en évitant le plus possible les collisions, et en réduisant les interférences.[Mes98]

1.3.2.3 Les avantages des réseaux AD HOC

- Facile à déployer : il suffit de mettre en place plusieurs machines pour que le réseau existe. Ceci rend la construction d'un réseau AD HOC rapide et peu onéreuse.

- Les noeuds sont mobiles : l'absence de câblages autorise les noeuds à se déplacer l'un par rapport aux autres au cours du temps.

- Évolutifs : pour ajouter un noeud à un réseau AD HOC préexistant, il suffit d'approcher le nouveau venu d'au moins l'un des membres du réseau. De même il suffit de l'en éloigner pour le retirer du réseau.[Man07]

1.3.2.4 Les inconvénients des réseaux AD HOC

- Une bande passante limitée : une des caractéristiques primordiales des réseaux basés sur la communication sans fil est l'utilisation d'un médium de communication partagé. Ce partage fait que la bande passante réservée à un hôte soit modeste.

- Des contraintes d'énergie : les hôtes mobiles sont alimentés par des sources d'énergie autonomes donc restreintes, comme les batteries, par conséquent la durée de traitement est réduite. Donc le paramètre d'énergie doit être pris en considération dans tout contrôle fait par le système.

- Une sécurité physique limitée : les réseaux mobiles AD HOC sont plus touchés par le paramètre de sécurité que les réseaux filaires classiques. Cela se justifie entre autres par les vulnérabilités des liens radio aux attaques, ainsi que les contraintes et limitations physiques qui font que le contrôle des données transférées doit être minimisé.

- Interférences : Les liens radios ne sont pas isolés, deux transmissions simultanées sur
une même fréquence ou utilisant des fréquences proches peuvent interférer.[Mes
98]

1.3.2.5 Les domaines d'applications des réseaux AD HOC

La particularité du réseau AD HOC est qu'il n'a besoin d'aucune installation fixe, ceci lui permettant d'être rapide et facile à déployer. Les applications tactiques comme les opérations de secours, militaires ou d'explorations trouvent en AD HOC, le réseau idéal. La technologie AD HOC qui s'intéresse à la recherche des applications civiles est également apparue.

Parmi les applications des MANETs, on peut distinguer [Man07] :

- Services d'urgence : opération de recherche et de secours des personnes, tremblement de terre, feux, dans le but de remplacer l'infrastructure filaire.(figure 1.5)

- Travail collaboratif et les communications dans des entreprises ou bâtiments : dans le cadre d'une réunion ou d'une conférence par exemple. (voir la figure 1.6).

Figure 1.5 - Application de secours des réseaux AD HOC.

Figure 1.6 - Application collaborative des réseaux AD HOC.

- Applications commerciales : pour un paiement électronique distant (taxi) ou pour l'accès mobile à Internet.(voir la figure 1.7)

Figure 1.7 - Applications commerciales des réseaux AD HOC.

1.3.2.6 Les problèmes liés aux réseaux AD HOC

Comme les systèmes répartis, les réseaux AD HOC ont également des problèmes propres à eux, tels que la bande passante limitée, la perte des données ainsi que le problème de routage.

1.3.3 Problème de routage dans les réseaux AD HOC

1.3.3.1 Définition d'un routage

Le routage est une méthode à travers laquelle on fait transiter une information donnée depuis un certain émetteur vers un destinataire bien précis dans un réseau de connexions défini. Son intérêt consiste à trouver le chemin optimal au sens d'un certain critère de performance (bande passante, délai, etc.) et de qualité des paquets de données.[Bou07]

Figure 1.8 - Le chemin utilisé dans le routage entre la source et la destination.

1.3.3.2 Classification des protocoles de routage

Suivant la manière de création et de maintenance de routes lors de l'acheminement des données, les protocoles de routage peuvent être séparés en trois catégories, les protocoles proactifs, les protocoles réactifs et les protocoles hybrides.[Lem00]

Comme il est illustré dans la figure 1.9.

Figure 1.9 - Classification des protocoles de routage.

1.3.3.2.a Les protocoles de routage proactifs

Les protocoles de routage proactifs exigent une mise à jour périodique des données de routage qui doit être diffusée par les différents noeuds de routage du réseau. Le protocole le plus connus dans cette classe est OLSR (Optimized link state routing protocol).

1.3.3.2.b Les protocoles de routage réactifs (à la demande)

Les protocoles de routage appartenant à cette catégorie, créent et maintiennent les routes selon les besoins. Lorsque le réseau a besoin d'une route, une procédure de découverte globale de routes est lancée, et cela dans le but d'obtenir une information spécifiée, inconnue au préalable. AODV (AD HOC On-demand Distance Vector), DSR (Dynamic Source Routing), sont les plus connus dans cette classe.

1.3.3.2.c Les protocoles de routage hybrides

Dans ce type de protocole, on peut garder la connaissance locale de la topologie jusqu'à un nombre prédéfini (à priori petit) de sauts par un échange périodique de trame de contrôle, autrement dit par une technique proactive. Les routes vers des noeuds plus lointains sont obtenues par schéma réactif, c'est-à-dire par l'utilisation de paquets, et de requêtes en diffusion.[Lem00]. Le protocole ZRP (Zone Routinier Protocol) est le plus connu dans cette classe.

1.4 L'EXcLusioN MuTuELLE DANs LEs RtsEAuX AD HOC

Pour mieux comprendre ce problème dans les environnements mobiles, nous allons d'abord l'expliquer dans un contexte réparti.

1.4.1 L'exclusion mutuelle en réparti

1.4.1.1 La notion de l'exclusion mutuelle

L'utilisation simultanée d'une ressource critique par plusieurs sites va certainement provoquer des situations incohérentes. Afin d'éviter cette incohérence, un seul processus au plus peut exécuter sa section critique à la fois, en d'autres termes, les sections critiques doivent être exécutées en exclusion mutuelle.

Pour rendre exclusif l'accès à une section critique, les sites désirant l'exécuter doivent exécuter un protocole d'acquisition avant la SC, ce dernier ne permet qu'à un seul site de passer à la SC, à la fin de la SC, le processus exécute le protocole de libération pour informer les sites qui peuvent être en attente que la SC est libre.[All07]. La forme générale d'un processus utilisant une ressource critique est :

Protocole d'acquisition

< Section Critique>

Protocole de libération

1.4.1.2 Les états d'un processus

Un processus Pi appartenant au système réparti est doté d'une variable locale Etati qui désigne son état, tel que :

Etati = {Dehors, Demandeur, Dedans}.

La figure 1.10 suivante illustre les transitions d'un processus entre les trois états.

Figure 1.10 - Les états d'un processus.[Ray92]

1.4.1.3 Notions de base

1. Ressource critique C'est une ressource partagée qui ne doit être accessible que par un seul site à la fois.

2. Section critique

Une partie du code du processus manipulant une ressource critique. Un seul processus au plus doit être en section critique afin de garantir une utilisation correcte de la ressource.[Ray92]

1.4.1.4 Propriétés d'un algorithme d'exclusion mutuelle

Une solution n'est considérée correcte que si elle respecte les propriétés suivantes : - Propriété de sûreté (safety) : à tout instant, un seul site au plus exécute la SC.

- Propriété de vivacité (liveness) : tout site demandeur de la ressource critique doit pouvoir l'acquérir au bout d'un temps fini.

Un algorithme qui assure ces deux propriétés assure également l'absence de deux problèmes, l'interblocage et la famine:

- Interblocage (Deadlock) : est une situation du système oü il y a plusieurs sites à l'état Demandeur et aucun ne peut accéder à la SC.

- Famine (Starvation) : aura lieu si un site qui se trouve à l'état Demandeur ne passe jamais à l'état Dedans.

1.4.1.5 Les classes de solutions d'exclusion mutuelle

Les solutions réparties peuvent être classées en deux grandes familles selon le type de messages utilisé, les algorithmes fondés sur les permissions et ceux fondés sur l'utilisation du jeton.[Ray92]

Figure 1.11 - Les catégories des solutions d'exclusion mutuelle. 1.4.1.5.a Algorithmes utilisant des permissions

Les algorithmes basés sur les permissions utilisent le protocole suivant : Pour qu'un site i puisse exécuter sa section critique, il doit d'abord demander la permission à un ensemble Ri de sites et ne peut exécuter sa section critique que s'il a reçu un nombre suffisant de permissions des autres sites. Ce nombre est géré par ses variables locales. Ce mécanisme assure l'exclusion mutuelle.[All07]

1.4.1.5.b Algorithmes utilisant des jetons

Un jeton est un message particulier qui circule entre les sites du système réparti, le site détenant le jeton peut exécuter sa SC. L'algorithme de Lelann[Lan77], était le 1er algorithme utilisant un jeton. Et plusieurs autres solutions ont résolu le problème, tels que l'algorithme de Ricart et Agrawala [RA81], Suzuki et Kasami [SK85], Naimi et Trehel[NT87], et plusieurs autres.

1.4.2 Le problème de la K-exclusion mutuelle

1.4.2.1 Description du problème

Le problème de la K-exclusion mutuelle est une généralisation du problème de l'exclusion mutuelle simple. Dans ce cas, les sites partagent non seulement une ressource mais K exemplaires de la même ressource. Cette disponibilité de ressources n'autorise pas l'accès simultané à une ressource, il faut toujours assurer l'accès exclusif à chaque exemplaire.

1.4.2.2 Résolution du problème

Les solutions du problème de la K-exclusion mutuelle sont basées sur les solutions utilisées pour résoudre le problème de l'exclusion mutuelle simple, on peut donc avoir deux types de solutions:

1.4.2.2.a Solution utilisant des permissions

Le processus désirant entrer en SC doit demander des permissions à un ensemble de processus, la réception d'un nombre suffisant de ces permissions permet au processus d'utiliser la ressource. L'algorithme de Raymond est la première solution pour la K-exclusion mutuelle basée sur les permissions [Ray88].

1.4.2.2.b Solution utilisant des jetons

Dans ce cas, il n'existe pas un seul jeton mais k jetons (k étant le nombre de ressources), seule la possession d'un jeton permet à un site demandeur l'accès à la SC. Parmi les solutions apportées basées sur les jetons, on distingue l'algorithme de Srimani et Reddy [Sri89].

1.4.3 Les solutions de l'EM dans les réseaux ADHOC

Les solutions proposées au problème de l'exclusion mutuelle dans les réseaux mobiles AD HOC peuvent être classées en deux grandes familles, les solutions utilisant des permissions et celles utilisant un jeton, ces solutions devront prendre en compte les caractéristiques des réseaux mobiles AD HOC.

Le rôle des solutions proposées pour résoudre le problème de l'exclusion mutuelle dans un environnement mobiles ne se limite pas à assurer l'EM, mais aussi à respecter les caractéristiques des MANETs, telles que la mobilité et la perte des liens, donc il n'est pas évident d'adapter directement les solutions classiques. Généralement, les solutions proposées dans un environnement mobiles sont originales.

L'algorithme proposé par J. Walter et S. Kini [WK97] est une référence des solutions, et la plupart des solutions sont basées sur son principe. Cet algorithme a été amélioré par J. Walter et J. Welch et Vaidya [WW01].

Plusieurs autres solutions ont résolu le problème, tels que l'algorithme de R. Baldoni et A. Virgillito [BVP02], l'algorithme de N.Malpani et N.Vaidya et L.Welch [MVW01], et plusieurs autres.

1.4.4 Les solutions de la K-EM dans les réseaux AD HOC

Dans ce cas, nous avons K exemplaires d'une ressource critique, un processus ne peut utiliser qu'une seul ressource à un moment donné.

Nous avons remarqué que ce problème n'était pas bien traité dans un tel environnement, nous avons trouvé un seul algorithme proposé par J.Walter et G.Cao et M.Mohanty [WCM02] qui est basé sur l'algorithme de J. Walter et S. Kini.[WK97].

CONCLUSION

Dans ce chapitre nous avons présenté une vue générale des environnements mobiles et en particulier les réseaux AD HOC, nous avons également présenté des notions de base concernant le problème de l'exclusion mutuelle et son extension à K-ressources, enfin nous avons cité les catégories de solutions apportées à ces problèmes.

Dans le chapitre suivant, nous allons décrire notre algorithme proposé dans le cadre de la K-exclusion mutuelle dans les réseaux mobiles AD HOC.

SommAiRE

2.1 INTRoDucTioN

16

2.2 L'ALgoRiThmE

16

2.2.1 Structure logique utilisée

16

2.2.2 Le principe de fonctionnement

17

2.2.3 Hypothèses

18

2.2.4 Description de l'algorithme

18

2.2.4.1 Les variables locales

18

2.2.4.2 Les messages utilisés

19

2.2.4.3 Initialisation des variables

19

2.2.4.4 Les procédures de l'algorithme

19

2.3 MoDiFicATioN 1

22

2.4 MoDiFicATioN 2

23

CoNcLusioN

24

C

E chapitre à pour objectif de décrire et d'étudier un algorithme proposé dans le cadre de la K-exclusion mutuelle dans les réseaux AD HOC.

2.1 INTRODUCTiON

Le problème de la K-exclusion mutuelle n'est pas bien traité dans les réseaux mobiles AD HOC, c'est pourquoi il n y a pas beaucoup d'algorithmes qui sont proposés pour résoudre ce problème dans un tel environnement.

C'est la raison pour laquelle nous avons pensé à une nouvelle solution permettant de résoudre le problème de la K-EM dans les réseaux AD HOC.

Dans ce chapitre, nous décrivons le principe de fonctionnement de l'algorithme proposé.

2.2 L'ALGORiTHME

2.2.1 Structure logique utilisée

La structure logique qu'on a adoptée pour notre algorithme est inspirée de l'algorithme de Naimi et Trehel [NT87].

La structure logique de notre algorithme consiste à diviser les sites en K groupes indépendants.

Initialement, chaque groupe à un site détenant un jeton appelé Père, tous les sites du groupe pointe vers ce père, et forme ainsi une arborescence. Ces arbres ne couvrent pas la totalité des sites, par conséquent, certains sites peuvent au début n'appartenir à aucun arbre logique.

Chaque arborescence repose sur la construction dynamique de deux structures de données :

- 1ère Structure (File de requête {Suivant}) : Consiste a placé toujours le dernier site qui a fait une requête pour la SC à la fin de la file. Alors que le site qui détient le jeton est toujours en tête de la file.

Cette structure est illustrée dans la figure 2.1 ci-dessous :

Figure 2.1 - Structure de la file des requêtes.

- 2ème Structure (Arbre de chemins vers le dernier demandeur {Père}) : La racine de l'arbre est toujours le dernier demandeur c'est-à-dire le dernier élément de la file des requêtes. Une nouvelle requête est transmise à travers d'un chemin des pointeurs de Père jusqu'à la racine de l'arbre.

Chaque nouveau demandeur devient la nouvelle racine de l'arbre. Et Les sites dont le chemin compris entre la nouvelle et l'ancienne racine changent leur pointeur {Père} vers la nouvelle racine.

On peut illustrée cette structure dans la figure 2.2 :

Figure 2.2 - Structure d'arbre de chemins vers le dernier demandeur.

Les sites n'ont pas une vue globale sur ces structures, un site ne connait que son père et son suivant.

2.2.2 Le principe de fonctionnement

Pour assurer la K-exclusion mutuelle, nous utilisons autant de jetons que de ressources disponibles. Initialement, chaque site père détient un jeton, et doit informer ces voisins immédiats pour leur permettre de lui adresser leurs requêtes, et dans le but de former les K-arbres.

Lorsqu'un site désire entrer en SC, il envoie une requête vers son père, et il devient un père à son tour, le site qui reçoit cette requête répond par le jeton s'il le détient, si non, il va propager la requête vers son Père, et met à jour ses variables et pointe vers le nouveau père (demandeur), et ainsi de suite jusqu'à ce que la requête atteint la racine de l'arborescence, en effet, une nouvelle arborescence est créée par le passage de cette requête, la nouvelle racine est le dernier site demandeur.

Si un site est en SC et reçoit une requête, il met à jour ses variables et pointe vers le nouveau demandeur, après sa sortie de la SC, il envoie le jeton vers son suivant, cet envoi ne modifie pas la structure de l'arborescence.

Dans le cas où un site en dehors des arbres logiques créés, veut entrer en SC, il va envoyer sa requête vers un voisin immédiat. .Si le site qui reçoit cette requête n'a pas de père, il va propager cette demande à un autre voisin immédiat différent du précédent, cette propagation peut atteindre un site père ou un site possédant un père, et donc la demande va alors transiter dans l'arbre des pères jusqu'à arriver à la racine, et par conséquent la racine ainsi que tous les sites parcourus pointent vers le nouveau demandeur et la requête sera satisfaite directement ou au bout d'un temps fini, cette requête permet au nouveau demandeur ainsi que tous les sites parcourus et qui ne possèdent pas de père de joindre ce nouvel arbre.

La figure 2.3 montre l'évolution d'une arborescence selon des requêtes émises.

Figure 2.3 - Les états d'arborescence après chaque requête.

2.2.3 Hypothèses

Pour assurer le bon fonctionnement de notre algorithme, on suppose que :

- Le nombre N des noeuds et le K des pères sont connus initialement. - Chaque noeud connaît ses voisins immédiats.

- Les canaux de communication sont fiables, et il n'y a pas de perte de messages. - Les sites du système ne tombent pas en panne.

- Le réseau n'est pas partitionné.

2.2.4 Description de l'algorithme

Dans cette partie nous allons décrire les variables locales et les messages utilisés, et on va détailler les procédures de notre algorithme, quelques explications sont associées aux procédures pour faciliter la compréhension du code.

2.2.4.1 Les variables locales

Chaque noeud i dans le système maintient les variables locales suivantes :

- Perei : est l'identité du père qui possède le jeton tel que :

Si (Perei = NIL) : i est un père.

Si (Perei = 0) : i est un noeud qui ne possède pas de père

Si (Perei ? {1 ... N}) : i est un noeud possédant un père.

- Demandeuri : une variable booléenne initialisée à Faux, indiquant si i a demandé une ressource critique ou non.

- Jetoni : une variable booléenne indiquant si i possède un jeton ou non, elle est initialisée à Faux au niveau des sites simple et à Vrai au niveau des sites père.

- Suivanti : une variable indiquant l'identité du site auquel le jeton sera transmis à la sortie de la SC.

2.2.4.2 Les messages utilisés

Dans cet algorithme, on utilise trois types de messages:

- Information (Jeton, i) : envoyé par le site i vers les voisins immédiats pour les informer qu'il est un père.

- Requête (Jeton, i) : envoyé par le site i vers le père lors de la demande de la Section critique.

- Accord (Jeton) : envoyé par un père à un site demandeur pour lui permettre d'utiliser la ressource critique demandée.

2.2.4.3 Initialisation des variables

Initialisation : des variables

Demandeuri : Variable booléenne.

Jetoni : Variable booléenne.

Perei : Variable qui peut prendre {1,2,. . .,N} U NIL U 0 Suivanti : Variable qui peut prendre {1,2,. . .,N} U NIL

Début

Demandeuri +- Faux; Jetoni +- Faux;

Suivanti +- NIL;

Perei +- 0;

Si Je suis un père Alors
Perei +- NIL;

Jetoni +- Vrai;

Finsi

Fin

2.2.4.4 Les procédures de l'algorithme

Procédure N°1 : Informer tous les voisins immédiat (Initialement)

1 Début

2 Envoyer Information (Jeton, i) à tous les voisins immédiat;

3 Fin

Cette procédure est utilisée lorsqu'un site père désire informer ses voisins immédiats qu'il détient un jeton (père).

2

3

4

Procédure N°2 : Demander la Section Critique 1 Début

2

Demandeuri ?- Vrai;

 

3

Si Perei =6 NIL Alors /* Si je possède un père

*/

4

Envoyer Requête (Jeton, i) à Perei;

 

5

Sinon

 

6

 

Si Perei = Ø Alors /* Si je ne possède pas de père

*/

7

 

Envoyer Requête (Jeton, i) à un voisin immédiat;

 

8

 

Finsi

 

9

Finsi

 

10

Perei ?- NIL;

 

11

Attendre (Jeton = Vrai);

 

12

< Entrer en Section Critique>

 

13 Fin

 

Quand un noeud désire entrer en SC, il met sa variable Demandeuri à Vrai, s' il possède déjà un jeton (Jetoni = Vrai) il entre directement en SC, Sinon il doit attendre la réception d'un jeton auprès de son père.

Procédure N°3 : Réception de Information (Jeton,j)

1 Début

Si Perei = Ø Alors /* Si je ne possède pas un père */

Perei ?- j;

Finsi

5 Fin

Lors de la réception d'un message de type Information par un site, il doit mettre à jour sa variable Perei dans le cas ou ce site ne possède pas de père.

Procédure N°4 : Libérer la Section Critique 1 Début

2

Demandeuri ?- Faux;

 
 
 
 
 
 

3

Si Suivanti =6 NIL Alors /* S'il

y

a une

demande

en

attente

*/

4

 

Envoyer Accord (Jeton) à Suivanti;

 
 
 
 
 
 

5

 

Jetoni ?- Faux;

 
 
 
 
 
 

6

 

Suivanti ?- NIL;

 
 
 
 
 
 

7

Finsi

 
 
 
 
 
 

8 Fin

Si un site veut libérer la section critique, il met à jour sa variable Demandeuri à Faux et il consulte s'il possède déjà un noeud suivant auquel il retransmettra le jeton.

Procédure N°5 : Réception de Accord (Jeton)

1 Début

2 Jetoni +- Vrai;

3 Fin

Lorsqu'un site a déjà envoyé une demande d'entrer en section critique à son père, il va recevoir un message de type Accord, lors de la réception de ce message, le site va mettre à jour sa variable Jetoni à Vrai et entre à la SC.

Procédure N°6 : Réception de Requête (Jeton, j)

1 Début

2

Si Perei = NIL Alors /* Si je suis un père */

3

 

Si Demandeuri = Vrai Alors /* Si je suis déjà demandeur */

4

 

Suivanti +- j;

5

 

Sinon /* Si je n'ai pas fait une demande */

6

 
 

Jetoni +- Faux;

7

 
 

Envoyer Accord (Jeton) à j;

8

 

Finsi

9

Sinon

10

 

Si Perei =6 Ø Alors /* Si je possède un père */

11

 

Envoyer Requête (Jeton, j) à Perei;

12

 

Sinon /* Si je ne possède pas un père */

13

 

Envoyer Requête (Jeton, j) à un voisin immédiat;

14

 

Finsi

15

Finsi

16

Perei +- j;

17 Fin

Lorsqu'un site père reçoit une requête, et il n'est pas demandeur, donc il détient un jeton, il va satisfaire la requête et envoie ce jeton vers le site demandeur, si le site père est un demandeur ou en SC, il met à jour sa variable Suivanti et après sa sortie de la SC, il envoie le jeton vers son suivant. Si le site qui reçoit la requête est un site possédant un père, la requête sera propagée dans l'arbre des pères jusqu'à l'arrivée à la racine. Sinon le site va simplement propager cette requête à un voisin immédiat.

Remarque

L'étude théorique de notre algorithme nous a permis de constater le problème suivant :

Lorsqu'un site qui ne possède pas un père désire entrer en SC, il va envoyer une requête vers un voisin immédiat (voir Procédure Demander la SC), ce voisin va propager cette requête à un autre voisin s'il ne possède aucun père et ainsi de suite jusqu'à l'arrivée à un arbre donné et satisfaire la requête, cependant ce chemin peut être long et pénalisant en terme du temps d'attente, alors qu'il peut exister un autre chemin plus court permettant de satisfaire la requête et minimiser ainsi le temps d'attente.

Solution proposée

Dans le cas où un site veut libérer la SC, il va vérifier s'il possède déjà une requête en attente, sinon il ne fait rien, alors qu'il peut diffuser un message Information afin d'informer le plus possible de voisins qui ne possèdent pas de père, et cela va leur permettre lorsqu'ils veulent entrer en SC, d'envoyer directement leurs requêtes à ce père et ne pas l'envoyer à un voisin immédiat qui peut ne pas avoir de père et tomber dans la problématique précédente.

2.3 MODIFICATION N°1

Pour mettre en place cette modification, on applique la modification suivante :

Modification N°1 : Libérer la Section Critique 1 Début

2

Demandeuri +-- Faux;

 
 
 

3

Si Suivanti =6 NIL Alors /* S'il y a une demande

en

attente

*/

4

 

Envoyer Accord (Jeton) à Suivanti;

 
 
 

5

 

Jetoni +-- Faux;

 
 
 

6

 

Suivanti +-- NIL;

 
 
 

7

Sinon

 
 
 

8

Envoyer Information (Jeton, i) à tous les voisins immédiat;

 
 
 

9

Finsi

 
 
 

10 Fin

Une autre remarque

Si un site veut entrer en SC, il va automatiquement envoyer sa requête vers son père, mais dans certains cas, ce père peut être lui-même en SC, ou il a déjà reçu plusieurs demandes, donc cette requête doit attendre la satisfaction de toutes les requêtes de la file d'attente, une chose qui est très pénalisante en terme de temps d'attente moyen, alors qu'il peut exister des jetons libres au niveau des autres arbres, si on arrive à utiliser l'un de ces jetons on pourra certainement minimiser le temps d'attente.

Solution proposée

Initialement, et après chaque fin de la file des requêtes, les sites qui détiennent les jetons informent leurs voisins immédiats afin de former les k-arbres ou simplement informer le plus de voisins immédiats qui n'appartiennent à aucun arbre, cependant, il se peut qu'il y ait des sites qui reçoivent plusieurs messages d'information de plusieurs sites différents, il vaut mieux donc exploiter cette caractéristique, et ajouter les identifiants des messages Information en plus dans une file des pères (secondaires), et donc le site en question va avoir un père principale et une file des pères secondaires auxquels il peut adresser sa requête dans le cas où le père principale est en SC, ou dans le cas où il ne détient plus le jeton.

Afin d'utiliser la file des pères, il faut que le père principale informe ces voisins immédiats qu'il va entrer en SC ou il va servir une requête, et donc les sites qui possèdent une files des pères doivent mettre à jour leurs pères principaux en mettant celui qui se trouve dans la tête de la file. Pour informer les voisins immédiat, les pères vont utiliser un nouveau message de type Rejet.

2.4 MODIFICATION N°2

Cette modification nécessite des changements au niveau des procédures suivantes :

Modification N°2 : Demander la Section Critique

1 Début

2

Demandeuri ?- Vrai;

 
 

3

Si Perei =6 NIL Alors /* Si je possède

un père

*/

4

Envoyer Requête (Jeton, i) à Perei;

 
 

5

Sinon

 
 

6

 

Si Perei = Ø Alors /* Si je ne possède pas

de père

*/

7

 

Envoyer Requête (Jeton, i) à un voisin immédiat;

 
 

8

 

Finsi

 
 

9

Finsi

 
 

10

Perei ?- NIL;

 
 

11

Attendre (Jeton = Vrai);

 
 

12

Envoyer Rejet (Jeton, i) à tous les voisins immédiat;

 
 

13

< Entrer en Section Critique>

 
 

14 Fin

 
 

Modification N°2 : Réception de Information (Jeton,j) 1 Début

2

Si Perei = Ø Alors /* Si

je

ne possède pas

un père

*/

3

Perei ?- j;

 
 
 
 

4

Sinon

 
 
 
 

5

 

Si (j ?/ Les_peresi) & (Perei =6 j) Alors

 
 
 
 

6

 

Les_peresi ?- Les_peresi + {j};

 
 
 
 

7

 

Finsi

 
 
 
 

8

Finsi

 
 
 
 

9 Fin

 
 
 
 

Modification N°2 : Réception de Requête (Jeton, j)

1 Début

2

3

4

5

Si

Perei = NIL Alors /* Si je suis un père */

Si Demandeuri = Vrai Alors /* Si je suis déjà demandeur */

Suivanti ?- j;

Sinon /* Si je n'ai pas fait une demande */

6

 
 

Jetoni ?- Faux;

 
 

7

 
 

Envoyer Accord (Jeton) à j;

 
 

8

 
 

Envoyer Rejet (Jeton, i) à tous les voisins immédiat;

 
 

9

 

Finsi

 
 

10

Sinon

 
 

11

 

Si Perei =6 Ø Alors /* Si je possède

un père

*/

12

 

Envoyer Requête (Jeton, j) à Perei;

 
 

13

 

Sinon /* Si je ne possède pas

un père

*/

14

 

Envoyer Requête (Jeton, j) à un voisin immédiat;

 
 

15

 

Finsi

 
 

16

Finsi

 
 

17

Perei ?- j;

 
 

18 Fin

 
 

Modification N°2 : Réception de Rejet (Jeton, j)

1 Début

Si Les_peresi =6 {} Alors

Si Perei = j Alors

Perei ?- la_tete_de_la_file_des_peres;

Supprimer la tête de la file des pères;

Sinon

Si j ? Les_peresi Alors

Les_peresi ?- Les_peresi - {j};

Finsi

Finsi

Finsi

2

3

4

5

6

7

8

9

10

11

12 Fin

CONCLUSION

Après la description théorique de notre algorithme et les modifications apportées au niveau de ces procédures, nous présenterons dans le chapitre suivant les étapes de simulation qui nous a permis d'évaluer la performance de cet algorithme.

DiscussioN DEs R suLTATs DE 3

siMuLATioNs

SoMMAiRE

3.1 INTRoDucTioN 26

3.2 LE siMuLATEuR NS-2 26

3.2.1 Présentation de l'outil de simulation 26

3.3 LEs TApEs DE siMuLATioN 26

3.4 CoMMENT R ALisER uNE siMuLATioN? 27

3.5 LEs pARAMèTREs DE siMuLATioN 29

3.5.1 Les paramètres fixes 29

3.5.2 Les paramètres variables 29

3.6 EvALuATioN DE pERFoRMANcEs 30

3.7 LEs TApEs D'uN sc NARio 31

3.8 R suLTATs ET iNTERpR TATioNs 31

3.8.1 Variation du nombre de requêtes 31

3.8.2 Variation de la portée de communication 32

3.8.3 Variation du nombre de ressources 32

3.8.4 Variation de la vitesse de mouvement 33

3.8.5 Variation du nombre de sites 33

3.9 R suLTATs DEs MoDiFicATioNs 34

3.9.1 Variation du nombre de requêtes 34

3.9.2 Variation de la portée de communication 34

3.9.3 Variation du nombre de ressources 35

3.9.4 Variation de la vitesse de mouvement 35

3.9.5 Variation du nombre de sites 35

CoNcLusioN 36

D

ANs ce chapitre, nous décrivons l'environnement de simulation que nous avons utilisé, nous présentons également les résultats obtenus par la simulation de notre algorithme de la K-exclusion mutuelle dans les réseaux mobiles AD HOC.

3.1 INTRoDucTioN

Vue à la difficulté de l'implémentation réelle de notre algorithme, qui est dû au manque de souplesse de la variation des différents paramètres, et aux problèmes d'extraction de résultats, ce qui nous a motivé à faire appel à la simulation, et précisément à l'outil NS-2, qui a montré sa puissance, grâce aux avantages qu'il offre, au niveau des systèmes répartis, et dans les réseaux mobiles AD HOC.

L'objectif de ce chapitre est de présenter les résultats de simulation de notre algorithme afin d'identifier les facteurs influant sur ces performances, et cela par l'interprétation des courbes obtenues à partir de sa simulation.

3.2 LE siMuLATEuR NS-2

Pour résoudre les problèmes liés à un système donné, on fait appel à des algorithmes ou des protocoles, ces algorithmes doivent être testés et évalués pour les valider, et pour satisfaire leurs insuffisances, et cela à l'aide d'un outil de simulation.

3.2.1 Présentation de l'outil de simulation

NS-2 est un simulateur à événements discrets, écrit en C++. C'est le simulateur le plus célèbre dans le domaine de la simulation des réseaux. Il fournit un environnement permettant de réaliser des simulations entre des protocoles IP, TCP, UDP, routage et des protocoles multicast dans les réseaux filaires ainsi que dans les réseaux sans fil avec un support de mobilité des noeuds.[[Dio07]

3.3 LEs éTApEs DE siMuLATioN

La simulation avec NS-2 passe en général par trois phases:

- Définition de la topologie du réseau : on crée les noeuds, avec les caractéristiques de chacun, ainsi que les liens entre les noeuds. On peut définir sur chaque lien, le délai, la bande passante, le fait qu'il soit simplexe ou duplexe et le type de file d'attente se trouvant à son extrémité.

L'exemple suivant montre comment définir une topologie Anneau :

# =========================================================================
# Creation d' une tolpologie #
# =========================================================================

for { set i 0} {$i < 7} { incr i} { ;# Boucle de creation de 7 noeuds

set n($i) [$ns node] ;# La creation d'un noeud

}

for { set i 0} {$i < 7} { incr i} { ;# Boucle pour creer les liens

;# Creation d'un lien bidirectionel

$ns duplex-link $n($i) $n ( [ expr ($i+1)%7]) 1Mb 10ms RED

} ;# Et les caracteristiques associees

Création d'une topologie anneau

Afin d'obtenir la topologie 3.1 suivante :

Figure 3.1 - Exemple de Création d'une topologie.

- Spécification du scénario de la simulation : l'utilisateur spécifie les différents agents de la communication qui vont agir pendant la simulation. Il spécifie aussi la succession des différentes opérations (à l'instant t1, envoi des données, à l'instant t2 arrêt d'émission).

- Exploitation des résultats : cette dernière phase consiste en un recueil des statistiques de la simulation. Ces dernières peuvent être exploitées directement par NS-2 en faisant appel aux outils qui l'accompagnent, ou bien elles seront archivées pour une utilisation ultérieure par d'autres outils de traitements statistiques.[OB10]

3.4 COMMENT RéALISER UNE SIMULATION?

La simulation nécessite des données qui caractérisent l'environnement, tels que la surface du réseau, la topologie utilisée, le protocole à simuler ... etc. Généralement, ces données ne sont pas définies en NS. Pour cela, l'utilisateur doit définir les informations (données) en utilisant le langage C++.

Afin de réaliser un algorithme, nous devons créer deux fichiers source écrits en langage C++ (*.h, *.cc).

Le premier (*.h) est un fichier d'en-tête, qui contient la structure des messages échangés entre les sites, le deuxième (*.cc) contient les fonctions nécessaires de l'algorithme (envoi et réception des messages, .. .).

La compilation de ces fichiers nous permet d'avoir un fichier de type objet (*.o), ce dernier doit être intégré dans le simulateur NS-2, en lui ajoutant à la variable OBJ_CC du fichier (makefile), enfin, on recompile le noyau de NS par la commande make écrite dans un terminal.

On peut résumer les étapes de réalisation d'un algorithme dans la figure 3.2.

Figure 3.2 - Les étapes de simulation.[OB10]

Pour tester et utiliser ces programmes, nous avons crée les fichiers (*.tcl) qui contient la topologie du réseau, ensuite on appel les fonctions du code C++, et enfin la visualisation de simulation.

La sortie standard est un fichier d'animation (*.nam) pour visualiser la simulation, et un fichier de trace (*.tr) qui contient toutes les informations obtenues après la simulation, ces informations sont très générales et nécessitent des filtres pour bien les exploiter. C'est la raison pour laquelle, nous avons utilisé un fichier texte (*.txt) qui ne contient que les informations importantes pour notre simulation.[OB10]

Nous pouvons résumer les étapes de réalisation d'une simulation par la figure 3.3 :

Figure 3.3 - Réalisation d'une simulation.[LK09]

3.5 Les pArAMèTres De siMuLATioN

Pour réaliser notre simulation, nous avons défini plusieurs paramètres, certains paramètres sont fixes et ne changent pas durant toute la simulation, d'autre sont variables et leur changement permet d'obtenir à chaque fois un nouveau scénario de simulation.

La variation de ces paramètres nous permet d'identifier ceux ayant une influence sur la performance de notre algorithme.

3.5.1 Les paramètres fixes

- Surface de réseau : C'est l'intervalle maximal utilisé par les noeuds pendant leurs mouvements, nous avons choisi une surface de 500m*500m.

- La durée de la SC : C'est la durée d'exécution d'une SC par un site, nous avons fixé cette valeur à 1 seconde.

- Protocole de routage : le protocole de routage permet de définir les chemins entre les noeuds pour échanger des messages. Nous pouvons choisir un protocole déjà implémenté sur NS-2, ce protocole peut être proactif ou réactif, les protocoles proactifs ne sont pas adéquats pour notre simulation car ils nécessitent la création de la table de routage avant de lancer la communication, nous devrons alors choisir un protocole réactif. Parmi les protocoles implanté sur NS-2, on a AODV et DSR .nous avons choisi Le protocole DSR [Lem00] car il nous a permis de déterminer automatiquement les routes nécessaires à la communication entre les noeuds, et permet également d'assurer la correction des routes tout au long de leur utilisation.

- Modèle de propagation : Dans NS-2, trois modèles de propagation sont implémentés : Free Space, Shadowing, Two-ray-ground. Dans notre simulation, le modèle Two-ray-ground est choisi comme modèle de propagation, car ce modèle est devenu un standard dans la recherche sur les réseaux mobiles.

- Modèle de mobilité : NS-2 offre quelques modèles de mobilité basés sur la génération aléatoire des positions des noeuds. Parmi ces modèles, on peut citer RandomWayPoint, Random Walk, Random Direction model, nous avons choisi le modèle Random-WayPoint, car dans ce modèle, les noeuds sont distribués uniformément dans l'espace de simulation, leurs positions initiales sont aléatoire ainsi que leurs déplacements.

3.5.2 Les paramètres variables

Nous avons changé à chaque fois le nombre de noeuds et de ressources, le nombre de requêtes, la portée de communication ainsi que la vitesse de déplacement, ces changements permettent d'avoir différents scénarios.

- Scénario 1 : Variation du nombre de requêtes

Dans ce scénario nous avons varié le nombre de requêtes entre 3 et 18.

- Scénario 2 : Variation de la portée de communication

Nous avons varié la portée de communication entre 50 et 500 mètres.

- Scénario 3 : Variation de la vitesse de mouvement

Dans ce cas la vitesse de mouvement est variable entre 2 et 8 m/s.

- Scénario 4 : Variation du nombre de noeuds

Ce scénario a connu la variation du nombre de noeuds entre 12 et 40.

- Scénario 5 : Variation du nombre de ressources

Cette variation porte sur le nombre de ressources qui se varient entre 3 et 15.

Nous pouvons illustrer les cinq scénarios dans la figure 3.4 ci-dessous.

Figure 3.4 - Variation des paramètres de simulation.

3.6 EVALUATION DE PERFORMANCES

Le but des différents scénarios était d'identifier les paramètres ayant une influence sur la performance de l'algorithme, cette performance est exprimée par deux valeurs importantes :

- Le nombre de messages moyen (NMM) : Chaque entrée en section critique nécessite un échange d'un ensemble de messages, le nombre moyen de messages échangés par entrée en section critique est calculé par la formule suivante :

Nombre de messages total NMM = Nombre d'entrée en Section Critique

Cette valeur est considérée comme un facteur important de performance des algorithmes de l'exclusion mutuelle.

- Le temps d'attente moyen (TAM) : Un site qui demande une section critique doit attendre un intervalle de temps appelé le temps d'attente, le temps d'attente moyen est calculé par la formule suivante :

?i Temps d'attentei

TAM = Nombre d'entrée en Section Critique

Le temps d'attente moyen est également l'un des facteurs importants pour l'évaluation de la performance des algorithmes.

3.7 LEs éTApEs d'un scénArio

Pour réaliser un scénario donné, nous devons introduire les différentes informations nécessaires pour la simulation dans l'ordre suivant :

Figure 3.5 - Les étapes de réalisation d'un scénario. 3.8 RésulTATs ET inTErpréTATions

Notre algorithme a été validé par une simulation qui a utilisée les scénarios précédents. Cette simulation nous a permis de tirer un ensemble de résultats intéressants.

3.8.1 Variation du nombre de requêtes

(a)

(b)

Figure 3.6 - Influence du nombre de requêtes sur le NMM et le TAM.

Dans la courbe (a) on remarque une diminution du NMM avec l'augmentation du nombre de requêtes, cela est justifiée par un échange important de messages au début qui est dû à l'ignorance des sites demandeurs (ceux qui ne possède pas de père) ou se trouvent les jetons, mais au fur et à mesure, le NMM va diminuer jusqu'à devenir stable, à cause des mise à jours faites par les sites dans leurs variables, qui est du à la transition des requêtes par eux, et ceci va leur permettre de faire un échange limité voir constant de messages

pour entrer en section critique.

Par contre dans la courbe (b) on constate une augmentation du TAM avec l'augmentation des requêtes, cela est justifié par la charge du système, les dates de demandes sont très proches, et donc plusieurs sites restent en attente.

3.8.2 Variation de la portée de communication

(a)

(b)

Figure 3.7 - Influence de la portée de communication sur le NMM et le TAM.

Après la variation de la portée de communication, nous constatons bien que dans la courbe (a) une augmentation du NMM jusqu'à ce qu'il devient constant, car les sites père vont informer de plus en plus de voisins immédiat au fur et à mesure de l'augmentation de la portée de communication, et donc cela va nécessiter un échange de messages important, puis le NMM reste fixe car on s'intéresse au nombre de messages logique durant la simulation.

Cependant dans la courbe (b), le résultat est clair, une diminution du TAM après chaque augmentation de la portée, cela est dû à l'augmentation du nombre de voisins immédiats par l'augmentation de la portée.

3.8.3 Variation du nombre de ressources

(a)

(b)

Figure 3.8 - Influence du nombre de ressources sur le NMM et le TAM.

Dans la courbe (a) on remarque une augmentation du NMM avec l'augmentation du nombre de ressources, car avec l'augmentation du nombre de ressources on augmente le nombre de sites pères qui vont initialement informer leurs voisins immédiat qu'ils

détiennent des jetons libres et cela va causer l'augmentation du NMM.

Par contre dans la courbe (b) on constate une diminution du TAM avec l'augmentation du nombre de ressources, cela est justifié par la disponibilité des ressources (qui dépasse même le nombre de demandes dans certains cas) qui permet des entrées en SC avec le minimum de temps d'attente.

3.8.4 Variation de la vitesse de mouvement

(a)

(b)

Figure 3.9 - Influence de la vitesse de mouvement sur le NMM et le TAM.

Le NMM dans la courbe (a), et le TAM dans la courbe (b), n'ont pas une relation clair avec la variation de la vitesse de déplacement et cela peut être justifié par le mécanisme utilisé par l'algorithme.

3.8.5 Variation du nombre de sites

(a)

(b)

Figure 3.10 - Influence du nombre de sites sur le NMM et le TAM.

Dans la courbe (a), on remarque qu'il y a une augmentation du NMM avec l'augmentation du nombre de sites, cela est justifié par l'augmentation des voisins immédiats dans les portées des pères, qui vont être obligé de les informer à leurs tours et donc le NMM va augmenter.

Dans la courbe (b), on constate deux parties : une diminution ensuite une stabilisation du TAM : la diminution de la courbe est dû au fait qu'à chaque fois on augmente le nombre des sites, les demandeurs vont emprunter un chemin de plus en plus court jusqu'à arriver à un arbre donné et donc attendre de moins en moins pour entrer en SC, la stabilisation

est justifiée par l'ajout des sites qui ne jouent aucun rôle dans la transition des requêtes et donc ils ne vont pas influer sur le TAM.

3.9 RéSULTATS DES MODIFICATIONS

Après la proposition des modifications, nous avons réalisé une nouvelle simulation par les mêmes paramètres afin de cerner l'influence de ces modifications sur la performance de l'algorithme.

Remarque : les modifications apportées sont appelées A1 et A2.

3.9.1 Variation du nombre de requêtes

(a)

(b)

Figure 3.11 - Influence du nombre de requêtes sur le NMM et le TAM.

3.9.2 Variation de la portée de communication

(a)

(b)

Figure 3.12 - Influence de la portée de communication sur le NMM et le TAM.

3.9.3 Variation du nombre de ressources

(a)

(b)

Figure 3.13 - Influence du nombre de ressources sur le NMM et le TAM.

3.9.4 Variation de la vitesse de mouvement

(a)

(b)

Figure 3.14 - Influence de la vitesse de mouvement sur le NMM et le TAM.

3.9.5 Variation du nombre de sites

(a)

(b)

Figure 3.15 - Influence du nombre de sites sur le NMM et le TAM.

D'après les résultats obtenus, on remarque que le NMM des algorithmes améliorés dépasse le NMM du premier algorithme, cela est justifié par la réutilisation du message Information dans (A1 et A2) pour informer les voisins immédiat à chaque fin d'une file de requêtes, et l'utilisation d'un nouveau message de type Rejet dans (A2).

Par contre nous avons réussi à diminuer le TAM dans (A2) par rapport aux versions précédentes, car les sites qui ont des pères secondaires en plus, n'attendent pas la libération

des jetons utilisés par leurs propres pères principaux ou des demandeurs qui ont fait une demande auprès de leurs pères principaux, mais ils vont compter sur les pères secondaires pour satisfaire leurs demandes grâce au nouveau message Rejet et donc vont mettre moins de temps pour entrer en section critique.

CONCLUSION

À travers notre étude comparative menée dans ce chapitre, nous avons pu améliorer notre algorithme initial d'une façon incrémentale jusqu'à l'obtention d'une version très performante en terme de temps d'attente dans la modification N°2. Par contre nous avons constaté qu'au fur et à mesure des modifications apportées au TAM, à chaque fois on augmente un peu plus le NMM qui est dû aux changements effectués au niveau des procédures (ajout des messages).

Cette simulation nous a permis d'identifier les paramètres ayant une influence sur la performance de notre algorithme, nous avons pu tirer les résultats suivants :

- La variation du nombre de requêtes a une relation proportionnelle avec le TAM et disproportionnelle avec le NMM.

- Le TAM dépends disproportionnellement de la portée de communication et du nombre de ressources.

- Le NMM dépends proportionnellement du nombre de ressources et la portée de communication.

- La variation du nombre de noeuds a une relation disproportionnelle avec le TAM et proportionnelle avec le NMM.

- La vitesse de mouvement n'a pas une relation claire avec le NMM et le TAM.

Dans le chapitre suivant, nous essayons de proposer un algorithme similaire qui utilise une autre stratégie d'échange de message afin de minimiser le NMM qui est très élevé dans les modifications apportées.

UN NouvEL ALgorithmE BAsé sur LE 4

protocoLE DE routAgE AODV

SommAirE

4.1 L'iDéE DE BAsE

4.2 L'ALgorithmE

38

38

4.2.1 Hypothèses

39

4.2.2 Description de l'algorithme

39

4.2.2.1 Les variables locales

39

4.2.2.2 Les messages utilisés

39

4.2.2.3 Initialisation des variables

40

4.2.2.4 Les procédures de l'algorithme

40

4.2.3 Les paramètres de simulation

42

4.2.4 La comparaison de tous les résultats

43

4.2.4.1 Variation du nombre de requêtes

43

4.2.4.2 Variation de la portée de communication

43

4.2.4.3 Variation du nombre de ressources

43

4.2.4.4 Variation de la vitesse de mouvement

44

4.2.4.5 Variation du nombre de sites

44

CoNcLusioN

44

C

E chapitre est dédié à la description de la nouvelle solution proposée dans le cadre de la K-exclusion mutuelle dans les réseaux AD HOC, et fera l'objet également d'une comparaison entre l'algorithme déjà proposé précédemment et le nouvel algorithme.

4.1 L'iDéE DE BASE

Nous avons constaté dans le chapitre précédent que plusieurs modifications ont été proposées afin de minimiser le temps d'attente, cet objectif était atteint, Néanmoins, avec chaque modification un autre problème surgit, qui est l'augmentation du NMM, causé notamment par l'ajout de nouveaux types de message, qui vont le rendre de plus en plus important à chaque fois.

Dans les MANETs, il existe un échange continue de messages de contrôle, tels que les messages utilisés par les protocoles de routage avec les messages des applications.

Ce nombre élevé de message va certainement avoir une influence sur le comportement de notre algorithme.

Il serait très utile d'exploiter les messages de contrôle pour véhiculer des informations utilisées par les applications, et on peut donc minimiser le nombre de messages échangés.

Pour cela, nous avons pensé à intégrer les informations nécessaires de la K-exclusion mutuelle dans les messages utilisés par le protocole de routage AODV.

4.2 L'ALGORiTHME

L'idée de ce nouvel algorithme consiste à ajouter deux champs dynamiques dans la table de routage de chaque site, l'un pour le nombre de jetons libre et l'autre pour le nombre de jetons présent qui sont propres pour chaque site.

À chaque fois qu'il y a une modification au niveau de ces deux variables, le site doit modifier sa table de routage dans les deux champs, et par conséquent les autres sites doivent aussi modifier leurs tables de routage et faire des changements au niveau du site en question et plus exactement au niveau des deux variables et cela grâce aux messages de contrôle utilisés pour le routage.

Lorsqu'un site demandeur désire entrer en SC, il doit d'abord consulter sa table de routage, et essayer de trouver les sites qui possèdent des jetons libres, ensuite le site le plus proche selon le champ Distance sera choisi pour adresser la requête. Dans le cas où tous les sites sont en SC, le plus proche site possèdant un jeton sera choisi.

Si un site reçoit une requête et ne possède pas de jetons libre ni de jeton présent, il doit envoyer un message au demandeur lui indiquant qu'il ne posséde rien, et il doit réessayer de chercher un autre site adéquat. Cette méthode permet donc de minimiser le nombre de messages échangés pour chaque entrée en SC.

4.2.1 Hypothèses

Pour assurer le bon fonctionnement de notre algorithme, on suppose que :

- Le nombre N des noeuds et le K des racines (qui détiennent les jetons) sont connus. - Chaque noeud connaît ses voisins immédiats.

- Les canaux de communication sont fiables, et il n'y a pas de perte de messages. - Les sites du système ne tombent pas en panne.

- Le réseau n'est pas partitionné.

4.2.2 Description de l'algorithme

Nous allons décrire les changements effectués au niveau des variables locales, les messages utilisés, et enfin les procédures de l'algorithme.

4.2.2.1 Les variables locales

Chaque noeud i dans le système maintient les variables locales suivantes :

- Demandeuri : une variable booléenne initialisée à Faux, indiquant si i a demandé une ressource critique ou non.

- Jetoni : une variable booléenne indiquant si i possède un jeton ou non, elle est
initialisée à Faux au niveau des sites simple et à Vrai au niveau des sites racines.

- Suivanti : une variable indiquant l'identité d'un site auquel on va retransmettre notre jeton une fois servi.

- AODVi(B,C) : la table de routage du site en question, avec l'utilisation et la modification de deux champs seulement :

B : le nombre de jetons libre.

C : le nombre de jetons présent.

4.2.2.2 Les messages utilisés

Dans cet algorithme, on utilise trois types de messages:

- Requête (Jeton, i) : envoyé par le site i vers le site qui détient un jeton lors de la demande de la Section critique.

- Accord (Jeton) : envoyé par le site qui détient le jeton à un site demandeur pour lui permettre d'utiliser la ressource critique demandée.

- Rejet (Jeton) : envoyé par un ancien détenteur du jeton à un site demandeur pour lui informer qu'il ne détient plus le jeton.

4.2.2.3 Initialisation des variables

Initialisation : des variables

Demandeuri : Variable booléenne.

Jetoni : Variable booléenne.

Suivanti : Variable qui peut prendre {1,2,.. .,N} U NIL

Début

Demandeuri +- Faux; Jetoni +- Faux;

Suivanti +- NIL;

Modification dans la table de routage AODVi (0,0);

Si Je suis un père Alors
Jetoni +- Vrai;

Modification dans la table de routage AODVi (1,1);

Finsi

Fin

4.2.2.4 Les procédures de l'algorithme

Procédure N°1 : Demander la Section Critique

1 Début

Demandeuri +- Vrai;

Si (AODVi_[i]_Jeton_libre = 0) Alors

Pere +- Chercher le père adéquat(AODVi); Envoyer Requête (Jeton, i) à Pere;

Finsi

Modification dans la table de routage AODVi (0,1); Attendre (Jeton = Vrai);

< Entrer en Section Critique>

2

3

4

5

6

7

8

9

10 Fin

Quand un noeud qui ne possède pas de jeton désire entrer en SC, il devient demandeur et il cherche le père adéquat afin de lui envoyer une requête et attend la réception du jeton pour entrer en SC.

Procédure N°2 : Réception de Accord (Jeton)

1 Début

2 Jetoni +- Vrai;

3 Fin

Lorsqu'un site reçoit un message de type Accord, il va modifier sa variable booléenne Jeton à Vrai.

Procédure N°3 : Réception de Requête (Jeton, j)

1 Début

Si (AODVi_[i]_Jeton_libre = 1) Ou (AODVi_[i]_Jeton_present = 1) Alors

Si Demandeuri = Vrai Alors

Suivanti +-- j;

Sinon

Jetoni +-- Faux;

Envoyer Accord (Jeton) à j;

Finsi

Modification dans la table de routage AODVi (0,0);

Sinon

Envoyer Rejet (Jeton) à j;

Finsi

13 Fin

Si un site reçoit un message de type Requête, il va consulter sa table de routage, s'il est en SC il va mettre ce site dans la file d'attente, sinon il va envoyer le jeton vers le site demandeur. Dans le cas oü le site ne détient pas de jeton, il va lui envoyer un message de type Rejet lui indiquant qu'il ne possède aucun jeton.

Procédure N°4 : Réception de Rejet (Jeton)

1 Début

Pere +-- Chercher le père adéquat(AODVi);

Envoyer Requête (Jeton, i) à Pere;

4 Fin

Lorsqu'un demandeur reçoit un message de type Rejet, il va rechercher un autre père adéquat en consultant toujours sa table de routage.

Procédure N°5 : Libérer la Section Critique

1 Début

Demandeuri +-- Faux;

Si Suivanti =6 NIL Alors

Envoyer Accord (Jeton) à Suivanti; Jetoni +-- Faux;

Suivanti +-- NIL;

2

3

2

3

4

5

6

7

8

9

10

11

12

Sinon

Modification dans la table de routage AODVi (1,1);

Finsi

2

3

4

5

6

7

8

9

10 Fin

Si un site veut libérer la SC, il va consulter s'il possède déjà un site en attente dans sa file, afin de lui envoyer un message de type Accord pour lui permettre d'entrer en SC.

Procédure N°6 : Modification dans la table de routage AODVi (B,C :entiers)

1 Début

AODVi_[i]_Jeton_libre ?- B; AODVi_[i]_Jeton_present ?- C;

4 Fin

La modification dans la table de routage porte sur deux variables (le nombre de jetons libre et le nombre de jetons présent) selon les valeurs de B et C.

Procédure N°7 : Chercher le père adéquat(AODVi)

1 Début

2

3

X ?- 8;

Pour Q=1 à nombre de noeuds faire

Si AODVi_[Q]_Jeton_libre = 1 Alors

Min ?- AODVi_[Q]_Distance; Si Min < X Alors

Pere ?- Q;

X ?- Min;

Finsi Finsi

Finpour

Si X = 8 Alors

Pour Q=1 à nombre de noeuds faire

Si AODVi_[Q]_Jeton_present = 1 Alors

Min ?- AODVi_[Q]_Distance;

Si Min < X Alors
Pere ?- Q;

X ?- Min; Finsi

Finsi

Finpour

Finsi

Retourner(Pere);

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24 Fin

Cette procédure représente la stratégie qui nous permet de trouver le père adéquat dans la table de routage avec le minimum de sauts.

4.2.3 Les paramètres de simulation

Afin d'étudier la performance de ce nouvel algorithme, nous avons réalisé une simulation par les mêmes paramètres utilisés dans le chapitre précédent.

4.2.4 La comparaison de tous les résultats

Notre algorithme a été validé par une simulation qui a utilisé les mêmes scénarios proposés précédemment. Cette simulation nous a permis de tirer un ensemble de résultats intéressants.

Remarque : le nouvel algorithme est appelé New. 4.2.4.1 Variation du nombre de requêtes

(a)

(b)

Figure 4.1 - Influence du nombre de requêtes sur le NMM et le TAM.

4.2.4.2 Variation de la portée de communication

(a)

(b)

Figure 4.2 - Influence de la portée de communication sur le NMM et le TAM. 4.2.4.3 Variation du nombre de ressources

(a)

(b)

Figure 4.3 - Influence du nombre de ressources sur le NMM et le TAM.

4.2.4.4 Variation de la vitesse de mouvement

(a)

(b)

Figure 4.4 - Influence de la vitesse de mouvement sur le NMM et le TAM. 4.2.4.5 Variation du nombre de sites

(a)

(b)

Figure 4.5 - Influence du nombre de sites sur le NMM et le TAM.

Le but de notre amélioration était de minimiser le NMM, une chose qui a été atteinte comme on remarque dans toutes les courbes, on constate que le NMM du nouvel algorithme est meilleur que ceux des autres versions, grâce à la stratégie utilisée qui a permis de trouver les sites qui possèdent les jetons en un minimum de sauts réduisant ainsi le NMM.

Il est clair que le TAM est pratiquement identique avec la modification N°2 car le but de l'amélioration vise de minimiser le NMM sans avoir besoin de changer le comportement de l'algorithme.

CONCLUSION

D'après ces courbes on peut dire qu'on a arrivé à une performance très acceptable en utilisant la nouvelle stratégie, il est clair que le comportement du nouvel algorithme est devenu stable par rapport aux autres versions et il a donné les meilleurs résultats surtout dans le nombre de messages échangés.

CONCLUSION ET PERSPECTIVES

L

ES réseaux mobiles AD HOC ont prouvé leur place, et les problèmes liés à ces systèmes restent d'actualité, en particulier le problème de l'exclusion mutuelle et de la K-exclusion mutuelle.

Néanmoins, ces problèmes ne sont pas bien traités, vue le nombre de solutions qui restent limité à nos jours, ce qui nous a poussé à proposer et améliorer deux nouvelles solutions pour résoudre le problème de la K-exclusion mutuelle dans les réseaux AD HOC. Ces algorithmes sont fondés sur l'utilisation des jetons.

L'évaluation de ces algorithmes a été réalisée par NS-2, l'outil de simulation qui permet de valider les algorithmes dans les conditions les plus réelles.

Nous savons que ces algorithmes ne sont qu'une 1ère étape, les modifications et les améliorations sont toujours possibles. C'est la raison pour laquelle nous avons pensé à des améliorations et des perspectives futures:

1. Réduire encore le temps d'attente en utilisant des nouvelles stratégies d'échanges de messages.

2. La résistance aux pannes : dans les hypothèses de nos algorithmes, nous avons supposé que les sites ne tombent pas en panne, mais on peut améliorer la performance de nos algorithmes en autorisant les pannes des sites.

3. Utiliser le principe de nos algorithmes pour résoudre ce problème dans d'autres systèmes tels que : les VANETs ... etc.

Bibliographie

[All07] T. Allaoui. Une nouvelle solution du problème de la k-exclusion mutuelle dans

les systèmes répartis. Mémoire de Magister, Université de Laghouat, 2007. (Cité pages 10 et 12.)

[Bou07] A. Boukhalkhal. étude par simulation des performances des protocoles de routage dans les réseaux ad hoc sans fil. Mémoire de fin d'étude, Université de Laghouat, 2007. (Cité pages ix, 5 et 9.)

[BVP02] R Baldoni, A Virgillito, and R. Petrassi. A distributed mutual exclusion algorithm for mobile ad-hoc networks. Dans IEEE ISCC'02, 2002. (Cité page 13.)

[Dio07] B. Dioum. Effets de la mobilite sur les protocoles de routage dans les reseaux ad hoc. Projet de fin d'étude, Université de Tizi Ouzou, 2007. (Cité page 26.)

[Lan77] G. Lann. Distributed systems - towards a formal approach. International Federation for Information Processing(IFIP)Congress, pages 155-160, 1977. (Cité page 12.)

[Lem00] T. Lemlouma. Le routage dans les réseaux mobiles ad hoc. Mini projet, Université d'Alger USTHB, 2000. (Cité pages 5, 9, 10 et 29.)

[LK09] A. Lahag and Kouidri. Etude des performances des algorithmes de l'exclusion

mutuelle dans les réseaux ad hoc {Simulation par NS2}. Projet de fin d'étude, Université de Laghouat, 2009. (Cité pages ix, 5 et 28.)

[Man07] N. Mansouri. Protocole de routage multi chemin avec équilibrage de charge dans les réseaux mobiles ad hoc. Projet de fin d'étude, Ecole supérieur des communications de Tunis, Tunisie, 2007. (Cité page 7.)

[Mes98] P. Meskauskas. Mobile ad hoc networking. Seminar on Telecommunications Technology, Helsinki, 1998. (Cité pages 6 et 7.)

[MVW01] N Malpani, H Vaidya, and J.L. Welch. Distributed token circulation on mobile ad hoc networks. Technical report., 2001. (Cité page 13.)

[NT87] N. Naimi and M. Trehel. An improvement of the log(n) distributed algorithm for mutual exclusion. IEEE 7th international Conf. On Distributed Systems, Berlin, Germany, 1987. (Cité pages 12 et 16.)

[OB10] O.S. Oubbati and A. Benarfa. évaluation de performances par ns-2 d'un al-

gorithme de la k-em en présence de pannes. Projet de fin d'étude, Université de Laghouat, 2010. (Cité pages ix, 4, 27 et 28.)

[RA81] G. Ricart and K. Agrawala. An optimal algorithm for mutual exclusion in computer networks. Communications of ACM, pages 9-17, 1981. (Cité page 12.)

[Ray88] K. Raymond. A distributed algorithm for multiple entries to a critical section.
Information Processing Letters
30, pages 189-193, 1988. (Cité page 13.)

[Ray92] M. Raynal. Synchronisation et état global dans les systèmes répartis. Edition Eyrolles., 1992. (Cité pages ix, 11 et 12.)

[SK85] I. Suzuki and T. Kasami. A distributed mutual exclusion algorithm. ACM

Trans.Computer Systems, pages 344-349, 1985. (Cité page 12.)

[Sri89] P.K. Srimani. Another distributed algorithm for multiple entries to a critical

section. Information Processing Letters 41, pages 51-57, 1989. (Cité page 13.)

Bibliographie

[WCM02] J Walter, G Cao, and M. Mohanty. A k mutual exclusion algorithm for wireless ad hoc networks. Dans IEEE ISCC'02., 2002. (Cité page 14.)

[WK97] J.E. Walter and S. Kini. Mutual exclusion on multihop, mobile wireless networks.

Texas A and M University College Station, 1997. (Cité pages 13 et 14.)

[WW01] J. WALTER and L. WELCH. A mutual exclusion algorithm for ad hoc mobile networks. Department of Computer Science,Texas USA, 2001. (Cité page 13.)

ANNEXE : SCRIPT DE SIMULATION A

SOMMAIRE

A.1 LE SCRIPT TCL 50

# ===============================================================================
# Definition des options #
# ===============================================================================

set val(chan) Channel/WirelessChannel ;# type de canal

set val(prop) Propagation/TwoRayGround ;# model de propagation

set val(netif) Phy/WirelessPhy ;# type d' interface reseau

set val(mac) Mac/802_11 ;# type d' interface mac

set val(ifq) CMUPriQueue ;# type de la file d' attente

set val(ll) LL ;# link layer type

set val(ant) Antenna/OmniAntenna ;# model d' antenne

set val(x) 500 ;# X dimension du topology

set val(y) 500 ;# Y dimension du topology

set val(ifqlen) 50 ;# Nbre max des Packets -> file

set val(seed) 0.0 ;# grain random

set val(adhocRouting) DSR ;# protocole de routage

set val(sc) "/home/sami/ns-allinone-2.32/ns-2.32/ t c l /mobility/scene/modele " set val(stop) 20 ;# temps de simulation ( duree )

#=============================================================================== # Definition des procedures #

#===============================================================================

#Phy/WirelessPhy

set

RXThresh_ 1.92278e-06 ;

#10

meters

#Phy/WirelessPhy

set

RXThresh_ 7.69113e-08 ;

#50

meters

#Phy/WirelessPhy

set

RXThresh_ 3.00435e-08 ;

#80

meters

#Phy/WirelessPhy

set

RXThresh_ 1.42681e-08 ;

#100

meters

#Phy/WirelessPhy

set

RXThresh_ 8.91754e-10 ;

#200

meters

#Phy/WirelessPhy

set

RXThresh_ 1.76149e-10 ;

#300

meters

#Phy/WirelessPhy

set

RXThresh_ 5.57346e-11 ;

#400

meters

# modification dans la portee de signal 200 meters Phy/WirelessPhy set RXThresh_ 8.91754e-10

# ==============================================================================
# Creation d' instance de simulateur et topologie #
# ==============================================================================

set ns_ [new Simulator] ;# nouvelle simulation

$ns_ use-newtrace ;# nouveau f i c h ie r trace

set topo [new Topography] ;# Nouvelle Topologie

# ==============================================================================
# Creation des f i c h ie rs trace pour NS et NAM #
# ==============================================================================

set tracefd [ open adhoc.tr w]

set namtrace [ open adhoc.nam w]

set bw nbr_msg_tps.txt ;# Ficher . t x t ( resultat simulation )

set mesure [ open $bw w]

$ns_ trace-all $tracefd

$ns_ namtrace-all-wireless $namtrace $val(x) $val(y)

# ============================================================================== # Procedure d' affichage concernant la simulation # # ============================================================================== proc Affichage { } {

global mesure nbr nbracine nbrequete ;# Declaration des variables globales puts $mesure " "

puts $mesure " Les Resultats de la Simulation . "

puts $mesure " " puts $mesure "============= Informations de Simulation ============" puts $mesure " . " puts $mesure "Le Nombre de Sites = $nbr "

puts $mesure "Le Nombre de Racines R = $nbracine "

puts $mesure "Le Nombre de Requetes = $nbrequete "

puts $mesure " . "

puts $mesure "====================================================="

A.1 LE SCRIPT TCL

puts $mesure "================================="

puts $mesure " Resultas pour chaque site : "

puts $mesure "================================="

}

# ============================================================================== # Procedure de Terminaison de la simulation # # ============================================================================== proc finish { } {

global ns_ nf f0 nbr nbrequete tpatt nmsg p mesure ;# Variables globales for { set i 0} {$i < $nbr} { incr i} {

set nmsg [ expr [$p($i) set nb_message_]+$nmsg] ;# Somme des messages

}

puts $mesure "======================================================" puts $mesure " Le NMM et le TAM. "
puts
$mesure "======================================================" puts $mesure " Messages total = $nmsg" ;# Calcul du nombre moyen des msg

puts $mesure " "

puts $mesure "Le NMM = $nmsg/$nbrequete = [ expr $nmsg/$nbrequete ] " puts $mesure " "

set tpatt [ expr $tpatt/$nbrequete] ;# Calcul du TAM

puts $mesure "Le TAM = $tpatt " ;# Affichage du TAM

$ns_ flush-trace ;# Ecriture dans le f i c h ie r TEXT

close $mesure ;# Fermer le fi c h ie r des resultat

puts " running nam... " ;# Affichage de "Running NAM . . . "

exec nam adhoc.nam & ;# lancer le NAM automatiquement

exit 0 ;# Sortie de la procedure

}

# ============================================================================== # Procedure d' enregistrement des temps d' attente dans le fi c h ie r . t x t # # ============================================================================== proc record {p n mutex hour} {

global f0 nbrequete tpatt mesure ;# Variables globales

set ns [Simulator instance] ;# Instancier la commande NS

set bw0 [$ns now] ;# bw0 est le temps actuelle

set bw0 [ expr $bw0- [$p set dem ] ] ;# bw0 := bw0 - Temps de la demande

puts $mesure "Temps d' attente pour le site N [ $n node-addr] =

$bw0 ==> ( ( Date_Requete = $hour ** Duree SC = $mutex ) ) " puts $mesure " "

set tpatt [ expr $tpatt+$bw0] ;# Le temps d' attente

}

# ============================================================================== # Procedure de Diffusion des demandes d' entrer en Section Critique # # ============================================================================== proc diffusion {p n mutex hour} {

global nbr ;# Variables globales

set ns_ [Simulator instance] ;# Instancier la commande NS

set nowe [$ns_ now] ;# Le temps actuelle

set nbrk [$p set nbracine] ;# nbrk := nbracine ;

$ns_ at $nowe " tester $p $n $mutex $hour" ;# execution de tester

$ns_ at $nowe "$p demander-sc" ;# execution de demander-sc

$ns_ trace-annotate " [ $n node-addr] demande la SC " ;# noeud demandeur

}

# ============================================================================== # Procedure de test d' entrer et la liberation de la Section Critique # # ============================================================================== proc tester {p n mutex hour} {

global nbr mesure ;# Variables globales

set ns_ [Simulator instance] ;# definir commande ns_

set time 0.01 ;# Temps de test pour SC

set now [$ns_ now] ;# Definir now

set a [$p set sc] ;# Affectation a := sc ;

i f { $a == 1} { ;# Condition entrer en SC

$ns_ at $now " record $p $n $mutex $hour" ;# Record pour le TAM

$ns_ at $now "$n label \"<SC> \" " ;# l i be le <SC> au noeud

$ns_ at [ expr $now+$mutex] "$n label \" \" " ;# Effacer <SC>

$ns_ at [ expr $now+$mutex] "$p liberation--sc";# Appel de liberation--sc

$ns_ at [ expr $now+$mutex] "$p set sc --1" ;# sc := --1 pour s o rt ir

} else { ;# noeud veut entrer SC

$ns_ at [ expr $now+$time] "$p attendre " ;# attendre MAJ sc <-- 1

$ns_ at [ expr $now+$time] " tester $p $n $mutex $hour"

}

}

# ============================================================================== # Procedure d' initialisation de la simulation et coloration # # ============================================================================== proc reaa {p n} {

set ns_ [Simulator instance] ;# definir commande ns_

set now [$ns_ now] ;# Le temps actuelle

$ns_ at $now "$p liaison" ;# appeler la procedure ( liaison)

$ns_ at $now " colorOr $p $n" ;# Coloration des racines

}

# ============================================================================== # ============================================================================== # Le programme Principale # # ============================================================================== # ============================================================================== # ============================================================================== # Lecture des donnees a partir d'un f ic h i er texte # # ==============================================================================

set f [ open " les_demandes.txt " " r " ] ;# lire ( les_demandes.txt )

set nbr [ gets $f] ;# ( nbr ) <-- premier ligne

set nbracine [ gets $f] ;# ( nbracine ) <-- deuxiemme ligne

set nbrequete [ gets $f] ;# ( nbrequete ) <-- troisiemme ligne

for { set j 0} {$j < $nbrequete} { incr j} { ;# Boucle pour lire les Scenarios for { set k 0} {$k < 2} { incr k} {

set table($j,$k) [ gets $f] ;# Remplir par ( site, heur )

}

}

close $f

# ============================================================================== # Declaration des couleurs selon les numeros # # ============================================================================== $ns_ color 0 Blue ;# Le O est la Couleur Bleu ( tous les messages) # ============================================================================== # Definition de la topologie # # ============================================================================== $topo load_flatgrid $val(x) $val(y)

# ============================================================================== # Creation du God ( voisinage ) # # ============================================================================== set god_ [create-god $nbr]

# ==============================================================================
# Configuration globale d'un noeud #
# ==============================================================================

$ns_ node-config -adhocRouting $val(adhocRouting) \

-llType $val(ll) \

-macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \

-channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \

-routerTrace ON \

-macTrace OFF

# ============================================================================== # Creation des noeuds et des agents # # ============================================================================== for { set i 0} {$i < $nbr} { incr i} {

set node_($i) [$ns_ node]

$node_($i) random-motion 0

$node_($i) color Black

$god_ new_node $node_($i)

set p($i) [new Agent/Fifthalgo]

$p($i) set nb_noeud_ $nbr

$p($i) set nbracine $nbracine

$ns_ at 0.0 "$p ( $i ) initialisation"

$ns_ attach-agent $node_($i) $p($i)

$p($i) set packetSize_ 1024

}

# ============================================================================== # La connexion des agents pour permettre la communication # # ============================================================================== for { set i 0} {$i < $nbr} { incr i} {

for { set j [ expr $i+1]} {$j < $nbr} { incr j} {

$ns_ connect $p($i) $p($j)

} }

# ============================================================================== # Coloration des noeuds a chaque couleur associe # # ============================================================================== proc coloration {p node_ } {

set ns_ [Simulator instance]

set nowe [$ns_ now]

set a [$p set father]

set b [$p set nbjeton]

set c [$p set sc]

set d [$p set numrequest]

i f {$a == -1} {

i f {$b > 0} {

$ns_ at $nowe "$node_ color Orange"

}

} else {

$ns_ at $nowe "$node_ color Black"

}

i f {$d == 1} {

$ns_ at $nowe "$node_ color Limegreen"

}

i f {$c == 1} {

$ns_ at $nowe "$node_ color Red"

} } # ==============================================================================

# Appel des f i c hi e rs de mouvement #

# ==============================================================================

i f { $val(sc) == " " } {

puts " *** NOTE: no connection pattern specified. "

set val(sc) "none"

} else {

puts " Loading connection pattern..."

source $val(sc)

}

# ==============================================================================
# Initialisation des variables globaux #
# ==============================================================================

set nmsg1 0 ;# Initialisation de nmsg1

set nmsg 0 ;# Initialisation de nmsg

set tpatt 0 ;# Initialisation de tpatt

# ============================================================================== # Fixation de la duree de la Section Critique # # ============================================================================== set duree 1 ;# la duree de la Sc

# ============================================================================== # Initialisation des positions des noeuds # # ============================================================================== for { set i 0} {$i < $nbr} { incr i} {

$ns_ initial_node_pos $node_($i) 50 ;# se fait apres la definition

} ;# du modele de mobilite

# ============================================================================== # Initialisation et coloration des noeuds # # ============================================================================== for { set i 0} {$i < $nbracine} { incr i} {

$ns_ at 0.0 " reaa $p ( $i ) $node_ ( $i ) "

}

# ============================================================================== # Affichage du Menu dans le f i c hi e r des resultats #

# ============================================================================== $ns_ at 0.0 " Affichage " ;# Appel a la procedure Affichage

set ns_ [Simulator instance]

set nowe [$ns_ now]

# ============================================================================== # Coloration des noeud selon leur etat actuelle # # ============================================================================== for { set i 0} {$i < $nbr} { incr i} {

set temps 0.0

for { set j 0} {$j < 2000} { incr j} {

set temps [ expr $temps+0.01]

$ns_ at $temps " coloration $p ( $i ) $node_ ( $i ) "

}

}

# ============================================================================== # L' execution des scenarios de la simulation # # ============================================================================== for { set j 0} {$j < $nbrequete} { incr j} { ;# lire les Scenarios de la table

set site $table($j,0) ;# lire l ' identificateur du site

set heure $table($j,1) ;# lire l ' heur de la demande

$ns_ at $heure "$p ( $site ) set sc 0" ;# sc <- 0

$ns_ at $heure "$p ( $site ) set dem $heure " ;# aff ec ter la demande a l ' heur $ns_ at $heure " diffusion $p ( $site ) $node_ ( $site ) $duree $heure "

puts " $site" ;# Appel de diffusion pour

} ;# afin d' executer les demandes

# ============================================================================== # Finalisation de la simulation et debut du RUN # # ============================================================================== $ns_ at [ expr $val(stop) + 0.01] " finish";# Finir la Simulation apres (STOP)

puts " debut de la simulation .. . " ;# Ecrire " debut de la simulation.. "

$ns_ run ;# Debut du NAM

le Script TCL (Réseau AD HOC)

ACRONYMES

AODV Ad hoc On-Demand Distance Vector

DSR Dynamic Source Routing

EM Exclusion Mutuelle

IEEE Institute of Electrical and Electronics Engineers

IP Internet Protocol

K-EM K-Exclusion Mutuelle

MAC Medium Access Control

MANET Mobile Ad-hoc Networks MSG MeSsaGe

NbJeton Nombre de Jeton

NAM Network AniMator

NMM Nombre de Messages Moyen

NS-2 Network Simulator 2

OLSR Optimized Link State Routing protocol

RDM Random Direction Model

RED Random Early Detection

RWM Random Waypoint Model

SB Station de Base

SC Section Critique

TAM Temps d'Attente Moyen

TCL Tools Command Language

TCP Transport Control Protocol

TPATT TemPs d'ATTente

UDP User Datagram Protocol

UM Unités Mobiles

ZRP Zone Routing Protocol






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Je voudrais vivre pour étudier, non pas étudier pour vivre"   Francis Bacon