Cours les modèles et mise en œuvre de réseaux Wifi , tutoriel & guide de travaux pratiques en pdf.
Simulation
Simuler c’est modéliser un système complexe, afin de prévoir son comportement dans le monde réel. Il s’agit d’une approche permettant de représenter le fonctionnement d’un système réel constitué de plusieurs entités, de modéliser les différentes interactions entre elles, et enfin d’évaluer le comportement global du système et son évolution dans le temps.
Le recours à la simulation permet de contourner les limites de la complexité des modèles analytiques. Toutefois, il est nécessaire de bien identifier les caractéristiques du système afin de la représenter, le plus finement possible, par des modèles abstraits.
Figure 4.1 : Cycle modélisation-simulation
Si la représentation du système réel par des modèles abstraits est suffisamment réaliste et précise, il est alors possible de reporter les résultats obtenus avec ces modèles sur le système réel. Le cycle correspondant aux étapes de modélisation, simulation et report des résultats est illustré dans la figure 4.1.
Choix du simulateur
Les simulateurs réseaux sont utilisés par des personnes de différents domaines tels que les chercheurs universitaires, industriels et, d’assurance de qualité (AQ) pour concevoir, simuler, vérifier et analyser les performances des protocoles de différents réseaux. Ils peuvent également être utilisés pour évaluer l’effet des différents paramètres des protocoles étudié. En général, un simulateur de réseau est composé d’un large éventail de technologies et de protocoles réseaux et aide les utilisateurs à construire des réseaux complexes à partir de blocs de construction de base comme des grappes de nœuds et de liens. Avec leur aide, nous pouvons concevoir différentes topologies de réseau en utilisant différents types de nœuds tels que les nœuds terminaux, concentrateurs, ponts de réseau, routeurs, des dispositifs optiques de couche de liaison, et des unités mobiles.
Il existe plusieurs simulateurs réseaux tel que les simulateurs NS-2 et NS-3, OPNET. Le simulateur NS-2 a été un simulateur populaire pour la recherche et l’éducation sur les systèmes Internet, dont notamment mobiles, les systèmes sans fil. NS-2 bénéficie d’utilisation répandue dans le milieu de la recherche, le code de simulation a été contribué par plus de cent personnes et organisations, et l’utilisation du simulateur est toujours référencé dans de nombreux travaux de recherche en réseau.
Cependant, une lacune majeure de NS-2 est son évolutivité en termes d’utilisation de la mémoire et du temps d’exécution de la simulation. Ceci est particulièrement un problème en ce qui concerne les nouveaux domaines de recherche dans les réseaux informatiques, tels que les réseaux de capteurs sans fil, les réseaux peer-to-peer ou des architectures maillés qui exigent une simulation de réseaux très larges.
Outre NS-2, plus d’une douzaine de simulateurs des réseaux sont actuellement utilisés dans les universités et l’industrie. Parmi les simulateurs les plus connus nous choisissons le simulateur NS-3 pour réaliser notre travail.
Des travaux de comparaison entre NS-2 et NS-3 ont été réalisés et ont montré que NS-3 est meilleur que NS-2 de plusieurs façons, notamment:
• Un noyau logiciel remanié pour améliorer l’évolutivité et l’extensibilité, y compris le soutien pour les simulations distribuées.
• Une architecture pour soutenir la création de logiciels réseaux open source tels que les machines virtuelles, les piles de protocoles, les démons de routages et de paquets analyseurs de traces.
• La mise à disposition de nouveaux modèles sans fil pour IEEE 802.11, et éventuellement d’autres modèles tels qu’IEEE802.16.
• Une capacité de réseau réorganise l’émulation,
• Une version révisée de recherche et de collecte de statistiques.
En outre, NS-3 regroupe un grand nombre de mécanismes fondés sur le succès et évite les échecs de NS-2.
Présentation du Simulateur NS3
NS-3 est conçu pour remplacer le NS-2 courant populaire. Toutefois, NS-3 n’est pas une version mise à jour de NS2. NS-3 est un nouveau simulateur et il n’est pas rétro-compatible avec NS-2.
NS-3 est un simulateur réseau à évènements discrets. Il vise à remplacer son prédécesseur NS-2, écrit en C++ et OTcl (version orientée objet de Tcl), pour tenter de remédier à ses limites (mauvaise gestion des traces ou encore, plus gênant l’utilisation de multiples interfaces sur un noeud…). NS-3 est écrit en C++ et Python, et peut être utilisé sur les plateformes Linux/Unix, OS X (Mac) et Windows.
Son développement a d’abord commencé en Juillet 2006, et devait durer quatre ans, Il est financé par les instituts comme l’Université de Washington, Georgia Institute of Technology et le Centre de l’ICSI pour la recherche sur Internet, la première version majeure publique et stable a été publiée en juin 2008.
Les développeurs de NS-3 ont décidé que l’architecture de simulation devait être remaniée complètement en partant du zéro. Dans cette optique, l’expérience tirée de NS-2 doit être associé avec les progrès des langages de programmation et du génie logiciel. L’idée de la rétrocompatibilité avec NS-2 a été abandonné dés le départ. Cela libère NS-3 de contraintes héritées de NS-2 et permet la construction d’un simulateur qui est bien conçu depuis le début.
Terminologie et abstractions
Il est important de bien comprendre le sens des termes employés au sein du simulateur, ainsi que les abstractions qui ont été faites.
NS-3 utilise des termes largement employés dans le domaine des réseaux, mais qui peuvent avoir une signification particulière au sein du simulateur. Voici les principaux :
• Un nœud Node :
Représente tout élément de réseau. La composition d’un Node peut être gérée (ajout de composants, de protocoles, d’applications).
• Une application Application :
Représente un code exécuté par un utilisateur. Ce code peut être nécessaire au déroulement d’une simulation. L’échange de paquets durant une simulation nécessite par exemple la description d’une Application au sein des nœuds participants (par exemple, UdpEchoClientApplication d’un côté et UdpEchoServerApplication de l’autre pour réaliser une application en mode client/serveur). NS-3 ne fait pas de distinction entre les “applications système” (souvent exécutées par le noyau) et les applications des utilisateurs (exécutées dans le user-space). Les applications peuvent ensuite être attachées à un Node.
• Un canal de communication Channel
Représente le lien qui relie des nœuds, ou plus exactement les NetDevices installés dans les nœuds. Des spécialisations de cette classe sont définies, comme par exemple CsmaChannel pour modéliser un lien Ethernet utilisant CSMA, ou encore WifiChannel pour modéliser un lien WiFi.
• Une interface de communication, ou interface réseau :
Appelée NetDevice, qui modélise à la fois l’équipement (carte réseau) et le pilote dont un ordinateur a besoin pour pouvoir communiquer avec d’autres. Des spécialisations de NetDevice sont fournies, comme par exemple CsmaNetDevice qui simule une carte réseau Ethernet et peut être reliée à un CsmaChannel, ou encore WifiNetDevice pour un lien à un canal de type WifiChannel.
Pour établir une connexion entre deux nœuds, il faut alors :
Équiper chaque nœud de NetDevice.
Configurer la couche protocolaire sur chaque nœud (élément non représenté qui se situe entre les applications et les NetDevice).
Dans le cas d’une couche protocolaire TCP/IP, configurer les adresses MAC et IP sur chaque NetDevice.
Créer le canal de communication correspondant.
Connecter chaque NetDevice au canal de communication.
Figure 4.2 : Établissement d’une connexion entre deux nœuds
S’il s’agit de connecter un grand nombre de nœuds les uns avec les autres, ce processus peut être très lourd. NS-3 fournit des TopologyHelpers pour faciliter ce genre de tâches. Les classes représentant ces objets sont dans le dossier NS- 3.10/src/helper. On y trouve par exemple :
un CsmaHelper pour instancier des CsmaNetDevice sur un nœud, instancier un CsmaChannel et les connecter.
un WifiHelper, qui a la même fonction que le CsmaHelper, mais pour une interface et un canal qui utilisent le WiFi.
un InternetStackHelper pour instancier au sein d’un nœud la couche protocolaire IP/TCP/UDP et des fonctions de routage (IPv4/IPv6).
Modules du simulateur NS3 :
NS-3 fournit différents modules qui peuvent être modifiés et effectivement utilisés. L’organisation du logiciel de NS-3 est illustrée dans la figure 4.4. Voici les modules de base de NS-3 :
• Core Module:
Module de base, il est indépendant, il permet la création d’une structure de classes hiérarchiques dérivant de la classe Object de base. Cette hiérarchie possède plusieurs fonctionnalités conçus spécialement pour répondre aux besoins de la simulation.
Parmi lesquels : l’agrégation d’objets, l’enregistrement actif(TypeId) avec les attributs publiques…etc.
• Common Module :
Ce module gère les actions liées à la génération et la réception des paquets, ce module est centré sur la classe Packet utilisé pour la simulation de réseau au niveau packet. L’utilisation de cette dernière classe est conçu de façon à optimiser la gestion de la mémoire en utilisant la méthode (copy on write) et en donnant la possibilité de manipuler des paquets vides et dont la taille est le paramètre suffisant et nécessaire pour la simulation. La plupart des autres modules ont utilisé les fonctionnalités de ce module.
• Simulator Module :
Les Simulations des événements sont gérées par le module de simulation. Il prévoit explicitement la possibilité de planifier des événements à des moments différents et ensuite d’exécuter ces événements. La classe Time représente le temps simulé à haute résolution en utilisant un entier de 128 bits. Cette classe est la classe la plus importante du simulateur.
• Mobility Module :
Ce module permet de définir la position des nœuds et associe un modèle de mouvement aux agents de la simulation. NS-3 fournit sept modèles de mobilité.
• Node Module
La classe Node peut contenir plusieurs NetDevices. Chaque NetDevice est attaché à un channel par lequel il envoie et reçoit des paquets.
Un nœud peut contenir plusieurs gestionnaires de protocole, qui acceptent les paquets reçus par le NetDevice. Pour lancer la transmission des paquets, chaque nœud peut également contenir une liste d’applications.
Figure 4.3 : Architecture du nœud NS-3
• Helper Module :
Ce modèle peut être considéré comme un emballage de haut niveau. Il facilite la construction des scénarios complexes de simulation et l’installation des différents modules dans des agents différents.
• Application Module :
Certaines applications sont intégrées et fournies par NS-3. Elles sont installées dans les nœuds et peuvent être démarrées/arrêtées à des moments précis dans la simulation.
• InternetStack Module :
Les classes de ce module définissent les protocoles TCP/IP des couches réseaux trois et quatre (TCP/IP).
• Devices Module :
Les composants de ce type représentent des périphériques réseaux et transmettent des paquets via un canal virtuel à d’autres instances de la même classe NetDevice.
• Routing Module :
Deux algorithmes de routage sont disponibles dans NS-3. Le premier appelé GlobalRouter, utilise des routes statiques et le deuxième met en œuvre le protocole OLSR pour les réseaux dynamiques ad-hoc.
Figure 4.4:Les principaux modules de NS3
Modèles et mise en œuvre de réseaux Wifi dans ns-3
Pour mettre en œuvre des réseaux Wifi (802.11) dans NS-3, tout doit être décrit, des couches les plus basses (canal de communication) aux éléments à mettre en œuvre dans les nœuds (interfaces, couches physique et MAC qu’elles utilisent).
Nous avons détaillé quelques classes de base et les modèles fournis dans NS-3.
Classes de base :
• WifiNetDevice :
Tout d’abord, un nœud souhaitant communiquer en Wifi doit disposer d’une WifiNetDevice. Cette classe, qui hérite de la classe générique NetDevice, est définie dans le fichier /src/devices/wifi/wifi-net-device.h et implémentée dans le fichier /src/devices/wifi/wifi-net-device.cc. En plus des éléments caractérisant une NetDevice (notamment le nœud auquel elle est attachée), elle est caractérisée par :
Un modèle de la couche physique WifiPhy Un modèle de la couche MAC WifiMac
Un WifiRemoteStationManager, qui maintient une liste des stations connectées au réseau sans fil, des informations sur leur état, et qui incarne un algorithme d’adaptation du débit.
• WifiChannel :
Cette WifiNetDevice doit être connectée à un WifiChannel. La classe YansWifiChannel est la seule implémentation d’un modèle de canal wifi. Elle est caractérisée par :
Une liste contenant des pointeurs vers les modèles de couche physique de chaque nœud connecté, qui doivent être du type YansWifiPhy.
Un modèle de perte/atténuation lors de la propagation.
Un modèle de délai de propagation.
La classe WifiChannel peut être utilisé pour relier un ensemble d’interfaces réseau WifiNetDevice. La classe WifiPhy est la partie dans le WifiNetDevice qui reçoit les bits du canal. Le WifiPhy modélise un canal 802.11 en termes de fréquences, de modulation, de débit binaire et interagit avec le PropagationLossModel et PropagationDelayModel trouvés dans le canal. La couche physique peut être dans l’un des trois états : TX (Transmission), RX (Reception) ou IDLE (neutre).