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

 > 

Greedy perimeter stateless routing sur omnet++

( Télécharger le fichier original )
par Hassen DKHIL
Ecole nationale supérieur d'informatique - Ingénieur Informatique 2009
  

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

ECOLE NATIONALE DES SCIENCES DE L'INFORMATIQUE

Simulation Car2Car dans OMNET++

Implémenter le Protocole GPSR

 

DKHIL Hassen

01/05/2009

Implémenter le protocole Greedy Perimeter Stateless Routing de type VaNet & Adhoc sur OMNet++

Signature de responsable

ENCADRANT

Table de matières

LISTE DE FIGURES 4

LISTES DE TABLEAUX 5

INTRODUCTION GENERALE 6

CHAPITRE 1: ETAT DE L'ART 7

INTRODUCTION 7

1. TECHNOLOGIES DES RÉSEAUX VÉHICULAIRES 7

1.1. Wifi 7

1.2. Réseaux Ad hoc 7

1.3. Réseaux VaNet 8

2. ROUTAGE C 9

3. ROUTAGE V2V 10

4. APPLICATIONS DES VANET 11

4.1. Les applications prévues 11

4.2. Application en temps réelle 11

CONCLUSION 12

CHAPITRE 2 :LE PROTOCOLE GPSR 13

INTRODUCTION 13

1. MOTIVATION 13

2. PRINCIPE 13

2.1. Greedy forwarding 14

2.2. Perimeter forwarding 15

2.1. Gabriel Graph 15

3. EXAMPLE DE SCENARIO 16

CONCLUSION 16

CHAPITRE 3 : SIMULATION 17

INTRODUCTION 17

1. LES SIMULATEURS 18

1.1. Le simulateur NS-2 18

1.1.1. Présentation 18

1.1.2. Composant 18

1.1.2. Modèle de mobilité 18

1.1.4. Structure d'un noeud mobile dans NS2 19

1.2. Le simulateur OMNeT++ 19

1.2.1. Présentation 19

1.2.2. Architechture 20

1.2.3. Composants 20

1.2.4. Structure d'un noeud mobile dans OMNET++ 21

1.2.5. Frameworks 21

1.1.5.1 Mobility frameworks 21

1.1.5.1 INET 25

2. CHOIX DU SIMULATEUR ADÉQUAT 26

2.1. Besoins généraux 26

2.2. Choix du simulateur 27

CONCLUSION 29

CHAPITRE4 : ANALYSE ET SPÉCIFICATION DES BESOINS 30

INTRODUCTION 30

1. PROBLÉMATIQUE 30

2. LES BESOINS FONCTIONNELS 30

4.2. Description générale 30

4.2. Cas d'utilisation 31

4.2.1. Cas d'utilisation du simulateur 31

4.2.2. Cas d'utilisation : niveau applicatif 32

4.2.2. Cas d'utilisation : niveau réseau 33

CONCLUSION 33

CHAPITRE 5 : CONCEPTION 34

INTRODUCTION 34

1. DIAGRAMMES DE SÉQUENCES 34

1.1. Diagramme de séquences : Le scénario de simulation 35

1.2. Diagramme de séquences : traitement d'un beacon 36

1.3. Diagramme de séquences : emission d'un messages 37

1.4. Diagramme de séquences : Traitement d'un paquet de données 38

2. DIAGRAMMES D'ETAT TRANSITION 40

2.1. Diagramme d'états transition : Algorithme greedy mode 39

2.2. Diagramme d'états transition : Algorithme perimeter mode 40

3. DIAGRAMMES DE CLASSES 31

CONCLUSION 32

CHAPITRE5 : RÉALISATION 33

INTRODUCTION 44

1. ENVIRONNEMENT DE TRAVAIL 44

1.1 Environnement matériel 44

1.2 Environnement logiciel 44

1.3 Installation 45

1.3.1 Installation de OMNeT++ 45

1.3.2 Installation de MF 45

2. SIMULATIONS ET RÉSULTATS 46

2.1 Envoi de l'information 46

2.1.1.Création du message et l'envoie vers la couche réseau 46

2.1.2. envoi du message beacons 46

2.2. Réception des messages 47

2.2.1.Réception au niveau dde la couche réseau 47

2.2.2. passage à la couche application 48

2.2. Routages 49

2.2.1.Routage en greedy mode 49

2.2.2. Routage en perimeter mode 50

CONCLUSION 52

CONCLUSION 53

NETOGRAPHIE 54

Liste de figures

FIGURE 1.1 : TRANSMISSION DE DONNÉES AVEC ROUTAGE AD-HOC 10

FIGURE 1.2: EXEMPLE DE RÉSEAU VANET 14

FIGURE 1.3 : EXEMPLE DE RÉSEAU C 17

FIGURE 1.4: EXEMPLE DE RÉSEAU V2I............................................................................17

FIGURE 1.5 : FONCTION D'ALERTE ENTRE VÉHICULES 20

FIGURE 1.6 : COOPÉRATION ENTRE VÉHICULES 22

FIGURE 2.1 : Y EST LE VOISIN DE X LE PLUS PROCHE DE LA DESTINATION D 23

FIGURE 2.2. : X EST PLUS PROCHE DE D QUE SES VOISINS Y, W 23

FIGURE 2.3 : PASSAGE AU MODE PR 24

FIGURE 2.4 : EXEMPLE DE SCÉNARIO: 26

FIGURE 3.1 : PROCESSUS DE LA SIMULATION 26

FIGURE 3.2. STRUCTURE D'UN NoeUD MOBILE DANS NS2 28

FIGURE 4.1. LES CAS D'UTILISATION DU SIMULATEUR OMNET 31

FIGURE 4.2. LES CAS D'UTILISATION DU AU NIVEAU APPLICATIF 32

FIGURE 5.1. : DIAGRAMME DE SÉQUENCES : LE SCÉNARIO DE SIMULATION 35

FIGURE 5.2. TRAITEMENT LORS DE RÉCEPTION D'UN BEACON 36

FIGURE 5.4. DIAGRAMME D'ÉTAT TRANSITION POUR GREEDY MODE 40

FIGURE 5.5. DIAGRAMME D'ÉTAT TRANSITION POUR RERIMETER MODE 41

FIGURE 5.7. DIAGRAMME DE CLASSE GLOBAL 42

FIGURE 6.1. : FENÊTRE D'INSTALLATION 44

FIGURE 6.2. TRANSFERT DU MESSAGE DATA VERS LA COUCHE RÉSEAU 45

FIGURE 6.3. ÉCHANGE DES BEACONS ENTRE LES NOEUDS 46

FIGURE 6.4. LE BEACON EST DÉLIVRÉ À LA COUCHE PHYSIQUE 46

FIGURE 6.5. RÉCEPTION D'UN PAQUET BEACON PAR LA COUCHE RÉSEAU 47

Listes de tableaux

TABLEAU 3.1. LA LISTE DES PRINCIPAUX COMPOSANTS DISPONIBLE DANS NS2 18

TABLEAU 2.3 : PRINCIPAUX COMPOSANT DE OMNET++ 20

TABLEAU 2.4 : COMPARAISON ENTRE SIMULATEURS 29

TABLEAU 6.1. CONFIGURATION DE L'ORDINATEUR DE DÉVELOPPEMENT........................44

Introduction générale

Depuis quelques années, le besoin d'être connecté est devenu fondamental pour l'homme. Ce besoin pose de plus en plus de défis pour la technologie moderne l'obligeant à plus d'innovation et de créativité. Ainsi, de nouvelles technologies sont apparues comme les réseaux sans fil, et les réseaux Ad Hoc.

Ces réseaux se sont vite répandus depuis les lieux de travail aux domiciles en passant par les aires de distraction. Ainsi, l'introduction de ces réseaux dans les voitures est devenue une chose indispensable; d'où l'apparition des réseaux Ad Hoc véhiculaires ou VANet (Vehicular Ad Hoc Networks). Les VANet visent à déployer la communication et l'échange d'informations entre les usagers de la route.

Plusieurs groupements industriels ont lancé des projets diverses pour le déploiement et la promotion des VANet dont le Car 2 Car Consortium qui est un consortium de grandes sociétés automobiles et informatiques.

Dans les réseaux de mobiles, la topologie a un caractère relativement éphémère dû à la mobilité des noeuds. Pour cette raison, les protocoles de routage les plus étudiés pour ce type de réseaux sont les protocoles de routage géographiques car ils permettent d'éviter la surcharge d'informations échangées entre les noeuds qui chercheraient à obtenir la topologie du réseau ou des tables de routage.

Le GPSR (Greedy Perimeter Stateless Routing) est un protocole de routage géographique qui garantit un passage à l'échelle car seules les informations locales sont stockées et utilisées, donc vise à optimiser le routage d'informations entre les véhicules.

Ce protocole étant dans l'état expérimental, une simulation s'impose. Ainsi, ses performances seront évaluées dans un cadre proche du contexte réel permettant son amélioration et la facilitation de son implémentation réelle.

C'est dans ce cadre que s'inscrit notre projet. Nous sommes amenés à simuler le protocole pour permettre une meilleure évaluation de ses performances.

Notre travail se scinde en deux parties essentielles. La première est l'étude théorique qui portera sur les technologies utilisées, le principe du routage Car 2 Car et la description du protocole GPSR. La deuxième partie consiste à simuler ce protocole sur le simulateur OMNet++.

Chapitre 1: Etat de l'art

Introduction:

L'apparition des réseaux VANet a rendu possible la communication entre les voitures répandant ainsi l'échange d'information. Ce chapitre débute par la description des technologies utilisées dans les réseaux véhiculaires. Il introduit la notion du v2v et il finit par présenter quelques applications de ces réseaux.

1. Technologies des réseaux véhiculaires:

Les réseaux véhiculaires offrent une alternative intéressante aux réseaux cellulaires vus leur faible coût et le débit élevé qu'ils offrent. Ils se basent sur les technologies sans fils.

1.1. WiFi:

C'est une technologie qui vise à offrir un accès au Web sans fil et à haut débit. Le WiFi permet d'affiner le maillage Internet, de rendre l'accès à internet plus confortable et particulièrement de préparer une bonne infrastructure pour les réseaux véhiculaires. En fait, les réseaux WiFi permettent de faire communiquer des équipements compatibles en se basant des normes et des protocoles communs qui se manifeste à travers des bornes d'accès publiques appelées Hot Spots qui se trouvent un peu partout: restaurants, aéroports, facultés, etc...

La norme 802.11 s'attache à définir les couches basses du modèle OSI pour une liaison sans fil utilisant des ondes électromagnétiques, c'est-à-dire :

· la couche physique, proposant trois types de codages de l'information.

· la couche liaison de données, constitué de deux sous-couches : le contrôle de la liaison logique (Logical Link Control, ou LLC) et le contrôle d'accès au support (Media Access Control, ou MAC)



1.2. Réseaux Ad Hoc:

Les réseaux ad hoc en latin : « qui va vers ce vers quoi il doit aller », c'est-à-dire « formé dans un but précis », sont des réseaux sans fil capables de s'organiser sans infrastructure définie préalablement.


Chaque entité (ou node) communique directement avec sa voisine dans la zone de couverture comme l'indique le figure 1.1. Pour communiquer avec d'autres entités, il lui est nécessaire de faire passer ses données par d'autres qui se chargeront de les acheminer. Pour cela, il est d'abord primordial que les entités se situent les unes par rapport aux autres, et soient capables de construire des routes entre elles : c'est le rôle du protocole de routage.

Ainsi, le fonctionnement d'un réseau Ad-hoc le différencie notablement d'un réseau comme le réseau GSM, les réseaux Wifi avec des points d'accès : là où une ou plusieurs stations de base sont nécessaires à la plupart des communications entre les différents noeuds du réseau (mode Infrastructure), les réseaux Ad-hoc s'organisent d'eux-mêmes et chaque entité peut jouer différents rôles.

L'utilisation la plus simple et la plus courante des réseaux Ad-hoc est faite par les réseaux sans fil Wifi en permettant une mise en place rapide d'une connexion réseau entre deux ordinateurs.

Les réseaux ad hoc mobiles, sont connus sous le nom de MANet (pour Mobile Ad-hoc Networks).

Un réseau MANET permet de mettre en oeuvre des noeuds de communication de grande mobilité, de grande réactivité et qui se déploient rapidement. Ce réseau est interconnecté avec différents types réseaux reposant sur une technologie IP et employant des protocoles de routage tant dans la famille des réactifs (AODV, DSR) que des proactifs (OLSR, TBRPF), ou bien encore des hybrides (ZRP).

Figure 1.1 : Transmission de données avec routage Ad-Hoc



1.3. Réseaux VANet:

Vehicular Ad-Hoc Network (réseau Ad-Hoc de véhicules), ou VANet, est une forme de Mobile Ad-hoc Network (réseau mobile Ad-Hoc), pour fournir des communications au sein d'un groupe de véhicules à portée les uns des autres et entre les véhicules et les équipements fixes à portée, usuellement appelés équipements de la route.

Plutôt que de se déplacer au hasard, les véhicules tendent à se déplacer d'une façon organisée. Les interactions avec les équipements de la route peuvent de même être caractérisées de manière assez exacte. Et finalement, la plupart des véhicules sont limités dans leur gamme de mouvement, par exemple en étant contraint de suivre une route pavée.

Figure 1.2: exemple de réseau VaNet



2. Routage C(V2V):

L'idée, déjà évoquée auparavant, est de permettre aux voitures de communiquer entre elles. Sous les initiales C se cache donc un système d'échange d'informations qui va permettre de meilleures réactions dans des situations comme des bouchons, des routes gelées, enneigées, des accidents de la route etc ...

De cette manière, tous les futurs véhicules équipés du système Car2Car seront capables de communiquer entre eux, quelle que soit leur marque, afin de véhiculer des informations importantes. Les relais sont tout simplement les véhicules qui acheminent l'information de l'un à l'autre sans avoir à passer par un maillage d'émetteurs et récepteurs externes pour couvrir le territoire. L'exemple introductif donné par Car2Car est simple. Imaginez qu'un accident arrive sur la route que vous prenez, quelques kilomètres devant vous. Les véhicules accidentés vont envoyer un signal aux voitures arrivant sur le lieu de l'accident. Ces dernières vont reproduire l'information vers les voitures derrières elles et ainsi de suite. De cette manière, les automobilistes pourront être prévenus quasiment en temps réel des accidents de la circulation et ils pourront modifier leur itinéraire en conséquence. Cet exemple peut être appliqué à d'autres cas de figure qui ne concernent pas forcément un accident mais d'autres aléas du trafic. On peut imaginer que Car2Car pourra également concerner un problème sur un véhicule en panne ou accidenté seul dans un endroit inaccessible. L'information sera alors transmise de voiture en voiture jusqu'au point de surveillance central de l'état de la circulation et du trafic jusqu'aux premiers secours. Car2Car est basé sur la norme WiFi 802.11.

A côté des applications sur la conduite et le trafic, Car2Car sera particulièrement bien adapté à d'autres émissions et réceptions d'informations en temps réel. Car2Car annonce déjà qu'à travers cette norme, il sera possible de récupérer de la musique depuis son PC installé dans sa maison vers sa voiture et vice versa. Le figure 1.3 illustre la communication entre deux voitures pour gérer le trafic.

Figure 1.3 : exemple de réseau C


3. Routage I(V2I):

Parmi les nouvelles technologies sans fil utilisés par les conducteurs et les passagers, à courte portée de la communication sans fil basé sur IEEE 802.11 qui a reçu une attention considérable dans le monde entier.

Grâce à son faible coût, sa disponibilité et son déploiement à grande échelle, il est attendu que les futures voitures seront équipées de dispositifs de bord d'unités offrant des interfaces sans fil IEEE 802.11 et les antennes.
La technologie sans fil permet une répartition intégrale des véhicules de communication dans un réseau basé sur l'auto-organisation et d'auto-coordination des noeuds du réseau  ad hoc. La combinaison  de la technologie  courte-portée de la communication sans fil et des réseaux  ad hoc, facilite  la communication   voiture - infrastructure  regroupés sous CAR-2-I,  et elle est considérée comme une pierre angulaire pour l'avenir des systèmes de transport intelligents (ITS). 

 Un objectif majeur de la CAR-2-I  est l'amélioration de la sécurité de la route la réduction durable de décès dus aux accidents de la route. En outre, la communication CAR-2-I permet aux d'améliorer l'efficacité du trafic et l'infotainment, où les fréquences dédié sera alloué pour la sécurité et l'efficacité de la circulation  pour la fréquence considérée.  

C' est pourquoi une  grande  gamme de possibilités est offerte , pour un intérêt commun et  public, de la part des  gouvernements, et du  monde  industriel  pour  standardiser et déployer la technologies CAR-2-X technologies de la communication existe.

Figure 1.4: exemple de réseau V2I

4. Applications des VANet:

4.1. Les applications prévues avec cette technologie :

Ø Appel d'urgence

Ø Transfert de données (musique MP3, fichiers en provenance du bureau ou de la maison)

Ø Accès à Internet

Ø Péage électronique

4.2. Les applications en temps réel :

Ø Info trafic urbain et météo en temps réel

Ø Alertes en cas de violations imminentes ou des feux de circulation.

Ø Notification en cas de freinage urgent

Ø Activation du système et échange de données avant crash.

Ø Alerte en cas d'accident

Figure 1.5 : Fonction d'alerte entre véhicules





Figure 1.6 : Coopération entre véhicules

Conclusion:

Nous avons présentés dans ce chapitre les technologies sur laquelle se base les réseaux VANet, les différents modes de routage de l'information et quelques applications de ces réseaux. Dans le chapitre suivant nous traiterons le protocole GPSR dans le cadre du routage C et ses différentes fonctionnalités.

Chapitre 2: Le protocole GPSR

Introduction:

Dans les réseaux de mobiles s'interconnectant sans hiérarchie tels que les réseaux ad hoc, la topologie a un caractère relativement éphémère dû à la mobilité des noeuds. Pour cette raison, les protocoles de routage les plus étudiés pour ce type de réseaux sont les protocoles de routage géographiques car ils permettent d'éviter la surcharge d'informations échangées entre les noeuds qui chercheraient à obtenir la topologie du réseau ou des tables de routage.

Ces protocoles de routage géographique se basent sur le fait que tous les noeuds connaissent leur position, par exemple, grâce à un équipement GPS (Global Positioning System) ou encore par un système de positionnement distribué.

1. Motivation:

Il existe plusieurs protocoles qui définissent différentes manières d'obtenir la position d'un noeud : ce sont les protocoles de localisation. Parmi les principaux, on peut citer SLURP, SLALOM, HGRID, GLS. Une fois la position obtenue, il reste à acheminer le message. Pour ce faire, plusieurs protocoles de routage géographique sont à l'étude : GEAR, DREAM, GPSR.

Nous avons choisi de nous baser sur GPSR. Ce dernier est un protocole de routage géographique qui garantit un passage à l'échelle car seules les informations locales sont stockées et utilisées.

Lorsque GPSR se trouve face à une zone de vide, il passe du mode  greedy au mode  perimeter. Ce faisant, il va choisir le prochain saut par rapport à la règle de la main droite . Ce choix a un caractère arbitraire et ne tient pas compte de la possibilité qu'il y ait plus d'opportunités d'acheminement d'un côté ou d'un autre.


2. Principe:

GPSR (Greedy Perimeter Stateless Routing) est un protocole de routage réactif et efficace qui a été conçu et adapté pour les réseaux ad hoc mobiles et les réseaux de capteurs. Son modèle de fonctionnement suppose que tous les noeuds se trouvent au niveau d'un même plan. Du fait de la mobilité des noeuds, certains algorithmes de routage qui se basent sur la topologie du réseau, ou lance une phase de découverte de routes pour acheminer des données ne sont pas adaptés à GPSR. De ce fait, il utilise la position géographique des noeuds pour l'acheminement des paquets de données ou de contrôle.

Dans un réseau mobile, les noeuds sont susceptibles de se déplacer. Il faut ainsi un mécanisme permettant à chaque noeud se savoir la position de ses voisins. Afin de signaler leur présence et leur localisation, les noeuds inondent le réseau en envoyant un paquet de signalement (messages « beacon») contenant la position et un identifiant (par exemple, son adresse IP). Nous proposons d'utiliser les messages « beacon » de contrôle pour renseigner les noeuds voisins sur les directions que peuvent assumer un noeud.

L'échange périodique de ces paquets de contrôle permet aux noeuds de construire leur table de position. La période d'émission des messages « beacon » dépend du taux de mobilité dans le réseau ainsi que de la portée radio des noeuds. En effet, lorsqu'un noeud ne reçoit pas de message « beacon » d'un voisin après un temps T, il considère que le voisin en question n'est plus dans sa zone de couverture et l'efface de sa table de position. Il faut donc adapter le temps d'émission des paquets de contrôle. Un des avantages du BP (Beaconing Protocol) est que chaque noeud n'a besoin que des informations sur ses voisins directs, ce qui nécessite peu de mémoire.

Alternativement, le protocole GPSR permet au noeud d'encapsuler sur quelques bits leur position dans les paquets de données qu'il envoie. Dans ce cas, toutes les interfaces des noeuds doivent être en mode promiscuité afin de recevoir les paquets s'ils se trouvent dans la zone de couverture de l'émetteur.

L'acheminement des paquets par GPSR se fait selon deux modes suivant la densité du réseau : le « Greedy Forwarding » et le « Perimeter Forwarding » (appelés respectivement GF et PF dans la suite).

2.1. Greedy Forwarding:

Le GF construit un chemin parcourant les noeuds de la source à la destination où chaque noeud qui reçoit un paquet l'achemine en faisant un saut vers le noeud intermédiaire le plus proche de la destination dans sa zone de couverture. La figure 2.1 montre un exemple de ce mode d'acheminement.

Figure 2.1 : y est le voisin de x le plus proche de la destination D

Cet algorithme d'acheminement offre un taux de réussite assez proche des réseaux filaires dans le cas où la mobilité de la destination n'est très forte. Lorsqu'un paquet de données atteint une région où le GF échoue, alors le PF est utilisé.

Figure 2.2. : X est plus proche de d que ses voisins y, w

2.2. Perimeter Forwarding:

Cet algorithme utilise la règle de la main droite qui est définie comme suit : Lorsqu'un paquet arrive à un noeud x du noeud y, le chemin à suivre est le prochain qui se trouve dans le sens inverse des aiguilles d'une montre en partant de x et par rapport au segment [xy] tout en évitant les « crossing links » (route déjà parcourue). La figure 2.3 montre un exemple plus précis de ce mode.

Figure 2.3 : Passage au mode PR

2.3. Gabriel Graph:

Pour augmenter le taux de réussite d'acheminement des paquets, GPSR utilise les deux algorithmes en fonction de la densité locale du réseau. Chaque noeud construit un graphe du réseau lui permettant de diminuer les possibilités de routage. Ce graphe, le Gabriel Graph (GG) permet de représenter le réseau avec moins de noeuds pour éviter les « crossing links ». Le GG est un ensemble de noeuds {Wi, Wi+1, ...Wi+n} tel qu'il existe aucun noeud dans la portion de disque de rayon d(Wi, Wi+1) à portée des deux noeuds concernés, avec Wi+1 étant noeud le plus éloigné dans la zone de couverture de Wi.

Figure 2.4 : Pour que {u,v} ° GG, il faut qu'il n'existe aucun noeud dans le disque.

Ces éliminations n'introduisent pas de déconnexions dans le cas de réseaux uniformes.



3. Exemple de scénario:

Ce protocole détermine la route à suivre en minimisant les distances entre les noeuds et la destination (c'est le mode Greedy Forwarding), mais un second mécanisme est mis en oeuvre en cas de blocage (c'est le mode Perimeter). Dans ce cas, le noeud n'ayant pas de voisin plus proche (en distance) que lui de la destination passe le relais à ses voisins qui eux peuvent avoir un voisin plus proche de la destination (en distance). Sur la Figure 2.5, le noeud B utilise le mode Perimeter car il n'a pas de voisin plus proche en distance de la destination finale G, ce qui permet de trouver une route passant par le noeud C qui, lui, peut à nouveau utiliser le mode Greedy Forwarding ayant un voisin plus proche de G (en l'occurrence D).

Figure 2.5 : Exemple de scénario:


Conclusion:

Tout au long de ce chapitre, nous avons vu le fonctionnement général du protocole GPSR. Nous avons aussi détaillé les composantes principales du protocole. Nous allons voir dans le chapitre suivant le principe de simulation, les différents simulateurs disponibles et le simulateur choisi.








Chapitre 3: Simulateur

Introduction:

Dans une simulation d'événement discret, le travail d'un système est présenté par le déroulement chronologique de séquences d'événement. Chaque événement se produit à un instant bien déterminé et marque un changement d'état dans le système.

Une simulation d'événement discret a pour but de visualiser l'état du système à n'importe quel instant donnée.

De telles simulations obéissent à une logique de conception qui permet de valoriser certain aspect du système, comme par exemple dans notre cas, l'efficacité du protocole à échanger les données entre noeuds mobiles.

Pour cela on présente le processus de simulation que nous avons adopté pour l'élaboration de notre projet.

Figure 3.1 : Processus de la simulation

1. Les simulateurs:

Les besoins croissants de tester les nouvelles technologies et les nouveaux protocoles avant leur déploiement a conduit à la prolifération des simulateurs. On peut les classer en deux types: les logiciels libres et gratuits tels que OMNet++, J-Sim et NS2... et les logiciels commerciaux tels que OPNET et NetRule...

1.1. Le simulateur NS2:


1.1.1. Présentation:

NS2 est un outil de simulation de réseaux de données. Il est bâti autour d'un langage de programmation appelé Tcl dont il est une extension. Du point de vue de l'utilisateur, la mise en oeuvre de ce simulateur se fait via une étape de programmation qui décrit la topologie du réseau et le comportement de ses composants, puis vient l'étape de simulation proprement dite et enfin l'interprétation des résultats. Cette dernière étape peut être prise en charge par un outil annexe, appelé nam qui permet une visualisation et une analyse des éléments simulés.

NS2 est en réalité un programme relativement complexe écrit en C++ et interfacé via Tcl. Pour modifier le comportement d'objets existants, il est donc nécessaire de modifier le code C++ qui en réalise l'implantation.

TCL (Tool Command Language) est un langage de commandes qui sert à contrôler les applications. C'est essentiellement un langage de scripts offrant des structures de programmation telles que les boucles, les procédures ou les notions de variables.

1.1.2. Composants:

Application

Web, FTP, Telnet, générateur de trafic(CBR, ..)

Transport

TCP, UDP, RTP, SRM

Routage

Statique, dynamique (vecteur distance) et routage multipoint (DVMRP, PIM)

Gestion des files d'attente

RED, Drop Tail, Token bucket

Discipline de service

CBQ, SFQ, DRR, Fair queueing

Système de transmission

CSMA/CD, CSMA/CA, lien point à point

Tableau 3.1. La liste des principaux composants disponible dans NS2

1.1.3. Modèles de mobilité:

NS-2 implémente deux modèles de mobilités :

l Le Random Waypoint Mobility Model:

Ce modèle génère un mouvement aléatoire du noeud de façon que le noeud choisie sa prochaine destination d'une manière aléatoire en se déplaçant avec une vitesse aléatoire constante.

l Le Trajectory Based Mobility Model:

C'est un mouvement généré par un scénario qui consiste à ce que l'utilisateur donne une destination bien précise et une vitesse de déplacement constante.

1.1.4. Structure d'un noeud mobile dans NS2:

Figure 3.2.  Structure d'un noeud mobile dans NS2

1.2. Le simulateur OMNet++:

1.2.1. Présentation:

Dans ce projet, nous allons réaliser nos expérimentations à l'aide d'OMNET++ qui est un simulateur à évènements discrets orienté objet, basé sur C++. Il a été conçu pour simuler les systèmes réseaux de communication, les systèmes multi processeurs, et d'autres systèmes distribués. OMNET++ est un projet open source dont le développement a commencé en 1992 par Andras Vargas à l'université de Budapest.

Actuellement, Ce simulateur est utilisé par des dizaines d'université pour la validation de nouveaux matériels et logiciels, ainsi que pour l'analyse de performance et l'évaluation de protocoles de communication.

L'avantage de OMNET ++ est sa facilité d'apprentissage, d'intégration de nouveaux modules et la modification de ceux déjà implémentés. Nous introduisons dans la suite l'architecture du simulateur OMNET++ et les librairies Mobility Framework et INET.

1.2.2. Architecture d'OMNET++

L'architecture d'OMNET++ est hiérarchique composé de modules. Un module peut être soit module simple ou bien un module composé. Les feuilles de cette architecture sont les modules simples qui représentent les classes C++. Pour chaque module simple correspond un fichier .cc et un fichier .h. Un module composé est composé de simples modules ou d'autres modules composés connectés entre eux. Les paramètres, les sous modules et les ports de chaque module sont spécifiés dans un fichier .ned.

La communication entre les différents modules se fait à travers les échanges de messages. Les messages peuvent représenter des paquets, des trames d'un réseau informatique, des clients dans une file d'attente ou bien d'autres types d'entités en attente d'un service. Les messages sont envoyés et reçus à travers des ports qui représentent les interfaces d'entrer et de sortie pour chaque module.

La conception d'un réseau se fait dans un fichier .ned et les différents paramètres de chaque module sont spécifiés dans un fichier de configuration (.ini). OMNET++ génère à la fin de chaque simulation deux nouveaux fichiers omnet.vec et omnet.sca qui permettent de tracer les courbes et calculer des statistiques.

1.2.3. Composants:

Application  :

FTP, Telnet, générateur de trafic (IPTrfGen..), Ethernet, Ping App, UDPApp, TCPApp

Transport  :

TCP, UDP, RTP

Réseau  :

IPv4, IPv6, ARP, OSPF, LDP, MPLS, ICMP, TED...

Liaison  :

Mgmt, MAC, Radio

Node :

Ad Hoc, Wireless, MPLS...

Tableau 3.2. La liste des principaux composants disponible dans OMNET++

1.2.4. Structure d'un noeud mobile dans OMNET++ :

Figure 3.3. Structure d'un noeud mobile dans OMNET++


1.2.5. Frameworks:

1.2.5.1. Mobility Framework:

La librairie MF est une extension du simulateur OMNeT++. Elle a été développée par une équipe de chercheurs à l'université de Berlin. Sa dernière version a été proposée par Marc Loebbers en Octobre 2003. Cette librairie est destinée à soutenir les réseaux sans fil et mobiles au sein de simulations OMNeT++. En effet, elle permet une bonne manipulation des noeuds mobiles et la gestion des connexions dynamiques pour avoir un modèle de mobilité de réseau sans fils qui fournie des résultats le plus proche possible du monde réel. En outre, MF prévoit des modules de base qui peuvent être utilisés pour former de nouveaux modules. Avec ce concept, un programmeur peut facilement développer ses propres protocoles avec l'interface nécessaire.

Elle peut être utilisée pour la simulation de :

Ø Les réseaux sans fil fixes

Ø Les réseaux sans fil mobiles

Ø Les réseaux distribués (ad-hoc) et les réseaux centralisés

Ø Les réseaux de capteurs

Ø Les multi-réseaux sans fil
    

Aujourd'hui, il y'a un développement d'une bibliothèque de protocoles normalisés pour la MF (802,11, AODV, ...), dont l'objectif est de disposer d'une bibliothèque riche de ces protocoles afin de permettre facilement Plug-and-Play des simulations de différents types de protocoles largement utilisés.

1.2.5.1.1. L'interface réseau IEEE 802.11 de la librairie MF

La base pour toutes les classes des modules de la couche physique est ChannelAccess  qui est à son tour dérivée de BasicModule. La seule fonctionnalité que fournit ChannelAccess est la connectivité au Channel (i.e. aux autres noeuds). La fonction sendToChannel () doit être utilisée pour passer des messages au Channel. Elle enverra le message pour chaque gate connecté du module de l'hôte.

PhyLayer : Nic80211a

Il existe deux versions de PhyLayer. La première version est appelée P2PPhyLayer, elle assume les connections point à point entres les hôtes. C'est la plus simple couche physique que l'on puisse utiliser. Pour la seconde version, elle est appelé Nic80211 dont les fonctionnalités de la couche physique ont étés divisées en 3 modules simples qui sont Decider80211a, SnrEcal80211a et Mac80211a.. Les calculs de SNR ont été laissées séparés du Decider à cause des bits errors. Ce concept rend la création modules Decider qui utilisent le même SnrEval module plus facile, et vis versa.

On peut par exemple définir un module Decider qui compare les calculs de SNR avec un qui utilise le forward error correction  et les deux modules peuvent utiliser le même SnrEval module.

Mac80211a

La classe Mac80211a est une implémentation de la norme IEEE 802.11a. Nous nous sommes basés sur [Std00] pour extraire les différents paramètres comme le calcul de la durée de transmission packetDuration(), la taille la fenêtre de contention et les durées des périodes ST, SIFS, DIFS, EIFS.

SnrEval :

Le module SnrEval simule un délai de transmission pour tous les messages reçus et calcule les informations SNR. Le BasicSnrEval ne tient pas compte des retards de propagation. Les SNR informations sont stockées dans un SnrList. Chaque entrée SnrList contient un timestamp et un SNR de la valeur de ce timestamp. HandleLowerMsg () est subdivisé en handleLowerMsgStart () et handleLowerMsgEnd (). En outre, nous avons défini un bufferMsg (). Juste après, un message est reçu handleLowerMsgStart (). En outre, le rapport signal / bruit de tous les renseignements d'autres messages dans le tampon de réception devrait être mis à jour si vous le souhaitez. Ensuite, le message est tamponné (fonction bufferMsg ()) pour simuler un délai de transmission. Entre temps, il y a d'autres messages qui peuvent arriver mais ils interférent avec la mémoire tampon du message, et par conséquent, il en résulte de nouvelles entrées SnrList supplémentaires pour indiquer un changement de SNR pour ce message.

Une fois la transmission est achevée (c'est-à-dire le message est complètement reçu), handleLowerMsgEnd () est appelé juste avant que le message soit transmis au Decider module. Ici, le message devrait être supprimé du tampon de réception et de la SnrList contenant les informations SNR calculés, ainsi les valeurs devraient être passée en argument à la sendUp (). La fonction sendUp() est celle qui assure la transmission du paquet vers la couche supérieure .

Nous croyons que notre concept permet à tous ces différents modèles, sans être trop complexe, mais en même temps d'être assez sophistiqués pour soutenir également des modèles complexes.

Decider

Le module Decider ne traite que les messages provenant de la chaîne (c'est-à-dire à partir de
la couche inférieure). Les messages provenant des couches supérieures, ayant contourné le module Decider, sont directement remis au module SnrEval. Les décisions concernant la perte ou les erreurs sur les bits messages ne doivent être faites au sujet de messages provenant de la chaîne. En conséquence, il n'est pas nécessaire de traiter les messages provenant de couches superficielles du module Decider.

Blackbaord :

Quand vous évaluez la performance d'un protocole, vous avez besoin de renseignements sur le contrôle interne les changements d'état de votre protocole, peut-être même à partir de protocoles que vous utilisez. Vous pouvez suivre ces changements, en utilisant par exemple vecteur de fichiers dans votre protocole et supprimer ces moniteurs une fois que vous l'avez fait. Une autre façon est d'utiliser un tableau noir. L'état des changements sont publiés sur lui, et les moniteurs de souscrire ces valeurs. Cela permet à d'autres chercheurs d'exploiter votre protocole d'évaluation de la performance, tout en imposant presque aucun moment de l'exécution de la peine lorsque l'information n'est pas nécessaire. Peut-être même plus important encore, le tableau noir vous permet d'échanger des informations entre les couches, sans passer des pointeurs vers les modules autour. Il existe plusieurs méthodes permettant à l'abonné d'utiliser le tableau noir, parmi ces méthodes, on peut citer le BasicModule : qui fournit tout le nécessaire pour interagir avec le tableau noir. Il est dérivé de ImNotifiable qui est une classe de base virtuelle pure qui permet d'informer le tableau de votre module de changements.

1.2.5.1.2. Les modules de mobilités :

L'architecture de la mobilité

Cette section décrit l'architecture de la mobilité utilisée dans la MF. Il ya deux questions à examiner concernant une architecture de mobilité dans un cadre de simulation. La première question est de savoir où traiter les d'informations sur la mobilité et la deuxième est comment gérer les mouvements des hôtes. Où et comment gérer dynamiquement les connexions de manière efficace est la deuxième décision à prendre. Nous avons décidé de gérer la mobilité d'une manière distribuée localement dans chaque module hôte. La gestion de la connexion est gérée par un contrôleur central. La composante de base de l'architecture de la MF est le module ChannelControl avec un hôte MobilityModule. ChannelControl s'occupe de tous les paramètres liés à la connexion alors que les MobilityModules ont deux tâches principales: la première tâche est de gérer les mouvements de l'Hôte qui peut être fait en utilisant différents modèles de la mobilité (comme le Manhattan Mobilité ou le mouvement brownien), alors que le second rôle des MobilityModules est de communiquer pour contrôler l'évolution de l'hôte au ChannelControl. Dans l'étape qui suit le ChannelControl met à jour toutes les connexions pour ces hôtes.

Le ChannelControl :

Le module ChannelControl est chargé d'établir des canaux de communication entre les modules d'accueil (qui sont à distance de communication) ainsi que de rompre ces liens une fois qu'ils perdent la connectivité à nouveau. La perte de la connectivité peut être due à la mobilité (c'est-à-dire les hôtes se déplacent trop loin) ou en raison d'un changement dans la transmission de puissance ou d'un hôte. Nous avons décidé de garder le concept de liens entre les modules d'accueil, par opposition au passage de message direct, en effet les voies de communication sont une source importante de déboggage des informations.

Malheureusement, dans OMNeT + + les liens entre les différents modules ont besoin d'au moins deux gates objets pour chaque module, un appelé IN et un autre appelé OUT sur la porte (et pour chaque sous module). Pour notre MF, le nombre minimal de portes de lien est six vu que le module Nic est intégré dans le module hôte et est elle-même subdivisée en un SnrEval et un module Decider Mac. Une approche de mémoire plus efficace est de créer dynamiquement des portes. Les gates ne sont pas attribués à l'initialisation du réseau, mais créés dynamiquement sur demande. Chaque module possède deux hôtes listes un pour free-in-gate et un pour le free-out-gate. Une fois le module ChannelControl veut établir un lien entre deux hotes, il regarde d'abord le gate dans la listes d'Hôtes pour savoir si les portes sont disponibles, si il n'existe aucune porte libre un nouveau est créé immédiatement. Lors de rupture de lien ChannelControl à la connexion on ajoute les portes nouvellement libéré à la porte de la liste correspondante. Avec cette approche, nous réduisons la mémoire nécessaire sans augmenter les frais généraux de calcul. Dans les simulations de réseau sans fil, non seulement le fait de savoir si deux hôtes sont connectés (c'est-à-dire de communiquer les uns avec les autres) est important, mais aussi le fait de savoir que les deux machines peuvent interférer les uns avec les autres.


1.2.5.2 INET:

INET est une librairie open source pour la simulation des réseaux informatiques dans l'environnement OMNeT++. Elle contient IPv4, IPv6, TCP, UDP, des protocoles implémentés, et plusieurs modèles d'application. Elle comprend également un modèle avec MPLS RSVP-TE et de signalisation LDP. La couche liaison sont des modèles de PPP, Ethernet et 802.11.Le routage statique peut être configuré à l'aide du réseau auto configurateur, ou on peut utiliser le protocole de routage mise en oeuvre.

INET prend en charge les simulations des réseaux sans fil et mobiles, ainsi les réseaux ad-hoc. Récemment les modèles MPLS, RSVP-TE et LDP sont révisés et réécrit, sans oublier le routage dynamique (RIP et OSPFv2).

Dans ce paragraphe, nous allons présenter une étude de l'existant de la librairie INET et plus précisément l'implémentation des couches PHY, MAC, IP, RTP, UDP et TCP dans INET.

v La couche PHY

La couche physique est la partie essentielle d'un noeud sans fil. Il est responsable de l'envoi et la réception de message, détection de collision, et calcul d'erreur sur les bits. La couche physique est divisée en trois parties, qui sont décrites en détail dans les sous-sections suivantes :

· PhyLayer fournit les interfaces de la couche MAC et de la couche physique des autres noeuds.

· AnalogueModels sont responsables pour la simulation de l'atténuation d'un signal reçu.

· le Decider est responsable de l'évaluation et de démodulation des messages reçus.

A ce qui concerne notre projet, on a besoin la couche physique IEEE 802.11b qui est déjà implémentée dans OMNET++ dés 2006.

v La couche MAC

La couche MAC IEEE 802.11b est implémentée dans la librairie INET, elle supporte le mécanisme RTS/CTS. Il n'y a que l'algorithme DCF implémenté, le PCF n'est pas implémenté. Le débit de transmission physique est constant pendant la simulation.

Le simulateur OMNET++ contient deux classes de bases pour former la couche MAC :

· BaseMACLayer pour encapsuler et décapsuler les paquets seulement.

· EyesMACLayer fournie un ensemble de fonction dont l'importante est de renvoyer les informations concernant la couche MAC d'un noeud.

Dans notre cas la couche MAC IEEE 802.11b est implémentée dans la librairie INET en utilisant RTS/CTS. Il n'y a que l'algorithme DCF implémenté, le PCF n'est pas implémenté. Le débit de transmission physique est constant pendant la simulation. Aucun des algorithmes d'adaptation du débit de transmission physique n'est implémenté. Les paquets multipoints au niveau MAC sont envoyés de la même manière que les paquets broadcast. Le filtrage de ces paquets se fait au niveau IP.

v La couche IP

L'Internet Protocol (IPSuite) fournit des IPv4, TCP et UDP dans les modèles de simulations
OMNeT + +. D'abord, il a été développé par plusieurs personnes à l'Université de Karlsruhe. À la fin de l'année 2003, l'auteur de OMNeT + +, Andras Varga, a repris l'entretien de l'ensemble IPsuite. Il a également créé plus de documentation pour le paquet, ce qui rend plus facile à utiliser et faire des ajustements pour le modèle. Dans le même temps, un modèle l'IPv6 a été créé. Mais le routage IP est de implémenté de manière statique. Alors, l'utilisateur doit configurer les adresses IP et les adresses de groupes multicast dans les tables de routages avant la simulation. C'est au niveau IP que se passe le filtrage des paquets multicast.

Le routage multipoint au niveau IP est déjà implémenté mais de manière statique. C'est à dire que l'utilisateur doit configurer les adresses IP et les adresses de groupes multicast dans les tables de routages avant la simulation. C'est au niveau IP que se passe le filtrage des paquets multicast.

v La couche RTP

La couche RTP présente le niveau transport, elle n'est pas encore intégrée dans la librairie INET. Dans la version 20061020, il y a une implémentation de la couche RTP réalisé par Matthias Opptiz et ajouté par Andras Vargas mais elle n'est pas encore intégrée. Le problème de cette implémentation est qu'elle a été faite dans une ancienne version de l'année 2001 et que l'architecture globale de la librairie INET a changé.

v La couche UDP

La couche UDP est implémentée dans la librairie INET. Elle présente le niveau transport et elle est très utilisable dans la simulation car son implémentation est simple et elle est rapide par rapport aux autres couches de même niveau.

v La couche TCP

Dans la librairie INET, cette couche est une couche de transport comme UDP et RTP et elle est implémentée à l'aide des sockets.

v La couche Application

Elle présente la couche supérieure. De nombreuses applications sont implémentées dans la librairie INET comme Ethernet, TCPApp, PingApp, UDPApp.


2. Le choix du simulateur adéquat:

2.1. Besoins généraux:

Pour pouvoir choisir le meilleur simulateur, il faut spécifier nos besoins. Nous devons disposer de:

Module ARP:

Ce module du noyau implémente le protocole de résolution d'adresse ARP. Il sert à la conversion entre les adresses matérielles de niveau 2 et les adresses du protocole IPv4 sur les réseaux connectés en direct. L'utilisateur n'a normalement pas d'interactions avec ce module sauf pour le configurer. En fait ce module fournit des services aux autres protocoles du noyau.

Le module ARP maintient un cache des correspondances entre les adresses matérielles et les adresses logiques. Le cache a une taille limitée, ainsi les entrées anciennes et utilisées moins fréquemment sont récupérées. Les entrées qui sont marquées comme permanentes ne sont jamais effacées.

Module NIC802.11:

Ce module permet de fournir l'adressage MAC et encapsuler les paquets en trames 802.11.

Il est composé de 3 modules simples qui sont Decider80211a, SnrEcal80211a et Mac80211a. Comme le montre la figure 3.4, ce module possède deux interfaces de sortie avec la couche IP et avec le canal.

Figure 3.4 Le module Nic80211a


Module de mobilité:

Ce module fournit un modèle de mobilité qui permet de faire déplacer les noeuds.

2.2. Comparaison entre les simulateurs:

Simulateur

OMNeT++

NS-2

Flexibilité

OMNeT++ est un simulateur flexible et générique, il peut simuler n'importe quel type de réseau.

Par exemple, il peut être utilisé pour simuler les files d'attente, les systèmes multiprocesseurs, les architectures de matérielles (routeurs, les commutateurs optiques, les serveurs etc.).

Plusieurs modèlent sont utilisables pour les différents domaines (INET Fw, Mobility Fw, OverSim, NesCT, MACSimulator, etc.)

NS-2 a été conçu comme un (TCP/IP) simulateur de réseau, et il est difficile de simuler les choses autre que paquet-commutant les réseaux et les protocoles.

Mobilité

OMNeT++ fournit plusieurs modes de mobilités comme le Random Waypoint Mobility Model, le Linear Mobility Model, le Constant Speed Mobility Model, le Basic Mobility Model, etc.

NS-2 ne fournit que le Random Waypoint Mobility Model et le Trajectory Based Mobility Model, ce qui rend difficile de présenter une mobilité linéaire.

La gestion de modèle

Le OMNeT++ noyau de simulation est une bibliothèque de classe, c'est à dire, les modèles dans OMNET++ sont indépendants du noyau de simulation.

Les chercheurs ont écrit leurs composants (les modules simples) contre noyau de simulation API du simulateur.

Dans les NS-2, la limite entre le coeur de la simulation et les modèles sont barbouillés d'encre, sans un clair API.

Support pour Les Modèles Hiérarchiques

La structure hiérarchique dans OMNET++ facilite la complexité des méthodes.

Dans NS-2, les modèles sont plats, la création d'un sous réseau ou l'exécution d'un protocole complexe (composition de plusieurs unités indépendantes) n'est pas possible.

Support de traçage

OMNeT++ peut montrer les transmissions de paquets pendant une simulation.

Pas de traçage.

Documentation

La documentation est très bonne et contient tous ce qu'on a besoin pour la simulation (définitions, méthodes, modules, implémentations, etc).

Bonne documentation.

Habileté à courir les grands réseaux

OMNeT++ peuvent simuler une grande topologie de réseaux.

Les NS-2 ont beaucoup de problèmes dans la simulation des grandes topologies de réseaux.

Tableau 3.3. : Comparaison entre les simulateurs


Après une comparaison approfondie entre les deux simulateurs, nous constatons que NS2 ne peut pas supporter plusieurs noeuds dans la simulation ce qui dessert nos besoins d'implémentation.
C'est pour cette raison que nous optons pour le simulateur OMNet++.



Conclusion:


Dans ce chapitre, nous avons comparé entre différents simulateurs et nous avons choisi celui qui est le plus apte à nous satisfaire. Le chapitre suivant présentera une spécification de notre projet avec une analyse des besoins à l'aide de diagrammes de cas d'utilisation.

Chapitre 4 : Analyse & Spécification

Introduction:

Après avoir présenté les notions de base nécessaires pour comprendre les fonctionnalités de notre projet, nous commençons ce chapitre avec une présentation de la problématique de notre projet. Ensuite, nous allons énoncer les spécifications de celui-ci en exposant les besoins fonctionnels et non fonctionnels du travail à réaliser. Enfin, nous enchaînons par la description des diagrammes de cas d'utilisation.

1. La problématique

Le but de ce projet est de simuler le protocole GPSR afin d'évaluer ses performances et pouvoir les comparer à celles d'autres protocoles. Cette simulation se déroulera sur le simulateur OMNet++. Ce protocole de routage permet d'acheminer l'information d'un véhicule à un autre tout en suivant l'évolution du réseau.

2. Besoins fonctionnels:

Notre travail consiste à implémenter les différentes parties du protocole GPSR et les connecter à la couche applicative qui se trouve en dessus. Nous allons d'abord donner une description générale de ces besoins.

2.1. Description générale:

Ø Implémentation d'un module représentant un noeud mobile qui:

*se déplace selon un modèle de mobilité précis

*contient une couche réseau implémentée selon le protocole GPSR

*contient une couche applicative qui utilise la couche précédemment citée

Ø Construction d'un réseau à partir des noeuds modélisés

Ø Simulation de l'échange de paquets entre les différents noeuds mobiles suivant des scénarios réalistes

2.2. Cas d'utilisation:

Le but de cette partie est de décrire les requis fonctionnels du programme selon le formalisme UML.

2.2.1. Cas d'utilisation du simulateur:

Figure 4.1. Les cas d'utilisation du simulateur OMNET++

Scénarios :

l Implémenter les noeuds :
* Modifier la structure de noeuds déjà existants dans OMNet++ pour y intégrer une couche réseau implémentée selon le GPSR.

l Définir une topologie :
*Regrouper les noeuds dans un réseau selon une topologie bien donnée grâce aux fichiers .NED de OMNet++

l Définir un modèle de mobilité:
*Choisir l'un des modèles de mobilité offert par la librairie INET.

l Créer un scénario:
*regrouper les éléments suivants pour créer un scénario plausible et voir l'échange des données.

l Simuler un protocole:
*Utiliser le scénario créé pour simuler un protocole.

l Évaluer les performances:
*Recueillir les données fournies par la simulation et les comparer avec ceux d'autres protocoles.

2.2.2. Cas d'utilisation: niveau applicatif:



Figure 4.2.
Les cas d'utilisation du au niveau applicatif

Scénarios :

· La couche applicative du noeud n1 communique avec une application du noeud n2.

· La couche applicative du noeud n1 transmet des informations à la couche applicative du noeud n2 en passant par sa propre couche réseau.

· La couche applicative du noeud n2 reçoit les informations qui sont passées par sa couche réseau sous forme de paquet.

2.2.3. Cas d'utilisation: niveau réseau:

Figure 4.3. Les cas d'utilisation du au niveau réseau


Scénarios :

· La couche réseau du noeud n1 reçoit un paquet de sa couche applicative.

· La couche réseau du noeud n1 route le paquet en Greedy Mode tout en le passant à sa couche inférieure.

· La couche inférieure du noeud n2 reçoit le paquet et le passe à sa couche réseau.

· La couche réseau du noeud n2 route le paquet en Perimeter Mode et le supprime.

· La couche réseau du noeud n2 repasse le paquet à sa couche inférieure.

· La couche inférieure du noeud n3 passe le paquet à sa couche réseau qui le délivre à sa couche applicative.

Conclusion

Tout le long de ce chapitre, nous avons listé les besoins fonctionnels et non fonctionnels de notre projet accompagnés de diagrammes des cas d'utilisations. Nous allons détailler dans le chapitre suivant la conception de notre application à travers a les diagrammes de séquences, les diagrammes d'état transition ainsi que les diagrammes de classes.

Chapitre 5: Conception

Introduction:

Dans ce chapitre, nous allons présenter les diagrammes de séquences qui décrivent les services du protocole GPSR et surtout les services de la couche réseau. De plus, nous allons présenter les différentes classes utiles pour la partie implémentation.

1. Diagrammes de séquences

Diagramme d'interaction qui représente les objets participant à une interaction particulière et les messages qu'ils échangent organisé en séquences horaires. Axé sur ce que fait un système et non sur la manière dont il le fait, un diagramme de séquence définit la Logique d'une instance particulière d'un CAS d'utilisation. En général, dans un diagramme de séquence, la Dimension verticale représente les heures (de haut en bas) et la Dimension horizontale représente les différents objets.

1.1. Diagramme de séquences : Le scénario de simulation

Figure 5.1. : Diagramme de séquences : Le scénario de simulation

1.2. Diagramme de séquences :
Traitement lors de réception d'un beacon


Figure 5.2.
: Diagramme de séquences : Traitement lors de réception d'un beacon


Lors de la réception du paquet beacon, une mise à jour de la table de routage sera effectuée, Ces mises à jour régulières permettent de communiquer les modifications de topologie .Si le temps est dépassé et le noeud réceptrice ne reçoit pas le beacon du noeud enregistré dans la table de routage alors ce dernier sera supprimé.
1.3. Diagramme de séquences :
émission d'un message à partir de la couche Application



Figure 5.3.
: Diagramme de séquences : émission d'un message à partir de la couche Application

Ce diagramme explique les étapes à franchir pour envoyer un message de données à partir du noeud local vers une autre destinataire.

En premier temps, la couche application crée le message, à ce qui concerne les données à transmettre et le noeud destinataire .Puis l'interface supérieur passe le message au Greedy mode pour déterminer s'il y a une possibilité pour le transférer au plus proche voisin. Après un calcule de distance séparant le noeud local avec l'ensemble de ses voisins deux cas s'opposent :

ü Un transfert possible avec le Greedy mode (il ya un voisin plus proche que les autres)

ü Il n y a pas un voisin a l'apporté qui le plus proche voisin alors on doit passer au Perimeter mode.

A ce qui concerne le premier cas on termine par encapsuler le message dans interface inferieure et puis son envoi.

Dans le deuxième cas, il se déroule l'algorithme du perimeter mode .En effet, le module Perimetre mode consulte la liste des voisins du table de routage et en utilisant la règle de la main droite détermine le noeud prochain .Puis, il se déroule l'encapsulation et l'envoi.

1.4. Diagramme de séquence : le traitement d'un paquet de données lors de la réception

Figure 5.4. : Diagramme de séquences : le traitement d'un paquet de données lors de la réception

Ce diagramme de séquence décrit l'ensemble des traitements effectués lors de la réception d'un paquet de données. Après la décapsulation du paquet, l'interface inferieur identifie le type de message reçu.

Ø Si c'est un Greedy-mode message, il va être passé au Greedy-Mode. Après, une comparaison entre l'adresse de la destination et l'adresse du noeud locale deux cas possibles. Si le noeud locale est la destination, le message va être repassé à l'interface supérieur puis à la couche application. Sinon ,on va appliquer l'algorithme du Greedy-MODE en déterminant le plus proche voisin dont on va lui transmettre le message ,en se basant sur la liste de voisin du Table du Routage. Dans le cas ou on ne peut pas déterminer le plus proche voisin, on passe à l'algorithme du Perimetre-MODE.

Si c'est un Perimetre-mode message, on fera le même traitement si le message atteint la destination, sinon il y'aura d'abord, un essai d'envoi en utilisant le Greedy-Mode. Dans le cas ou on ne peut pas transmettre ce message avec l'algorithme du Greedy-Mode, le message va être retransmis au noeud voisin en utilisant la règle de la main droite.

2. Diagramme d'état transition:

2.1. Algorithme Greedy mode:

Figure 5.5. Diagramme d'état transition pour greedy mode

2.2. Algorithme Perimeter mode:

Figure 5.6. Diagramme d'état transition pour perimeter mode

Comme l'indique le figure 5.5, à l'arrivé d'un paquet de donnée le Greedy-Mode vérifie si le noeud local est la destination ou bien non. Si c'est la destination, le paquet passera à la réception. Sinon le Greedy-Mode va effectuer un relaie de ce paquet. Alors, il détermine le plus proche voisin qui devrait être unique. Dans le cas d'un échec, il passera au Perimetre-Mode décrit par le diagramme d'état de la figure 5.6. En effet, Perimetre-Mode applique la règle de la main droite pour retransmettre le message. D'ailleurs, l'algorithme de la main droite détermine le noeud adéquate en utilisant un calcule d'angle ayant comme sommet le noeud locale, comme première arrête celle formé par le noeud local et le noeud destination et comme deuxième arrête le noeud locale et le noeud voisin.

3. Diagramme de classe :

Figure 5.7. Diagramme de classe global

ü Interprétation des composants du diagramme de classe :

· BasicLayer: c'est une classe offerte par la Mobility FrameWork. Elle offre une abtraction simple permettant de développer une couche réseau ou une couche MAC. Elle offre les fonctionnalités de bases dont ont besoin les couches réseaux et MAC comme le handlemessage() et le handleselfmessage() nécessaires aux traitements des paquets.

· GPSRnetwLayer: c'est une classe qui hérite de BasicLayer. Elle correspond au module simple GPSRnetwLayer et constitue la couche réseau du noeud. Cette couche a été implémentée selon la spécification du protocole GPSR. Parmi les paramètres de cette classe on peut citer le headerlength qui spécifie la longueur de l'entête du paquet et le mynetwaddr qui est l'adresse réseau du noeud.

· BasicAppLayer: c'est une classe offerte par la Mobility FrameWork. Elle est la classe générique dont héritent toutes les couches applicatives développées sous la Mobility FrameWork.

· ApplicationLayer: c'est une classe héritée à partir de la BasicAppLayer. C'est une couche applicative qui se contente d'envoyer des messages qui seront encapsulés et routés par la GPSRnetwLayer.

· Cmessage: c'est une classe offerte par OMNet++. Elle représente des messages, des paquets et même des évènements. La plupart des messages et paquets implémentés dans OMNet++ héritent de cette classe.

· GPSRPKT: c'est une classe qui hérite de cmessage. Elle représente le paquet utilisé par GPSRnetwLayer avec ses spécificités.

Conclusion

Au cours de ce chapitre, nous avons abordé la partie conceptuelle en définissant les différents modules applicatifs ainsi que les différentes classes associées. En plus, nous avons détaillé les fonctionnalités de chaque classe. Dans le prochain chapitre, nous décrivons la réalisation et les différentes configurations pour notre solution.

Chapitre 6: Réalisation

Introduction:

Après avoir terminé l'étape de la conception nous passons à la dernière phase qui est la réalisation. Donc, dans ce chapitre-qui est le dernier chapitre de notre rapport- nous allons présenter les environnements matériels et logiciels. Ensuite, nous décrirons la simulation et les étapes de son déroulement.

1. Environnement de travail:

Nous allons détailler les outils utilisés dans la réalisation de notre simulation.


1.1. Environnement matériel:

La simulation a été réalisée sur un ordinateur Toshiba Satellite dont la configuration est:

Processeur

Core2Duo 1.8 GHZ (2 CPU)

Mémoire

2 Go DDR2

Disque dur

160 Go

Carte graphique

128 Mo dédié

Tableau 6.1. Configuration de l'ordinateur de développement



1.2. Environnement logiciel:

Notre simulation a été réalisée dans l'environnement logiciel suivant:

v Système d'exploitation: Microsoft Windows XP

v Le simulateur OMNet++ 3.3: C'est un simulateur Open Source des réseaux de communication supportant des modèles de mobilités. Il est basé sur C++ et réalise des simulations discrètes.

v L'IDE Microsoft Visual Studio 2008: C'est un environnement de développement intégré supportant le développement en C++.

v La librairie Mobility Framework: C'est une librairie qui étend OMNet++ pour pouvoir y simuler les réseaux fixes sans fils, les réseaux sans fils mobiles, les réseaux Ad Hoc et centralisés, les réseaux de senseurs et les réseaux sans fils multi-canaux. Elle contient plusieurs modules de bases dont applayer, netwlayer et plusieurs modules de mobilités.

v Outils de conception:

1.3. Installation:


1.3.1 Installation OMNET++:


D'abord il faut télécharger la version adéquate d'OMNet++ à partir du site www.omnetpp.org.

Après l'installation du Visual C++ dans la machine on procède comme suit:

Double clic sur le programme d'installation omnetpp-3.3.exe, cette fenêtre va apparaître :

Figure 6.1. : Fenêtre d'installation

Après l'installation un nouveau dossier sera créé avec le nom omnetpp-3.3. Ensuite, il faut ajouter le chemin d'installation C:\OMNeT++\bin au variable d'environnement

1.3.2. Installation Mobility Framework:

1. Télécharger le Mobility Framework (mobility-fw2.0p3.zip) code source code et décompresser l'archive dans C:\

2. modifier le variable OMNETPP_ROOT dans mkmk.cmd pour pointer sur le chemin d'installation OMNeT++, dans notre cas C:\.

3. Exécuter le script mkmk.cmd dans l'invite de commande :

./mkmk.cmd

4. Compiler les librairies core, contrib et networks:

nmake /f Makefile.vc core

nmake /f Makefile.vc contrib

nmake /f Makefile.vc networks


2. Simulation:

2.1. Envoi de l'information:

2.1.1. Création du message et envoi vers la couche réseau:

Figure 6.2. transfert du message DATA vers la couche réseau

La couche applicative va créer un message de type DATA et ajouter l'adresse destination dans le champ nécessaire puis l'émettre vers la couche réseau comme l'indique le figure 6.2.

2.1.2. Envoi du message beacon :

Figure 6.3. échange des beacons entre les noeuds

Figure 6.4. Le beacon est délivré à la couche physique

Pour mettre à jour la table de routage la couche GPSRNetwLayer est responsable d'envoi et de recevoir des messages beacons vers et à partir des noeuds voisins, le beacon est envoyé à la couche inférieure puis délivré vers noeuds voisins.



2.2. Réception du message:


2.2.1. Réception au niveau de la couche réseau:


Figure 6.5. Réception d'un paquet beacon par la couche réseau

Dans cette figure le noeud 2 a intercepté un paquet de type beacon, les informations colorés avec le bleu indique l'identité et l'adresse source du noeud voisin .


figure 6.6. Réception du message DATA par la couche GPSRNetwLayer

Le figure 6.6 montre la réception du paquet de donné provenant d'un autre noeud par La couche GPSRNetwLayer qui se charge de router le message reçu selon l'algorithme GPSR ou bien le délivrer vers la couche applicative.

2.2.2. Passage à la couche application:

Figure 6.7. réception du message DATA par la couche Applicative

Au niveau du couche réseau si l'adresse destination du paquet GPSRPkt est égale à l'adresse du noeud locale alors le paquet est décapsulé et devient de type cMessage comme dans la figure 6.7 et renvoyé vers la couche applicative.

2.3. Routage

2.3.1. Routage de l'information selon le Greedy Mode:


Figure 6.8. routage selon Greedy mode 1->2

Pour envoyer un paquet du noeud(1) vers le noeud(8), le paquet est délivrer vers le voisin le plus proche de la destination parmi ses 3 voisins indiqués dans le figure 6.8 par des liaisons bidirectionnelles, ce voisin est donc le noeud(2).

Figure 6.9. routage selon Greedy mode 2->5

De même maniere le voisin le plus proche de la destination parmi ses 3 voisins indiqués dans le figure 6.9 par des liaisons bidirectionnelles(en éliminant le noeud(1) source du paquet) , ce voisin est donc le noeud(5).


2.3.2. Routage de l'information selon le Perimeter Mode:

Scénario :délivrer un paquet du noeud(0) vers noeud(7)

Figure 6.10. routage selon Greedy mode 0->2

Figure 6.11. routage selon Perimeter mode 2->1

Dans un premier temps le routage se fait dans la figure 6.10 en mode greedy du noeud(0) vers noeud(2), ce dernier utilise le mode Perimeter car il n'a pas de voisin plus proche en distance de la destination finale (4), ce qui permet de trouver une route passant par le noeud (2) qui, lui, peut à nouveau utiliser le mode Greedy Forwarding.


4. Difficultés rencontrées:

Lors de la réalisation, nous avons rencontré plusieurs difficultés. D'abord l'installation du simulateur OMNet++ et de la Mobility Framework et leur intégration avec Visual Studio. Le passage par des consoles et l'intégration des bibliothèques quasi individuellement rend cette tâche difficile. Ensuite, il faut compiler chaque fichier C++ séparément ce qui peut se révéler fastidieux.
Enfin, la compilation de la simulation elle même nécessite des changements au niveau de plusieurs fichiers.

Conclusion:

Dans ce chapitre, nous avons présenté les résultats de notre projet. Nous avons détaillé les environnements matériels et logiciels. Puis, nous avons décrit le déroulement de la simulation. Enfin nous avons présenté les contraintes rencontrées.

Conclusion

La nécessité grandissante d'échanger des informations entre les véhicules rend indispensable la création de protocoles de routage qui spécifiques et leur amélioration. Pour répondre à ce besoin, a été créé le protocole GPSR. Ce protocole offre plusieurs avantages qui sont la reconnaissance des voisins, le choix du chemin le plus court en passant par des minima locaux et l'adaptation aux changements de topologie dus à la mobilité des noeuds.

Cependant, si la mobilité est lente ou inexistante le taux de transfert du protocole devient moins performant que celui d'autres protocoles comme L'OSPF. Il peut aussi parfois faire entrer le paquet dans une boucle lors du passage au Perimeter Mode. Ainsi, chaque noeud passe le paquet par la règle de la main droite à un de ses voisins et le recevant ensuite d'un autre voisin.

Toutefois, ces problèmes ne constituent pas une atteinte sérieuse à l'efficacité du GPSR dans un contexte de mobilité normale. Malgré cela des amélioration ont été développées comme le OGPSR(Optimised GPSR).

Le déploiement du protocole GPSR trouve certaines difficultés dues principalement au manque de tests sur simulateurs et la non disponibilité de bandes de fréquences allouées spécifiquement aux communication Car 2 Car.

Notre travail qui consiste à simuler ce protocole sur le simulateur OMNet++ nous a permis de programmer en C++ et en langage NED, d'étudier le fonctionnement et le comportement du protocole GPSR dans un environnement proche de la réalité et de le simuler suivant quelques scénarios.

Netographie

http://www.wikipedia.org/, Mars, Avril, et Mai 2009

http://itpp.sourceforge.net/ version 3.10.5, 21 Mars, Avril et Mai 2009. http://www.omnetpp.org/doc/INET/neddoc/, Mars, Avril et Mai 2009 http://www.commentcamarche.net, Mars, Avril et Mai 2009

Karp, B. and Kung, H.T., Greedy Perimeter Stateless Routing for Wireless Networks, in

Proceedings of the Sixth Annual ACM/IEEE International Conference on Mobile Computing and

Networking (MobiCom 2000), Boston, MA, August, 2000, pp. 243-254.

http://www.developpez.com, Mars, Avril et Mai 2009

Karp, B., Geographic Routing for Wireless Networks, Ph.D. Dissertation, Harvard

University, Cambridge, MA, October, 2000






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








"Il y a des temps ou l'on doit dispenser son mépris qu'avec économie à cause du grand nombre de nécessiteux"   Chateaubriand