OMNeT++ [http://www.omnetpp.org/] est une plateforme
de simulation, modulaire,
open source, orienté
objet et à événements discrets écrit en C++. Elle offre un IDE basé sur
Eclipse, un environnement d'exécution graphique, et une foule d'autres outils. Elle a été conçue pour créer
des simulateurs pour les réseaux de communication, les systèmes multi
processeurs, et d'autres systèmes distribués. Le développement d’OMNeT++ a
commencé en 1992 par Andras Vargas à l'université de
Budapest. Actuellement, Ce projet 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.
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 (ned : Network Description). La communication entre les différents modules se fait à
travers les échanges de messages (.msg). 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.
Q1.
Quelle est la différence entre un
résultat scalaire et un résultat vectoriel
La version de d’OMNeT++ la plus à jour actuellement est la version 5.5.1. Le guide d’installation est disponible sur ce document http://omnetpp.org/doc/omnetpp/InstallGuide.pdf
Pour lancer l’IDE d’OMNeT++, il suffit d’utiliser la commande
$ ./omnetpp
Le système à réaliser consiste en une source qui fournit un nombre limité de tâches (job) à un sous-système fermé de files d’attente. La topologie est la suivante :
Pour créer, configurer, exécuter et analyser ce système, il faut suivre pas-à-pas (et répondre aux questions en même temps) le screencast : http://www.omnest.com/webdemo/ide/demo.html
Q1.
Quelle est la signification de la
valeur 0 attribuée au source.InterArrivalTime ?
Q2.
Expliquer l’expression
suivante : exponential(${serviceMean=1..3 step 1}).
Q3.
Qu'est-ce qu'un « seed » ?
La topologie à réaliser
est la suivante :
Le modèle contient 3
modules :
1. Le module gen génère des Jobs et il les envoie instantanément au module fifo. Le temps qui sépare deux générations suit une loi exponentielle de paramètre λ jobs/s.
2. Les Jobs reçus par le module fifo sont stockés dans la file d’attente si le serveur est occupé. Le temps de service suit une loi exponentielle de paramètre μ jobs/s.
3.
Les jobs traités sont
envoyés au module sink pour être détruits.
Les paramètres de la simulation
sont résumés dans la table suivante
Paramètre |
Valeur |
|
4s, 8s, 12s, 16s, 20s |
|
12s |
Capacité de la file
d’attente |
∞ (capacité par
défaut sous OMNeT++) |
Nombre de serveurs |
1 |
Type de la file
d’attente |
FIFO |
Durée de la simulation |
200000s |
Nombre de jobs |
∞ (valeur par
défaut sous OMNeT++) |
Q1.
Quelles sont les valeurs moyennes
pratiques et théoriques de : nombre de jobs dans la file fifo, temps
d’attente dans la file fifo, temps de séjours, Taux
d’occupation, nombre de jobs droppés ?
Q2.
Comparer les résultats pratiques et
théoriques. Comment expliquer le peu de différence ?
Q3.
Comment améliorer les résultats de la
simulation pour converger le plus possible vers les résultats théoriques ?