Académique Documents
Professionnel Documents
Culture Documents
net/publication/299667695
CITATIONS READS
0 5,695
3 authors, including:
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by EL-Hachemi Guerrout on 05 April 2016.
Thème :
Optimisation des Protocoles de Routage avec la méthode
de Colonie de Fourmis
Réalisé par :
Mr GUERROUT EL-Hachemi
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.
i
REMERCIEMENTS
Enfin, mes remerciements vont à ceux qui ont participés, plus ou moins
indirectement à ma thèse.
ii
Résumé
iii
TABLES DES MATIERES
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
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
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.
Connexions
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.
4
Chapitre1 Routage
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.
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.
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.
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.
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.
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.
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)
Routeur interne Routeur externe
SA
SA
4
Interior Gateway Protocol.
12
Ch
Chapitre2 Protocole de rooutage actu
uel (OSPF)
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.
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.
• 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.
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.
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.
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)
Type Signification
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.
16
Chapitre2 Protocole de routage actuel (OSPF)
Le champ Masque réseau : masque de sous réseau associé à l’interface sur lequel le
message a été émis.
E T
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)
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 :
18
Chapitre2 Protocole de routage actuel (OSPF)
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
…
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.
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.
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)
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.
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.
Masque sous-réseau
Identifiant OSPF de routeur connecté
---
Identifiant OSPF de routeur connecté
23
Chapitre2 Protocole de routage actuel (OSPF)
Masque de sous-réseau
---
24
Chapitre2 Protocole de routage actuel (OSPF)
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
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 :
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.
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.
27
Chapitre3 (colonie de fourmis, AntNet)
28
Chapitre3 (colonie de fourmis, AntNet)
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).
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]:
29
Chapitre3 (colonie de fourmis, AntNet)
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 :
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
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.
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.
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.
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.
32
Chapitre3 (colonie de fourmis, AntNet)
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.
PROCEDURE Activité_des_fourmis ()
33
Chapitre3 (colonie de fourmis, AntNet)
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.
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.
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.
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
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 :
1
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.
Où :
1 3
∑
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).
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 :
| |
| |
∑
41
Chapitre4 Conception et mise en œuvre
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:
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) :
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 :
, ,
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:
| |
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.
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.
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.
¾ 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 :
47
Chapitre4 Conception et mise en œuvre
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 :
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 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.
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
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.
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.
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).
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.
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
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
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
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.
57
Chapitre5 Tests et résultats
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
la variance
1000 1500 2500 4000
0,534
0,397
0,3690,377
AntNet AntNet+Ant2Hops
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
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.
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
Tableau 5.3 : Performance de AntNet et AntNet+Ant2Hops avec et sans hotspot dans le réseau.
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
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.
62
Chapitre5 Tests et résultats
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
[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.
[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.
[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.
[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.
[THE 99] G. Theraulaz and E. Bonabeau, A Brief History of Stigmergy, Artificial Life
(Special Issue on Stigmergy), vol. 5, pp. 97-116, 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