Vous êtes sur la page 1sur 83

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/299667695

Optimisation des Protocoles de Routage avec la méthode de Colonie de


Fourmis

Research · January 2007


DOI: 10.13140/RG.2.1.2913.0642

CITATIONS READS

0 5,695

3 authors, including:

EL-Hachemi Guerrout Khelifati Si Larabi


Ecole Nationale Supérieure d'Informatique Ecole Nationale Supérieure d'Informatique
41 PUBLICATIONS   126 CITATIONS    7 PUBLICATIONS   24 CITATIONS   

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

PERFORM View project

Optimization View project

All content following this page was uploaded by EL-Hachemi Guerrout on 05 April 2016.

The user has requested enhancement of the downloaded file.


Ministère de l’Enseignement Supérieur et de la
Recherche Scientifique

Institut National de formation en Informatique (I.N.I)


Oued-Smar, Alger

Mémoire de fin d’études


Pour l’obtention du diplôme d’ingénieur d’état en informatique
Option : Systèmes Informatiques

Thème :
Optimisation des Protocoles de Routage avec la méthode
de Colonie de Fourmis

Réalisé par :
Mr GUERROUT EL-Hachemi

Enc adré par :


Melle K. BENATCHBA
Mr S.L. KHELIFATI

Promotion: 2006/2007
Dédicace

À ma très chère mère et mon très cher père que je remercie très fort pour tous les
sacrifices qu'ils ont faits pour moi.

À ma sœur et mes frères qui m’ont donné leur soutien.

À ces personnes avec qui j’ai vécu le bonheur du mot "amitié"…

i
REMERCIEMENTS

Je tiens à remercier très chaleureusement mes promoteurs, Melle Karima


BENATCHBA et Mr Si Larabi KHELIFATI de m’avoir proposé ce sujet, de
leur disponibilité, leur sollicitude, leur gentillesse et leur simplicité et pour
avoir tout mis en œuvre pour que je puisse donner le meilleur de moi-même.

Je remercie également Mr Mouloud KOUDIL, enseignant chercheur à


L’INI, pour leur gentillesse.

Enfin, mes remerciements vont à ceux qui ont participés, plus ou moins
indirectement à ma thèse.

ii
Résumé

Les méthodes d’optimisation inspirées du comportement des insectes sociaux peuvent


être d’un apport considérable dans la résolution des problèmes de routage dans les réseaux
informatiques. Les performances d’AntNet, un algorithme basé sur les colonies de fourmis,
sont, au vu des résultats des simulations, meilleures que celles d’OSPF. Nous décrivons
dans ce mémoire trois stratégies inspirées d’AntNet que nous avons développées. Les trois
stratégies sont simulées sur OMNET++, un simulateur à événements discrets, et leurs
performances comparées à celles d’AntNet..

Mot Clés : routage, colonie de fourmis, optimisation

iii
TABLES DES MATIERES

REMERCIEMENTS ..................................................................................................... II 


TABLES DES MATIERES ......................................................................................... IV 
LISTE DES FIGURES ............................................................................................... VII 
LISTE DES TABLEAUX ......................................................................................... VIII 
INTRODUCTION GENERALE ................................................................................... 1 
CHAPITRE1.................................................................................................................... 2 
ROUTAGE ...................................................................................................................... 2 
1.  INTRODUCTION ................................................................................................... 3 
2.  CONCEPTS DE BASE DU ROUTAGE ................................................................ 3 
3.  ROUTAGE STATIQUE ET ROUTAGE DYNAMIQUE : ................................. 5 
4. LES PROTOCOLES DE ROUTAGE....................................................................... 6 
4.1. PROTOCOLES DE ROUTAGE A ETAT DE LIENS ........................................................... 6 
4.2. PROTOCOLES DE ROUTAGE A VECTEUR DE DISTANCES ............................................ 7 

5. CONFIGURATION DES ROUTEURS .................................................................... 8 


6.  ROUTES SPECIFIQUES DES HOTES ................................................................ 9 
7.  ROUTES PAR DEFAUT ........................................................................................ 9 
8.  REMISE DES DATAGRAMMES ......................................................................... 9 
CHAPITRE2.................................................................................................................. 11 
OSPF .............................................................................................................................. 11 
1.  LES SYSTEMES AUTONOMES ........................................................................ 12 
2.  LE PROTOCOLE OSPF ...................................................................................... 14 
2.1.  CARACTERISTIQUES D'OSPF [SIY 99] .............................................................. 14 
2.2.  FORMAT D’EN-TETE DES MESSAGES OSPF........................................................ 15 
2.3.  LES SOUS PROTOCOLES D’OSPF ....................................................................... 16 
2.3.1. Le protocole Hello ........................................................................................ 16 
2.3.2. Protocole d’échange ..................................................................................... 19 
2.4. INFORMATION D’ETAT DE LIAISON ........................................................................ 22 
2.5. LES LIAISONS DE ROUTEURS .................................................................................. 22 
2.6. LES LIAISONS DE RESEAU ...................................................................................... 23 
2.7. LES LIAISONS RECAPITULATIVES .......................................................................... 24 

2.8. LES LIAISONS EXTERNES........................................................................................ 24 

iv
CHAPITRE3.................................................................................................................. 26 
OPTIMISATION PAR COLONIE DE FOURMIS ................................................... 26 
1.  INTRODUCTION: ................................................................................................ 27 
2. COMPORTEMENT DES FOURMIS REELLES ................................................. 27 
2.1. L’EXPERIENCE A DOUBLES BRANCHES [STU 02A]................................................. 28 
2.2. L’EXPERIENCE DE L’OBSTACLE [DER 01] ............................................................. 29 

3. REPRESENTATION DU PROBLEME ................................................................. 29 


4. L'OPTIMISATION PAR COLONIE DE FOURMIS (ACO) .............................. 31 
4.1. ACTIVITE DES FOURMIS ......................................................................................... 31 
4.2. EVAPORATION DE LA PHEROMONE ........................................................................ 33 
4.3. ACTION DU DEMON ............................................................................................... 34 

5. L’APPLICATION DES COLONIES DE FOURMIS DANS LES RESEAUX


« ANTNET » ....................................................................................................................... 34 
CHAPITRE4.................................................................................................................. 36 
CONCEPTION ET MISE EN ŒUVRE ..................................................................... 36 
1.  INTRODUCTION ................................................................................................. 37 
2.  ANTNET [DHI 07]................................................................................................. 37 
2.1.  MODELISATION DU RESEAU [DHI 07] .............................................................. 37 

2.2.  STRUCTURES DE DONNEES D’UN NŒUD : ........................................................... 39 


2.3.  PRESENTATION DE L’ALGORITHME ANTNET ..................................................... 40 

3. STRATEGIES PROPOSEES .................................................................................. 45 


3.1. PREMIERE STRATEGIE (ANTNET A 2 PAS) .............................................................. 45 
3.2. DEUXIEME STRATEGIE (ANTNET PAR INONDATION).............................................. 46 
3.3. TROISIEME STRATEGIE (ANTNET+ANT2HOPS) ..................................................... 46 

4.  MISE EN ŒUVRE ................................................................................................ 48 


4.1. SCHEMA FONCTIONNEL DU LOGICIEL..................................................................... 48 
4.1.1. La couche 0 ................................................................................................... 49 
4.1.2. La couche 1 : ................................................................................................. 50 
4.1.3. La couche 2 : ................................................................................................. 50 

5. CONCLUSION.......................................................................................................... 51 
CHAPITRE5.................................................................................................................. 52 
TESTS ET RESULTATS ............................................................................................. 52 
1.  INTRODUCTION ................................................................................................. 53 

v
2. PERFORMANCE DE ANTNET A 2 PAS ET ANTNET PAR INONDATION
COMPAREE A ANTNET................................................................................................. 54 
3.  PERFORMANCE DE ANTNET+ANT2HOPS COMPAREE A ANTNET .... 55 
3.1. TAUX DE GENERATIONS DES SESSIONS .................................................................. 55 
3.2. VARIATION DE LA TAILLE DE FILE D’ATTENTE ....................................................... 57 
3.3. EXISTENCE OU NON D’UN NŒUD HOTSPOT : ........................................................... 60 
3.4. NOMBRE DE NŒUDS EN PANNE: ............................................................................ 61 
3.5. TAUX DE GENERATION DES PAQUETS : .................................................................. 62 

4. CONCLUSION.......................................................................................................... 63 
CONCLUSION GENERALE ...................................................................................... 64 
REFERENCES .............................................................................................................. 65 
ANNEXE A .................................................................................................................... 69 

vi
LISTE DES FIGURES

FIGURE 1.1. REPRESENTATION D’UN RESEAU INFORMATIQUE. ......................................................................................... 3 
FIGURE 1.2 : UN EXEMPLE DE TABLE DE ROUTAGE D’HOTE. ............................................................................................. 4 
FIGURE 1.3 : UN EXEMPLE DE TABLE DE ROUTAGE. ........................................................................................................ 5 
FIGURE 2.1 : DECOMPOSITION EN SYSTEMES AUTONOMES. .......................................................................................... 12 
FIGURE 2.2 : UN SA DIVISE EN TROIS ZONES. ............................................................................................................. 13 
FIGURE 2.3 : FORMAT D’EN‐TETE DES MESSAGES OSPF ............................................................................................... 16 
FIGURE 2.4 : STRUCTURE  D’UN  MESSAGE HELLO. ...................................................................................................... 17 
FIGURE 2.5 : CHAMP OPTION .................................................................................................................................. 17 
FIGURE 2.6 : STRUCTURE DE LA BASE DE DONNEES. ..................................................................................................... 19 
FIGURE 2.7 : STRUCTURE DU MESSAGE DE  MISE A JOUR DE L’ETAT DE LIAISON .................................................................. 22 
FIGURE 2.8 : STRUCTURE DE L’EN‐TETE DE LA LIAISON .................................................................................................. 22 
FIGURE 2.9 : INDIQUE LA STRUCTURE D’ENREGISTREMENT DE LA LIAISON DE ROUTEUR ....................................................... 23 
FIGURE 2.10 : STRUCTURE D’ENREGISTREMENT DE LA LIAISON DE RESEAU ....................................................................... 23 
FIGURE 2.11 : STRUCTURE D’ENREGISTREMENT DE LA LIAISON RECAPITULATIVE ................................................................ 24 
FIGURE 2.12 : STRUCTURE D’ENREGISTREMENT DE LA LIAISON EXTERNE .......................................................................... 25 
FIGURE 3.1. L’EXPERIENCE A DOUBLES BRANCHES [DOR 97] ........................................................................................ 28 
FIGURE 3.2. L’EXPERIENCE DE L’OBSTACLE [DER 03] .................................................................................................. 29 
FIGURE 3.3. META HEURISTIQUE ACO. .................................................................................................................... 31 
FIGURE 3.4. ACTIVITE DES FOURMIS. ........................................................................................................................ 34 
FIGURE 4.1.  LES STRUCTURES INTERNES DES LIENS D’ENTREE ET DE SORTIE D’UN NŒUD DU GRAPHE [DHI 07] ....................... 38 
FIGURE 4.2.  STRUCTURES DE DONNEES D’UN NŒUD K [DHI 07] .................................................................................. 39 
FIGURE 4.3. DEPLACEMENT D’UNE FANT [DIC 04] ..................................................................................................... 41 
FIGURE 4.4 : DETECTION D’UN CYCLE PAR UNE FANT [DHI 07]. .................................................................................... 42 
FIGURE 4.5 : LA BANT EMPRUNTE LE CHEMIN PRIS PAR LA FANT DANS LE SENS OPPOSE [DIC 04] ........................................ 43 
FIGURE 4.6 : MISE A JOUR DES TABLES M ET T PAR LA BANT[DIC 04] ............................................................................ 43 
FIGURE 4.7 : INDIQUE LES CHEMINS TRACE PAR LES FOURMIS A DEUX PAS DEPUIS SI‐>D ET SF‐>D. ........................................ 47 
FIGURE 4.8 : L’INTERFACE UTILISATEUR ..................................................................................................................... 51 
FIGURE 5.1 : CE SCHEMA  INDIQUE LE RESEAU NTT. .................................................................................................... 53 
FIGURE 5.2 : EVOLUTION DU TEMPS MOYEN DE ANTNET ET ANTNE+ANT2HOPS ............................................................. 56 
FIGURE 5.3 : EVOLUTION DE LA VARIANCE DE ANTNET ET ANTNE+ANT2HOPS ................................................................ 56 
FIGURE 5.4 : POURCENTAGE DE PAQUETS DELIVRES PAR ANTNET ET ANTNET+ANT2HOPS ................................................. 57 
FIGURE 5.5 : EVOLUTION DU TEMPS MOYEN EN FONCTION DE LA TAILLE DE LA FILE D’ATTENTE ............................................. 59 
FIGURE 5.6 : EVOLUTION DE LA VARIANCE EN FONCTION DE LA TAILLE DE LA FILE D’ATTENTE ................................................ 59 
FIGURE 5.7 : POURCENTAGE DE PAQUETS DELIVRES EN FONCTION DE LA TAILLE DE LA FILE D’ATTENTE ................................... 60 

vii
LISTE DES TABLEAUX

TABLEAU 2.1 : VALEURS POUR LE CHAMP TYPE DE L’EN‐TETE OSPF. ............................................................................... 16 
TABLEAU 2.2 : VALEURS PRISES PAR LE CHAMP TYPE DE LIEN. ........................................................................................ 20 
TABLEAU 5.0 : COMPARAISON DE ANTNET A 2 PAS, ANTNET PAR INONDATION ET ANTNET ............................................... 54 
TABLEAU 5.1 : VARIATION DE TAUX DE GENERATION DES SESSIONS ................................................................................. 55 
TABLEAU 5.2 :VARIATION DE LA TAILLE DE FILE D’ATTENTE. ........................................................................................... 58 
TABLEAU 5.3 : PERFORMANCE DE ANTNET ET ANTNET+ANT2HOPS AVEC ET SANS HOTSPOT DANS LE RESEAU. ...................... 61 
TABLEAU 5.4 : PERFORMANCE DE ANTNET ET ANTNET+ANT2HOPS AVEC CERTAINS NŒUDS EN PANNE. ............................... 62 
TABLEAU 5.5 : PERFORMANCE DE ANTNET ET ANTNET+ANT2HOPS EN FONCTION DU TAUX DE GENERATION DES PAQUETS. ..... 63 

viii
Introduction générale

INTRODUCTION GENERALE

Les protocoles de routage ont pour rôle de déterminer le plus court chemin en termes de
coût (temps, débit,…) entre deux stations dans un réseau. De nombreux protocoles ont été
développés. Ils sont classés en deux catégories : les protocoles à vecteur de distance, et les
protocoles à état de liens. La communauté scientifique s’intéresse à développer des
algorithmes de routage plus performants que ceux qui existent. Les méthodes
d’optimisation sont d’un intérêt qui n’est plus à démontrer dans ce genre de problème.
Inspirées du comportement des insectes sociaux, telles que les fourmis ou les abeilles, des
métaheuristiques ont été développées et appliquées à de nombreux problèmes
d’optimisation, entre autres, le problème du routage. Nous présentons dans ce mémoire une
étude détaillée d’AntNet, un algorithme de routage basé sur les colonies de fourmis. Les
résultats des simulations faites avec cet algorithme lui attribuent des performances plus
grandes que celles d’OSPF.
Nous nous sommes inspirés d’AntNet pour développer de nouvelles stratégies utilisant
les colonies de fourmis. Nous décrivons dans ce mémoire trois de ces stratégies. Nous
avons simulé AntNet et les trois stratégies sur OMNET++, un simulateur à événements
discrets.
Le présent mémoire est formé de quatre chapitres :
) Le premier chapitre est consacré au problème du routage dans les réseaux
informatiques.
) Le second introduit le protocole du routage OSPF, le plus utilisé dans les
systèmes autonomes.
) Le troisième chapitre présente l’optimisation par colonies de fourmis (ACO).
) Le quatrième est consacré à la conception et la mise en œuvre de notre approche.
Il décrit notamment les trois apporches développées.
) Le cinquième et dernier chapitre présente les tests et les résultats comparatifs
d’AntNet et des stratégies que nous avons développées.

1
Chapitre1

Routage

2
Chapitre1 Routage

1. Introduction

Un réseau informatique est un ensemble d'ordinateurs reliés entre eux et échangeant


des informations. Les données circulent dans un réseau sous forme de datagrammes
(paquets). Les datagrammes sont des données encapsulées : des données auxquelles on a
ajouté des en-têtes correspondants à des informations sur leur transport (telles que l'adresse
IP de destination, ...).

Les réseaux IP sont reliés entre eux à l'aide de routeurs. Les routeurs sont des périphériques
à commutation de paquets. Ils interprètent le format de l’en-tête IP de chaque datagramme
afin de choisir le meilleur chemin vers sa destination pour ce datagramme. La plupart des
routeurs IP commerciaux peuvent aussi être configurés pour router d'autres protocoles.

2. Concepts de base du routage


Le routeur est un périphérique opérant au niveau de la couche 3 du modèle OSI. Cette
couche est chargée, entre autres, des fonctions de routage. Il dispose de plusieurs ports,
deux au minimum. Il contient également une table, appelée table de routage, regroupant
une liste de réseaux et d'hôtes de destination. Cette table contient aussi des informations
sur la meilleure manière d'atteindre chaque destination. Dans un réseau, un routeur peut
être comparé à un carrefour (figure 1.1), et la table de routage à un panneau indicateur qui
donne les routes (les réseaux) joignables à partir de ce carrefour. Les datagrammes IP
arrivent sur un port du routeur. Le logiciel de routage IP examine l'en-tête du datagramme
pour déterminer la manière dont ce datagramme doit être transmis. Le routeur exploite
l'adresse de destination du datagramme et consulte la table de routage afin de choisir le
port de sortie du datagramme. A la différence d’un hôte, un routeur peut transmettre des
datagrammes IP provenant d'autres nœuds IP.
Nœuds

Connexions

Figure 1.1. Représentation d’un réseau informatique.

3
Chapitre1 Routage

Les figures 1.2 et 1.3 donnent un aperçu des tables de routages correspondant de leur
réseau respectif. Le réseau de la figure 1.2 contient trois routeurs. L'hôte A peut choisir
n'importe lequel des routeurs, mais il ne le fait pas de manière arbitraire. Il le fait en
consultant sa table de routage.

Figure 1.2 : un exemple de table de routage d’hôte.

La figure1.3 montre la table de routage du routeur RO dans un inter réseau constitué de


cinq réseaux et de cinq routeurs.

4
Chapitre1 Routage

Figure 1.3 : un exemple de table de routage.

3. Routage statique et routage dynamique :


Le routage permet d'aiguiller une trame émise par un nœud vers un nœud de
destination pouvant être situé sur un autre réseau. Il existe deux types de routage : le
routage statique et le routage dynamique.

Le routage statique consiste à entrer manuellement les informations dans la table de


routage. On associe à chaque adresse, le nom de l'interface du routeur ou l'adresse IP du
routeur voisin se situant sur la route vers ces réseaux de destination. Si le réseau global est
de grande taille, la configuration peut être fastidieuse et source d'erreurs. De plus,
lorsqu’un nouveau réseau est ajouté, il faut reconfigurer l'ensemble des routeurs. Enfin,
pour prévenir tout dysfonctionnement (panne d'un routeur, ligne coupée, etc.), il faut
effectuer une surveillance permanente et reconfigurer chaque routeur le cas échéant.
L'avantage, pour les petits réseaux, est qu'il ne nécessite aucun protocole de routage qui
pénaliserait le trafic.

Le routage dynamique, utilise des protocoles de routage pour assimiler


dynamiquement de nouvelles informations sur le routage. Chaque routeur procède
automatiquement (sans intervention humaine) à la configuration de sa table de routage. Les
interfaces d’un routeur possèdent chacune une adresse IP. Le routeur peut donc connaître

5
Chapitre1 Routage

les adresses des réseaux auxquels il est directement relié. De plus, étant directement au
contact des supports de communication, il peut établir un diagnostic sur l'état des liaisons.
Le routeur partage les informations qu’il a sur son voisinage immédiat avec les autres
routeurs. De proche en proche, les nouvelles se répandent à tous les routeurs du réseau.
L'intervention humaine se situe en amont, dans la définition de directives et de règles à
appliquer par les routeurs pour la diffusion des routes.

Les réseaux utilisent le plus souvent le routage dynamique. Le routage statique convient
pour des réseaux simples à la topologie immuable, ou à des fins de dépannage, lorsqu'il est
nécessaire d'effectuer des corrections manuelles à la table de routage.

Pour évaluer la qualité d’une route, chaque liaison du réseau est affectée d’une valeur,
la métrique. La métrique d’une route indique la charge de cette route. Plus cette valeur est
faible, meilleure est la route. Chaque protocole dispose de sa méthode de valorisation. On
peut trouver toute une série de composantes de métrique comme : le nombre de sauts, la
bande passante, le délai, la charge, la fiabilité et le coût.

4. Les protocoles de routage

Les protocoles de routage définissent la manière dont les routeurs échangent des
informations afin de déterminer la meilleure route jusqu'à une destination sur l'Internet. Il
existe deux types protocoles de routage : ceux dits à état de liens et ceux dits à vecteur de
distances.

4.1. Protocoles de routage à état de liens

Un protocole de routage à état de liens utilise la connaissance de la topologie du


réseau et du coût des différentes liaisons pour ses calculs. Chaque nœud du réseau diffuse à
l'ensemble de ses homologues l'identité des nœuds et la valeur des liaisons auxquelles il est
rattaché. Cette diffusion d'état de liens peut s'effectuer sans que les différents nœuds aient
initialement connaissance de l'existence de tous les autres nœuds du réseau. Un nœud doit
simplement connaître l'identité de ses voisins immédiats ainsi que la valeur des liaisons qui
le lient à eux. Il peut découvrir le restant de la topologie du réseau grâce aux informations
d'état de liens qui lui sont communiquées par ses voisins. Après un certain temps, appelé
temps de convergence, tous les nœuds disposent des mêmes informations sur le réseau,
chacun pouvant utiliser l'algorithme individuellement et obtenir ainsi les mêmes résultats
que ses homologues.

6
Chapitre1 Routage

Un protocole de routage à état de liens utilise un algorithme efficace qui porte le nom de
SPF1, ou bien le nom de son auteur Dijkstra [KUR 03]. L'algorithme de Dijkstra détermine
le parcours le moins onéreux entre un nœud (l'expéditeur), et tous les autres nœuds du
réseau. Le plus connu des protocoles de routage à état de liens est OSPF2.

4.2. Protocoles de routage à vecteur de distances


Un protocole à vecteur de distances utilise une table de distances tenue à jour au
niveau de chaque nœud. Cette table contient une ligne pour chaque destination possible et
une colonne pour chacun des voisins immédiats. Supposons qu'un nœud X souhaite
acheminer un paquet vers une destination Z via son voisin immédiat Y. L'entrée de la table
de distance du nœud X, Dx(Z,Y) correspond à la somme du coût de la liaison directe entre
X et Y, C(X,Y) et la valeur du parcours le moins onéreux actuel entre Y et Z, ce qui
conduit à l'expression :

Dx(Z,Y)=C(X,Y)+minw{DY(Z,w)}

Le terme minw est choisi parmi tous les voisins immédiats de Y (y compris X).

Cette équation donne une idée du type de communication de voisinage qui s'établit avec
l'algorithme à vecteur de distance, algorithme dans lequel chaque nœud doit connaître la
valeur du parcours le moins onéreux de tous ses voisins pour toutes les destinations
possibles. Dès qu'un nœud trouve un nouveau parcours moins onéreux vers une destination
donnée, il est chargé d'en informer ses voisins.

Un algorithme à vecteur de distances est de nature distribuée, itérative et asynchrone.


De nature distribuée parce que les calculs se font au niveau de chaque nœud, à partir des
informations fournies par les voisins immédiats, et les résultats sont partagés de la même
manière. De nature itérative, car ce processus se répète jusqu'à ce qu'il n'y ait plus
d'informations à échanger entre nœuds voisins. De fait, cet algorithme s'arrête de lui-
même. Enfin, de nature asynchrone dans la mesure où il n'impose pas à tous les routeurs de
travailler ensemble.

L'algorithme à vecteur de distances est décentralisé. Il n'a pas accès à des informations
globales. Les seules informations dont disposent les nœuds se limitent aux coûts des

1
Shortest Path First.
2
Open Shortest Path First.

7
Chapitre1 Routage

liaisons les reliant à leurs voisins immédiats et aux informations que ces derniers leur
communiquent. L'algorithme à vecteur de distances est utilisé par de nombreux protocoles
de routage, parmi lesquels les protocoles RIP et BGP de l'Internet, IRDP de l'ISO, IPX de
Novell et celui de l'ARPAnet d'origine.

Comme les protocoles de routage doivent échanger leurs messages dans un réseau IP, la
transmission se fait à l'aide de datagrammes IP. Les protocoles de routage peuvent
s'exécuter directement au-dessus de IP, comme le fait OSPF, au-dessus de UDP, un
protocole de couche de transport, comme le fait RIP (Routing Information Protocol), ou
au-dessus de TCP, un protocole de couche de transport, comme le fait BGP3.

Les protocoles de routage sont des clients de IP, TCP ou UDP ; on donc peut les
considérer comme une catégorie particulière de protocoles de la couche d'application.

5. Configuration des routeurs


Quel que soit le protocole de routage utilisé par un routeur, ce dernier doit toujours être
configuré manuellement afin qu'il puisse fonctionner dans un réseau. Chaque interface du
routeur est identifiée par une adresse IP. Il faut donc configurer manuellement les adresses
IP et les paramètres associés de chaque interface de réseau du routeur. Certains routeurs
commerciaux donnent la possibilité de définir ces paramètres dans un fichier pouvant être
téléchargé en provenance d'un périphérique local ou du réseau. Ces fichiers de
configuration permettent d'automatiser l'installation des routeurs.

Par tradition, la plupart des routeurs sont des hôtes d'application, des machines Unix. En
fait, la plupart des systèmes Unix se comportent, par défaut, comme des routeurs s'ils
possèdent plus d'une interface de réseau. C'est aussi le cas de la plupart des systèmes
d'exploitation sur PC.

Si un hôte serveur ou d'application est configuré pour servir de routeur, il doit effectuer
ses tâches à la fois de routage et d'application. Comme chaque datagramme IP doit être
routé séparément, l'algorithme de routage sur un réseau actif peut consommer une
proportion non négligeable de la puissance de calcul de la machine. Cela peut affecter
notablement les performances de la machine en tant que serveur d'applications. C'est la
raison pour laquelle sont commercialisés des périphériques dont la seule finalité est le

3
Border Gateway Protocol.

8
Chapitre1 Routage

routage. Ces périphériques permettent de bien faire la distinction entre les fonctions de
communication et d'applications. Cette séparation permet une meilleure gestion de ces
deux aspects.

6. Routes spécifiques des hôtes


La plupart des entrées de routage indiquent le numéro de réseau comme destination.
Cependant, de nombreuses implémentations permettent de spécifier une adresse d'hôte IP comme
destination. Lorsque l'adresse IP d'un hôte est utilisée comme destination dans une table de
routage, la maîtrise de la transmission est meilleure, car on peut alors spécifier le routeur de
prochain pas en fonction de l'adresse IP plutôt qu'en fonction du numéro de réseau, plus général.
Cela est particulièrement utile pour les tests et le débogage.

7. Routes par défaut


Si un réseau ne dispose que d'un seul routeur de prochain pas, toutes les destinations
distantes doivent être atteintes via ce routeur. Dans un tel cas il n'est pas nécessaire de
spécifier explicitement chaque destination il suffit de spécifier une route par défaut, qui est
la même pour toutes les destinations. Le routeur spécifié par cette route par défaut est
appelé routeur par défaut.

En général, la route par défaut permet de limiter la taille de la table de routage,


notamment, dans les cas où il est nécessaire d'atteindre plusieurs destinations par le biais
du même routeur. Le logiciel de routage recherche dans la table une correspondance exacte
pour la destination. S’il ne trouve rien, c'est la route par défaut qui est utilisée. La route par
défaut est représentée dans la table de routage par la valeur de destination spéciale 0.0.0.0.

8. Remise des datagrammes


Les datagrammes IP sont générés par un hôte émetteur qui veut solliciter les services
d'un autre hôte. Lorsque l'hôte émetteur envoie un datagramme IP, il doit décider s'il va
envoyer son datagramme directement à un hôte du réseau, ou le transmettre à un des
routeurs de ce même réseau.

L’hôte émetteur transmet le datagramme en prenant connaissance de l'adresse matérielle


(adresse MAC) du port du routeur connecté au réseau, et en utilisant cette adresse
matérielle dans le champ d'adresse de destination de la trame de couche de liaison de

9
Chapitre1 Routage

données. Dans un réseau à diffusion, un protocole tel qu’ARP permet de connaître l'adresse
matérielle du port du routeur.

Un datagramme IP peut être remis à destination à l'aide d'une de ces deux méthodes :
remise directe, ou remise indirecte. Le routage d'un datagramme IP dans un réseau
complexe se fait par combinaison de ces deux méthodes. La remise directe a lieu lorsque
l'émetteur et le destinataire se trouvent sur le même réseau physique. L'émetteur peut ainsi
envoyer le datagramme IP directement au destinataire sans intervention d'un routeur.

Dans un réseau à diffusion (broadcast) tel qu'un réseau local, la remise de datagrammes
IP peut être précédée par des paquets ARP. Une requête ARP provenant de l'émetteur, pour
découvrir l'adresse matérielle du destinataire, et une réponse ARP du destinataire,
contenant son adresse matérielle. Une fois connue l'adresse matérielle du destinataire, la
remise directe du datagramme est effectuée en plaçant l'adresse matérielle du destinataire
dans le champ d'adresse de destination de la trame de couche de liaison de données.

Dans le cas de la remise indirecte, le destinataire ne se trouve pas sur le même réseau
physique que l'émetteur. L'émetteur doit alors transmettre le datagramme IP par le biais
d'un des routeurs connectés à son réseau. Le datagramme peut, dans ce cas, transiter par
plusieurs routeurs avant d’atteindre sa destination finale.

10
Chapitre2

OSPF

11
Chapitre2 Protocole de routage actuel (OSPF)

1. Les systèmes autonomes


Le réseau Internet est divisé en région ou systèmes autonomes (SA) afin de pallier à
la complexité du routage. Un système autonome (SA) est un ensemble de réseaux sous la
même autorité administrative (autorité de gestion). Les différents routeurs d'un même
système autonome ont tous recours au même algorithme de routage. L'algorithme de
routage utilisé au sein d'un système autonome est appelé protocole de routage interne.
Les différents systèmes autonomes sont reliés les uns aux autres. Un SA possède un (ou
plusieurs) routeur qui lui permet de communiquer avec les autres SA. Ces routeurs jouent
le rôle d'interface avec les autres SA et sont appelés routeurs inter-systèmes autonomes
ou bien routeurs frontières ou frontaliers (figure 2.1). Pour acheminer des paquets vers
un autre système autonome (éventuellement au travers de plusieurs SA), ceux-ci doivent
communiquer avec les routeurs frontières des autres SA pour déterminer le parcours
approprié. L'algorithme de routage utilisé par les routeurs frontières est appelé protocole
de routage externe.

Routeur interne Routeur externe

SA
SA

Figure 2.1 : Décomposition en systèmes autonomes.

Le problème de dimension se trouve résolu dans le sens où un routeur interne peut se


contenter d'informations concernant les routeurs appartenant à son SA (y compris le
routeur frontière). L'autodétermination se justifie par le fait qu'une institution est libre de
choisir le protocole de routage interne qui lui convient, tant que celui-ci est compatible
avec celui d'autres SA.

Les routeurs internes permettent le routage des informations à l'intérieur d'un


réseau autonome. Ils échangent des informations grâce à des protocoles appelés IGP4, tels

4
Interior Gateway Protocol.

12
Ch
Chapitre2 Protocole de rooutage actu
uel (OSPF)

quue RIP et OSPF.


O Les routeurs externes
e asssurent la liaaison des réseaux auto
onomes. Ilss
foonctionnent avec des prrotocoles apppelés EGP5, tels que BGP.
B

Les réseauux d’un mêm


me systèmee autonome sont gérés par un adm
ministrateur commun ett
uttilisent un protocole de
d routage commun. Un
U système autonomee possède un numéroo
p l'IANA6 ou ses déléégations. Classiquemennt, les multinationales,,
d’’identification délivré par
lees opérateurrs de télécoommunicatioon ou les fournisseurs
f s d'accès à Internet déttiennent unn
nuuméro de syystème autoonome.

Du point de
d vue de l’’extérieur, le
l SA formee un réseau logique. Duu point de vue
v interne,,
unn SA peut encore
e être subdivisé (figure
( 2.2).. Chaque suubdivision eest appelée zone. Cettee
diivision du système auutonome enn zones inttroduit la notion
n de rroutage hiéérarchique..
Chhaque zonee possède saa propre toppologie et ne connaît pas les topollogies des autres
a zoness
duu système autonome.
a U zone possède
Une p un ou
o plusieurrs routeurs ffrontière av
vec lesquelss
ellle peut com
mmuniquer avec
a les auttres zones du
d même SA
A. Les routiières frontièère formentt
unne zone paarticulière appelée
a «zoone backbon
ne» ou réseeau fédératteur. Toutess les zoness
dooivent être connectées physiquem
ment au back
kbone. La topologie
t d''une zone est
e masquéee
poour le reste du SA. Le routage enttre zones peermet de lim
miter à la zoone la propagation dess
innformations. La décompposition d’uun SA en zo
ones réduit par conséquuent la taillee des tabless
dee routage et le trafic dee routage.

Figure 2.2 : Un SA divisé


d en trois
s zones.

Un SA peeut sélectionnner ses proopres proto


ocoles de rooutage. Ce cchoix peut reposer surr
dees critères de
d topologiee, de disponnibilité de l’’équipemennt, etc. Un S
SA est libre de changerr

5
E
Exterior Gatewaay Protocol.
6
Internet Assigneed Numbers Auuthority

13
1
Chapitre2 Protocole de routage actuel (OSPF)

de protocole de routage à tout moment, sans risquer d’affecter d’autre SA. Le réseau dorsal
Internet a ainsi plusieurs fois modifié ses protocoles de routage sans jamais avoir affecté
les SA qui s’y connectaient. Le protocole le plus utilisé dans les systèmes autonomes est le
protocole OSPF7.

2. Le protocole OSPF
OSPF est un protocole de routage dynamique défini par l'IETF8 à la fin des années 80. Il
est basé sur un algorithme proposé par Dijkstra, l’algorithme SPF9 [29]. OSPF est un
protocole d'état de liaison qui apporte une solution à la plupart des problèmes posés par
RIP. Le protocole RIP n’est pas bien adapté à des réseaux de grande taille. La taille des
messages de routage est proportionnelle au nombre de réseaux, et le nombre de ces
messages augmente parallèlement à l'augmentation du nombre de routeurs.

OSPF utilise une base de données distribuée qui permet, à chaque routeur, de garder en
mémoire l’état de toutes les liaisons au sein du réseau. Ces informations forment une
description de la topologie du réseau et de l’état de l’infrastructure.

2.1. Caractéristiques d'OSPF [SIY 99]


OSPF est une implémentation répandue de protocole d'état de liaison sur les réseaux
IP. Voici quelques-unes de ses caractéristiques :

• OSPF route les paquets IP en se basant sur l’adresse IP de destination et la


valeur du champ TOS (Type Of Service) figurant dans 1'en-tête du paquet IP. Il
est possible d'avoir plusieurs routes vers une même destination, chacune étant
adaptée à un type de service différent. OSPF calcule des routes distinctes pour
chaque type de service.

• Lorsque deux routes sont équivalentes en termes de coût, OSPF peut répartir le
trafic entre les deux.

• Pour OSPF, le coût d'une route est exprimé avec une métrique unique sans
dimension (c'est-a-dire sans unité).

7
Open Shortest Path First
8
Internet Engineering Task Force
9
Shortest Path First

14
Chapitre2 Protocole de routage actuel (OSPF)

OSPF permet de configurer les sous-réseaux IP de façon souple. Les routes distribuées
par OSPF incluent les masques de sous-réseaux. II est possible d'utiliser des Variable
Subnet Lenght Mask (VLSM ou masque de sous-réseau de longueur variable). Avec 1es
VLSM, un paquet est routé en utilisant la correspondance la plus longue ou la plus
spécifique. Les routes spécifiques à un routeur sont spécifiées en ne faisant figurer que des
1 dans le masque de sous-réseau.

OSPF utilise un mécanisme de mot de passe simple pour l'authentification. Ce


mécanisme est cependant peu sûr, car les mots de passe sont envoyés en clair (sans
chiffrement).

Les données indiquées par d'autres protocoles inter-SA peuvent être passées de manière
transparente dans le SA. Ces données externes sont conservées à l'écart des données d'état
de liaisons propres à OSPF. Les routes externes sont marquées avec la route ainsi indiquée.
Ceci permet aux routeurs situés sur la frontière du SA de passer des informations à travers
le SA.

OSPF permet à l'administrateur de réseau de créer des topologies de réseau virtuel.


Ainsi, on peut établir une liaison virtuelle entre deux routeurs et ce, même s'ils ne sont pas
voisins.

Pour OSPF, chaque réseau multi-accès qui contient au moins deux routeurs a un routeur
désigne. Le routeur désigné envoie des messages d'état de liaison pour toutes les liaisons
du réseau, à destination des routeurs connectés à ce réseau. Comme seul le routeur désigné
envoie ces messages, le trafic de routage est réduit.

2.2. Format d’en-tête des messages OSPF


Chaque message OSPF commence par un en-tête de taille fixe, codé sur 24 octets
(figure 2.3).

15
Chapitre2 Protocole de routage actuel (OSPF)

0 8 16 31
Version (2) Type Longueur du message
Adresse IP du routeur source
Identification de la zone
Total de contrôle Type d’authentification
Authentification (octets 0 à 3)
Authentification (octets 4 à 7)

Figure 2.3 : Format d’en-tête des messages OSPF

Le champ Version indique la version courante du protocole OSPF. Le champ Type


identifie un type de message parmi les types du tableau 2.1.

Tableau 2.1 : valeurs pour le champ Type de l’en-tête OSPF.

Type Signification

1 Hello (utilisé pour tester l’accessibilité)


2 Messages de description de la base de données de topologie
3 Demande d’état de lien
4 Mise à jour d’état lien
5 Accusé de réception de mise à jour d’état de lien

Le champ Adresse IP du routeur source donne l’adresse de l’émetteur et le champ


Identification de la zone donne le numéro de la zone, codé sur 32 bits. La valeur 0
correspond au backbone. Le champ Type d’authentification définit le mode
d’authentification utilisé (par exemple la valeur 0 indique qu’il n’y a pas
d’authentification et la valeur 1 signifie un simple mot de passe).

2.3. Les sous protocoles d’OSPF

Le protocole OSPF est placé directement au-dessus d’IP ; il porte le numéro n°89.
OSPF est en fait composé de trois sous protocoles : hello, échange, inondation.

2.3.1. Le protocole Hello


OSPF envoie périodiquement (toutes les 30 secondes) sur chaque lien des messages
Hello (figure 2.4). Ces messages permettent :
• de tester l’accessibilité des voisins OSPF,

16
Chapitre2 Protocole de routage actuel (OSPF)

• de vérifier que les liaisons sont opérationnelles,


• d’élire le routeur désigné et back-up, sur les réseaux (à diffusion et sans
diffusion).
0 16 24 31
En-tête OSPF, type= 1
Masque réseau
Priorité de
Période Hello Option
routeur
Temporisation de panne (l’intervalle de mort)
Routeur désigné
Routeur secours désigné
Adresse IP voisin 1
Adresse IP voisin 2

Adresse IP voisin n

Figure 2.4 : Structure d’un message Hello.

Le champ Masque réseau : masque de sous réseau associé à l’interface sur lequel le
message a été émis.

Le champ Temporisation de panne indique une durée, exprimée en secondes, à l’issue


de laquelle si un routeur ne répond pas, il est considéré comme étant en panne. Le champ
Période Hello indique, en secondes, l’intervalle de temps qui sépare normalement deux
messages Hello consécutifs. Le champ Option spécifie les capacités opérationnelles du
routeur. Seuls les deux derniers bits des huit bits possibles sont définis (figure 2.5).

E T

Figure 2.5 : champ option

Le bit T indique que le routeur est capable de router par type de service (TOS). Le bit E
est positionné quand le routeur est capable d’émettre et de recevoir des routes externes ; il
est nul quand l’interface appartient à une zone terminale (l’interface est connectée à un
réseau local). Le champ Priorité de routeur indique la priorité de ce routeur. Cette priorité
est utilisée lors du choix d’un routeur désigné et d’un routeur désigné de secours. Elle
varie de 0 à 255. Les routeurs de priorité nulle ne pourront jamais d’être choisis comme
routeur désigné. Les champs Routeur désigné et Routeur de secours désigné contiennent

17
Chapitre2 Protocole de routage actuel (OSPF)

les adresses IP qui permettent à l’émetteur de voir le routeur désigné et le routeur de


secours désigné sur le réseau pour lequel le message est émis ou bien Zéro, si l’élection
n’est pas encore terminée. Enfin, le champ adresse de routeur voisin i donne les adresses
IP de tous les voisins dont le routeur a reçu des messages Hello pendant l’intervalle de
mort (temporisation de panne).

On peut vérifier la connectivité bidirectionnelle en examinant la liste des voisins des


routeurs distants : si le routeur local n’est pas annoncé dans leurs paquets, alors ils n’ont
pas encore reçu ses messages Hello. La connexion est, dans ce cas, (unilatérale), et ne peut
pas être utilisée pour le routage. Sinon, on déclare une connectivité (bilatérale). On peut
utiliser des indicateurs de bas niveau pour découvrir qu’un voisin est hors service comme,
la disparition de la porteuse sur une liaison par modem. Dans ce cas on retirera le voisin de
la liste sans attendre la fin de l’intervalle.

Si la liaison est une liaison point à point ou bien une liaison virtuelle, il n’y pas besoin
de qualifier davantage la liaison : les routeurs peuvent commencer à «établir le voisinage»
dès que la connectivité bilatéral est établie. Pour les interfaces réseau, on peut d’abord élire
le routeur désigné et le back-up.

Juste après que son interface soit mise en service, le routeur se met dans un état
d’attente et y restera pendant une période égale à l’intervalle « de mort ». Durant cet
intervalle, le routeur émet des paquets « hello» mais ne se propose pas lui-même comme
candidat à l’élection : les champs « routeur désigné» et « back_up » sont à 0. Il écoute les
paquets « hello» et initialise les champs des routeurs. Le routeur mémorise la priorité de
chaque voisin et l’état de leur relation (unilatéral ou bilatéral) ; il doit aussi se rappeler si le
voisin se propose lui-même comme routeur «désigné» ou « back-up». Seuls participent à
l’élection les voisins avec qui on a une connectivité bilatérale. L’élection se déroule en
permanence comme suit :

¾ si un ou plusieurs voisins se proposent comme back-up (secours désigné), on choisit


celui qui a la plus grande priorité. En cas d’égalité, on choisit celui qui a le plus grand
identifiant OSPF (l’adresse IP choisie pour identifier le routeur).
¾ Si aucun ne se propose comme « back-up», on choisit celui des voisins qui a la priorité
la plus élevée ou, en cas d’égalité, celui qui a le plus grand « identifiant OSPF».

18
Chapitre2 Protocole de routage actuel (OSPF)

¾ Si un ou plusieurs routeurs se proposent comme « routeur désigné», on choisit celui qui


a la plus grande priorité. En cas d’égalité, on choisit celui qui a le plus grand identifiant
OSPF.
¾ Si aucun routeur ne se propose comme routeur désigne, le back-up est choisi. Il faut
dans ce cas ré-exécuté les étapes 1 et 2 pour élire un nouveau back-up.
Sur les liaisons point à point et sur les réseaux «à diffusion», on doit envoyer les
paquets à l’adresse multipoint réservée à « tous les routeurs OSPF». Dans le cas d’un
réseau « sans diffusion» la situation est un peu plus complexe, il faut configurer chaque
routeur, avec une liste de tous les routeurs connectés à ce réseau. Cette liste doit aussi
signaler la priorité soit non nulle, car dans ce cas, le routeur devient « éligible». Tous les
routeurs éligibles doivent envoyer des paquets « hello»à tous les autres routeurs éligibles ;
le routeur désigné et le back-up doivent aussi envoyer des paquets à des routeurs non
éligibles.

2.3.2. Protocole d’échange


Les routeurs échangent des messages de description de la base de données pour
initialiser la base de données de topologie de réseaux par échange de messages de
description de la base de données (figure 2.5). Le retour désigné informe par inondation
tous les autres routeurs des changements opérés sur la base de données. Lors de l’échange,
un routeur joue le rôle de maître (ou primaire) pendant que l’autre se comporte en esclave
(ou secondaire). L’esclave acquitte chaque message de description de la base de données
par une réponse.

1 16 24 29
En-tête OSPF de type 2
Doit être à zéro Option 0
Numéro de séquence de la base de données
Type de lien
Identificateur de lien
Routeur qui diffuse les informations (routeur annonçant)
Numéro de séquence du lien
Total de contrôle de lien âge du lien

Figure 2.6 : Structure de la base de données.

19
Chapitre2 Protocole de routage actuel (OSPF)

La base de données de topologie peut être volumineuse. La description est dans ce cas
fractionnée en plusieurs messages qui utilisent les bits I et M. le bit I est positionné à 1
dans le premier message ; le bit M est positionné à 1 si des messages supplémentaires
suivent. Le bit S indique si le message est émis par un maître (1) ou par un esclave (0). Le
champ Numéro de séquence de la base de données numérote séquentiellement les
messages de façon que le récepteur puisse détecter la perte d’un message. Le message
initial contient un nombre aléatoire entier, R ; les messages suivants sont numérotés
séquentiellement à partir de R.

Le routeur qui souhaite commencer un échange envoie un paquet de description vide


dont les bits « I»et « M» et «S» sont positionnés à 1 et dont le numéro de séquence a une
valeur jamais vue par l’autre routeur. La rfc1247 suggère d’utiliser l’heure du jour. L’autre
routeur accepte de jouer le rôle d’esclave en envoyant un acquittement dans les bits
«I=1»et « M=1»et « S=0» et dans le numéro de séquence =1.

On remédie aux pertes de paquets par retransmission. En l’absence d’acquittement après


un intervalle de temps donné, le paquet est retransmis. Les collisions sont résolues grâce à
une convention très simple : si un routeur qui attend un acquittement reçoit un paquet
«initial», c’est-à-dire un paquet vide dont les bits I, M et S sont à 1, il compare l’adresse de
l’émetteur et la sienne propre. Si celle de l’émetteur est plus grande, il accepte le rôle
d’esclave et acquitte le paquet ; sinon, il ignore le paquet et attend que le sien soit acquitté
par le routeur distant.

Les champs type de lien à âge du lien décrivent un lien de la topologie du réseau ; ils
sont répètes pour chaque lien. Le champ type de lien décrit un type de lien (Tableau 2.2).
Tableau 2.2 : valeurs prises par le champ Type de lien.

Type de lien Signification


1. lien de routeur
2. lien de réseau
3. Résumé des liens (réseaux IP)
4. Résumé des liens (lien vers un routeur frontière)
5. Lien externe (lien vers un autre site)

Le champ identificateur de lien contient l’identificateur du lien (qui peut, selon le type
de lien, être l’adresse IP d’un réseau ou d’un routeur).

20
Chapitre2 Protocole de routage actuel (OSPF)

Le champ Routeur qui diffuse les informations indique l’adresse du routeur qui propage
les informations de routage pour ce lien et le champ Numéro de séquence du lien contient
un entier généré par ce routeur pour garantir que les messages ne sont ni perdus, ni reçus
hors séquence. Le champ total de contrôle de lien apporte une garantie supplémentaire que
les informations relatives n’ont pas été altérées. Enfin le champ âge du lien aide également
à ordonner les messages. Il indique le nombre de secondes écoulées depuis l’établissement
de lien.

Pendant l'échange, deux routeurs, l’un maître et l’autre esclave, échangent des
descriptions d'enregistrements d'états de liaisons. Chaque routeur compare la description
des enregistrements avec le contenu de sa base de données. Les enregistrements les plus
récents sont gardés. Ces paquets contiennent une liste d'identifiants d'état de liaison.
Chaque enregistrement est décrit par trois mots de 32 bits : le type d'enregistrement,
l'identifiant et le routeur annonçant. Après réception d’une telle requête, le routeur envoie
des «mises à jour», en utilisant exactement la même procédure d'inondation. Chaque fois
qu'une mise à jour est reçue, l'identification de l'enregistrement est retirée de la liste des
«enregistrements à demander». Si la liste est trop longue pour être contenue dans un seul
paquet, le routeur n'en envoie que le début dans une première requête. Le reste est envoyé
dans d’autres requêtes après réception de l’acquittement de la première. Si les
enregistrements demandés ne sont pas parvenus au bout d'un intervalle de temps donné, la
requête est répétée.

Les routeurs surveillent les paquets «hello». L'échange est abandonné si la connectivité
n'est pas maintenue. Pendant l'échange, les routeurs vérifient que les paquets de description
sont cohérents. Un routeur s’intéresse à vérifier, par exemple qu'il ne reçoit pas de paquets
hors séquence. Un routeur qui reçoit des «requêtes d'état de liaison» va s’intéresser à
vérifier que les enregistrements demandés ne sont pas présents dans sa base locale.

Quand une liaison change d'état, le routeur qui en est responsable émet une nouvelle
version de son «enregistrement d'état». La figure 2.7 indique la structure du message OSPF
de mise à jour d’état de lien. Un routeur émet ce message pour diffuser des informations
relatives aux liens directement accessibles à tous les autres routeurs.

21
Chapitre2 Protocole de routage actuel (OSPF)

en-tête OSPF, type = 4(maj)


Nombre d’information d’état de lien
Information d’état de lien 1

Information d’état de lien n

Figure 2.7 : Structure du message de mise à jour de l’état de liaison

Pour chaque annonce, le numéro de séquence est comparé à la valeur dans la base de
données locale. S'il s'agit d'une nouvelle valeur, l'annonce est mise en attente de
transmission sur chaque autre interface. Dans tous les cas, on doit envoyer un acquittement
de l'annonce au routeur qui a transmis le paquet de mise à jour. Afin de fiabiliser la
procédure d'inondation, ce routeur va retransmettre ces mises à jour à intervalles réguliers,
jusqu'à réception de l'acquittement.

2.4. Information d’état de liaison


Il y a cinq types d’enregistrements d’état de liaisons, mais tous les enregistrements
commencent par le même en-tête :

Age du lien Type de lien


Identificateur de lien
Routeur annonçant
Numéro de séquence d’EL
Checksum d’EL Longueur

Figure 2.8 : Structure de l’en-tête de la liaison

2.5. Les liaisons de routeurs


Les enregistrements d’états de liaisons des routeurs récapitulent toutes les liaisons qui
partent du routeur annonçant. L’identifiant de liaison est l’identifiant OSPF de routeur. La
figure suivent indique le contenue d’enregistrement

22
Chapitre2 Protocole de routage actuel (OSPF)

0 E B 0 Nombre de liaison
Identifiant de liaison
Données de liaison
Type # TOS Métrique, TOS 0
Type =x 0 Métrique, TOS x
Type =y 0 Métrique, TOS y
--- --- ----
Type =z 0 Métrique, TOS z
Figure 2.9 : indique la structure d’enregistrement de la liaison de routeur

Le bit E est positionné si le routeur est un routeur interzone. Le bit B est positionné si le
routeur est un point d’accès externe, Le type de liaison peut prendre trois valeurs :
1. la liaison est une liaison point à point vers un autre routeur. L'identifiant de
liaison est alors l'identifiant OSPF de ce routeur, et les données contiennent
l'adresse IP de son interface.
2. La liaison connecte le routeur à un réseau de transit. L'identifiant de liaison est
l'adresse IP de l'interface du routeur désigné, et les données de liaison contiennent
l'adresse de l'interface locale.
3. La liaison connecte le routeur à un réseau terminal. L'identifiant de liaison est
composé des numéros IP de réseau ou de sous-réseau, et les données de liaison
contiennent le masque de réseau ou de sous-réseau.

2.6. Les liaisons de réseau


Les liaisons de réseau (type d’EL = 2) sont annoncées par les routeurs désignés sur les
réseaux de transit. L’identifiant d’EL correspond à l’adresse IP du routeur désigné vers ce
réseau (figure 2.10).

Masque sous-réseau
Identifiant OSPF de routeur connecté
---
Identifiant OSPF de routeur connecté

Figure 2.10 : Structure d’enregistrement de la liaison de réseau

23
Chapitre2 Protocole de routage actuel (OSPF)

2.7. Les liaisons récapitulatives


Les liaisons récapitulatives pour des réseaux IP (type d'EL = 3) et pour des routeurs
externes (type d'EL = 4) sont annoncées par les routeurs interzones. Bien que ces routeurs
puissent avoir à annoncer plusieurs liaisons récapitulatives, ils ne pourront pas les
regrouper, comme les liaisons de routeurs, en un seul enregistrement. Ils devront annoncer
séparément chaque destination. L'identifiant d'EL est le numéro de réseau IP ou de sous-
réseau (type d'EL = 3), ou bien l'adresse IP du routeur externe (type d'EL = 4).

Masque de sous-réseau

TOS=0 0 métrique, TOS 0

TOS=x 0 métrique, TOS x

---

TOS=z 0 métrique, TOS z


Figure 2.11 : Structure d’enregistrement de la liaison récapitulative

Le masque est celui du réseau ou du sous-réseau, ou bien la valeur hexadécimale


« FFFFFFFF» pour une liaison récapitulative de routeur externe.

2.8. Les liaisons externes


Les liaisons externes (type d'EL = 5) sont annoncées par les routeurs externes. Comme
pour les liaisons récapitulatives, il y a exactement une destination annoncée par
enregistrement. L'identifiant d'EL est le numéro de réseau ou de sous-réseau IP de la
destination (figure 2.10).

24
Chapitre2 Protocole de routage actuel (OSPF)

Masque de sous réseau


E, TOS=0 0 métrique, TOS 0
identifiant de route externe (0)
E, TOS=x 0 métrique, TOS x
identifiant de route externe (x)
- - - - - - - - - - -- - - - - - - -
E, TOS=z 0 métrique, TOS z
identifiant de route externe (z)

Figure 2.12 : Structure d’enregistrement de la liaison externe

L’identifiant de TOS comporte un bit «E» (externe) en position 0. Les routes externes
sont obtenues par les routeurs externes à l'aide de protocoles comme EGP ou BGP. Le bit
«E» sert à indiquer que la métrique annoncée pour ce TOS n'est pas « comparable » aux
métriques internes et doit donc être considérée comme «plus grande que n'importe quelle
route interne». Quand le bit «E» est nul, la métrique peut être additionnée aux coûts
internes pour calculer le coût d'un chemin menant à la destination via le routeur externe.

L'identifiant de route externe est un champ de 32 bits utilisé par les routeurs externes
pour échanger des informations sur la route. Il n'est pas traité par OSPF.

25
Chapitre3

Optimisation par colonie

de fourmis

26
Chapitre3 (colonie de fourmis, AntNet)

1. Introduction:
Les algorithmes de colonie de fourmis ont été proposés, pour la première fois, par
Marco Dorigo en 1991 pour la résolution des problèmes d'optimisation combinatoire telle
que le TSP (Travelling Salesman Problem) [DOR 97]. Inspirés du comportement social
des fourmis, ils s’adaptent au problème combinatoire discret statique. Les algorithmes de
colonie de fourmis ont été utilisés pour la résolution de plusieurs problèmes d’optimisation
tels que :

™ le voyageur de Commerce : trouver le plus court chemin pour traverser n villes en ne


passant jamais deux fois par la même ville.

™ la planification de tâches en usine : organiser les tâches afin de minimiser les temps
de production et maximiser l’usage des machines.

™ La coloration de graphes: Associer à chaque sommet du graphe une couleur telle que
deux sommets adjacents n’aient pas la même couleur.

™ le routage dans les réseaux téléinformatiques.

Les fourmis arrivent à trouver le plus court chemin entre leur nid et une source de
nourriture. La résolution de ce problème nécessite une certaine organisation et un travail
collectif. Les fourmis peuvent résoudre ce problème collectivement en se basant sur un
moyen de communication qui leur est particulier : "la phéromone", un produit chimique
volatile qu’elles laissent sur leur passage. Cette substance chimique leur permet de repérer
leur chemin et d'y attirer d’autres fourmis. Les fourmis, au cours de leur déplacement,
modifient la concentration de ce produit chimique et modifient ainsi dynamiquement leur
environnement.

2. Comportement des fourmis réelles


Bien qu'elles soient aveugles, les fourmis réelles sont capables de trouver le plus court
chemin entre la fourmilière et une source de nourriture. De plus, Elles s’adaptent aux
changements de l'environnement par exemple pour trouver un nouveau plus court chemin
une fois que le premier devient plus long suite à l'apparition d'un nouvel obstacle. Ces deux
comportements ont été mis en évidence par les deux expériences décrites ci-dessous.

27
Chapitre3 (colonie de fourmis, AntNet)

2.1. L’expérience à doubles branches [STU 02a]


Un pont à deux branches de longueurs différentes est installé entre le nid d’une colonie
de fourmis et une source de nourriture (figure 3.1). Le comportement des fourmis est alors
observé. Les fourmis, au départ, s’intéressent aux environs immédiats du nid puis
progressent vers la source de nourriture en empruntant les deux branches du pont d’une
manière aléatoire (figure 3.1a). Les fourmis empruntant la plus courte branche arrivent les
premières à la source de nourriture. Puis elles entament le chemin du retour. Elles
retrouvent leur chemin grâce à la traînée de phéromone laissée à l’aller. En rebroussant
chemin, elles renforcent la trace odorante existante. Ainsi, il y a une forte traînée de
phéromone sur la plus courte branche. Les fourmis suivantes qui quittent le nid choisissent
avec une plus grande probabilité le chemin le plus court. Après un certain temps, la colonie
de fourmis entière prend le plus court chemin entre le nid et la source de nourriture trouvée
(figure 3.1b).

Figure 3.1a Figure 3.1b

Figure 3.1. L’expérience à doubles branches [DOR 97]

28
Chapitre3 (colonie de fourmis, AntNet)

2.2. L’expérience de l’obstacle [DER 01]

Lorsque la colonie de fourmis a trouvé le plus court chemin entre la source de nourriture
et le nid, un obstacle est mis sur ce chemin (figure 3.1a). Au début, les fourmis le
contournent en choisissant aléatoirement un chemin parmi les deux possibles (figure 3.2b).
De la même manière que pour la première expérience, les fourmis empruntant le plus court
chemin le chargent de phéromone. Elles sont les premières à revenir et prennent ce même
chemin en y rajoutant de la phéromone et ainsi de suite. Après une durée transitoire, la
colonie suit le chemin le plus court (figure 3.2c).

Figure 3.2a Figure 3.2b Figure 3.2c

Figure 3.2. L’expérience de l’obstacle [DER 03]

Les chemins les moins empruntés par les fourmis voient leur taux de phéromone
diminuer puisque cette substance s’évapore, rendant ces chemins de moins en moins
attractifs pour les fourmis.

3. Représentation du problème
On peut considérer que les fourmis se déplacent dans un graphe à la recherche du plus
court chemin entre deux nœuds. Le nœud de départ est le nid et le nœud d’arrivée la source
de nourriture. Le problème d’optimisation traité peut être représenté sous forme d’un
graphe G= (C, L) défini comme suit [COR 99]:

ƒ Un ensemble fini de composants C= {c1, c 2,…, c n}.

29
Chapitre3 (colonie de fourmis, AntNet)

ƒ Un ensemble fini L de transitions (ou connexions) entre les éléments de C. Soit


Ĉ ⊆ C×C l’ensemble des éléments (ci,cj) tel qu’il existe une connexion entre ci

et cj. L peut être défini comme suit L = {lcicj / (ci,cj) ∈ Ĉ}.

ƒ Une fonction J associe un coût Jij à chaque connexion lij de L. On peut prendre
en considération le temps t et la fonction devient J(lij, t).
ƒ Un ensemble fini de contraintes Ω{C,L,t} est défini sur les éléments de C et L
à l’instant t.
ƒ Les états du problème sont des séquences S = <cδ(1),cδ(2),…,cδ(k),…> des
éléments de C (ou de L) où δ est une permutation définie de la manière
suivante:
δ: {1, 2, …n} →{1, 2, …n}
i → δ(i)
Soit S l’ensemble de toutes les séquences possibles. L’ensemble des états
réalisables S’ est un sous-ensemble de S. Il contient les séquences réalisables,
celles respectant les contraintes Ω.
ƒ Une structure de voisinage: Un état s2 est voisin de l’état s1 si :

a. s1 et s2 sont des états de S.

b. L’état s2 peut être atteint à partir de s1 en une seule étape logique, c'est-à-dire

que si c1 est le dernier composant d’une séquence définissant l’état s1, il existe

un composant c2 tel que lc1c2∈L et s2 ≡ < s1, c2 >.

Notons que si s1 contient k composants, alors s2 en contient k+1.


ƒ Une solution ψ est une séquence de S’.
ƒ Une fonction Jψ associe un coût à chaque solution ψ. Jψ est fonction de tous
les coûts Jij associés aux connexions lij appartenant à la solution.
Pour résoudre un problème d’optimisation, les fourmis utilisent le graphe G associé au
problème traité construit comme décrit plus haut. Elles collaborent pour rechercher, dans
ce graphe, un chemin de coût minimal et qui respecte les contraintes du problème. Ces
chemins sont des solutions (ou séquences) réalisables du problème. Durant le processus de
recherche, les fourmis collectent des informations représentant les pistes de phéromones.
Cette phéromone peut être associée: soit au sommet soit à la connexion lij et que l’on
notera τij. Les pistes de phéromone sont des informations globales qui sont construites au

30
Chapitre3 (colonie de fourmis, AntNet)

fur et à mesure par les fourmis, et qui sont proportionnelles à la qualité de la solution
construite. Elles sont utilisées par ces dernières dans le processus de recherche. Les
informations phéromones peuvent être enrichies par des valeurs heuristiques ηij spécifiques
au problème traité. Elles définissent l’attrait d’un composant à l’itération courante. Quand
une fourmi est confrontée à un choix entre deux ou plusieurs chemins, elle choisit celui qui
dégage le plus de phéromone.

4. L'optimisation par colonie de fourmis (ACO)

L’ACO est une approche qui se base sur le comportement des fourmis réelles pour
résoudre des problèmes d’optimisation. Elle utilise trois mécanismes qui sont : l’activité
des fourmis, l’évaporation de la phéromone et les actions centralisées d’un démon pouvant
être facultatives (Figure 3.3). Les différents mécanismes sont présentés ci dessous.

PROCEDURE ACO_Meta_ heuristic()


Tant Que (critère d’arrêt non satisfait)
Faire
Programmer les activités
Activité_des_fourmis;
Evaporation de la phéromone;
Actions du démon; {facultatives}
Fin Programmer les activités
Fin Tant Que
Fin.

Figure 3.3. Méta Heuristique ACO.

4.1. Activité des fourmis


Chaque fourmi construit une solution en parcourant l’espace de recherche représenté
sous forme d'un graphe. Il y a autant de solutions construites que de fourmis lancées pour
la résolution du problème. Elles construisent, à elles seules, des solutions plus ou moins
bonnes. Cependant, la coopération de toute la colonie permet d’arriver à une meilleure
solution. Les fourmis de la colonie collaborent à la construction de la meilleure solution en
modifiant dynamiquement leur environnement.

Au départ, les fourmis sont placées aléatoirement sur des sommets du graphe (états
initiaux). Puis ces fourmis se déplacent dans leur voisinage (mécanisme de voisinage)
pour construire leur solution. Le choix du prochain sommet à visiter, parmi un certain
nombre de voisins (liste candidate), se fait selon "une politique de recherche locale

31
Chapitre3 (colonie de fourmis, AntNet)

stochastique" qui se base sur des informations locales à la fourmi (mémoire privée), sur
les valeurs de pistes de phéromone locales aux nœuds visités et des contraintes spécifiques
au problème (table de routage). Les pistes de phéromone peuvent être associées aux
composants ou aux connexions. Quand une fourmi ajoute un composant à sa solution
partielle (affectation d’une valeur à la variable choisie), elle peut ajouter une quantité de
phéromone sur ce nœud ou sur l’arc menant à ce noeud. Cette quantité dépend de la qualité
de la solution. Quand une fourmi a fini de construire sa solution, elle peut mettre à jour le
taux de phéromone sur le trajet emprunté (sur le nœud ou la connexion). Une fois que la
fourmi a fini de construire sa solution, elle est supprimée du système.

On peut déduire de ces activités que chaque fourmi doit pouvoir, entre autres, avoir la
capacité de construire une solution et de prendre certaines décisions telles que la prochaine
variable à affecter et la valeur à lui associer. Pour cela, une fourmi artificielle doit avoir :

1. une mémoire privée utilisée pour construire une solution réalisable, sauvegarder le
trajet parcouru et évaluer le coût de la solution construite.

2. un état initial.

3. des conditions d’arrêt.

Etat interne privé: c’est une mémoire privée qui garde l’historique (ou l’expérience)
de la fourmi. Elle permet d’évaluer la qualité des solutions construites. Ces informations
permettent d’éviter des déplacements non intéressants.

Modes de mise à jour de la phéromone : la fourmi peut déposer de la phéromone sur


son passage à deux moments différents : en cours de construction de solution (online step
by step), ou bien, à la fin de la construction. Dans ce cas, elle revient sur ses pas et met de
la phéromone sur le chemin emprunté à l’aller (online delayed).

Information publique : l’expérience acquise par chaque fourmi, au cours de la


recherche, est sauvegardée au fur et à mesure dans une mémoire partagée sous forme de
pistes de phéromone et d’informations heuristiques spécifiques au problème. Ces
informations influencent les décisions des fourmis et les guident dans leur recherche. Les
fourmis choisissent le prochain sommet à visiter selon une règle de décision que nous
détaillerons plus loin.

32
Chapitre3 (colonie de fourmis, AntNet)

Table de routage: elle garde en mémoire la valeur de la phéromone localement


disponible. C’est une table de probabilités que les fourmis utilisent pour orienter leur
recherche vers des régions prometteuses ou vers de nouvelles régions.

Liste candidate: lorsque l’on traite de problèmes où le voisinage est trop grand, une
liste candidate peut être utilisée par les fourmis pour limiter le nombre de voisins à
considérer et améliorer ainsi les performances de l’algorithme. Cette liste contient des sous
ensembles des états voisins de l’état courant. Elle permet de réduire considérablement
l’espace de recherche.

La procédure de l’activité des fourmis est donnée dans la figure 3.4. Elle fait appel à la
procédure Nouvelle_fourmi_active.

4.2. Evaporation de la phéromone


Lors de leur déplacement, les fourmis ont tendance à choisir les chemins ayant le plus
de phéromone. Cependant, cela peut entraîner, avec le temps, un regroupement des fourmis
sur les mêmes régions de l’espace de recherche, d’où une convergence vers une même
solution. Pour cela, un mécanisme appelé évaporation permet de diminuer les taux de
phéromone pour permettre une exploration de nouvelles régions et ralentir ainsi la
convergence.

PROCEDURE Activité_des_fourmis ()

Tant Que (ressources disponibles) Faire


Création_nouvelle_fourmi();
Nouvelle_fourmi_active();
Fin Tant Que
Fin.

PROCEDURE Nouvelle_fourmi_active() {cycle de vie d’une fourmi}


Début
Initialiser la fourmi ;
M = Mise à jour de la mémoire de la fourmi ;
Tant Que (état courant ≠ but) Faire {but signifie une solution complète construite par la
fourmi}
A = Lire la table de routage locale de la fourmi;
P = Calculer la probabilité de transition (A, M, Ω);
Etat suivant = Appliquer la règle de décision (P, Ω);
Se déplacer vers le nouvel état (état suivant);
Si (Mise à jour online step by step de la phéromone) Alors
Déposer de la phéromone sur les arcs visités ;
Mettre à jour la table de routage ;
Fin Si
M = Mettre à jour l’état interne de la fourmi;
Fin Tant Que

33
Chapitre3 (colonie de fourmis, AntNet)

Si (Mise à jour online delayed de la phéromone) Alors


Evaluer la solution ;
Déposer de la phéromone sur tous les arcs visités ;
Mettre à jour la table de routage ;
Fin Si
Tuer la fourmi;
Fin.

Figure 3.4. Activité des fourmis.

4.3. Action du Démon


Pour améliorer les performances de l’ACO, on peut intégrer un composant, le démon.
Le démon a une vue globale de l’état d’avancement de la recherche et peut intervenir sur
cet environnement. Il peut intensifier la recherche en ajoutant de l’extra phéromone sur les
chemins prometteurs, ou au contraire diversifier la recherche en la dirigeant vers de
nouvelles régions. C’est la mise à jour "offline".

5. L’application des colonies de fourmis dans les réseaux « ANTNET »


AntNet est un algorithme basé sur le comportement des fourmis, et destiné à
l’optimisation du routage dans les réseaux. Le principe de AntNet se base sur l’algorithme
ACO et sur les travaux de Schoonderwoerd et al [SCH 97]. L’algorithme AntNet utilise
des agents mobiles (fourmis) qui ont pour but de détecter les encombrements dans le
réseau, de trouver de nouvelles routes et de permettre ainsi aux routeurs de s’adapter aux
changements du réseau.

Le principe général de l’AntNet est le suivant. A partir de chaque nœud ni, des fourmis
sont lancés vers des destinations choisies aléatoirement, à des intervalles de temps régulier
(Δt). Ces fourmis, appelées Forward Ants (FAnts), parcourent le réseau d’un nœud source
à un nœud destination pour détecter les encombrements dans le réseau et trouver de
nouvelles routes. Chaque FAnt a la capacité de mémoriser le chemin qu’elle traverse et le
temps mis à le parcourir. Pour choisir le prochain nœud à visiter (soit nk), une FAnt

positionnée sur un nœud (nj) se base essentiellement sur deux informations : le taux de

phéromone présent sur le lien (nj, nk) et l’état de la file d’attente du routeur nk.

Lorsqu’une FAnt arrive à destination, elle génère un autre type de fourmi, appelé BAnt
(Backward Ant), et quitte la recherche. La BAnt va parcourir exactement le même chemin
que sa congénère mais dans le sens inverse. Elle met à jour les tables de routage des nœuds
traversés et les tables contenant certaines statistiques spécifiques à la charge du réseau en

34
Chapitre3 (colonie de fourmis, AntNet)

se basant sur les informations récoltées par la FAnt. Cependant, la BAnt va traverser les
différents nœuds avec une priorité supérieure à celles des paquets. De ce fait, elle
n’enregistre pas de retard sur son chemin. Une fois arrivée à la source, la BAnt est détruite
Le rôle de la BAnt est de mettre à jour les tables de routage.

Les différentes étapes de l’algorithme peuvent être résumées comme suit :

1. Tous les Δt, chaque nœud lance une fourmi FAnt et génère aléatoirement une
destination (un nœud du graphe).

2. Chaque fourmi passe d’un nœud vers un autre selon une politique stochastique
fonction du taux de phéromone sur le lien entre les deux nœuds et de l’information
spécifique au problème qui est proportionnelle au taux de remplissage de la file d’attente
entre les deux nœuds.

3. Chaque fourmi sauvegarde dans sa mémoire le parcours qu’elle a effectuée ainsi que
le temps mis pour parcourir un lien entre deux nœuds. Le mémoire de la fourmi est une
pile où sont empilées ces informations lors du passage d’un nœud vers un autre.

4. Lorsque la FAnt arrive à destination, elle génère une BAnt qui va recevoir toutes les
informations récoltées par la FAnt et qui va parcourir le même chemin mais en sens
inverse. La Fant quitte la recherche.

5. Lors de son déplacement, la BAnt met à jour les tables de routage des nœuds visités.

L’algorithme AntNet sera détaillé au niveau du chapitre conception.

35
Chapitre4 Conception et mise en œuvre

Chapitre4

Conception et mise en

œuvre

36
Chapitre4 Conception et mise en œuvre

1. Introduction
L’objectif de notre travail est l’optimisation du routage dans les réseaux informatiques
par la méthode des colonies de fourmis. Nous avons, dans un premier, temps implémenté
puis testé l’algorithme AntNet. Nous avons, ensuite, développé de nouvelles stratégies
visant à améliorer ses performances.

Nous décrivons dans ce chapitre les différentes étapes de l’algorithme AntNet avant de
présenter les stratégies que nous proposons. Une étude comparative des différents
algorithmes sera faite dans le chapitre tests et résultats.

2. AntNet [DHI 07]


L’algorithme AntNet utilise des agents mobiles (fourmis) qui circulent sur le net,
détectent les encombrements du réseau, trouvent de nouvelles routes et permettent ainsi
aux routeurs de s’adapter aux changements du réseau. L’algorithme AntNet utilise deux
types d’agents :
1. les forward ants (FAnt) qui parcourent le réseau pour vérifier l’encombrement du
réseau et trouver des routes de substitution. Au cours de leur déplacement, ces fourmis
récoltent des informations sur la charge du réseau.
2. les backward ants (BAnt) qui mettent à jours les tables de routage en se basant sur les
informations recueillies par la FAnt.

2.1. Modélisation du réseau [DHI 07]


Le réseau est modélisé, dans AntNet, comme un graphe G <N, L> où N est l’ensemble des
nœuds et L l’ensemble des liens. Un nœud dans le graphe représente un routeur dont la
structure interne est définie dans la figure 4.1. Un lien est une ligne de communication.
Tous les liens dans le réseau sont considérés bidirectionnels. Un temps et une capacité de
transmission sont associés à un lien.

37
Ch
Chapitre4 Concepption et misee en œuvre

Figure 4.1
1. Les structu
ures internes
s des liens d’e
entrée et de sortie
s d’un nœ
œud du graphe [DHI 07]

Chaque nœ
œud est com
mposé en entrée
e d’unee file d’atteente. En sorrtie, un nœ
œud possèdee
auutant de filees d’attente que de voiisins imméd
diats. Une file
f d’attentte de sortie est forméee
d’’une file d’aattente de faaible prioritéé et d’une file
f de prioriité élevée.
Lees paquets qui
q circulennt dans le réseau peuven
nt être divissés en deux classes diffférentes :
¾ les paquets
p de données qui véhicu
ulent les innformations que s’éch
hangent less
utilissateurs. Daans AntNett, les paq
quets de données
d nee contienneent aucunee
inforrmation de routage mais
m utilisen
nt l'informaation stockkée dans lees tables dee
routaage pour alller de la souurce vers le nœud desttination.
¾ Les agents
a mobbiles (Forw
ward ants, FAnts,
F and Backward ants, BAntts) qui sontt
utilissés pour meettre à jour les
l tables dee routage ett pour inforrmer les rou
uteurs de laa
chargge du trafic dans le réseeau.
Les paqueets de donnéées et les paaquets FAntts ont la mêême prioritéé (priorité faible).
fa Lorss
duu passage auu niveau d’’un nœud, ces
c paquets sont stockéés dans la fiile d’attentee (FIFO) dee
faaible prioritéé. Cependannt, les paquuets BAnts ont
o une prioorité plus éélevée et passent par laa
fille d’attentee de prioritté élevée. Pour
P que laa taille dess files d’atttente ne so
oit pas unee
coontrainte, ellle est suppoosée être asssez grande.

38
3
Chapitre4 Conception et mise en œuvre

2.2. Structures de données d’un nœud :


Au niveau de chaque nœud k du graphe, il existe deux tables : la table de routage et une
table supplémentaire appelée table des statistiques de la charge du réseau (figure 4.2). Les
fourmis communiquent d'une manière indirecte, à travers les informations qu’elles lisent et
écrivent au niveau de ces deux structures de données.

Figure 4.2. Structures de données d’un nœud K [DHI 07]

La table de routage est définie comme une matrice dont les entrées sont des probabilités.
Chaque ligne dans la table de routage correspond à une destination dans le réseau et
chaque colonne correspond à un voisin du nœud k. La table de routage Tk définit la
politique probabiliste de routage adoptée au niveau du nœud k : pour chaque destination
possible d et pour chaque voisin n du nœud k, Tk sauvegarde une valeur pnd exprimant la
probabilité de choisir n comme prochain nœud quand la destination est d tel que :  

où Nk est l’ensemble des voisins du nœud k.

La deuxième table, Mk, contient des statistiques sur la topologie du réseau et sa charge
vue par le nœud k. Pour chaque destination d dans le réseau, Mk contient une fenêtre

39
Chapitre4 Conception et mise en œuvre

d’observation mobile Wd, un temps moyen μd estimé et une variance estimée σ²d. La

fenêtre d’observation mobile Wd, de taille Wmax, représente un vecteur contenant les
temps de parcours des dernières Wmax FAnts qui voyagent du nœud k à la destination d.
La fenêtre d’observation mobile Wd est utilisé pour calculer le meilleur temps de parcours
tbestd, c.a.d. le meilleur temps de parcours obtenu par une FAnt allant du nœud k à la
destination d parmi les Wmax dernières FAnt qui vont du nœud k à la destination d.

μd et σ2d représentent la moyenne et la variance du temps de parcours effectués par les


FAnts pour se déplacer du nœud k au nœud destination d :

                                                                                  

                                                                       

Où :

• tk→d représente le dernier temps de parcours de la FAnt pour passer du nœud k


au nœud destination d.

• η∈ [0, 1] est un facteur. Di Caro et Dorigo associent η à la taille maximale de la


fenêtre d’observation Wmax de la manière suivante [DIC 98]:

      1                                                                                     3     

2.3. Présentation de l’algorithme AntNet


Les différentes étapes de AntNet sont détaillées ci-dessous [DIC 98] :

1. À intervalles réguliers et à partir de chaque nœud s du réseau, une fourmi FAnts→d


est lancée vers un nœud destination d. Une destination d est choisie en fonction de
la probabilité suivante :

                                                                                                   

Où fsd est le flux de données (nombre de paquets) de s vers d.

40
Chapitre4 Conception et mise en œuvre

Le noeud vers lequel s envoie le plus grand nombre de paquets a plus de chance d’être
choisi comme nœud destination (4).

2. Chaque FAnt à une mémoire interne (pile) où elle sauvegarde deux informations : le
chemin qu’elle prend pour se rendre de s vers d, et les conditions de la charge du réseau.
L’identifiant de chaque nœud visité k et le temps qui s'est écoulé depuis le lancement de la
fourmi FAnt pour arriver à ce kième nœud sont empilés dans cette mémoire (Ss→d). Les
FAnts traversent les mêmes files d'attente que les paquets de données. Ainsi, elles
subissent les mêmes retards que les paquets de données et peuvent donc évaluer
correctement la charge du réseau (figure 4.3).

Figure 4.3. Déplacement d’une FAnt [DIC 04]

3. À chaque nœud k, une fourmi FAnt choisit le prochain nœud à visiter de la façon
suivante :

S’il existe des nœuds voisins qui n'ont pas encore été visités, alors le prochain voisin est
choisi parmi eux avec la probabilité suivante :

     
                                              
  | |  

Où Nk représente l'ensemble des voisins du nœud courant k, |Nk| le cardinal de cet


ensemble et Ln ∈ [0, 1] est une heuristique de correction tel que 1−Ln est proportionnel à
la taille qn de la file d'attente du lien reliant le nœud k à son voisin n :

  | |
                                                          

41
Chapitre4 Conception et mise en œuvre

α pondère l'importance de l'état instantané de la file d'attente du nœud.

Sinon si tous les nœuds voisins ont déjà été visités, alors le prochain nœud est choisi
parmi tous les voisins de la manière suivante:

Si n   V ,  n     , /VS->K l’ensemble des nœuds déjà visités alors

1
                       | |  1
| |   1 
   0                                                                
Dans ce cas-ci, puisque tous les voisins ont déjà été visités, la FAnt est forcée de
retourner à un nœud précédemment visité. Ainsi, quelque soit son choix, la fourmi entre
dans une boucle (cycle).

4. Si un cycle est détecté, c-à-d., si la fourmi est forcée de retourner vers un nœud déjà
visité, les nœuds du cycle sont dépilés de la mémoire de la FAnt (Figure 4.4). Si le cycle a
duré plus longtemps que l’âge de la FAnt avant d'entrer dans le cycle, la fourmi est
détruite. L’âge de la FAnt est défini comme étant le nombre de déplacement depuis sa
génération.

Figure 4.4 : Détection d’un cycle par une FAnt [DHI 07].

5. Quand le nœud destination d est atteint, la FAnt Fs->d génère une fourmi en arrière
(BAnt) Bd->s. La FAnt transfère toute sa mémoire à la BAnt, et meurt.

6. La fourmi BAnt reprend le même chemin que la FAnt qui l’a générée mais dans le
sens inverse (figure 4.5). A chaque nœud traversé k, la BAnt Bd->s dépile sa mémoire Ss->d

42
Chapitre4 Conception et mise en œuvre

pour se déplacer au prochain nœud. Les BAnt ne passent pas par les mêmes files d'attente
que les paquets de données et les FAnts; elles utilisent des files d'attente de priorité plus
élevée pour propager rapidement aux tables de routage les informations récoltées par les
FAnts.

Figure 4.5 : La BAnt emprunte le chemin pris par la FAnt dans le sens opposé [DIC 04]

7. Arrivant à un nœud k venant d'un nœud voisin h, la BAnt met à jour les deux
structures de données principales du nœud, la table des statistiques M et la table de routage
T, pour toutes les entrées correspondant au nœud destination d (Figure 4.6) :

Figure 4.6 : Mise à jour des tables M et T par la BAnt[DIC 04]

 
Les valeurs   µd et  σ2d  dans la table  Mk sont modifiées en  utilisant les formules  1  
et  2 .  La  meilleure  valeur  tbestd du  temps  de  parcours  des  FAnts  du  noeud  k  au 
nœud d sauvegardée dans la fenêtre d’observation mobile  Wd  est également mise 

43
Chapitre4 Conception et mise en œuvre

à  jour  par  la  BAnt.  Si  le  temps  tk‐ d  de  parcours  de  la  FAnt  du  nœud  k    à  la 
destination d est plus petit que tbestd alors tbestd  est remplacé par le tk‐ d.   
De  plus,  la  table  de  routage  Tk    est  changée  en    incrémentant  la  probabilité  phd’ 
probabilité de choisir le voisin h quand la destination est d’ . Elle est modifiée par 
la formule suivante : 
                                                                        

Les autres probabilités sont décrémentés par la normalisation :

      ,     ,                                                

où h est le dernier nœud accédé par la BAnt et d’ représente tout nœud entre le nœud
destination d et le nœud courant k.

Dans AntNet, chaque chemin trouvé par les FAnt vers l'avant reçoit un taux de
phéromone (r) compris entre dans l’intervalle [0, 1] et calculée comme suit:

 
                                                  
        

où tk→d est le temps de parcours observé par la dernière FAnt du nœud k à la destination
d et tbestd est le meilleur temps de parcours fait par les FAnts voyageant vers la destination

d sur la fenêtre d’observation Wd. La valeur de tsup est calculée comme suit:

                                                      
    | |

où γ est le niveau de confiance.

Le premier terme dans (9) évalue le rapport entre le temps de parcours de la FAnt
courante et le meilleur temps de parcours observé sur la fenêtre d’observation mobile. Le
second terme est un facteur de correction qui indique l’éloignement entre les valeurs tk→d et
tbestd [DIC 98]. Les valeurs de C1 et C2 indiquent l’importance relative de chaque terme. Il
est logique de supposer que le premier terme dans (9) est plus important que le deuxième
terme. En conséquence la valeur de C1 doit être choisie plus grande que la valeur de C2.

44
Chapitre4 Conception et mise en œuvre

3. Stratégies proposées
Dans ce qui suit nous allons développer trois stratégies dans le but d’améliorer les
performances de AntNet.

3.1. Première stratégie (AntNet à 2 pas)


Le processus est le même que celui décrit dans l’état de l’art, à la seule différence que,
dans ce cas, une fourmi fait deux pas seulement. Si la destination est atteinte, on continue
le processus décrit de l’algorithme AntNet. Sinon, on estime le temps qui reste pour
atteindre la destination depuis le nœud courant en prenant comme estimation le temps
moyen pour aller du nœud courant vers la destination. Si cette moyenne est égale à zéro, la
destination devient le nœud courant. Dans les deux cas, on entame le processus des BAnt
décrit précédemment.

Le principe de cette stratégie est le suivant:

1. Chaque nœud lance une fourmi FAnt et génère aléatoirement une destination d (un
nœud du graphe).

2. Chaque FAnt passe d’un nœud vers un autre selon une politique stochastique fonction
du taux de phéromone sur le lien entre les deux nœuds et de l’information spécifique au
problème qui est fonction du taux de remplissage de la liste d’attente entre les deux nœuds.

3. Chaque FAnt sauvegarde dans sa mémoire le parcours qu’elle a effectuée ainsi que le
temps mis pour parcourir un lien entre deux nœuds.

4. Lorsque la FAnt arrive à destination avec un nombre de pas inférieur ou égale a 2,


elle génère une BAnt qui va recevoir toutes les informations récoltées par la FAnt et qui va
parcourir le même chemin mais en sens inverse.

5. Lorsque la FAnt n’arrive pas à sa destination après deux pas, et s’il existe déjà, dans
M, une estimation du temps moyen de parcours depuis le nœud courant vers la destination
(temps moyen), on considère que la destination a été atteinte par la FAnt et on empile le
temps moyen estimé dans sa pile. Si le temps moyen de parcours depuis le nœud courant
vers la destination est égal à zéro (non encore estimé), on considère le nœud courant
comme la destination finale de la fourmi. Dans les deux cas, on génère une BAnt qui va

45
Chapitre4 Conception et mise en œuvre

recevoir toutes les informations récoltées par la FAnt et qui va parcourir le même chemin
mais en sens inverse (même processus que pour AntNet). La Fant est tuée.

L’idée proposée a pour buts :

¾ De supprimer les cycles : une fourmi partant d’un nœud, ne peut pas décrire un cycle si
elle ne peut visiter que deux autres nœuds.
¾ L’efficacité de la méthode ne dépend pas de la taille du réseau ;
¾ la probabilité que des fourmis soient perdues est quasi nulle car :
o le nombre de fourmis dans la file d’attente ne peut pas être aussi important
que dans le cas de AntNet.
o le temps requis pour visiter deux nœuds n’a rien de comparable avec le
temps que met une fourmi pour atteindre sa destination.
3.2. Deuxième stratégie (AntNet par inondation)
À intervalles réguliers, de chaque nœud du réseau, une fourmi vers l'avant Fs→d est
lancée à destination d’un nœud d aléatoirement choisi. Le nombre de fourmis lancées à
partir d’un nœud est égal au nombre de voisins de ce nœud. Chaque nœud voisin génère à
son tour autant de fourmis qu’il a de voisins. Si un nœud reçoit une autre fourmi issue d’un
nœud S donné, il la tue afin d’éviter de faire le même travail plusieurs fois. La fourmi qui
arrive en premier au nœud d est celle à avoir parcouru le plus court chemin. Elle génère
une BAnt qui parcourt le chemin dans le sens inverse. Cette BAnt exécute les mêmes
opérations que celles décrites dans AntNet.

L’idée proposée a pour buts d’accélérer la recherche. On trouve ainsi toujours le plus court
chemin vers une destination en une seule étape.
3.3. Troisième stratégie (AntNet+Ant2Hops)
Cette stratégie est une hybridation de l’algorithme AntNet et AntNet à 2 pas. Elle utilise
deux types de fourmis FAnt :
¾ Des fourmis FAnt qui opère de la même manière que celles décrites dans
AntNet;
¾ Des fourmis dont le parcours est limité à deux pas seulement (FAnt2pas). Elles
ont pour but de trouver le meilleur chemin vers un nœud distant de deux pas, et
ainsi réduire l’espace de recherche des fourmis Fant. Leur taux de génération

46
Chapitre4 Conception et mise en œuvre

est plus élevé que celui des fourmis Fant. Ces fourmis ne génèrent pas de
cycles.

Soit à trouver le meilleur parcours d’un nœud S à destination d’un nœud D. Pour chaque
nœud situé à deux pas de la destination finale D, les fourmis à deux pas ont déjà tracé le
plus court chemin. Sur la figure 4.7, le meilleur chemin de Si à D tracé par une fourmi à
deux pas est représenté en gras. Il en est de même pour le meilleur chemin pour aller de Sf
à D. Les fourmis à deux pas réduisent l’espace de recherche des fourmis Fant. Ainsi, pour
trouver le meilleur chemin de Sj à D, le nombre de solutions qui s’offrent à une fourmi Fant
est réduit à 2. Nous n’avons besoin que de deux fourmis Fant. Une fourmi Fant passant par
Sj ou issue de Sj à destination de D, va pouvoir modifier les entrées correspondantes à D
dans la table de routage de Sj. Elle modifie aussi les entrées correspondant à D dans les
tables de routage des nœuds visités.

Si Sk

Sj D

Sf SR

Figure 4.7 : indique les chemins trace par les fourmis à deux pas depuis Si->D et Sf->D.

Dans cette stratégie, les deux types de fourmis coopèrent pour trouver le meilleur
chemin de la manière suivante :
1. A chaque intervalle de temps Δ’t, chaque nœud génère une fourmi à deux pas vers
une destination choisie aléatoirement. De plus, à chaque intervalle de temps Δt >>
Δ’t, chaque nœud génère aussi une fourmi FAnt vers une destination d.

2. Les fourmis FAnt opèrent de la façon décrite dans l’algorithme AntNet. Quand aux
fourmis à deux pas, elles opèrent de la façon suivante :

a. Si une fourmi a deux pas atteint sa destination en un nombre de pas inférieur


ou égal àdeux, cette fourmi est considérée comme une fourmi FAnt et suit le
même processus.

47
Chapitre4 Conception et mise en œuvre

b. Si une fourmi n’atteint pas sa destination, on considère le nœud courant


comme destination, et cette fourmi génère une fourmi Bant.

L’idée proposée a pour buts :


¾ de minimise le nombre de cycles;
¾ localement les fourmis à deux pas optimisent les chemins parcourus
¾ les fourmis à deux pas orientent les fourmis AntNet
¾ Les paquets, dont la destination est à deux pas, prennent toujours le plus court chemin.

4. Mise en œuvre
Les tests décrits ci-dessous, ont été faits sur le simulateur OMNeT++ (Object-oriented
Modular discrete event NeTwork simulator), un simulateur discret modulaire orienté object
de réseau d'événement. OMNET++ peut être utilisé pour :

¾ modéliser le trafic des réseaux de télécommunication ;


¾ modéliser des protocoles ;
¾ modéliser les files d'attente de réseaux ;
¾ modéliser des multiprocesseurs et d'autres systèmes répartis de matériel ;
¾ valider des architectures matérielles ;
¾ évaluer les performances de systèmes logiciels complexes ;
¾ modéliser tout autre système à événement discrets.
OMNET++ contient un éditeur qui s’appelle GNED (Graphical NED Editor)
fonctionnant avec les fichiers d’extension .ned. L’éditeur GNED permet de concevoir
graphiquement des modules composés, des modules simples et des canaux de réseaux.
Chaque module est un fichier d’extension .ned. On peut dessiner les modules
manuellement, comme on peut écrire du code dans le Bloc-notes et l’enregistrer avec
l’extension .ned. Le nom de chaque fichier (.ned) contient le même nom de programme
C++. OMNET++ intègre visuel c++. Dans le répertoire du programme de simulation, il
existe un autre fichier qui s’appelle omnetpp.ini et contenant les paramètres de tous les
modules et les paramètres relatifs à l’exécution des programmes.

4.1. Schéma fonctionnel du logiciel


Notre application simule différentes stratégies sur différentes topologies réseaux. Elle
est formée de trois couches :

48
Chapitre4 Conception et mise en œuvre

4.1.1. La couche 0
Cette couche contient les bibliothèques de base. Ces bibliothèques ont été conçues
indépendamment de l’environnement de l’application. Cette bibliothèque contient les
classes suivantes :

La classe protocolParameters contenant tous les paramètres d’un protocole.

La classe ant : contient des variables et des méthodes concernent la fourmi. Exemple de
méthodes : calcul de la taille des différents types de fourmis (pile et variables), accéder les
informations d’un nœud k déjà visité,….

La classe antGenerator : le but de cette classe est de créer des fourmis à des intervalles
de temps réguliers vers une destination aléatoirement choisie. Cette classe hérite de la
classe cSimpleModule prédéfinie par le simulateur.

La classe antNest : le but de cette classe est de faire tous les traitements pour une fourmi.
Il existe, par exemple, des méthodes pour détecter la présence de cycles et leur destruction,
pour la sélection du prochain voisin à visiter, pour stocker dans la mémoire de la fourmi les
informations relatives au nœud, pour modifier la table de phéromone (table de routage),
pour détecter si la fourmi a atteint sa destination ou sa source ou s’il faut détruire cette
fourmi,… Cette classe hérite de la classe cSimpleModule.

La classe antSink : cette classe a pour but de calculer le temps total que met une fourmi
pour atteindre une destination et revenir à sa source, et pour calculer le nombre de bits par
seconde reçus au niveau d’un nœud. Cette classe hérite de la classe cSimpleModule.

La classe buffer : cette classe contient les variables et méthodes pour la gestion de la file
d’attente, par exemple calculer la taille de la file d’attente (normale et rapide).

La classe dataGenerator : le but pour cette classe est de créer une session qui contient
l’adresse du nœud et la quantité de données que veut transmettre ce nœud. A des
intervalles de temps réguliers, des paquets sont envoyés et la quantité de données
diminuée. Cette classe hérite de la classe cSimpleModule.

49
Chapitre4 Conception et mise en œuvre

La classe dataSink : cette classe a pour but de collecter le temps que met un paquet pour
atteindre sa destination, et pour calculer le nombre de bits reçus par seconde. Cette classe
hérite de la classe cSimpleModule.

La classe router : a pour but d’acheminer les messages vers un voisinage via un port. Elle
transmet des paquets hello pour définir les voisins qui sont en connexion avec le nœud et
pour définir les caractéristiques des routes (bande passante, débit,…). Cette classe hérite
de la classe cSimpleModule.

La classe routingDB : dans cette classe on va calculer le nombre de pas idéal entre deux
nœuds dans le réseau. Cette classe hérite de la classe cSimpleModule.

La classe routingTable : fait les opérations de lecture et écriture et d’affichage de la table


de routage.

La classe statistics : calculs statistiques : calcul de la variance, du temps et du nombre


moyen de pas pour un paquet avant d’atteindre sa destination, ….. Cette classe hérite de la
classe cSimpleModule.

4.1.2. La couche 1 :
Cette couche s’occupe de l’éditeur de paramètres appelé par tous les programmes de
simulation « omnetpp.ini ». De cet éditeur on peut transmettre des paramètres aux
programmes et paramétrer l’exécution de programmes.

4.1.3. La couche 2 :
C’est l’interface utilisateur (figure 4.8).

50
Chapitre4 Conception et mise en œuvre

Figure 4.8 : l’interface utilisateur

5. Conclusion
Nous avons vu d ans ce chapitre la conception et la mise en œuvre de notre application.
Trois stratégies ont été proposées. Dans le chapitre qui va suivre, nous allons présenter les
tests et les résultats de simulation de notre application.

51
Chapitre5

Tests et résultats

52
Chapitre5 Tests et résultats

1. Introduction
Rappelons que l’objectif de notre travail est l’optimisation du routage dans les réseaux
informatiques par colonies de fourmis. Pour cela, nous avons étudié l’algorithme AntNet,
l’avons implémenté et testé. Puis nous avons proposés, dans la partie conception, trois
stratégies : AntNet à 2 pas, AntNet par inondation et AntNet+Ant2Hops (optimisation
locale et globale) dans le but d’améliorer ses performances. Dans cette partie, nous allons
présentés quelques résultats obtenus sur les performances de AntNet et des trois stratégies
proposées. Une étude comparative sera faite. Tous les tests et simulations ont été faits sur
le simulateur OMNET++.

Le réseau sur lequel vont portés nos tests est une topologie non-homogènement
distribuée : le réseau NTT. Elle est constituée de 57 nœuds (routeurs) et de 162 liaisons
bidirectionnelles en fibre optique (figure 5.1). La vitesse de transmission des liaisons de
sortie est de 6 Mbits/sec ; le temps de propagation est, quant à lui, compris entre 1 et 5
millisecondes.

Figure 5.1 : ce schéma indique le réseau NTT.

53
Chapitre5 Tests et résultats

Les tests sur les différents algorithmes ont été faits par rapport : au taux de génération
des sessions, la variation de la taille des files d’attente, l’existence d’un nœud hotspot, du
nombre de nœuds en panne, et enfin du taux de génération de paquets. Les paramètres
comparés sont : le nombre de paquets arrivés à destination, la moyenne temporelle que met
un paquet pour atteindre une destination ainsi que la variance.

Dans le fichier omnetpp.ini, nous avons paramétré le programme de simulation (voir


annexe A). Plusieurs tests peuvent être programmés à la fois. Nous faisons varier les
valeurs des paramètres et étudions leur influence sur les performances de chaque
algorithme.

2. Performance de AntNet à 2 pas et AntNet par inondation comparée à


AntNet
Nous avons remarqué à travers les différentes simulations que nous avons effectuées
que AntNet à 2 pas et AntNet par inondation n’ont pas donné les résultats attendus si on les
compare à AntNet. Le tableau 5.2 est un résumé des tests effectués.

Tableau 5.0 : Comparaison de AntNet à 2 pas, AntNet par inondation et AntNet

L’algorithme Pourcentage des paquets qui temps Variance


attient a sa destination moyen

AntNet 99.320 0.210 0.369

AntNet à 2 pas 59.88 1.46 1.92

AntNet par inondation 98.81 0.3 0.62

Les résultats de AntNet à 2 pas ont montré qu’il n’améliore pas les performances de
l’algorithme AntNet. Ceci est dû à la fonction d’’estimation utilisée. Il se pourrait qu’une
autre fonction donne de meilleur résultat.

54
Chapitre5 Tests et résultats

De même, les résultats de l’algorithme AntNet par inondation n’améliore pas les
performances de l’algorithme AntNet. L’encombrement de réseaux pourrait en être la
raison. Dans cet algorithme, il est clair que le plus court chemin est trouvée cependant le
réseau devient encombré (trop de fourmis circulent).

3. Performance de AntNet+Ant2Hops comparée à AntNet


Le but de ces tests est de faire une étude comparative de AntNet et AntNet+Ant2Hops.

3.1. Taux de générations des sessions


Un nœud crée une session s’il y’a des données à émettre vers un autre nœud. Chaque
session contient le nœud destination et la taille des données qui restent à émettre au nœud.

Le taux de générations des sessions de données suit une loi exponentielle. Le tableau
5.1. donne les résultats des performances de l’algorithme AntNet et AntNet+Ant2Hops.

Tableau 5.1 : variation de Taux de génération des sessions

L’intervalle entre deux L’algorithme Pourcentage des temps Variance


événements de création paquets qui attient a sa moyen
une session destination

. AntNet 91.265 0.849 0.888

AntNet+Ant2Hops 91.542 0.725 0.765

. AntNet 99.320 0.210 0.369

AntNet+Ant2Hops 99.957 0.101 0.166

. AntNet 99.811 0.061 0.162

AntNet+Ant2Hops 99.991 0.036 0.042

55
Chapitre5 Tests et résultats

Les trois figures suivantes (Figures 5.2, 5.3 et 5.4) sont les représentations graphiques
du temps moyen, de la variance et du pourcentage de paquets arrivés à destination du
tableau 5.1.

temps moyen
e^1,7 e^2,7 e^4,7
0,849
0,725

0,21
0,101
0,061 0,036

AntNet AntNet+Ant2Hops

Figure 5.2 : Evolution du temps moyen de AntNet et AntNe+Ant2Hops

la variance 
e^1,7 e^2,7 e^4,7

0,888
0,765

0,369

0,162 0,166
0,042

AntNet AntNet+Ant2Hops

Figure 5.3 : Evolution de la variance de AntNet et AntNe+Ant2Hops

56
Chapitre5 Tests et résultats

pourcentage des paquets délivre 
e^1.7 e^2.7 e^4.7

99,96 99,99
99,32 99,81

91,26 91,54

AntNet AntNet+Ant2Hops

Figure 5.4 : Pourcentage de paquets délivrés par AntNet et AntNet+Ant2Hops

Dans le tableau 5.1, nous remarquons que la stratégie proposée est plus intéressante que
AntNet pour toutes les simulations faites. Nous remarquons que le temps moyen pour un
paquet d’atteindre sa destination augmente lorsque le taux de génération des sessions
augmente et cela pour les deux méthodes. Cela revient à l’augmentation du nombre de
paquet généré dans chaque nœud vers différents nœuds du réseau et l’augmentation de la
taille des files d’attente dans chaque nœud.

3.2. Variation de la taille de file d’attente


Le tableau 5.2 donne les résultats des performances de l’algorithme AntNet et de
AntNet+Ant2Hops lorsque l’on fait varier la taille de la file d’attente de 1000 à 4000.

57
Chapitre5 Tests et résultats

Tableau 5.2 :Variation de la taille de file d’attente.

La taille de L’algorithme Pourcentage des Moyen Variance


file paquets qui attient
d’attente a sa destination

1000 AntNet 99.320 0.210 0.369

AntNet+Ant2Hops 99.957 0.101 0.166

1500 AntNet 99.767 0.195 0.377

AntNet+Ant2Hops 99.978 0.114 0.194

2500 AntNet 99.95 0.215 0.397

AntNet+Ant2Hops 99.982 0.199 0.200

4000 AntNet 99.906 0.282 0.534

AntNet+Ant2Hops 99.987 0.107 0.184

Les trois figures suivantes (Figures 5.5, 5.6 et 5.7) sont les représentations graphiques du
temps moyen, de la variance et le pourcentage des paquets arrivés à destination du tableau
5.2.

58
Chapitre5 Tests et résultats

le temps moyen 
1000 1500 2500 4000
0,282

0,21 0,215
0,195 0,199

0,114 0,107
0,101

AntNet  AntNet+Ant2Hops 

Figure 5.5 : Evolution du temps moyen en fonction de la taille de la file d’attente

la variance 
1000 1500 2500 4000

0,534

0,397
0,3690,377

0,194 0,2 0,184


0,166

AntNet  AntNet+Ant2Hops 

Figure 5.6 : Evolution de la variance en fonction de la taille de la file d’attente

59
Chapitre5 Tests et résultats

pourcentage des paquets délivre 
1000 1500 2500 4000

99,95 99,9699,9899,9899,98
99,9
99,77

99,32

AntNet AntNet+Ant2Hops

Figure 5.7 : Pourcentage de paquets délivrés en fonction de la taille de la file d’attente

Nous remarquons que AntNet+Ant2Hops est plus performant que AntNet. La suppression
des paquets par un nœud dans le réseau se fait dans les trois cas suivants : 1. si un paquet
atteint le temps maximal de vie, 2. s’il atteint le nombre de pas maximal, 3. si ce paquet est
acheminé vers un lien dont la file d’attente est pleine.
Nous remarquons que le pourcentage de paquets qui ont atteint leur destination augmente
lorsque la taille de la file d’attente augmente. Cela est tout à fait normal et revient à la
minimisation du troisième cas de suppression de paquet.
Nous remarquons aussi que le temps moyen et la variance augmentent à chaque
augmentation de la taille de file d’attente. Cela revient à l’augmentation de la probabilité
que l’on prend en considération dans le calcule du temps moyen si les paquets prennent un
mauvais chemin pour atteindre leur destination.

3.3. Existence ou non d’un nœud hotspot :


Un nœud hotspot est un nœud spécial très sollicité par les autres nœuds du réseau. Tous
les nœuds de la topologie génèrent régulièrement des paquets vers ce nœud (exemple le
fournisseur CERIST).

Pour les simulations suivantes, nous avons choisi comme station hotspot le nœud 4 de la
topologie NTT (Figure 5.1).

60
Chapitre5 Tests et résultats

Le tableau 5.3 donne les résultats des performances de l’algorithme AntNet et


AntNet+Ant2Hops lorsque qu’il existe un nœud hotspot et lorsqu’il n’en existe aucun.

Tableau 5.3 : Performance de AntNet et AntNet+Ant2Hops avec et sans hotspot dans le réseau.

L’existence d’un nœud L’algorithme Pourcentage des Moyen Variance


HotSpot paquets qui attient a sa
destination

Non Existe AntNet 99.320 0.210 0.369

AntNet+Ant2Hops 99.957 0.101 0.166

Existe AntNet 99.940 0.059 0.104

AntNet+Ant2Hops 99.989 0.036 0.032

Nous remarquons que AntNet+Ant2Hops est plus performante que AntNet. Le temps
moyen et la variance diminuent dans le cas de l’existence d’un nœud HotSpot. Cela est du
au fait que tous les paquets envoyés passent par le nœud HotSpot. Ces paquets prennent le
plus court chemin et pour cela la file d’attente de chaque nœud vers un autre est presque
vide.
3.4. Nombre de Nœuds en panne:
Pour ces simulations, nous mettons des nœuds intéressants en panne à un temps définie
pour pouvoir voir comment les deux méthodes vont réagir. Dans la première simulation
aucun nœud ne tombe en panne. Dans la 2eme le nœud 21 arrête de fonctionner. Puis, les
nœuds 21 et 40 tombent en panne au même instant. Dans la dernière simulation, les deux
nœuds tombent en panne à des instants différents. Le tableau 5.4 donne un résumé des
résultats obtenus.

61
Chapitre5 Tests et résultats

Tableau 5.4 : Performance de AntNet et AntNet+Ant2Hops avec certains nœuds en panne.

Les nœuds qui sont L’algorithme Pourcentage des Moyen Variance


tombe en panne avec le paquets qui attient a
temps sa destination

Aucun nœud ne tombe en AntNet 99.320% 0.210 0.369


panne.
AntNet+Ant2Hops 99.957% 0.101 0.166

(nœud=21, t=1000) AntNet 99.012% 0.175 0.319

AntNet+Ant2Hops 99.602% 0.131 0.230

(nœud=21,t=1000) AntNet 98.211% 0.174 0.322


(nœud=40,t=1000)
AntNet+Ant2Hops 98.730 0.124 0.202

(nœud=21,t=800) AntNet 96.525% 0.249 0.448


(nœud=40,t=1000)
AntNet+Ant2Hops 98.529 0.165 0.301

Nous remarquons que AntNet+Ant2Hops est plus intéressant que AntNet. Nous
remarquons que le nombre de perte de paquets augment alors que le temps moyen et la
variance diminuent à chaque augmentation du nombre de panne et le temps de panne.

3.5. Taux de génération des paquets :


Pour les tests suivants, nous allons varier le taux de génération des paquets. Il va suivre
une loi exponentielle. Le tableau 5.5 donne un résumé des tests obtenus.

62
Chapitre5 Tests et résultats

Tableau 5.5 : Performance de AntNet et Antnet+Ant2Hops en fonction du taux de génération des


paquets.

L’algorithme Pourcentage des Moyen Variance


L’intervalle paquets qui attient a
entre deux sa destination
événements
pour la
génération
des paquets

. AntNet 99.320% 0.210 0.369

AntNet+Ant2Hops 99.957% 0.101 0.166

. AntNet 97.571% 0.581 0.584

AntNet+Ant2Hops 98.693 0.449 0.441

Nous remarquons que AntNet+Ant2Hops est plus performant que AntNet. Nous
remarquons que le pourcentage de perte des paquets et le temps moyen ainsi que la
variance augmentent, lorsque le taux de génération des paquets augmente. Cela est dû à
l’augmentation la taille de la file d’attente. Les fourmis n’ont pas le temps suffisant pour
découvrir exactement le plus court chemin.

4. conclusion
D’après les résultats des tests précédents, nous pouvons confirmée que l’optimisation
par colonie de fourmis est des plus prometteuses pour le problème de routage. Nous
remarquons que AntNet+Ant2Hops a de meilleures performances que AntNet.

Notons que, pour des raisons d’espace, il nous est impossible de présenter tous les tests,
mais seuls le plus significatifs ont été introduits dans ce chapitre.

63
Conclusion générale
Ce document décrit la problématique du routage dans les réseaux informatiques.
L’algorithme OSPF utilisé dans les réseaux autonomes est exposé avec de nombreux
détails. L’intérêt des méthodes d’optimisation dans le routage est montré à travers AntNet,
un algorithme à état de liens basé sur les colonies de fourmis. AntNet présente une
convergence lente Les résultats des simulations montre toutefois que cet algorithme a des
performances meilleures que celle d’OSPF.
Nous avons exposé trois stratégies inspirées d’AntNet. Nous les avons simulées avec
OMNET++, un simulateur à événements discrets. Nous avons utilisé pour les besoins de
simulation, la topologie NTT, un réseau de cinquante sept nœuds. Les résultats des
simulations attribuent des performances médiocres à la première stratégie (Ant2Hops). La
deuxième stratégie qui procède par inondation, a pour inconvénients de surcharger le
réseau. La troisième stratégie est une hybridation d’AntNet et de la stratégie Ant2Hops.
Cette stratégie utilise deux types de fourmis : des fourmis qui optimisent localement les
parcours, et des fourmis qui optimisent globalement le chemin d’un nœud source à un
nœud destination. Nous avons observé que cette stratégie offre des performances
meilleures que celles d’AntNet.

64
REFERENCES

[ARB 74] M. Abramowitz, I.A. Stegun (Eds.), A Handbook of Mathematical


Functions, With Formulas, Graphs, and Mathematical Tables, June, Dover,
New York, 1974, ISBN: 0486612724.

[BEA 05] Nigel Bean and Andre Costa, An analytic modelling approach for network
routing algorithms that use "ant-like" mobile agents, Computer Networks,
vol. 49, pp. 243-268, 2005.

[BEC 92] R. Beckers, J.L. Deneubourg and S. Goss, Trails and U-turns in the selection
of the shortest paths by the ant Lasius Niger, Journal of Theoretical Biology,
vol. 159, pp. 397-415, 1992.

[CAM 00] Daniel Camara and Antonia A.F. Loureiro, Ants A novel routing algorithm
for ad hoc networks, Proc. 33rd Hawaii International Conference on System
Sciences, 2000.

[COS 03] Andre Costa, Analytic Modelling of Agent-based Network Routing


Algorithms, PhD Thesis,School of Applied Mathematics, University of
Adelaide, 2003.

[DEN 90] J.-L. Deneubourg, S. Aron, S. Goss and J.-M. Pasteels, The Self-Organizing
Exploratory Pattern of the Argenttine Ant, Journal of Insect Behavior, vol.
3, pp. 159-168, 1990.

[DIC 98] Gianni Di Caro and Marco Dorigo, AntNet: Distributed Stigmergetic
Control for Communication Networks, Journal of Artificial Intelligence
Research, vol. 9, pp. 317-365, 1998.

[DIC 98b] Gianni Di Caro and Marco Dorigo, Two Ant Colony Algorithms for Best-
Effort Routing in Datagram Networks, Proc. 10th International Conference
on Parallel and Distributed Computing and Systems, 1998.

65
[DOR 99] Marco Dorigo, Gianni Di Caro and L.M. Gambardella, Ant Algorithms for
Discrete Optimization, Artificial Life, vol. 5, No. 2, pp. 137-172, 1999.

[DOR 99b] Marco Dorigo and Gianni Di Caro, "The Ant Colony Optimization Meta-
Heuristic", McGraw-Hill Press, pp. 11 - 32, 1999.

[DOR 04] Marco Dorigo and Thomas Stützle, "Ant Colony Optimization", MIT Press,
Cambridge, MA, 2004. ISBN 0262042193

[DUC 05] F. Ducatelle, Gianni Di Caro and L.M. Gambardella, "Ant Agents for
Hybrid Multipath Routing in Mobile Ad Hoc Networks", Proc. 2nd Annual
Conference on Wireless On demand Network Systems and Services
(WONS), 2005.

[GUN 03] Mesut Güne¸S and Otto Spaniel, "Routing Algorithms for Mobile Multi-
Hop Ad-Hoc Networks,Network Control and Engineering for QoS, Security
and Mobility II, IFIP TC6 /WG6.2 &WG6.7 Conference on Network
Control and Engineering for QoS (Net-Con 2003), pp. 120-138, 2003.

[HEU 98] M. Heusse, D. Snyers, S. Guerin and P. Kuntz, "Adaptive Agent-driven


Routing and Load Balancing in Communication Networks", Rapport
technique de l’ENST de Brestagne, RR-98001-iasc, 1998.

[HOF 01] R. van der Hofstad, G. Hooghiemstra and P. Van Mieghem, "First Passage
Percolation on the Random Graph", Probability in the Engineering and
Informational Sciences (PIES), vol. 15, pp. 225-237, 2001.

[KAE 96] L.P. Kaeilbling, M.L. Littman and A.W. Moore, Reinforcement Learning: A
survey, Journal of Artificial Intelligence Research 4, vol. 4, pp. 237-285,
1996.

[LEO 96] Alberto Leon-Garcia, Probability and Random Processes for Electrical
Engineering, Addison-Wesley Publishing Company, 1994. ISBN: 0-201-
50037-X. 1996.

66
[MIE 01] P. Van Mieghem, Paths in the Simple Random Graph and the Waxman
Graph, Probability in the Engineering and Informational Sciences (PIES),
vol. 15, pp. 535-555, 2001.

[MIE 05] P. Van Mieghem, Performance Analysis of Computer Systems and


Networks, Cambridge University Press, 2005.

[PAS 87] J.M. Pasteels, J.L. Deneubourg and S. Goss, Self-Organization Mechanisms
in Ant Societies (I): Trail Recruitment to Newly Discovered Food Sources,
Experientia Supplementum, vol. 54, pp. 155-175, 1987.

[RAJ 05] Rajagopalan and C. Shen, ANSI: A Unicast Routing Protocol for Mobile Ad
hoc Networks Using Swarm Intelligence, Proc. International Conference on
Artificial Intelligence, pp. 24-27, 2005.

[ROT 03] Martin Roth and Stephen Wicker, Termite: Emergent Ad-Hoc Networking,
Proc. 2nd Mediterranean Workshop on Ad-Hoc Networking, June 2003.

[SCH 96] Ruud Schoonderwoerd, Owen Holland, Janet Bruten and Leon Rothkrantz,
Antbased load balancing in telecommunications networks, Journal of
Adaptive Behavior, vol. 5, number 2, pp. 169-207, 1996.

[SCH 97] Ruud Schoonderwoerd, Owen Holland and Janet Bruten, Ant-like agents
for load balancing in telecommunication networks, Proc. First International
Conference on Autonomous agents, 1997.

[SUB 03] Devika Subramanian, Peter Druschel and Johnny Chen, Ants and
Reinforcement Learning: A Case Study in Routing in Dynamic Networks,
Proc. 2nd Mediterranean Workshop on Ad-Hoc Networking, June 2003.

[SUT 98] Richard S. Sutton and Andrew G. Barto, Reinforcement Learning: An


Introduction, MIT Press, Cambridge, MA, 1998.

[THE 99] G. Theraulaz and E. Bonabeau, A Brief History of Stigmergy, Artificial Life
(Special Issue on Stigmergy), vol. 5, pp. 97-116, 1999.

[SIY 99] Karanjit S.Siyan TCP/IP Edition CAMPUSPRESS 1999.

67
[HUI 95] CHRISTIAN HUITEMA, LE ROUTAGE DANS L’INTERNET Edition
EYROLLES 1995.

68
ANNEXE A

[General]
network = nttNet
ini-warnings = no
warnings = yes
snapshot-file = nttNet.sna
log-parchanges = no
total-stack-kb=4096 ;4 Mbyte -- increase if necessary
sim-time-limit = 1050
; cpu-time-limit= 300s
[Cmdenv]
;runs-to-execute = 1,2,3,4,5,6,7,8,9,10,11
;runs-to-execute = 7,8,9,10,11
;runs-to-execute = 1,2,3,4,5,6,7,8,9,10,11
runs-to-execute = 1
;runs-to-execute = 2
express-mode = yes
# for non-express mode:
module-messages = yes
event-banners = yes
# for express mode:
status-frequency = 50000
performance-display = no
[Tkenv]
;default-run=1
use-mainwindow = yes
print-banners = yes
slowexec-delay = 300ms
update-freq-fast = 10
update-freq-express = 1000
breakpoints-enabled = yes
extra-stack = 20480 ;20 K but 10K is probably enough
[Parameters]
nttNet.rte[*].log = true
nttNet.rte[*].dGen.numMessages = 1000000000
nttNet.rte[*].dGen.converganceTime = 50
nttNet.rte[*].dGen.messageLength = 512
nttNet.rte[*].dGen.sleepTimeAtStart = 15
nttNet.rte[*].aGen.messageLength = 512
nttNet.rte[*].aGen.converganceTime = 50
nttNet.rte[*].aGen.sleepTimeAtStart = 15
nttNet.rte[*].dSink.sleepTimeAtStart = 50
nttNet.rte[*].dSink.throughputInterval = 1
nttNet.rte[*].aSink.sleepTimeAtStart = 15
nttNet.rte[*].aSink.throughputInterval = 1
nttNet.rte[*].router.messageLength = 512
nttNet.rte[*].router.agentProcTime = true
nttNet.rte[*].router.contextSwitchTime = 0.0
nttNet.rte[*].router.converganceTime = 50
nttNet.rte[*].router.queueDelay = false
nttNet.rte[*].router.helloTimeOutValue = 0.030
nttNet.rte[*].router.topologyUpdatePeriod = 1800.0
nttNet.rte[*].router.ageDecrementTimeValue = 1.0
nttNet.rte[*].router.floodWaitInterval = 0.005
nttNet.rte[*].router.waitHelloReplyTime = 0.3
nttNet.rte[*].router.resendAttempts = 5.0

69
nttNet.rte[*].router.probabilisticRouting = true
nttNet.rte[*].router.qWeightFactor = 0.45 ;same as nttNet.rte[*].aNest.queueWeight = 0.45
nttNet.rte[*].aNest.expMeanCoefficient = 0.15 ;0.005
nttNet.rte[*].aNest.windowSizeCoefficient = 0.3
nttNet.rte[*].aNest.zetaConfidenceLevel = 1.72
nttNet.rte[*].aNest.explorationProbablity = 0.001
nttNet.rte[*].aNest.rescalingPower = 1.2
nttNet.rte[*].aNest.queueWeight = 0.45
nttNet.rte[*].aNest.timeWeight = 0.15
nttNet.rte[*].aNest.forkProbability = 0.75
nttNet.rte[*].aNest.maxHopsCoefficient = 1.5
nttNet.rte[*].aNest.ageLimit = 30
nttNet.rte[*].aNest.squashFunctionCoefficient = 2.0
nttNet.rte[*].aNest.probabilisticRouting = true
nttNet.rte[*].aNest.sleepTimeAtStart = 14
nttNet.rte[*].aNest.converganceTime = 30
nttNet.rte[*].aGen.iaTime = uniform(0.2, 0.25)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
;include param.ini
[Run 1]
# load is reasonable
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.hotmpia = exponential(0.04)
nttNet.rte[*].dGen.startTime = 550
nttNet.rte[*].dGen.endTime = 1050
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.stats.statFile = "nTTNetStatisitcsFile1.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet1.vec
output-scalar-file = nttNet1.sca
[Run 2]
# highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(4.7)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile2.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet2.vec
output-scalar-file = nttNet2.sca
[Run 3]
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(1.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0

70
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile3.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet3.vec
output-scalar-file = nttNet3.sca
[Run 4]
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile4.txt"
nttNet.rte[*].router.queueSize = 1500
output-vector-file = nttNet4.vec
output-scalar-file = nttNet4.sca
[Run 5]
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile5.txt"
nttNet.rte[*].router.queueSize = 2500
output-vector-file = nttNet5.vec
output-scalar-file = nttNet5.sca
[Run 6]
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.2, 0.3)
nttNet.stats.statFile = "nTTNetStatisitcsFile6.txt"
nttNet.rte[*].router.queueSize = 4000
output-vector-file = nttNet6.vec

71
output-scalar-file = nttNet6.sca
[Run 7]
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.3)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = 4
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.startTime = 1000
nttNet.rte[*].dGen.endTime = 1500
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile7.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet7.vec
output-scalar-file = nttNet7.sca
[Run 8]
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[21].router.startTime = 1000
nttNet.rte[21].router.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile8.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet8.vec
output-scalar-file = nttNet8.sca
[Run 9]
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[21].router.startTime = 1000
nttNet.rte[21].router.endTime = 1550
nttNet.rte[40].router.startTime = 1000
nttNet.rte[40].router.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile9.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet9.vec
output-scalar-file = nttNet9.sca
[Run 10]

72
# very highly loaded
nttNet.rte[*].dGen.iaTime = exponential(0.005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[21].router.startTime = 800
nttNet.rte[21].router.endTime = 1300
nttNet.rte[40].router.startTime = 1000
nttNet.rte[40].router.endTime = 1300
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile10.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet10.vec
output-scalar-file = nttNet10.sca
[Run 11]
# load is reasonable
nttNet.rte[*].dGen.iaTime = exponential(0.0005)
nttNet.rte[*].dGen.msiaTime = exponential(2.7)
nttNet.rte[*].dGen.sessionSize = 2130000
nttNet.rte[*].dGen.factor = 1.0
nttNet.rte[*].dGen.hotSpot = -1
nttNet.rte[*].dGen.hotmpia = exponential(0.05)
nttNet.rte[*].dGen.startTime = 1550
nttNet.rte[*].dGen.endTime = 1550
nttNet.rte[*].router.startTime = 1550
nttNet.rte[*].router.endTime = 1550
nttNet.rte[*].aGen.iaTime = uniform(0.1, 0.2)
nttNet.stats.statFile = "nTTNetStatisitcsFile11.txt"
nttNet.rte[*].router.queueSize = 1000
output-vector-file = nttNet11.vec
output-scalar-file = nttNet11.sca

73

View publication stats

Vous aimerez peut-être aussi