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

 > 

Effets de la mobilité sur les protocoles de routage dans les réseaux ad hoc


par Bécaye DIOUM
Université MOULOUD MAMMERI de TIZI OUZOU (Algerie) - Ingenieur d'état en Systeme d'information avancé 2007
  

précédent sommaire suivant

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

II.2 les simulateurs

Beaucoup de simulateurs pour les réseaux informatiques ont été développés pour répondre aux attentes des utilisateurs. Parmi ces simulateurs, nous pouvons citer :

· OPNET [KKa] : un simulateur à caractère commercial. Il fournit des outils optimisés pour créer et tester des modèles de réseaux. Il utilise un paradigme de modélisation hiérarchique dans chaque couche pour aider les utilisateurs à effectuer des simulations à évènement discrets de grande exactitude, et à récupérer les métriques voulues. OPNET est facile à utiliser et est relativement extensible.

· GloMosim[KfK05]: un simulateur basé sur un ensemble de modules et de bibliothèque chacune d'elles simule un aspect particulier des réseaux filaires ou sans fil sur une couche particulière du modèle OSI. GloMoSim est développé en langage PARSEC (Parallel Simulation Environnement for Complex Systems) qui permet la simulation parallèle des processus via les messages et les entités indépendantes. GloMoSim est extensible vers d'autres modèles via le langage PARSEC.

· QualNet [TNS] : produit commercial dérivé de GloMoSim.

· INSANE : le simulateur INSANE est conçu dans le but de tester les algorithmes IP sur ATM avec un trafic réel dérivé d'un trafic empirique mesuré.

· NetSim [ECE02] : ce simulateur est conçu pour fournir des simulations détaillées de ETHERNET incluant la détection des collisions.

· OMNeT++ [ECE02] : distribution libre, modulaire, orienté objet et à événements discrets écrit en C++. Il est conçu pour but général. Il permet la spécification de modèles à l'aide du langage NED.

· NS2 [TCL04] : simulateur à événements discrets, écrit en C++. Il est le simulateur le plus célèbre dans le domaine de la simulation des réseaux. Le projet de NS2 a débuté en 1989 avec le simulateur réseau REAL, et a connu plusieurs extensions via les

contributions de la communauté scientifique. Il permet des simulations filaires et sans fil. C'est ce dernier simulateur que nous avons utilisé pour nos simulations.

II.3 Philosophie de NS2

L'application NS est composée de deux éléments fonctionnels : un interpréteur et un moteur de simulation. Au moyen de l'interpréteur l'utilisateur est capable de créer le modèle de simulation, ce qui revient à assembler les différents composants nécessaires à l'étude. Les composants du modèle de simulation sont appelés objets ou encore instances de classe. Le moteur de simulation quant à lui effectue les calculs applicables au modèle préalablement construit par l'utilisateur via l'interpréteur [KfK05] [PaE99].

NS est un outil de simulation de réseaux de données. Il est développé en C++ avec une interface textuelle utilisant le langage OTcl (Object Tool Command Language) qui est une extension objet du langage de commande TCL (Tool Command Language).

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 °uvre 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 des outils annexes, à titre d'exemple le xgraph et autres. Le NS2 est aussi accompagné d'outils de visualisation graphique, le nam, permett ant

D'ob server graphiquement le comportement des objets durant la simulation.

a. Le langage TCL (Tool Command Language)

Tcl est l'acronyme de "Tool Command Language" (langage de commandes outils). Tcl est en fait divisé en deux parties : un langage et une bibliothèque.

Tcl est un langage de programmation dont le but est de passer des commandes à des programmes interactifs tels que des éditeurs de texte, des débogueurs et des interpréteurs shell. Il possède une syntaxe simple et il est lui-même programmable : les utilisateurs de Tcl peuvent en effet écrire des procédures pour créer des commandes plus puissantes que celles fournies par l'ensemble préconstruit. La bibliothèque Tcl est constituée d'un analyseur syntaxique du langage Tcl, de routines implémentant les commandes prédéfinies de Tcl, et de procédures permettant à chaque application d'ajouter à Tcl des commandes additionnelles qui lui sont spécifiques. Le programme applicatif génère des commandes Tcl et les passe à l'analyseur syntaxique de Tcl pour l'exécution.

· Tcl fournit une syntaxe standard : une fois que les utilisateurs connaissent Tcl, ils seront capables de passer facilement des commandes à n'importe quelle application basée sur Tcl.

· Tcl parvient à une bonne « programmabilité ». Tout ce qu'une application nécessite est l'implémentation de quelques commandes spécifiques de bas niveau. Tcl fournit de nombreuses commandes utilitaires et une interface générique de programmation pour construire des procédures de commandes complexes. En utilisant Tcl, les applications ne nécessitent pas de ré-implémentation de ces caractéristiques.

· Les extensions à Tcl, telles que la boîte à outils Tk, fournissent des mécanismes pour la communication entre applications, en envoyant des commandes Tcl dans un sens et dans l'autre. La structure commune du langage Tcl rend plus aisée la communication entre applications.

Toutes applications qui utilisent tcl créent et utilisent un interpréteur tcl. Lorsque l'on tape ns, une série d'initialisation est faite, puis l'application passe en mode interactif, c'est-à-dire que l'interpréteur est prêt à recevoir une nouvelle commande; et on peut entrer des commandes tcl. Le retour à la ligne d'une commande provoque son exécution ; deux commandes sur une même ligne sont séparées par un point virgule.

Construire une application avec un interpréteur Tcl revient à inclure une bibliothèque Tcl qui définit les commandes de bases de Tcl dans l'application. Comme nous l'avons dit, l'interpréteur effectue l'analyse syntaxique et appelle la fonction C correspondant à la commande Tcl. Ajouter une commande Tcl consiste à établir un lien entre un mot et une fonction C. Le mot sera le nom de la commande Tcl. La fonction C est définie dans le code source de l'application. Au démarrage, l'application procède dans son main() aux initialisations nécessaires et passe la main à l'interpréteur. L'application passe en mode interactif à chaque commande tapée par l'utilisateur, la fonction C correspondante est appelée afin de réaliser la commande demandée.

b. le OTcl :

OTcl est une extension orientée objet de Tcl. Les commandes Tcl sont appelées pour un objet. En OTcl, les classes sont également des objets avec des possibilités d'héritage. La définition d'une classe commence par la directive Class. Les fonctions et les attributs d'une classe s'installent par la suite par les commandes instvar et insproc. L'utilisation instproc définit les méthodes de la classe de manière assez semblable à C++. Lors d'une instanciation en OTcl, le

constructeur de la classe appelle init{ } pour les initialisations et les traitements propres à l'objet. La méthode init{} est optionnelle, c'est à dire que si l'instanciation ne nécessite aucune initialisation il n'est pas nécessaire de la définir. On peut l'appeler également variable d'instance. La valeur de l'attribut appartient à l'objet. La commande instvar est utilisée dans une méthode pour mettre en correspondance une variable d'instance avec une variable locale à la méthode. Il n'est pas nécessaire de faire une déclaration préalable au niveau de la classe. Une déclaration d'une variable d'instance se fait à l'intérieur d'une méthode membre. Par exemple, pour déclarer la variable d'instance, il suffit d'écrire "$self instvar x". Le schéma général de déclaration d'une classe est le suivant:

Class <Nom de classe>

<Nom de classe> instproc init {args} {

# constructeur

...

}

<Nom de classe> instproc methode1 {args} {

$self instvar variable1 # variable membre de la classe

...

}

En NS, les objets sont créés par la commande new <nom de la classe> qui retourne une référence sur l'objet créé. Par exemple, la création d'une instance de Simulator est effectuée par la commande suivante:

set ns [new Simulator]

Les objets topologiques (noeud et lien) ont une syntaxe de création quelque peu différente. On n'utilise pas la commande new{} mais une procédure de la classe Simulator. Dans les deux cas, la classe est uniquement OTcl et la référence des instances de ces classes est mémorisée dans un tableau de la classe Simulator. Par exemple la création d'un noeud est effectuée avec la syntaxe suivante: $ns node.

Une fois créés, les objets sont manipulables avec les méthodes dont ils disposent. Ces méthodes proviennent de leur classe et de leurs super-classes. L'appel d'une méthode est effectué via l'objet. Le nom de la méthode est le premier argument qui suit la référence de l'objet comme c'est le cas pour créer un noeud. La méthode appelée est la première trouvée dans l'arbre d'héritage de l'objet. Les affectations sur les variables membres se font par la commande set{} et suivent le format général des commandes OTcl:

<référence instance> set <instance variable> <valeur>

précédent sommaire suivant






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








"I don't believe we shall ever have a good money again before we take the thing out of the hand of governments. We can't take it violently, out of the hands of governments, all we can do is by some sly roundabout way introduce something that they can't stop ..."   Friedrich Hayek (1899-1992) en 1984