Université
TP RéseauxA.Mobiles
Mira – Master
Bejaia 2 ASR 2024/ 2025
Faculté des Sciences Exactes Année Universitaire : 2024-2025
Département d’Informatique Master 2 ASR
TP Réseaux Mobiles
Série de TP N°01 – Introduction à OMNeT++
Objectif du TP :
L’objectif de ce TP est :
o Comprendre le fonctionnement de OMNeT++,
o Installer une version de OMNeT++ (omnetpp-5.6.2) sur Windows,
o Créer un projet OMNeT++ .
Partie I: Aperçu sur OMNeT ++
OMNeT++ (Objective Modular Network Testbed in C++) est un environnement de simulation de réseaux
à événements discrets. Il est basé sur une architecture modulaire et orientée objet, dont les modules sont
écrits en C++.
OMNeT++ est capable de simuler tous les types de réseaux filaires et sans fil, y compris les réseaux
cellulaires, les réseaux WiFi IEEE 802.11b (Wireless Fidelity), les réseaux de capteurs sans fil WSN
(Wireless Sensor Networks), les réseaux ad hoc véhiculaires VANET (Vehicular Ad-hoc Networks), les
réseaux corporels sans fil WBAN (Wireless Body Area Networks), etc.
I.1. Composants d’ OMNeT++ : Les principaux composants sont :
Bibliothèque du noyau de simulation (kernel library) C++,
Le langage de description de la topologie NED (NEtwork Description),
IDE (Integrated Development Environment) de simulation puissant basé sur la plateforme Eclipse,
Interface graphique d'exécution de simulation interactive (Qtenv),
Interface de ligne de commande pour l'exécution de la simulation (Cmdenv),
Utilitaires (outil de création de makefile, etc.),
Frameworks (INET, SimuLTE, OverSim, Castalia, etc.) qui fournissent une bibliothèque de modèles
de simulation standard pour divers protocoles liés aux couches de la pile TCP/IP des réseaux filaires
et sans fil,
Documentation.
I.2. Modélisation de simulation dans OMNeT++
Les modèles OMNET++ constituent en un ensemble de modules hiérarchiquement emboités comme
illustrés dans la figure 1.
Il y a quatre entités de base dans une simulation :
Module simple (simple module) : Brique de base,
Canal (channel) : Interconnecter les modules,
1/7
TP Réseaux Mobiles Master 2 ASR 2024/ 2025
Module composé (compound module),
Réseau ou le module système (network).
Figure 1 : L’architecture modulaire de OMNeT++
Important : L’exécution d’un projet OMNeT++ peut s’effectuer en mode graphique ou en mode console.
s
Les modules simples et les modules composés communiquent entre eux via la transmission de messages
via un canal et y accèdent à travers des ports (i.e. « gates ») qui sont des interfaces de modules d'entrée/sortie.
Les feuilles de l’architecture OMNeT++ sont les modules simples qui représentent les classes C++.
Important : Tout module simple doit être implémenté comme une sous-classe de la classe cSimpleModule
Le processus de création d'un programme de simulation exécutable est illustré dans la figure 2 ci-dessous :
Figure 2 : Composants et fonctionnement de la simulation OMNeT++
2/7
TP Réseaux Mobiles Master 2 ASR 2024/ 2025
I.3. Fichiers constituants un projet OMNeT++
Pour tout projet de simulation lié aux réseaux câblés ou sans fil dans OMNeT++, les quatre types de fichiers
suivants sont essentiellement nécessaires :
Les fichiers avec l’extension (.ned), écrits avec le langage NED pour décrire la topologie et la
structure d’un réseau,
Les fichiers de code :
o Les fichiers avec l’extension (.cc), écrits avec le langage C++ pour l’implémentation des
algorithmes (comportement des modules),
o Les fichiers d’en tête avec l’extension (.h),
Le fichier de configuration ou encore d’initialisation avec l’extension (.ini),
Les fichiers de message avec l’extension (.msg).
Important : Pour chaque module simple correspond un fichier .cc et un fichier.h
La figure 3 ci-dessous illustre l’héritage des classes C component, module et channel :
Figure 3 : Héritage des classes C sous OMNeT++
Deux méthodes sont définies par la classe cSimpleModule :
Initialize () : sera invoquée une seule fois lors de l’instanciation d’un objet,
HandleMessage () : sera invoquée à chaque fois un message arrive au module.
Partie II: Installer OMNeT++
o Téléchargez le code source OMNeT++ depuis http://omnetpp.org. Assurez-vous de sélectionner l'archive
spécifique à Windows, nommée omnetpp-5.6.2 src-windows.zip,
o Copiez l'archive OMNeT++ dans le répertoire où vous souhaitez l'installer,
o Choisissez un répertoire dont le chemin complet ne contient aucun espace, par exemple, ne placez pas
OMNeT++ sous Program Files,
o Extraire le fichier zip,
3/7
TP Réseaux Mobiles Master 2 ASR 2024/ 2025
o Lorsque vous regardez dans le nouveau répertoire, vous devriez voir des répertoires nommés doc, images,
include, tools, etc., et des fichiers nommés mingwenv.cmd, configure, Makefile et autres.
Pour installer l’IDE, ouvrez le répertoire omnetpp-5.6.2,
o Cherchez le script de commande Windows Mingwenv.cmd et double-cliquez dessus pour le démarrer,
une console devrait s’afficher,
o Appuyez sur n'importe quelle touche pour continuer, puis attendez,
o Tapez la commande suivante : ./configure et attendez que la configuration soit terminée,
o Tapez ensuite la commande suivante : make et attendez que la compilation soit terminée,
o Tapez la commande suivante : omnetpp. Ceci va démarrer le simulateur OMNeT++.
Pour pouvoir démarrer OMNET à partir du Bureau, vous devez faire les configurations suivantes :
o Allez au répertoire omnet, repérez le fichier exécutable omnetpp.exe dans le répertoire IDE,
o Faites un clic droit dessus et choisissez : envoyer vers bureau pour créer un raccourci sur le bureau,
o Allez sur les paramètres avancés du système Windows, cliquez sur Variables d’environnement, choisissez
la variable PATH et ajouter lui le chemin suivante : <répertoire omnet>/bin . (exemple de path :
E:\Omnet\omnetpp-5.6.2\bin),
o À présent, vous pouvez démarrer OMNeT++ directement à partir du bureau.
Partie III : Créer un premier projet OMNeT++
III.1. Le modèle du réseau
Commençons par un « réseau simple Net2Nodes1» composé de deux nœuds N0 et N1 comme il est
décrit sur la figure 2. Les nœuds vont faire quelque chose de simple : le nœud N0 va créer un message, envoie
ce message à N1, et les deux nœuds vont continuer à transmettre le même message dans les deux sens.
Figure 2 : Le modèle du réseau Net2Nodes1
Afin de créer ce projet, exécutez les étapes suivantes :
o Créez un répertoire sur votre dossier personnel et nommez le TP_RM,
o Démarrez OMNET++ et spécifiez le répertoire créé précédemment comme espace de travail,
o Créez un nouveau projet : (file/new/Omnet++ Project) et nommez le TP1, choisissez « projet vide »
comme Template, puis cliquez sur terminer,
o Une fois le projet crée, l’explorateur de projet à gauche va créer une arborescence avec le nom du projet
(TP1) comme racine,
4/7
TP Réseaux Mobiles Master 2 ASR 2024/ 2025
o Vous pouvez voir les fichiers contenus dans TP1 en cliquant sur le petit triangle situé à côté du nom.
III.2. L’ajout du fichier NED
o Pour commencer, éditez un fichier Net2Nodes1.ned pour décrire la topologie du réseau Net2Nodes1,
o Faites un clic droit sur la racine TP1 ensuite : new/Network Description File (NED),
o Nommez le fichier «Net2Nodes1 », choisissez « fichier vide », et cliquez sur suivant ou terminer,
o Copiez le code source dans le fichier crée,
o Node1 est un module simple ayant deux ports (in et out) à implémenter,
o N0 et N1 sont des instances du module Node1.
III.3. Création de classe Node1
o Faites un clic droit sur la racine TP1 ensuite : new/Class (Omnet++),
o Nommez le Node1. Deux fichiers seront créés Node1.h et Node1.cc,
o La méthode de programmation la plus conseillée et professionnelle, c’est de déclarer la classe dans un
fichier header (Node1.h) et définir les membres de la classe dans un fichier source (Node1.cc).
o Pour simplifier, dans ce projet, nous allons utiliser seulement le fichier Node1.cc. C’est-à-dire qu’on va
déclarer la classe à l’intérieur et on définit les membres de la classe à l’extérieur, dans le même fichier,
o Copiez ce code source dans le fichier Node1.cc.
Le contenu du fichier Net2Nodes1.ned (Source/Design)
simple Node1 //ensuite Créer classe Node1 dans le fichier Node1.cc
{
gates:
input in;
output out;
}
// Two instances (N0 and N1) of Node1 connected both ways.
// N0 and N1 will pass messages to one another.
network Net2Nodes1
{
submodules:
N0: Node1;
N1: Node1;
connections:
N0.out --> { delay = 100ms; } --> N1.in;
N0.in <-- { delay = 100ms; } <-- N1.out;
}
Le contenu du fichier Node1.cc
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class Node1 : public cSimpleModule
{
protected:
virtual void initialize() ;
virtual void handleMessage(cMessage *msg) ;
};
5/7
TP Réseaux Mobiles Master 2 ASR 2024/ 2025
Define_Module(Node1);
void Node1::initialize()
{
if (strcmp("N0", getName()) == 0) {
cMessage *msg = new cMessage("BonjourMsg");
send(msg, "out"); }
}
void Node1::handleMessage(cMessage *msg)
{
send(msg, "out");
}
III.4. Création du fichier INI
o Faites clic droit sur la racine TP1 ensuite : new/Initialization file (ini),
o Nommez le omnetpp,
o Copiez ce code source dans le fichier crée.
Le contenu du fichier omnetpp.ini
[General]
network = Net2Nodes1
III.5. Compilation et lancement de la simulation
o Pour compiler le projet : TP1/Build Project,
o Pour lancer la simulation : Ouvrez le fichier omnetpp.ini, allez dans le menu, cliquez sur Run As/
OMNeT++ Simulation,
o Au lancement de la simulation, deux fenêtres principales s’ouvrent, une qui va montrer le déroulement
graphique du scénario et l’autre va afficher toutes les informations et les logs du scénario,
o Pour commencer le scénario, cliquez sur Run (Fast, Express..).
III.6. Observation des évènements
Spécifiez record-eventlog = true dans le fichier omnetpp.ini, ou même utilisez le bouton « eventlog
recording » dans l'environnement d'exécution graphique Qtenv après le lancement. Le répertoire des résultats
« results » dans le dossier TP contient le fichier .elog. Le fichier peut être analysé avec l'outil diagramme de
séquence dans l'IDE.
6/7
TP Réseaux Mobiles Master 2 ASR 2024/ 2025
III.7. Amélioration de l’interface graphique du modèle
Modifiez le modèle pour obtenir le design illustré dans la figure ci-contre.
o Dans la fenêtre Design du fichier Net2Nodes1.ned,
o Faites clic droit sur le module Node1, choisissez Properties Apparence
o Pour l’image, attribuez l’icône « block/routing»
o Faites un clic droit sur les sous-modules, N0 puis N1, pour choisir la couleur
de l’icône, « cyan » pour N0 et « gold » pour N1,
o Compilez et exécutez le projet TP1.
III.8. Affichage des Logs
Nous voulons que N0, affiche dans le Log, un texte d’initialisation d’échange de messages avec N1. Pour faire
ceci, il faut rajouter le code source suivant dans la méthode Initialize :
EV << getName() << "Sending initial message\n";
Ensuite, lors de la réception du message, N0 et N1, affiche un texte de confirmation de réception du message.
Pour faire ceci, il faut rajouter le code source suivant dans la méthode HandleMessage :
EV << getName() << " Has received message `" << msg->getName() << "', sending it out again\n";
7/7