Vous êtes sur la page 1sur 137

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

MINISTÈRE DE L'ENSEIGNEMENT SUPERIEUR


ET DE LA RECHERCHE SCIENTIFIQUE

‫وزارة اـــــ ا ــــ وا اــــــــ‬


‫ ـ ام وا هان  ــــــ ف‬

Université des sciences et de Technologie d'Oran – Mohammed Boudiaf


USTO-MB

Faculté de génie électrique


Département d'électronique

Ecole doctorale : NTIC, SIR Option : NTIC

MEMOIRE
Présenté par

Mohammed El Amin KOURTICHE

pour l'obtention du
Diplôme de Magister

Thème

Application du paradigme codage réseau


à la transmission de données dans
les environnements sans fil

Soutenu le
18/02/2014
Devant le jury

Mr OUAMRI. Abdelaziz Président Professeur USTO


Mr GUEZOURI. Mustapha Rapporteur MCA Univ-Oran
Mr BERRACHED. NasrEddine Examinateur Professeur USTO
Mr OUSLIM. Mohamed Examinateur MCA USTO
A
Ma mère & mon père

Vous êtes pour moi une source de vie car sans vos sacrifices, votre
tendresse et votre affection je ne pourrais arriver jusqu’au bout. Que
Dieu vous garde afin que votre regard puisse suivre ma destinée.

A
Mon frère & Mes sœurs

Mon amour à votre égard est une grandeur non quantifiable.


Remerciements

J’adresse mes vifs remerciements à Mr GUEZOURI Mustapha, pour


l’encadrement de mon travail, sa disponibilité, son soutien, sa patience et ses
recommandations constructives.

Je tiens à remercier les différents membres de mon jury présidé par le


professeur OUAMRI Abdelaziz. Mes remerciements vont également aux
examinateurs BERRACHED Nasr Eddine, KECHE Mokhtar et Kaddour
Mejdi

Mes remerciements seraient sans doute incomplets si je ne cite pas :


Mes parents sans qui ce travail n’aurait jamais vu le jour… Je leur suis
infiniment reconnaissant pour leur amour, leur soutien moral et leur
encouragement.
Résumé

Un réseau traditionnel emploie des routeurs pour assurer la bonne


transmission des messages. Fondamentalement, un routeur permet de copier
un message entrant puis de le renvoyer, tel quel, vers ses différentes sorties.
La nouveauté introduite par le codage réseau est d'autoriser au niveau de
chaque nœud du réseau une étape de traitement des messages entrants puis
de routage.

Ce traitement permet ainsi de combiner les informations à transmettre, via


le calcul d'une fonction des entrées (par exemple une combinaison linéaire)
avant de les envoyer. Cette étape d'encodage doit être réalisée de manière à
assurer que les nœuds terminaux puissent reconstruire, exactement ou au
moins avec une grande probabilité (dans le cas de pertes), les messages
originaux.

Le codage réseau (Network coding) est un nouveau mode de transfert de


données dans lequel les nœuds du réseau peuvent réaliser des opérations de
codage sur les données d’un paquet. Dans un réseau de transfert classique, les
nœuds du réseau n’effectuent que des opérations simples comme recevoir et
retransmettre un paquet sans effectuer aucun codage sur les données. Les
récents travaux de recherche montrent que le codage de réseau peut améliorer
considérablement le débit, la robustesse et la sécurité d’un réseau. Par
exemple, deux terminaux mobiles multi-interfaces peuvent utiliser
simultanément plusieurs chemins entre eux. Le codage réseau, dans un
environnement à taux d’erreur élevé comme les réseaux sans fil, permet une
coopération forte entre les chemins simultanés pour améliorer la performance
du réseau.

Ce modeste travail consiste à: Etudier les méthodes et les algorithmes de


codage réseau qui peuvent être utilisés dans les nœuds afin d’améliorer le
débit. Et évaluer ces algorithmes par simulation sous NS2.

Mots clés : Codage réseau, Réseau sans fil, Codage réseau linéaire aléatoire,
Broadcast par inondation probabiliste, Broadcast par codage réseau.

I
‫‬

‫ا  ا   ا ت !ن ال  م ا ت‪#$ .‬‬


‫ا'س‪ ،‬ا ( ‪ )*+ ,‬ا ‪0‬ت ا اردة و‪ 1 2‬إر  ‪6‬ة أ‪67‬ى‪ ،‬دون‬
‫‪ 69‬إ ‪ :‬ا *‪ ;$‬ا =<‪ .‬أ ا ‪ B‬ا ;ي أد‪@ (7‬م ‪ 6‬ا  ه ا ح ‬
‫‪C‬ة ‪ #$‬ا  م ‪ B +‬ا ‪0‬ت ا اردة و‪ 1 2‬ا (‪.‬‬

‫إن ‪ C‬ا  ‪ F+ , B‬ا ت ا ‪ D6E 2C 6‬ا م ‪+‬ب دوال‬
‫ر‪ :C I‬ا ‪H7‬ت )‪ L‬ا ‪ KB‬ا =‪  N (#0‬إر ‪ .‬إن ‪07‬ة ا ‪ OB 6‬أن‬
‫ ‪  2! 60+‬ا *‪ S‬إ  ادة ‪ R ! +‬أو ‪ :C‬ا'‪ K N‬ا‪Q‬ل آ ‪6‬‬
‫)‪$  Q #$‬ان( ا ت ا'‪.T‬‬

‫‪ 6‬ا  )‪ Network coding‬ه ‪ 6E‬ة * ا ت ‪ a+‬أن ‪ C‬ا ‬
‫ ‪ 2‬أن ‪b‬دي ‪C‬ت ‪+ :C 6‬ت ا ‪   c #$ .‬ا ‪C ،‬‬
‫ا  م ‪C ;<*+‬ت ‪ L R$ 0+‬ا ل وإ‪C‬دة ‪ 2 Q a+‬دون‬
‫ا م ‪d+‬ي ‪ :C 6‬ا ت‪ 6@ .‬ا'‪+‬ث ا'‪67‬ة أن ‪ 6‬ا   ‪ 2‬أن ‪2‬‬
‫‪  +‬آ ‪ C6 6‬ا ‪ ، ،D$‬وأ‪ 2‬ا ‪   :C.‬ا ‪L‬ل‪2 2*1f 2  ،‬‬
‫ا ا‪ O‬ا ‪ $60‬ا * دة ا'و( ا=ام رات دة ‪ #$‬و‪ gN‬وا‪Q‬‬
‫‪ .*+‬إن ‪ 6‬ا  ‪ L <6 d07   K h+ #$ ،‬ا ت ا ‪، H‬‬
‫‪ ,‬ون ‪N‬ي ‪ 2+‬ا رات ا ا* ‪ 2‬أداء ا ‪.‬‬
‫‪ #$‬ه;ا ا  ا ا‪* KI‬م ‪+‬را ‪7‬ارزت و ‪6E‬ق ‪ 6‬ا  ا ‪2  #‬‬
‫ا=ا ‪ #$‬ا  ‪ 2‬ا ‪ .D$‬و ه;‪ l‬ا =ارزت ‪ D6E 2C‬ا آة‬
‫‪+‬ل ‪ F6+‬ا آة ‪.NS2‬‬

‫آت ا
‪ 6 :‬ا ‪ ،‬ا  ا ‪ 6 ، H‬ا  ا =‪ #0‬ا  ا‪،#S‬‬
‫ا‪f‬رل ‪ 6 D6E 2C‬ا ‪.‬‬

‫‪II‬‬
Table des matières

INTRODUCTION ....................................................................................... 1
1. LES RESEAUX SANS FIL .................................................................... 4
INTRODUCTION ............................................................................................... 4

1.1 Les différentes catégories de réseaux sans fil ............................................... 4


1.1.1 WPAN ............................................................................................................................... 4
1.1.2 WLAN................................................................................................................................ 5
1.1.3 WMAN .............................................................................................................................. 5
1.1.4 WWAN.............................................................................................................................. 6
1.2 Les réseaux sans fil avec infrastructure ........................................................ 8
1.2.1 Définition ............................................................................................................................. 8
1.3 Les réseaux sans fil sans infrastructure (Ad-Hoc) ....................................... 9
1.3.1 Définition ............................................................................................................................. 9
1.4 Algorithmes et architectures de routage ..................................................... 10
1.4.1 Méthodes de routage traditionnelles ............................................................................... 10
1.4.1.1 Le routage par inondation (flooding) ............................................................................. 10
1.4.1.2 Le routage par vecteur de distance ...........................................................................................................................12
1.4.1.3 Le routage par état de lien.........................................................................................................................................16
1.4.2 Le routage dans les réseaux sans fil Ad Hoc ...................................................................... 17
1.4.2.1 Routage proactif ........................................................................................................................................................19
1.4.2.2 Routage réactif ..........................................................................................................................................................20
1.4.2.3 Les protocoles hybrides .............................................................................................................................................20
1.4.3 Description de quelques protocoles de routage Ad Hoc .................................................. 21
Ad-hoc On Demand Distance Vector (AODV) ........................................................................................................................21
Dynamic Source Routing (DSR) ..............................................................................................................................................22
Optimized Link State Routing (OLSR) .....................................................................................................................................23

Conclusion.............................................................................................................. 25
2. NOTIONS DE THEORIE DES GRAPHES ........................................ 26
Introduction ........................................................................................................... 26
2.1 Notion de graphe ............................................................................................ 26
2.2 Notion de flot ................................................................................................. 27
2.3 Notion de réseau résiduel............................................................................... 28
2.4 Problème de flot maximal ............................................................................. 31
2.4.1 Définition du problème ..................................................................................................... 31
2.4.2 Méthode de Ford et Fulkerson .......................................................................................... 33
2.4.3 Ajout d'un flot résiduel ...................................................................................................... 38

III
2.4.4 Chemin augmentant .......................................................................................................... 39
2.5 Définition d’une coupe .................................................................................. 41
2.5.1 Coupe Minimum (MinCut)................................................................................................. 42
2.6 Théorème de coupe minimale-flot maximum ............................................. 42
2.6.1 Algorithme de Ford et Fulkerson ....................................................................................... 42
Conclusion.............................................................................................................. 45
3. LE CODAGE RESEAU ........................................................................ 46
Introduction ........................................................................................................... 46
3.1 Notion de codage réseau ................................................................................ 46
3.2 Les avantages du codage réseau ................................................................... 47
3.2.1 Le débit .............................................................................................................................. 48
3.2.2 Robustesse ......................................................................................................................... 51
3.2.3 Sécurité ............................................................................................................................. 53
3.2.4 Diminution de l’énergie par bit ......................................................................................... 53
3.3 Principes fondamentaux du codage réseau ................................................. 54
3.4 Introduction du codage réseau ..................................................................... 58
Conclusion.............................................................................................................. 60
4. LES ALGORITHMES DE CODAGE RESEAU ................................. 61
Introduction ........................................................................................................... 61
4.1 Codage réseau linéaire multicast ................................................................. 61
4.2 Codage réseau linéaire aléatoire (RLNC) ................................................... 64
4.3 Construction algébrique du codage réseau ................................................. 67
4.4 Exemple ............................................................................................................. 72
Conclusion.............................................................................................................. 76
5. ENVIRONNEMENT DE SIMULATIONS ET OUTILS UTILISES 77
5.1 L’intérêt d’utiliser un simulateur ................................................................. 77
5.2 Le simulateur NS2 ........................................................................................... 77
5.2.1 Composition d'un script de simulation.............................................................................. 79
5.2.2 Le langage (O)Tcl .............................................................................................................. 80
5.2.3 Avantages et difficultés de NS2 ......................................................................................... 81
5.3 Les étapes réalisées ......................................................................................... 82
5.4 Algorithme de codage ..................................................................................... 84
5.5 Procédure de décodage.................................................................................... 84

IV
5.6 Installation de Cygwin et NS2 ..................................................................... 84
5.6.1 installation de Cygwin........................................................................................................ 84
5.6.2. Installation de NS2 : .......................................................................................................... 90
5.6.3 Intégration du module network coding ............................................................................ 93
5.7 Topologies utilisées : cercle, grille, aléatoire............................................. 93
6. ÉVALUATION DE PERFORMANCE ................................................ 94
Introduction ........................................................................................................... 94
6.1 Applications du codage réseau dans le réseau de paquet ......................... 94
6.2 Évaluation de performance ........................................................................... 97
6.2.1 Modèle de trafic ................................................................................................................ 98
6.2.2 Topologie et scénario ........................................................................................................ 98
6.2.3 Résultats de simulation ................................................................................................... 100
I. Le cas fixe ..........................................................................................................................................................................100
I.1 Topologie en cercle ...................................................................................................................................................100
I.2 Topologie en gille ......................................................................................................................................................104
I.3 Topologie aléatoire ...................................................................................................................................................108
II. Le cas mobile ............................................................................................................................................................110

Conclusion............................................................................................................ 113
CONCLUSION ........................................................................................ 114
BIBLIOGRAPHIE .................................................................................. 115
ANNEXE A .............................................................................................. 119

V
Table des figures

1.1 : Les catégories de réseaux sans fil............................................................................................. 7


1.2 : Exemple de réseau Ad-Hoc....................................................................................................... 9
1.3 : Émission d’un paquet dans le cas du routage par inondation .............................................. 11
1.4 : Réseau utilisant le routage par vecteur de distance ............................................................. 13
1.5 : Problème de la rupture de lien dans le routage par vecteur de distance ............................. 14
1.6 : Recherche de route par inondation (AODV) .......................................................................... 22
1.7 : Recherche de route par inondation (DSR) ............................................................................ 23
1.8 : Relais multipoints .................................................................................................................. 24
2.1 : Exemple de graphe d’un réseau ............................................................................................. 27
2.2 : Nœud d’interconnexion i ....................................................................................................... 28
2.3 : Notion de réseau résiduel ..................................................................................................... 29
2.4 : réseau de 7 nœuds ................................................................................................................ 30
2.5 : réseau résiduel ..................................................................................................................... 31
2.6 : Réseau routier liant A à F (exemple 2) ................................................................................... 32
2.7 : Un exemple de chaîne ............................................................................................................ 33
2.8 : Utilisation d’un arc sortant ..................................................................................................... 34
2.9 : Utilisation d’un arc à rebours ................................................................................................ 35
2.10 : Chaine d’arcs utilisables ...................................................................................................... 36
2.11: Flot augmenté d’une unité ................................................................................................... 36
2.12 : Seconde chaine d’arcs utilisables ......................................................................................... 36
2.13 : Flot augmenté d’une seconde unité .................................................................................... 37
2.14 : Autre itération conduit à un cycle ....................................................................................... 37
2.15 : chemin augmenté sur le réseau résiduel ........................................................................... 38
2.16 : flot résultant ......................................................................................................................... 39
2.17 : la coupe minimale ................................................................................................................ 41
3.1 : butterfly network .................................................................................................................. 48
3.2 : Réseau modifié de butterfly .................................................................................................. 49
3.3 : Le réseau butterfly sans fil ..................................................................................................... 50
3.4 : Le réseau butterfly sans fil modifié ....................................................................................... 50
3.5 : réseau de tandem de Deux-lien ............................................................................................. 52
3.6 : Économie d’énergie grâce au codage réseau ........................................................................ 54
3.7 : exemple de transmission de paquets (a)sans erreurs (b) avec erreurs ............................... 57
4.1 : Exemple de routage dans le cas de codage réseau ............................................................... 63
4.2 : Un exemple de codage réseau aléatoire ................................................................................ 65
4.3 : Une connexion entre une source et un récepteur ................................................................ 68
4.4 : Les processus dans un nœud intermédiaire .......................................................................... 69
4.5 : Graphe de nœuds et de liens ................................................................................................ 72
4.6 : Graphe d’étiquette des liens .................................................................................................. 73
5.1 : Principe de fonctionnement de NS2 ...................................................................................... 78

VI
5.2 : Protocoles implémentés dans NS2 ......................................................................................... 79
5.3: Organigramme de démarches réalisées ................................................................................. 83
5.4 : Topologie en cercle de 8 nœuds ............................................................................................ 93
5.5 : Topologie en grille de 64 nœuds ............................................................................................ 93
6.1 : Symboles reçus par un récepteur........................................................................................... 95
6.2 : Chaque récepteur reçoit une combinaison de vecteurs de la source ................................... 96
6.3 : la comparaison entre le codage réseau et inondation probabiliste dans la topologie en
cercle avec 8 nœuds ..................................................................................................................... 100
6.4 : la comparaison entre le codage réseau et inondation probabiliste dans la topologie en
cercle avec 16 nœuds ................................................................................................................... 101
6.5 : la comparaison entre le codage réseau et inondation probabiliste dans la topologie en
cercle avec 32 nœuds ................................................................................................................... 102
6.6 : la comparaison entre le codage réseau et inondation probabiliste
dans la topologie en grille avec 9 nœuds ..................................................................................... 104
6.7 : la comparaison entre le codage réseau et inondation probabiliste
dans la topologie en grille avec 25 nœuds ................................................................................... 105
6.8 : la comparaison entre le codage réseau et inondation probabiliste
dans la topologie en grille avec 64 nœuds ................................................................................... 106
6.9 : la comparaison entre le codage réseau et inondation probabiliste
dans une topologie aléatoire avec 17 nœuds ............................................................................. 108
6.10 : la comparaison entre le codage réseau et inondation probabiliste
dans une topologie aléatoire avec 50 nœuds ............................................................................. 109
6.11 : la comparaison entre le codage réseau et inondation probabiliste
dans une topologie aléatoire avec 12 nœuds ............................................................................. 110
6.12 : la comparaison entre le codage réseau et inondation probabiliste
dans une topologie aléatoire avec 34 nœuds ............................................................................. 111
6.13 : la comparaison entre le codage réseau et inondation probabiliste
dans une topologie aléatoire avec 50 nœuds ............................................................................. 112

VII
Liste des tables

Tab 1.1: Évolution des distances dans les tables de routage..................................................... 14

Tab 1.2: Évolution des distances dans les tables de routage de B et de C dans le cas d’une
rupture du lien entre A et B ........................................................................................................... 14

Tab 3.1: Les opérations de (+, ×) en modulo 2 ............................................................................ 55

Tab 3.2: Les opérations de (+, ×) en modulo 3 ............................................................................ 55

Tab 5.1 : principales instructions de NS2 ..................................................................................... 80

VIII
Introduction
Les évolutions technologiques actuelles de nos sociétés ont pour
conséquence de demander toujours plus de services aux réseaux de
communications.

Les réseaux locaux sans fil (Wireless Local Area Network ou WLAN)
802.11 ont reçu ces dernières années un grand succès grâce à leur simplicité,
rapidité et faible coût de déploiement. On commence à les trouver un peu
partout: dans les aéroports, les hôtels, les bureaux ainsi que dans les
environnements domestiques.

Pour répondre à ces attentes, une solution consiste à optimiser les


techniques développées dans un domaine de recherche. Une autre solution
consiste à combiner des techniques issues de plusieurs domaines de
recherche. Un exemple réussi est le rapprochement des domaines de la théorie
de l’information et de celle des réseaux qui a notamment débouché sur la
définition de codes à effacement très efficaces et surtout qui a permis
l’introduction du codage réseau.

Aujourd'hui, dix ans après l'émergence du codage réseau qui est un


concept introduit par R. Ahlswede et al [21] avec leur fameux exemple de
réseau du papillon (butterfly network). Ce concept à pour objectif
d’améliorer le débit des transmissions d’information multicast dans un réseau
formé d’une ou de plusieurs sources et d’un ou de plusieurs récepteurs.

L’objectif principal du codage réseau est de définir des techniques


permettant d’atteindre la capacité théorique d’un réseau. Il a également
apporté une métamorphose dans la réflexion sur les réseaux de
communication, en autorisant les nœuds intermédiaires du réseau de non
seulement d’acheminer mais aussi de réaliser des opérations de codage sur
des flux entrants pour produire des flux sortants (combiner les paquets
entrants au lieu de les expédier simplement comme dans la stratégie de
routage classique).

1
Les auteurs de [21] ont prouvé que si le codage réseau est utilisé par les
nœuds intermédiaires pour coder les différents flux, le débit multicast
maximum (capacité multicast) auquel une source peut envoyer l’information
à un ensemble de récepteurs, est donné par la plus petite coupe entre la
source et n’importe quel récepteur quand la taille de corps tend vers l’infini.
Le fait fascinant que le théorème original de codage réseau a apporté est que
les conditions nécessaires et suffisantes pour une transmission unicast à un
certain débit pour chacun de ces récepteurs sont également nécessaires et
suffisantes pour la transmission multicast avec le même débit, à condition que
les nœuds intermédiaires du réseau soient autorisés à combiner et de traiter
différentes flux d’informations.

Dans ce travail nous allons introduire le concept du codage réseau dans


l’environnement sans fil en se basant sur la transmission broadcast qui est très
importante pour les échanges de messages dans le réseau (création des tables
de routage, maintenance des liens…) puis on fait une étude comparative entre
la transmission broadcast par le codage réseau aléatoire et la transmission
broadcast par inondation probabiliste prenant comme paramètres pour
l’évaluation de performance le pourcentage de délivrance de paquet et le
délai.
Le reste du mémoire est organisé autour de six chapitres :

Le premier chapitre aborde les réseaux sans fil avec ses différentes
catégories et infrastructures ainsi que les protocoles de routage utilisés dans
ce type de réseau.

Dans le deuxième chapitre on va entamer des notions de la théorie des


graphes qui sont des concepts, ou des éléments essentiels pour la
représentation d’un réseau (Un graphe est une représentation symbolique d’un
réseau). Il s’agit d’une abstraction de la réalité de sorte à permettre sa
modélisation. En utilisant la théorie des graphes on peut savoir les capacités
théoriques maximum d’un réseau qu’on veut atteindre dans le cas réel.

Le troisième chapitre est un état d’art du codage réseau où seront


développés les points suivants: historique, définition, les avantages par
rapport au routage classique ainsi que les principes fondamentaux.

2
Le quatrième chapitre est consacré aux algorithmes ou méthodes utilisés
par les nœuds de réseau pour réaliser le codage réseau en les illustrant avec
une construction algébrique.

Dans le cinquième chapitre nous allons voir l’environnement de


simulations NS2 et les outils utilisés pour appliquer et exécuter nos scripts
de simulations.

Dans le dernier chapitre une évaluation des résultats sera représentée en


comparant la technique du codage réseau avec le cas ordinaire dans la
transmission broadcast.

Nous clôturerons ce mémoire par une conclusion qui illustre le


mécanisme de codage réseau, et propose des perspectives de recherches qui
peuvent être développés.

3
Chapitre 1

Les réseaux sans fil


Introduction

Le marché des terminaux portables (téléphones, ordinateurs portables,


assistants personnels, etc.) est en forte croissance. Avec les réseaux sans fil,
l’utilisateur peut accéder à des informations sans devoir rechercher un
emplacement de branchement ; les réseaux sans fil présentent de nombreux
avantages sur les réseaux câblés classiques, en termes de productivité,
simplicité et coût. En particulier, les systèmes de réseaux locaux sans fil
peuvent assurer aux utilisateurs d’un réseau un accès aux informations en
temps réel. Ce service est accessible quelle que soit leur localisation à
l’intérieur d’une certaine zone de couverture.

Les différentes catégories de réseaux sans fil

Suivant la portée et le taux de transmission radio disponibles, on parlera


de différents types de réseaux sans fil [1]. Les applications vont souvent varier
d'un type de réseaux à l'autre c'est pourquoi chaque type de réseau repose sur
des normes de communication différentes.

1.1.1 WPAN

Les réseaux sans fil personnels ou Wireless Personal Area Network


(WPAN), sont des réseaux sans fil à très faible portée (de l'ordre d'une dizaine
de mètres). Ils sont le plus souvent utilisés dans le cadre du Wearable
Computing ou informatique vestimentaire qui consiste à faire communiquer
entre eux des matériels présents sur une personne (par exemple une oreillette
et un téléphone portable). Ils sont également utilisés pour relier des
équipements informatiques entre eux: par exemple pour relier une

4
Chapitre 1. Les réseaux sans fil

imprimante ou un PDA (Personal Digital Assistant ou assistant personnel) à


un ordinateur de bureau.
Pour mettre en œuvre de tels réseaux, la principale technologie est IEEE
802.15.1 ou Bluetooth. Elle fut proposée par Ericsson en 1994 et fournit un
taux de transmission radio théorique de 1 Mbit/s pour une portée maximale
d'une trentaine de mètres. Elle est très peu gourmande en énergie ce qui la
rend particulièrement intéressante pour être intégrée dans de petits
équipements autonomes sans fi comme les PDA.

La technologie infrarouge ou IrDA est également utilisée dans ce type de


réseaux. Cette technologie est cependant beaucoup plus sensible que
Bluetooth aux perturbations lumineuses et nécessite une vision directe entre
les éléments souhaitant communiquer ce qui la limite bien souvent à un usage
de type télécommande.

1.1.2 WLAN

Les réseaux locaux sans fil ou Wireless Local Area Network (WLAN) sont
généralement utilisés à l'intérieur d'entreprises, d'universités mais également
chez les particuliers depuis le développement des offres à haut débit. Ces
réseaux sont principalement basés sur la technologie IEEE 802.11 soutenue
par le WECA (Wireless Ethernet Compatibility Alliance) ou sur la technologie
HiperLan1 et son remplaçant Hiperlan2 soutenue par l'ETSI (European
Telecommunications Standards Institute). Ils offrent des taux de transmission
radio théoriques pouvant atteindre 54 Mbit/s pour IEEE 802.11g ou
HiperLan2 c'est-à-dire bien plus élevés que la technologie Bluetooth. La
portée de ces technologies est également beaucoup plus importante: de l'ordre
de 300 mètres en extérieur et 100 mètres à l'intérieur de bâtiments pour IEEE
802.11b et d'une centaine de mètres pour Hiperlan2.

1.1.3 WMAN

Les réseaux métropolitains sans fil ou Wireless Metropolitan Area


Network (WMAN) également appelés boucle locale radio (BLR) étaient à
l'origine prévus pour interconnecter des zones géographiques difficiles
d'accès à l'aide d'un réseau sans fil. Actuellement ces réseaux sont utilisés

5
Chapitre 1. Les réseaux sans fil

dans certaines villes américaines (San Francisco) pour fournir un accès


internet aux habitants. Les réseaux basés sur la technologie IEEE 802.16 ont
une portée de l'ordre de quelques dizaines de kilomètres (50km de portée
théorique annoncée) et un taux de transmission radio théorique pouvant
atteindre 74 Mbit/s pour IEEE 802.16-2004 plus connue sous le nom
commercial de WiMAX.
C'est également dans cette catégorie que peuvent être classés les réseaux
téléphoniques de troisième génération utilisant la norme UMTS (Universal
Mobile Telecommunication System) pour transmettre de la voix et des
données. Cette norme UMTS propose des taux de transmission radio
théoriques pouvant aller jusqu'à 2 Mbit/s sur des distances de plusieurs
kilomètres.

1.1.4 WWAN

Les réseaux sans fil étendus ou Wireless Wide Area Network (WWAN)
regroupent notamment les différents réseaux téléphoniques de première et
deuxième génération mais également les réseaux satellitaires. Les réseaux
cellulaires téléphoniques reposent sur des technologies comme GSM (Global
System for Mobile Communication), GPRS (General Packet Radio Service).
Les réseaux satellites s'appuient quant à eux sur les normes comme DVB-S
(Digital Video Broadcasting-Satellite) pour transmettre l'information et
proposent des débits élevés (de l'ordre de 40 Mbit/s pour la norme DVB-S).

Ces réseaux se posent en concurrents directs des réseaux filaires


traditionnels en proposant des services et une qualité de service de plus en
plus proche de celle que l'on retrouve dans les réseaux filaires. Ils permettent
en particulier de toucher des zones totalement enclavées dans lesquelles les
réseaux de types WMAN ne peuvent être utilisés comme les déserts ou les
zones montagneuses dépourvues d'infrastructures terrestres.

6
Chapitre 1. Les réseaux sans fil

Figure 1.1: Les catégories de réseaux sans fil.

Les réseaux sans fil offrent une grande flexibilité d’emploi, ils permettent la
mise en réseau de sites dont le câblage serait trop onéreux ou impossible à
réaliser. On peut classer les réseaux sans fil par rapport à leur infrastructure
en deux classes :

• Les réseaux avec infrastructure


• Les réseaux sans infrastructure.

7
Chapitre 1. Les réseaux sans fil

1.2 Les réseaux sans fil avec infrastructure

1.2.1 Définition

Les réseaux sans fil avec infrastructure sont également appelés réseaux
cellulaires. Ces réseaux se composent de deux types de terminaux: les stations
de base ou points d'accès et les terminaux mobiles ou nœuds mobiles. Les
points d'accès sont des terminaux fixes reliés en général à une source
d'énergie illimitée et chargés de relayer les informations qui circulent dans
leur cellule. Ils jouent le rôle de serveur pour chaque terminal mobile présent
dans la cellule.

Les terminaux mobiles se déplacent librement mais ne communiquent


jamais directement les uns avec les autres. Toutes les communications se font
systématiquement vers le point d'accès le plus proche qui se charge ensuite de
les relayer à la destination. Ces réseaux sont donc une réponse au problème
d'affaiblissement du signal. En effet, en déployant plusieurs points d'accès on
peut étendre la couverture globale du réseau. Tous les points d'accès sont
reliés entre eux par un réseau filaire qui se charge de la partie routage ainsi
que de la plupart des fonctions d'administration (authentification centralisée
par exemple).

Ce type de réseau est de plus en plus utilisé dans les entreprises et les
universités comme dernier bond d'un réseau d'accès à l'Internet. Ces réseaux
sont souvent retenus pour leur simplicité d'administration. En effet comme
les points d'accès sont fixes et n'ont pas de problème d'énergie, la topologie
du réseau demeure dans l'ensemble assez stable. De plus, les problèmes de
routage sont ici réduits à leur plus simple expression dans la mesure où toutes
les communications (sur la partie sans fil) se font en un bond.
Il existe cependant des problèmes ouverts auxquels s'intéressent de nombreux
travaux de recherche. Parmi eux nous pouvons citer celui du changement de
réseau aussi appelé handover ou handoff.

8
Chapitre 1. Les réseaux sans fil

1.3 Les réseaux sans fil sans infrastructure (Ad-Hoc)

1.3.1 Définition

Contrairement aux réseaux cellulaires qui sont organisés autour de points


d'accès jouant le rôle de routeurs, les réseaux Ad-Hoc sont des réseaux
distribués et spontanés se composant uniquement de terminaux mobiles.
Dans ce type de réseau, présenté sur la figure 1.2, chaque nœud du réseau
joue à la fois le rôle d'élément terminal et le rôle de routeur pour relayer les
messages de ses voisins vers un nœud qui n'est pas situé dans le voisinage
immédiat. On parle alors de réseau coopératif. Sur l'exemple présenté sur la
figure 1.2, le nœud M1 ne peut pas communiquer directement avec le nœud
M5, mais il peut faire relayer son message par M2, M3 et M4. Le groupe de
travail Mobile Ad-Hoc NETworks (MANET) de l'Internet Engineering Task
Force (IETF) a formalisé l'ensemble de ces caractéristiques dans le Request For
Comment (RFC) numéro 2501 [2].

Figure1.2: Exemple de réseau Ad-Hoc

Du fait de la mobilité des nœuds, des problèmes de propagation et


d'énergie, la topologie d'un réseau Ad-Hoc évolue beaucoup au cours du
temps si bien que les routes permettant aux nœuds de communiquer ne sont
pas statiques. Contrairement aux réseaux filaires, une rupture de route ne
peut pas être considérée comme un événement rare dans un réseau Ad-Hoc.
La fréquence de ces évolutions va dépendre principalement de la vitesse de

9
Chapitre 1. Les réseaux sans fil

déplacement des nœuds mais également de l'énergie dont dispose chaque


nœud. En effet, comme chaque nœud doit servir de routeur à ses voisins, la
disparition d'un nœud par manque d'énergie va entrainer des recalcules de
routes. Dans certains cas, cette mobilité et ces aspects énergétiques peuvent
également entrainer des partitionnements du réseau. Par exemple, si les
nœuds M3 et M6 viennent à manquer d'énergie, les nœuds M1 et M2 ne
pourront plus communiquer avec M4, M5 et M7.
Les réseaux Ad-Hoc sont un des éléments moteurs de la recherche dans
les réseaux sans fil car leurs domaines d'application sont très nombreux. Ils
vont du scénario militaire où des soldats veulent échanger des informations
en zone de combat, jusqu'aux interventions sur les sites de catastrophes
naturelles en passant par la création spontanée d'un réseau pour des
événements sociaux comme par exemple une conférence scientifique. Pour
généraliser, ces réseaux vont être utiles partout où il n'y a pas d'infrastructure.

1.4 Algorithmes et architectures de routage

Le routage dans son cadre général est une méthode d’acheminement des
informations à travers un réseau de connexion donné. Le but du routage est
d’acheminer les paquets d’une source vers une destination avec des
optimisations (en terme de certains critères de performance). Il est donc
important de trouver l’investissement de moindre coût, qui va permettre
d’assurer le routage du trafic et de garantir sa fiabilité en cas de panne
pouvant intervenir sur des liens ou sur des nœuds.

1.4.1 Méthodes de routage traditionnelles

Certains algorithmes de routage ont été définis très tôt mais restent des
méthodes solides et éprouvées qui sont encore utilisées aujourd’hui, et qui
gardent une influence très importante sur les travaux réalisés dans ce
domaine.

1.4.1.1 Le routage par inondation (flooding)

Le routage par inondation [3] est probablement la méthode de routage la


plus triviale: chaque routeur recevant un paquet le réémet sur toutes les
10
Chapitre 1. Les réseaux sans fil

interfaces si le routeur n’est pas la destination du paquet. Afin que la fin de


l’inondation soit garantie, plusieurs techniques peuvent être employées.

 Une première solution est d’utiliser un champ de durée de vie (time to


live) dans les paquets transmis, champ qui est décrémenté à chaque
retransmission du paquet. Lorsque la valeur du champ est nulle, alors
le paquet n’est pas retransmis. Une difficulté pour l’émetteur est alors
d’établir quelle valeur initiale choisir pour atteindre la destination sans
surcharger le réseau ; une valeur arbitraire est généralement choisie. Le
protocole IP possède un tel champ qui a pour valeur maximale 255.

 Une seconde approche, qui peut complémenter la première, consiste à


éviter d’envoyer une seconde fois les paquets déjà retransmis. Chaque
paquet doit donc disposer d’un identifiant — il s’agit généralement de
l’adresse de la source couplée avec un numéro de séquence incrémenté
à chaque paquet émis par la source — que les routeurs utilisent afin de
déterminer si le paquet a déjà été reçus et retransmis. Un paquet avec
un identifiant connu sera donc ignoré, et il n’y aura pas de duplication
inutile des paquets dans le réseau.

Figure1.3 : Émission d’un paquet dans le cas du routage par inondation

 Une autre solution est l’inondation probabiliste, cette approche est


basée sur des algorithmes probabilistes (voir par exemple [47]) où les
paquets sont transmis uniquement avec une certaine probabilité.

11
Chapitre 1. Les réseaux sans fil

Algorithm p-flood(m,p)

À la réception d’un message m au nœud n


si le message m est reçu à la 1er fois alors :
broadcast (m) avec la probabilité (p)
fin si

Une propriété du routage par inondation intéressante à noter est qu’il garantit
que le meilleur chemin est utilisé pour atteindre la destination. En effet, par
définition, tous les chemins sont utilisés de manière parallèle et cela inclut
entre autres le meilleur d’entre eux, quelle que soit la métrique servant de
base pour la comparaison. Il faut cependant prendre en compte la surcharge
induite par l’important trafic généré. Cette surcharge peut avoir un impact
non négligeable sur les performances, comme c’est le cas dans un réseau sans
fil.
Le routage par inondation a en outre pour particularité une grande robustesse
en raison de la redondance liée à l’inondation. Si le paquet vers une
destination est perdu sur un chemin, il suffit qu’un autre chemin disjoint du
premier existe pour que le paquet parvienne tout de même à la destination.
S’il n’est pas adapté au routage de paquets à diffusion individuelle, le
principe derrière le routage par inondation ne reste pas moins une option
simple à mettre en œuvre et relativement peu coûteuse pour l’acheminement
des paquets de diffusion.

1.4.1.2 Le routage par vecteur de distance

Une des premières approches non triviales qui a été développée pour le
routage dans les réseaux informatiques est celle du routage par vecteur de
distance. Elle se base sur l’algorithme de Bellman-Ford distribué.
Chaque routeur possède une table de routage qui consiste en un couple de
données pour chaque destination : le routeur par lequel passer pour atteindre
cette destination et le coût associé selon une métrique définie. Ces
informations sont transmises périodiquement à tous les voisins, et donc
chaque routeur reçoit ces informations de ses voisins. Il en résulte que, pour
un routeur, toute destination existant dans la table de routage d’un voisin
devient connue et donc accessible parce routeur.

12
Chapitre 1. Les réseaux sans fil

Le fonctionnement général d’un algorithme de routage de type vecteur de


distance (distance-vector) [12] est le suivant : Chaque routeur i associe un coût
à chacun de ses liens vers un autre routeur j dans une table di(j). Ce coût peut
représenter n’importe quel type de mesure (une constante, un prix, un
délai,...). Chaque routeur i échange di avec ses voisins, et peut ainsi construire
une nouvelle table Di(i,k) représentant le coût minimum pour atteindre un
routeur k non directement connecté à i. Cette valeur est mise à jour à chaque
réception de la table Dj(j,k), pour toutes les valeurs de k connues par le
routeur voisin.

Di(i, k) = min (di(j)+Dj(j, k)) j connecté à i

Le choix du lien à emprunter pour aller de i à k est alors le lien (i,j) qui a
permis la dernière mise à jour de la valeur actuelle de Di(i,k).
Ces échanges de tables entre les routeurs se font tant que l’algorithme n’a pas
convergé. Une fois la convergence atteinte, les échanges continuent afin de
pouvoir détecter les pannes et re-converger vers une nouvelle table de
routage. Cet algorithme est l’algorithme de Bellman-Ford distribué.
Le tableau 1.1illustre l’évolution des tables de routage des routeurs pour le
réseau de la figure 1.4.

Figure1.4: Réseau utilisant le routage par vecteur de distance

On peut noter que l’information relatant l’apparition d’un routeur est


propagée assez rapidement, ce qui rend cet algorithme de routage réactif à
l’apparition de nouveaux routeurs. Généralement, la métrique utilisée pour
cet algorithme est le nombre de sauts, mais d’autres métriques peuvent être
utilisées. L’avantage de la métrique basée sur le nombre de sauts est qu’elle ne
nécessite aucun traitement supplémentaire, la distance entre deux routeurs
voisins restant toujours 1

13
Chapitre 1. Les réseaux sans fil

Routeur A B C D
Etat initial Vers A : 0 Vers B : 0 Vers C: 0 Vers D : 0
Après un Vers A : 0 Vers A : 1 Vers B : 1 Vers C : 1
échange Vers B : 1 Vers B : 0 Vers C : 0 Vers D : 0
Vers C : 1 Vers D :1

Après deux Vers A : 0 Vers A: 1 Vers A: 2 Vers B: 2


échanges Vers B : 1 Vers B : 0 Vers B : 1 Vers C: 1
Vers C : 2 Vers C: 1 Vers C: 0 Vers D: 0
Vers D: 2 Vers D: 1

Après trois Vers A : 0 Vers A : 1 Vers A: 2 Vers A : 3


échanges Vers B : 1 Vers B : 0 Vers B : 1 Vers B : 2
Vers C : 2 Vers C : 1 Vers C : 0 Vers C : 1
Vers D : 3 Vers D: 2 Vers D : 1 Vers D : 0

Tab 1.1 : Évolution des distances dans les tables de routage


dans le cas de la figure 1.4

Un des problèmes de cette méthode est que l’information d’une rupture de


lien se propage très lentement.

Figure 1.5 : Problème de la rupture de lien dans le routage par vecteur de distance

Routeur B C
Etat initial Vers A : 1 Vers A : 2
Vers B : 0 Vers B : 1
Vers C : 1 Vers C : 0

Après un Vers A : 3 Vers A : 2


échange Vers B : 0 Vers B : 1

14
Chapitre 1. Les réseaux sans fil

Vers C : 1 Vers C : 0

Après deux Vers A : 3 Vers A: 4


échanges Vers B : 0 Vers B :1
Vers C : 1 Vers C : 0

Après trois Vers A : 5 Vers A : 4


échanges Vers B : 0 Vers B : 1
Vers C : 1 Vers C : 0

… … …

Tab 1.2 : Évolution des distances dans les tables de routage de B et de C dans le cas
d’une rupture du lien entre A et B

Les protocoles à vecteur de distance sont en général sujets au problème de


boucle et de comptage à l’infini de l’algorithme de Bellman-Ford qu’ils
utilisent (certaines parties du réseau se trouvent isolées du reste, et les nœuds
les composants vont croire qu’ils peuvent atteindre les nœuds desquels ils
sont coupés en passant par leurs voisins. Il s’en suit un phénomène de
bouclage dans lequel les nœuds injoignables se voient attribuer des distances
de plus en plus grandes). La figure 1.5 et le tableau 1.2 illustrent ce problème.
On considère que les tables de routage sont correctement remplies et que le
routeur ˝A˝ disparait brusquement. Les routeurs˝ B˝ et˝ C˝ s’échangent alors
tous les deux une information erronée en supposant que l’autre routeur
possède une route vers˝ A˝, ce qui n’est pas le cas. À chaque étape, la distance
vers ˝A˝ s’incrémente donc doucement.
La notion d’horizon coupé a été introduite afin de limiter cette
incrémentation et de la considérer comme une rupture de lien : lorsque la
distance est supérieure à une certaine valeur, alors elle est considérée comme
infinie, et la route est donc supprimée. La valeur utilisée pour l’horizon coupé
ne peut cependant pas être trop faible car elle limite de fait le diamètre
maximal du réseau. La prise en compte de la disparition d’un routeur
nécessite donc une phase de convergence lente. Un autre problème à propos
ce type d’algorithme de routage est qu’il ne peut y avoir de chemins
multiples.

15
Chapitre 1. Les réseaux sans fil

Cet algorithme forme le cœur du protocole RIP [4, 5], qui fut utilisé au
début d’Internet. En raison du problème majeur qu’est la convergence des
informations de routage en cas de rupture de lien et parce qu’il était plus
adapté à des réseaux de taille limitée, le routage par vecteur de distance a été
assez rapidement abandonné au profit du routage par état de lien [6].

1.4.1.3 Le routage par état de lien

Le principe de base du routage par état de lien est que la connaissance de


la topologie complète du réseau permet de calculer aisément une route de
toute source vers toute destination. Il convient donc de faire en sorte que
chaque routeur connaisse la topologie du réseau. Cette construction d’une
représentation de la topologie se fait en deux étapes : chaque routeur effectue
une découverte de ses voisins et informe l’ensemble du réseau des
informations qu’il a collectées. On peut remarquer qu’il y a tout d’abord un
processus local visant à obtenir une vision locale du réseau, et ensuite un
processus global consistant à partager toutes les visions locales du réseau
pour créer une vision globale, et donc la topologie du réseau.
Pour découvrir ses voisins, un routeur envoie un message HELLO sur chacune
de ses interfaces. Chaque routeur recevant un tel message envoie une réponse,
ce qui permet au routeur initial de savoir qui a reçu le message, et
incidemment quels sont ses voisins. Cette étape est répétée régulièrement afin
de détecter l’apparition de nouveaux voisins ou la disparition d’anciens
voisins.
La mesure du coût d’un lien entre deux routeurs fonctionne comme pour
le routage par vecteur de distance : il peut s’agir du simple nombre de sauts,
ou d’une autre métrique prenant en compte, par exemple, le débit atteignable
sur les liens. Ensuite, chaque routeur rassemble l’ensemble des informations
qu’il possède sur ses voisins et sur les coûts des liens qui le relient à ceux-ci
dans un paquet d’état de lien, et transmet ce paquet en diffusion à tout le
réseau. Ce processus est répété périodiquement, mais il est possible d’utiliser
une fréquence faible et de générer un tel paquet sans attendre la fin d’un
intervalle lorsqu’un évènement tel que l’apparition ou la disparition d’un
voisin a lieu. Cela permet une réactivité plus forte au changement de
topologie. La diffusion des paquets d’état de lien s’effectue par inondation,
comme décrit dans la partie 1.4.1.1.

16
Chapitre 1. Les réseaux sans fil

Une fois la topologie du réseau connue, et celle-ci étant couplée avec


l’ensemble des coûts des liens existant dans la topologie, un routeur dispose
de toutes les informations nécessaires pour le routage. Il met en application
l’algorithme de Dijkstra[7] et détermine le plus court chemin vers tous les
autres routeurs existant dans le réseau ; ce plus court chemin définit la route à
utiliser.
Par rapport au routage par vecteur de distance, le routage par état de lien
nécessite donc des ressources en mémoire et en puissance de calcul plus
importantes, ainsi qu’un trafic réseau plus soutenu — mais stable même dans
le cas d’un changement de topologie — afin de garder une image valide de la
topologie dans chaque routeur. Cette complexité offre évidemment certains
avantages : chaque routeur connaissant la topologie du réseau, une analyse
plus fine peut être réalisée de manière individuelle. Il est par exemple
possible de connaître d’autres chemins que le meilleur chemin, ce qui peut
s’avérer utile lorsqu’il y a dysfonctionnement sur une route. Une utilisation
avancée peut consister à connaître la topologie couplée avec deux métriques
distinctes, permettant de disposer de deux meilleurs chemins, chacun plus
adapté à un type de trafic.
Le routage par état de lien est utilisé dans le protocole de routage interne le
plus répandu actuellement, OSPF [8,9]. Un autre protocole de routage par état
de lien est IS-IS [10].

1.4.2 Le routage dans les réseaux sans fil Ad Hoc

Les méthodes de routage traditionnelles sont des méthodes éprouvées,


qui fonctionnent parfaitement. Elles ne sont néanmoins pas adaptées à tous
les réseaux, notamment aux réseaux sans fil Ad Hoc: de tels réseaux
possèdent des contraintes plus fortes qu’un réseau filaire. Ces méthodes ont
par exemple tendance à utiliser un trafic assez important, sans considérer
l’accès au medium comme une ressource rare. En outre, elles ne sont pas
adaptées aux cas de topologies fortement variables, ce cas étant suffisamment
rare dans le cadre des réseaux filaires pour être ignoré; or, dans le cadre d’un
réseau sans fil, il n’est pas possible de supposer que les nœuds sont fixes.
Le problème du routage dans les réseaux sans fil a donc été très étudié ces
dernières années, et ce largement par le groupe de travail de l’IETF Mobile Ad
Hoc Networking [11] (MANET).

17
Chapitre 1. Les réseaux sans fil

MANET (Mobile Ad Hoc NETwork) est un groupe de travail au sein de l’IETF


(Internet Engineering Task Force) qui a émergé du groupe de travail «mobile IP».

Le groupe MANET se concentre sur les protocoles de routage dans les


réseaux mobiles Ad-Hoc et se propose de standardiser des protocoles de
routage au niveau IP. Les protocoles de routage doivent être totalement
distribués, c'est à dire qu'aucune entité centrale ne doit tout commander, en
plus, les protocoles doivent réagir aux changements imprévisibles et rapides
de la topologie du réseau.
La RFC 2501 [2] a été publiée afin de motiver le travail effectué dans le
cadre du groupe MANET et constitue en quelque sorte le document fondateur
du groupe. En effet, le cadre des études est défini, ainsi que les
caractéristiques souhaitées pour les solutions et des critères de performances
pour évaluer ces dernières.
Les réseaux MANET sont constitués d’un ensemble de nœuds mobiles
communiquant entre eux par des interfaces sans fil. La mobilité des nœuds
résulte en une topologie qui peut varier au cours de temps, sans schéma
prédéfini, et aussi dans la nécessaire prise en compte de la gestion de
l’énergie; les nœuds mobiles ne disposent en effet généralement pas d’une
source d’énergie, et doivent donc optimiser leur fonctionnement. L’utilisation
d’une technologie sans fil, le plus souvent 802.11, a pour conséquence une
bande passante limitée, qui n’est pas comparable à ce qui existe dans un
réseau filaire; le fait que le medium est partagé ne contribue pas à améliorer
cette situation et les congestions sont donc considérées plus fréquentes que
dans le cas filaire. Enfin des problèmes de sécurité se posent et ne doivent pas
être oubliés.
Des protocoles de routage ont été proposés pour prendre en compte les
spécificités des réseaux MANET. Une contrainte forte imposée par le groupe
de travail a été l’utilisation d’IP de manière traditionnelle, sans connexion. Les
protocoles de routage doivent en outre être distribués en raison de l’absence
d’infrastructure, et sans boucle de routage afin d’éviter tout problème majeur
dans le réseau. La bidirectionnalité des liens est considérée comme la norme
pour faciliter l’élaboration des protocoles.
De nombreux critères d’évaluation existent, tels que le débit de bout-en-
bout, le temps d’acheminement de la source à la destination, le temps de
découverte d’une route ou encore l’impact des messages du protocole de
routage sur les performances du réseau.

18
Chapitre 1. Les réseaux sans fil

Une méthodologie complète d’évaluation a donc été développée afin de juger


de la qualité des différentes propositions. Parmi les très nombreuses
propositions de protocoles envoyées au groupe de travail, l’attention s’est vite
portée sur un nombre limité d’entre elles afin de les standardiser. Dans la
suite de cette section, les principaux protocoles MANET seront donc
présentés.
Deux approches sont possibles pour un protocole de routage MANET:
l’approche réactive, afin d’adapter le protocole au trafic existant pour
minimiser les ressources consommées, ou l’approche proactive dans le but de
minimiser le délai de mise en place des communications. D’éventuelles
approches hybrides sont aussi envisageables.

1.4.2.1 Routage proactif

Le principe de base des protocoles proactifs est de maintenir à jour les


tables de routage, de sorte que lorsqu’une application désire envoyer un
paquet à un autre mobile, une route soit immédiatement connue. Dans le
contexte des réseaux ad-hoc les nœuds peuvent apparaître ou disparaître de
manière aléatoire et la topologie même du réseau peut changer; cela signifie
qu’il va falloir un échange continuel d’informations pour que chaque nœud
ait une image à jour du réseau.
Les tables sont donc maintenues grâce à des paquets de contrôle, et il est
possible d’y trouver directement et à tout moment un chemin vers les
destinations connues en fonctions de divers critères. On peut par exemple
privilégier les routes comportant peu de sauts, celles qui offrent la meilleure
bande passante, ou encore celles où le délai est le plus faible. L’avantage
premier de ce type de protocole est d’avoir les routes immédiatement
disponibles quand les applications en ont besoin, mais cela se fait au coût
d’échanges réguliers de messages (consommation de bande passante) qui ne
sont certainement pas tous nécessaires (seules certaines routes seront utilisées
par les applications en général).
Et à titre d’exemples de protocoles proactifs, nous pouvons citer DSDV, FSR,
OLSR.

19
Chapitre 1. Les réseaux sans fil

1.4.2.2 Routage réactif

Dans cette deuxième catégorie de protocoles de routage dite routage à la


demande, les routes ne sont pas maintenues vers tous les nœuds mais elles
sont créées selon les besoins. Lorsqu’il y a un besoin de routage, un
mécanisme de découverte de route est lancé dans le but d’obtenir une
information spécifiée, inconnu au préalable et qui va rester valide tant que la
destination est joignable ou jusqu’au moment où la route devienne inutile. Ici,
la majorité des algorithmes utilisés sont basés sur le mécanisme
d’apprentissage en arrière.
Ce type de routage est lent à cause de la recherche des chemins, ce qui
peut dégrader les performances des applications interactives. De plus, il est
impossible de connaître la qualité au préalable d’un chemin (bande passante,
délai, ..), tandis qu’une telle connaissance est importante pour les applications
multimédia. A titre d’exemples, les protocoles appartenant à cette catégorie
sont DSR, AODV ou TORA.

1.4.2.3 Les protocoles hybrides

Les protocoles hybrides combinent les approches réactive et proactive. Le


principe est de connaître notre voisinage de manière proactive jusqu’à une
certaine distance [13] (par exemple trois ou quatre sauts), et si jamais une
application cherche à envoyer quelque chose à un nœud qui n’est pas dans
cette zone, d’effectuer une recherche réactive à l’extérieur. Avec ce système,
on dispose immédiatement des routes dans notre voisinage proche, et lorsque
la recherche doit être étendue plus loin, elle en est optimisée (un nœud qui
reçoit un paquet de recherche de route réactive va tout de suite savoir si la
destination est dans son propre voisinage. Si c’est le cas, il va pouvoir
répondre, et sinon il va propager de manière optimisée la demande hors de sa
zone proactive). Selon le type de trafic et des routes demandées, ce type de
protocole hybride peut cependant combiner les désavantages des deux
méthodes: échange de paquets de contrôle réguliers et inondation de
l’ensemble de réseau pour chercher une route vers un nœud éloigné.

20
Chapitre 1. Les réseaux sans fil

1.4.3 Description de quelques protocoles de routage Ad Hoc

Ad-hoc On Demand Distance Vector (AODV)

AODV [14] est un protocole basé sur le principe de vecteur de distance et


appartient à la famille des protocoles réactifs. Dans le cas d’AODV, le
problème de boucle et de comptage à l’infini de l’algorithme de Bellman-Ford
sont résolus par l’utilisation de numéros de séquence pour les messages de
contrôle. Quand une application a besoin d’envoyer des paquets sur le réseau
et qu’une route est disponible dans la table de routage, AODV ne joue aucun
rôle. S’il n’y a pas de route disponible, il va par contre en rechercher une.
Cette recherche commence par une inondation de paquets Route Request
(RREQ). Chaque nœud traversé par un RREQ en garde une trace dans son
cache et le retransmet. Quand les paquets de recherche de route arrivent à la
destination (ou à un nœud intermédiaire qui connait lui-même une route
valide jusqu’à la destination), alors un paquet de réponse est généré (RREP) et
il est envoyé par le chemin inverse, grâce aux informations gardées dans les
caches des nœuds traversés par les RREQ (voir figure 1.7). AODV dispose
d’un certain nombre de mécanismes optimisant son fonctionnement.
L’inondation se fera par exemple au premier essai dans un rayon limité
autour de la source, et si aucun chemin n’est trouvé, alors seulement elle sera
étendue à une plus grande partie du réseau. En cas de rupture de certains
liens, AODV va essayer de reconstruire localement les routes affectées en
trouvant des nœuds suppléants (cette détection de rupture peut d’ailleurs se
faire grâce à un mécanisme optionnel de paquets hello diffusés aux voisins
directs uniquement). Si une reconstruction locale n’est pas possible, alors les
nœuds concernés par la rupture des routes utilisant ce lien sont prévenus de
sorte qu’ils pourront relancer une nouvelle phase de reconstruction complète.

21
Chapitre 1. Les réseaux sans fil

Source
Source rreq(1)

rreq(1) rrep(4)
B

rrep(3)
rreq(2)

A rreq(2)

rreq(3)
D E
rreq(2)
rreq(3) rreq(4)

C rrep(2)

rreq(4)
F
rrep(1)
Dest
Dest

Figure : 1.6 Recherche de route par inondation (AODV)

Dynamic Source Routing (DSR)

DSR [15] est un autre protocole réactif. Il se différencie des autres en


particulier parce qu’il pratique le source routing: l’émetteur précise dans l’en-
tête de chaque paquet la liste des nœuds qu’il devra traverser pour atteindre
sa destination. Ce type de routage présente certains avantages
particulièrement intéressants; il autorise en particulier la source à conserver
dans sa table de routage plusieurs chemins valides vers une même
destination. Le choix du chemin emprunté pourra donc être fait
indépendamment pour chaque paquet, et permettre un meilleur équilibrage
de la charge du réseau ou une meilleure réactivité aux pannes/changements
de topologie (plutôt que de tout de suite en construire une nouvelle quand
une route est brisée, on en a d’autres à disposition immédiate). Dans la
pratique, DSR est structuré en deux sous-parties complémentaires: la
recherche de route et la maintenance de route. La recherche de route se fait ar

22
Chapitre 1. Les réseaux sans fil

inondation: un paquet de recherche est diffusé de proche en proche jusqu’à la


destination.

Source
Source rreq(1)

rrep(4)
rreq(1)
B

rrep(4)
rrep(3)
rreq(2)

A rreq(2)

rreq(3)
rrep(3) D E
rreq(2) rrep(2)
rreq(3) rreq(4)

C rrep(2) rrep(1)

rreq(4)
F
rrep(1) Dest
Dest

Figure 1.7: Recherche de route par inondation(DSR)

Au fur et à mesure, les identifiants des nœuds traversés sont ajoutés dans
le paquet de recherche de route. Quand elle reçoit ce paquet, la destination
sait donc déjà quel chemin il a emprunté, et obtient ainsi (en l’inversant) la
route pour retourner à la source. A la réception par la destination de paquets
de recherche ayant suivi des chemins différents, la destination répond sur les
chemins inverses, et la source aura ainsi finalement plusieurs chemins valides
pour l’atteindre (voir figure 1.8).

Optimized Link State Routing (OLSR)

OLSR [16] est un protocole proactif à état de liens. Afin de maintenir à


jour les tables de routage, chaque nœud implémentant OLSR diffuse
régulièrement des informations sur son propre voisinage. Ces informations

23
Chapitre 1. Les réseaux sans fil

sont suffisantes pour permettre à chaque nœud de reconstruire une image


du réseau et de trouver une route vers n’importe quelle destination.

MPR
MPR

Source

MPR

Figure1.8 : Relais multipoints

Mais contrairement à des protocoles tels qu’OSPF, cette diffusion ne se fait


pas par une simple inondation (où chaque nœud retransmet simplement
chaque nouveau paquet qu’il reçoit); OLSR optimise la diffusion grâce au
système des relais multi-points (Multi-Points Relays: MPR). Chaque nœud
choisit dans ses voisins directs un sous-ensemble minimal de nœuds qui lui
permet d’atteindre tous ses voisins à deux sauts (voir figure 1.9). La diffusion
des informations sur les liens utilisées pour le routage se fait ensuite
uniquement par les relais multi-points; la couverture totale du réseau est
assurée tout en limitant sensiblement le nombre de ré-émissions. Afin de
choisir ses relais multipoints, un nœud a besoin de connaitre complètement
la topologie de son voisinage à deux sauts; cela est réalisé grâce à l’envoi
périodique de paquets hello contenant la liste des voisins à un saut connus.

24
Chapitre 1. Les réseaux sans fil

Conclusion

Dans ce chapitre nous avons présenté les concepts de base des réseaux
sans fil, les différentes catégories, caractéristiques, les avantages et les
applications de ces réseaux. Nous avons aussi présenté le routage dans
l’environnement Ad Hoc, en décrivant quelques protocoles. Avant d’entamer
le codage réseau, nous devons présenter en premier lieu dans le chapitre
suivant quelques concepts concernant la théorie des graphes.

25
Chapitre 2

Notions de théorie des graphes

Introduction

De manière générale, un graphe permet de représenter d’une façon simple


la structure, les connexions, les cheminements possibles d’un ensemble
complexe comprenant un grand nombre de situations, en exprimant les
relations, les dépendances entre ses éléments (réseau de communication,
réseau ferroviaire ou routier, arbre généalogique, diagramme de succession
de tâches en gestion de projet, une structure de données puissante pour
l’informatique..).
De même les graphes constituent des outils importants et très utilisés de
modélisation en informatique. Un graphe est une représentation symbolique
d’un réseau. Il s’agit d’une abstraction de la réalité de sorte à permettre sa
modélisation. La théorie des graphes a principalement pour objet les
modalités d’encodage des réseaux ainsi que la mesure de leurs propriétés.
Il est donc très important de bien comprendre la structure des graphes afin
d'utiliser des modélisations pertinentes à base de graphes

2.1 Notion de graphe

Définition 1: Un graphe est défini comme la paire G = (N,A) où N représente

avec i N et j N.
un ensemble de nœuds et A un ensemble de couples (i, j), appelés arcs (liens),

Un graphe [17], peut être orienté si ses liens sont orientés d’un nœud à
l’autre et il peut être non orienté, ce qui indique qu’il n’y a aucune distinction
entre les deux nœuds liés à chaque lien. Un lien e∈A où e = (x, y) si x, y ∈N. Si
un lien e = (x, y) est considéré comme orienté de x vers y, alors le nœud x est
appelé nœud initial et nœud y est appelé nœud terminal du lien. Un graphe
fini est un graphe avec un nombre fini de liens et de nœuds.

26
Chapitre 2. Notions de théorie des graphes

Figure 2.1 : Exemple de graphe d’un réseau

Deux liens d’un graphe sont adjacents s’ils partagent un nœud commun. De
même, deux nœuds sont dits adjacents s’ils partagent un lien commun, dans
ce cas on dit que le lien commun joint les deux nœuds. Un lien sortant de
nœud x est un lien incident à x vers l’extérieur et un lien entrant dans un
nœud y est un lien incident à y vers l’intérieur.
D’un point de vue théorique, on appelle réseau un graphe orienté où à chaque
lien est attribuée une capacité, qui correspond au débit maximum que peut
supporter ce lien.

2.2 Notion de flot


Dans chaque arc, on va faire circuler un flux, c’est-à-dire une quantité par
unité de temps. Du nœud i au nœud j. On note par fij cette quantité qui
traverse l’arc (i, j) par unité de temps.
N’importe quel ensemble de quantités fij n’est pas acceptable. En effet,
l’ensemble de ces variables de flux doit satisfaire une équation de
conservation du flux en chaque nœud. Cette loi de conservation exprime
simplement que la somme des flux sortant d’un nœud i est égale à la somme
des flux entrant. Les seules exceptions à cette règle sont les nœuds sources,
qui n’ont pas de liens entrants et les nœuds récepteurs qui n’ont pas de liens
sortants.

∑| ,   ∑| ,  …..(2.1)

27
Chapitre 2. Notions de théorie des graphes

Figure 2.2 : Nœud d’interconnexion i

Définition 2: L’ensemble des flux traversant les arcs d’un graphe est appelé
flot pour autant qu’il respecte en chaque nœud l’équation de conservation
(2.1).Le flux traversant l’arc de retour est appelé le flot total traversant le
réseau.

Les flots permettent de modéliser une très large classe de problèmes. Leur
interprétation correspond à la circulation de flux physiques sur un réseau:
distribution électrique, réseau d'adduction, acheminement de paquets sur
Internet, ... Il s'agit d'acheminer la plus grande quantité possible de matière
entre une source s et une destination t. Les liens permettant d'acheminer les
flux ont une capacité limitée.

Un flux réseau correspond à une attribution de flux aux liens d’un réseau,
tels que la quantité de flux associée à chaque lien n’excède pas sa capacité.
On note cij, la capacité de l’arc (i,j), c’est-à-dire le flux maximum qui peut
traverser l’arc et semblablement, on note bij la borne inférieure (éventuelle) sur
ce flot de sorte que l’on a:

bij≤ fij≤ cij

2.3 Notion de réseau résiduel

Dans plusieurs algorithmes, on cherche à augmenter le flot par rapport à


la situation actuelle du flot. Il est alors intéressant d’identifier non pas le
réseau actuel mais le réseau résiduel [18], c’est-à-dire celui qui permet de
faire passer un supplément de flux.

28
Chapitre 2. Notions de théorie des graphes

Considérons à nouveau un arc (i,j) (voir figure 2.3) dont le flux doit être
compris entre une borne inférieure 0 et une borne supérieure égale à la
capacité de l’arc cij. Si la valeur actuelle du flux sur cet arc est fij, il est facile de
voir que l’on peut faire encore passer en flux dans l’arc (i, j) un supplément de
flux égal à la capacité résiduelle rij qui se calcule comme suit (l'arc forward
(i,j)F) :
rij= cij − fij

Mais on peut également faire passer du flux dans l’autre sens en ajoutant un
arc de j ài de capacité résiduelle (l'arc backward (j,i)B) :

rji= fij

En effet, on peut ramener le flux à sa borne inférieure zéro, ou ce qui est


équivalent, faire circuler un flux au maximum de fij dans un arc de j à i.

Figure 2.3: Notion de réseau résiduel

On construit le réseau résiduel en remplaçant systématiquement un arc (i,j)


qui n’est pas à sa borne supérieure par un arc dans le même sens avec comme
capacité résiduelle la différence entre la capacité de l’arc et le flot actuel. De
même, si le flux sur cet arc n’est pas à sa borne inférieure, on ajoute un arc en
sens opposé dont la capacité résiduelle est égale à la valeur actuelle du flux.

Définition 3: Le réseau résiduel, noté G(f) consiste en les seuls arcs ayant une
capacité résiduelle rij positive

Remarquez que ce faisant, on peut être amené à remplacer un arc du réseau


initial G, soit par un arc de même sens (cas du flux nul), soit par deux arcs (cas
du flux strictement entre ses bornes inférieure et supérieure) soit par un arc

29
Chapitre 2. Notions de théorie des graphes

dans le sens opposé (cas du flux à sa borne supérieure). Remarquez également


que la notion de réseau résiduel est dépendante du flot actuel.

Exemple 1:

prenons l'exemple suivant avec un flot f sur le réseau G (N,A).


Les capacités sont représentées dans les carrés à coté des arcs; les valeurs du
flot apparaissent en orange

Figure 2.4 : réseau de 7 nœuds

Le réseau résiduel G(f) associé à f est représenté ci-dessous. Les arcs forward
apparaissent en gris, les arcs backward sont en bleu. Dans le réseau G (N,A),
l'arc (s,a) est saturé: seul apparaît dans le réseau résiduel son arc backward
(a,s), de capacité 1 (capacité de l'arc d'origine).

Dans le réseau G (N,A), aucun flot ne passe par l'arc (s,c): seul apparaît dans
le réseau résiduel l'arc forward (s,c), de capacité 1 (capacité de l'arc d'origine)
Enfin prenons l'exemple de l'arc (d,t). Sa capacité est de 5 dans le réseau
G(N,A)et un flot de 3 y circule. Dans le réseau résiduel lui sont alors associés:

• Un arc forward (d,t) de capacité 2 qui correspond à la quantité de flot


pouvant encore transiter par cet arc
• Un arc backward (t,d) de capacité 3 qui correspond à la quantité de flot
pouvant être diminuée sur cet arc.

30
Chapitre 2. Notions de théorie des graphes

Figure 2.5: réseau résiduel

2.4 Problème de flot maximal

Les réseaux peuvent modéliser des systèmes de transports (par camions,


bateaux ou trains), d’écoulement de liquides (dans des tuyaux, pipeline, ...)
des chaînes de montage, du courant dans des réseaux électriques, de
l’information dans des réseaux de télécommunication ...etc.

2.4.1 Définition du problème

Nous allons introduire le problème du flot maximum sur un exemple


pratique (exemple 2). Considérons le réseau routier représenté à la figure 2.6
liant les deux villes A et F. En prévision d’une augmentation du trafic entre la
ville A et la ville F, on veut déterminer le nombre maximum de voitures
pouvant aller de A à F, c’est-à-dire le flot au-delà duquel il y aura saturation
du réseau.

31
Chapitre 2. Notions de théorie des graphes

Figure 2.6: Réseau routier liant A à F (exemple 2).

Remarquons que si l’on ferme le graphe en mettant l’arc de retour de F à A, le


flot total allant de A à F est exactement le flux dans l’arc de retour. Et donc,
déterminer le flot maximum de voitures entre A et F revient à maximiser le
flux dans l’arc de retour. D’où la définition suivante du problème [18].

Définition 4: Etant donné un réseau de transport avec capacités et bornes


inférieures sur les flux, le problème du flot maximum consiste à déterminer
le flux maximum qui peut circuler sur l’arc de retour.

Une façon équivalente de définir le problème du flot maximum entre A et


F est de considérer que A est le point d’entrée dans le réseau et que F est le
point de sortie du réseau. Maximiser le flot consiste donc à maximiser la
somme des flux entrants dans le réseau mais aussi à maximiser la somme
des flux sortants.

Mathématiquement, le problème du flot maximum peut se formuler de la


manière suivante. Le problème consiste donc à déterminer les flux dans tous
les arcs (ce sont les variables du problème) de manière à respecter (les
contraintes) :

• les équations de conservation aux nœuds.


• les bornes inférieures et supérieures sur les flux.

L’objectif étant de maximiser le flux dans l’arc de retour.

32
Chapitre 2. Notions de théorie des graphes

Soit donc le graphe G=(N,A) associé au réseau de transport. Pour la


commodité, on attribue le numéro 1 au point d’entrée dans le réseau (la ville
A dans notre exemple) et le numéro n au point de sortie du réseau (la ville F
dans notre exemple), n étant le nombre de nœuds dans le réseau. Appelons f,
le flot dans l’arc de retour. Le problème peut se formuler de la manière
suivante :

z = max fn1

    
| ,  | ,  
     …….(2.2)

Nous allons maintenant voir une méthode systématique pour déterminer le


flot maximum. Cette méthode, due à Ford et Fulkerson [20], est aussi appelée
méthode de marquage, car elle marque progressivement les nœuds du réseau.

2.4.2 Méthode de Ford et Fulkerson

Introduisons d’abord un nouveau concept de la théorie des graphes qui


sera utilisé dans la méthode de Ford et Fulkerson. Il s’agit du concept de
chaîne dans un graphe.

Définition 5: On appelle chaîne une suite d’arcs (a1, a2, . . .,ak) telle que l’arc ai
est rattaché à l’arc ai−1par une extrémité et à l’arc ai+1par l’autre.

Figure 2.7: Un exemple de chaîne.

33
Chapitre 2. Notions de théorie des graphes

Un exemple de chaine est illustré à la figure 2.7. Remarquons que la définition


de chaîne n’implique pas que tous les arcs soient parcourus dans le même
sens si l’on suit la chaîne.

L’idée de la méthode est la suivante. A chaque itération, on va essayer


d’augmenter le flux le long d’une chaîne d’arcs joignant le nœud d’entrée au
nœud de sortie.

Supposons que nous soyons arrivés avec un flux supplémentaire au nœud


i. Il y a deux manières de poursuivre avec le flux supplémentaire. Ces deux
situations sont décrites ci-dessous. Notons Δfi, le flux supplémentaire qui
peut arriver au nœud i.

Le premier cas où l’on peut pousser plus loin ce flux supplémentaire est
celui où il existe un arc sortant non saturé. C’est-à-dire, où il existe un arc (i, j)
avec fij< cij. Ce cas est illustré à la figure 2.8 Le supplément de flux qui peut
circuler sur l’arc (i, j) est donc limité par cij−fij

Figure 2.8: Utilisation d’un arc sortant.

et le flux supplémentaire qui peut arriver en j, noté Δfj, est le minimum de :


-celui qui peut arriver en i : Δfi;
-celui qui peut passer dans l’arc (i, j) : cij− fij.
D’où finalement :Δfj= min {Δfi, cij− fij}

Le second cas où l’on peut pousser le flux supplémentaire arrivé au nœud


i plus loin en direction du nœud de sortie est celui où un arc ayant son
extrémité en i a un flux strictement supérieur à sa borne inférieure. En effet,
dans ce cas, on peut pousser le flux supplémentaire plus loin en prenant cet

34
Chapitre 2. Notions de théorie des graphes

arc à rebours. On va par la même diminuer le flux le long de l’arc. Ceci est
illustré à la figure 2.9.
Autrement dit, si on a un arc (k,i) tel que fki> bki, un flux supplémentaire peut
arriver en k. Notons le Δfk. A nouveau, il se calcule comme le minimum de:
-celui qui peut arriver en i: Δfi;
-celui qui peut passer dans l’arc (k,i): fki− bki.
D’où finalement :Δfk= min {Δfi, fki− bki}

Figure 2.9: Utilisation d’un arc à rebours.

Voyons maintenant comment déterminer une chaine d’arcs qui irait du nœud
d’entrée au nœud de sortie, et qui permettrait donc d’augmenter le flux dans
l’arc de retour. Partant du point d’entrée, on marque de proche en proche les
sommets en utilisant des arcs d’un des deux types définis ci-dessus.
Voyons l’illustration de la méthode sur l’exemple 2. Partant de A, on peut
utiliser l’arc (A,B), non saturé, et augmenter le flot de 1. On aura intérêt, pour
ne pas surcharger le graphique à reprendre séparément la chaine d’arc
utilisable.
C’est ce qui est fait à la figure 2.10. De B, on peut utiliser l’arc (C,B) à rebours.
On détermine le flot supplémentaire maximum que l’on peut pousser
jusqu’en C comme le minimum de(+1, (2 − 0)) = 1. On va donc pouvoir
transférer une unité supplémentaire de B à C: ceci revient à une diminution
de 1 du flot de C à B. Ce qui est indiqué par le −1 sur le graphique. Ensuite,
seul l’arc (C,D) peut être utilisé. A nouveau le flot supplémentaire que l’on
peut acheminer en D vaut 1.

35
Chapitre 2. Notions de théorie des graphes

Figure 2.10: Chaine d’arcs utilisables.

Enfin, on prend (E,D) à rebours et finalement (E,F) dans le sens direct. On


atteint donc le nœud de sortie du réseau et l’on peut donc augmenter de flot
sortant d’une unité. Ceci est fait à la figure 2.11.

Figure 2.11: Flot augmenté d’une unité.

On répète alors le processus de marquage en déterminant une nouvelle chaine


d’arcs utilisables. En partant de A, on peut former une nouvelle chaine en
prenant

Figure 2.12: Seconde chaine d’arcs utilisables.

36
Chapitre 2. Notions de théorie des graphes

les arcs (A,C), (C,D), (E,D) à rebours et (E,F). Ceci est illustré à la figure 2.12.
On peut à nouveau augmenter le flot d’une unité. On obtient le graphe
suivant illustré à la figure 2.13.Essayons de former une troisième chaine
d’arcs utilisables. On voit à présent que l’on ne peut plus atteindre le nœud de
sortie B. En effet, partant de A, on peut pousser une unité en C puis en B par
(C,B). De là, on ne peut plus progresser. En effet, (B,D) est saturé et (B,A) pris
à rebours conduirait à former un cycle et non plus une chaine figure 2.14.

Figure 2.13: Flot augmenté d’une seconde unité.

Figure 2.14: Autre itération conduit à un cycle

Nous avons déjà défini le réseau résiduel nous pouvons donc l’utiliser
(deuxième méthode) pour augmenté le flot. Maintenant que nous avons un
nouveau réseau G(f), il est bien sûr tentant d'essayer d'y faire transiter un flot.
Quel est alors le rapport entre un flot Δf sur le réseau résiduel G(f) et le flot f
sur le réseau G (N,A)?
A partir de ces 2 flots nous allons construire un nouveau flot f ' sur N:

• En ajoutant à f la valeur du flot Δf sur les arcs forward

37
Chapitre 2. Notions de théorie des graphes

• En retranchant à f la valeur du flot Δf sur les arcs backward


La valeur de ce nouveau flot f ' est alors égale à la valeur de f plus celle de Δf:
nous avons fait augmenter la valeur du flot transitant sur le réseau G(N,A)

2.4.3 Ajout d'un flot résiduel

Si Δf est un flot sur le réseau résiduel G(f), nous définissons l’évaluation des
arcs Comme :

f '= f+Δf sur le réseau G(N,A) par : f' (i,j) = f(i,j) + Δf (i,j)F - Δf (j,i)B Alors:

• f ' est un flot sur le réseau G (N,A)


• La valeur du flot f ' est la somme des 2 flots : | f' | = | f | + |Δf|

Reprenons l'exemple 1 du flot fsur le réseau G (N,A) . La valeur du flot fest 2.


Nous pouvons définir sur le réseau résiduel G(f)(figure 2.15) le flot Δf. Sa
valeur est 2.Il emprunte les arcs Forward (s,c) et (e,t), et les arcs backward
(s,b), (b,e) et (c,t). Sur cet exemple l’évaluation du flot Δf sur tous ces arcs est
de 1.

Figure 2.15: chemin augmenté sur le réseau résiduel

38
Chapitre 2. Notions de théorie des graphes

Le flot résultant f +Δf sur le réseau G (N,A) est représenté dans la figure
2.16.Les arcs (s,c) et (e,t) ont vu leur flot augmenté de 1, le flot Δf empruntant
leur arc forward. A l'inverse les arcs (b,s), (e,b) et (t,c) ont vu leur flot
diminuer de 1, le flot Δf empruntant leur arc backward. La valeur du flot f +Δf
est bien de 4.

Figure 2.16: flot résultant

Trouver un flot sur le réseau résiduel permet donc de faire augmenter, en


l'ajoutant, le flot f sur le réseau G (N,A). La manière la plus simple de
rechercher un flot est de regarder s’il existe un chemin (orienté) de capacité
non nulle reliant s à t.
Il est alors possible de faire passer un flot non nul en saturant le chemin. La
notion de chemin augmentant reprend cette idée dans le réseau résiduel.

2.4.4 Chemin augmentant

Un chemin augmentant pour un flot f sur un réseau G(N,A)est un chemin


(orienté) de capacité non nulle reliant s à t dans le réseau résiduel G(f).

Avec la convention de ne considérer que les arcs de capacité non nulle, un


chemin augmentant p est simplement un chemin orienté de s à t dans le
réseau résiduel. Il est "augmentant" puisque le flot résultant f+p sur le réseau
G(N,A) augmente de la capacité du chemin p. Lorsque nous écrivons f+ p,

39
Chapitre 2. Notions de théorie des graphes

nous entendons implicitement pour p le flot correspondant à la saturation du


chemin.
Dans l'exemple précédent le réseau résiduel admettait comme chemin
augmentant (s,b,e,t) et (s,c,t), mais aussi (s,b,e,c,t)…etc, tous de capacité 1.

Les chemins augmentant sont le "bon voisinage" pour appliquer avec


succès le paradigme de l'optimisation locale. L'approche reprend la structure
de l'algorithme Saturation, mais pour faire augmenter le flot f, nous ne
saturons plus des chemins (orienté) de s à t directement dans le réseau
G(N,A) mais dans le réseau résiduel G(f).

L'algorithme consiste alors à partir d'un flot f réalisable (le flot nul fait
parfaitement l'affaire) et à l'améliorer itérativement. Pour cela à chaque étape
l'algorithme vérifie s’il existe un chemin augmentant pour le flot, c'est à dire
un chemin (orienté) de s à t dans le réseau résiduel. Si un tel chemin existe, il
est saturé dans G(f) et le flot correspondant est "ajouté" à f. Sinon, il n'existe
plus de chemin augmentant et l'algorithme retourne le flot courant.

Prenons l'exemple du flot que nous avions trouvé précédemment, de


valeur 4. La question se pose de savoir si ce flot est maximum ou non.
Cependant la valeur d'un flot est égale au flot sortant de s moins le flot
entrant. Il est clair que cette valeur ne peut pas être supérieure à la somme des
capacités des arcs sortants de s, puisqu'un flot doit respecter la capacité de
chaque arc. Sur l'exemple aucun flot ne peut donc avoir une valeur supérieure
à la somme des capacités des arcs (s,a), (s,b) et (s,c), soit 4.Cette valeur est une
borne supérieure pour notre instance. Le flot f atteignant la borne supérieure,
il est optimal.

Nous avons une première borne supérieure pour le flot maximum: la


somme des capacités des arcs sortants de s. Mais cette borne supérieure n'est
pas assez précise. Si par exemple la capacité de l'arc (s,b) n'était pas 2 mais 4,
le flot f serait-il toujours optimal ? Oui... mais nous ne pouvons plus le
prouver avec notre borne supérieure!

L'ensemble des arcs sortants de s est en fait un cas particulier d'une coupe
dans le réseau. La notion de coupe va nous fournir une borne supérieure

40
Chapitre 2. Notions de théorie des graphes

toujours atteinte par le flot maximum: c'est ce que nous dira le théorème
MaxFlow-MinCut.

2.5 Définition d’une coupe

Une coupe dans un réseau est un ensemble d'arcs déconnectant la source


du destinataire, c'est à dire qu'il n'existe plus de chemin orienté de s à t.
Une coupe peut également être vue comme une partition S T des sommets
où s appartient à S et t appartient à T.

Si s et t sont 2 sommets d'un réseau G(N,A),


• Une (s,t)-coupe est un ensemble C d'arcs déconnectant s de t: dans le
graphe partiel (G, A \ C) il n'existe pas de chemin orienté de s à t.
• Une (s,t)-coupe se définit également par une partition des sommets
telle que s S et t T. Les arcs de la coupe sont alors les arcs (i,j) ayant
leur origine i dans S et leur destination j dans T.
• La capacité d'une coupe est la somme des capacités des arcs de la coupe.

Figure 2.17: la coupe minimale

(S,T) = {(B,D), (C,D), et (C,E)} la capacité de ces arcs est 4+2+4=10 qui égale au
flot max

Ce sont les nœuds qui font goulet d’étranglement. Pour accroître le flot, il
faudra augmenter les capacités de ces arcs.

41
Chapitre 2. Notions de théorie des graphes

2.5.1 Coupe Minimum (MinCut)

Le problème de la Coupe Minimum consiste à trouver une coupe Cmin


entre s et t de capacité minimale.

Une coupe est un passage obligé pour un flot, et potentiellement un


goulot d'étranglement. En effet un flot transitant de s à t doit nécessairement
emprunter les arêtes de la coupe. La valeur du flot peut ainsi être redéfinie
comme le flot sortant de la coupe moins le flot entrant.

La capacité d'une coupe constitue une borne supérieure pour la valeur


maximale d'un flot. Le théorème MaxFlow-MinCut énonce que cette borne
supérieure est toujours atteinte: la valeur maximale d'un flot est toujours
égale à la capacité minimale d'une coupe.

2.6 Théorème de coupe minimale-flot maximum

Pour tout réseau de transport muni de bornes sur les flux, d’un point
d’entrée et d’un point de sortie, la valeur du flot maximum entre le nœud
d’entrée et le nœud de sortie est égale au minimum des capacités de toutes
les coupes séparant le nœud d’entrée du nœud de sortie.

D’une autre façon La valeur maximale d'un flot entre 2 sommets s et t


dans un réseau est égale à la capacité minimale d'une (s,t)-coupe.
| fmax | = | Cmin |

Considérons un graphe G = (N,A) où tous les liens ont une capacité de 1. Si


la coupe minimale entre un nœud source S et un nœud récepteur T est égale à
h, alors le débit maximal peut être envoyé de s∈S vers t∈T est égal à h.

2.6.1 Algorithme de Ford et Fulkerson

Nous allons maintenant décrire l’algorithme de Ford et Fulkerson, encore


appelé méthode de marquage. En effet, cet algorithme [18] procède par
marquage progressif des nœuds. Notons S, l’ensemble des nœuds ”marqués”.
Un nœud marqué est tel que l’on peut pousser un supplément de flot Δfj>0

42
Chapitre 2. Notions de théorie des graphes

jusqu’à lui à partir du nœud d’entrée. A chaque nœud marqué, on associe un


label défini comme suit :
• (i+,Δfj) si on a pu amener un supplément de flot Δfj>0 en augmentant le
flot sur l’arc (i, j).
• (i−,Δfj) si on a pu amener un supplément de flot Δfi>0 en diminuant le
flot sur l’arc (j, i).

A coté de S, l’ensemble des nœuds marqués, l’algorithme met à jour un


second ensemble de nœuds. Il s’agit, parmi les nœuds marqués, de ceux dont
on a déjà examiné si on pouvait porter le supplément de flot plus loin vers
d’autres nœuds non marqués. Notons E, ce second ensemble. C’est la
définition de ce second ensemble qui fait l’efficacité de la méthode de
marquage de Ford et Fulkerson. En effet, dès qu’un nœud marqué a été
examiné, on ne doit plus jamais y revenir.

Voyons maintenant l’algorithme dont les deux grandes étapes sont d’une
part, le marquage progressif des nœuds, d’autre part, la mise à jour du flot. La
première étape a deux sorties possibles. Soit elle conduit à un chemin
jusqu’au nœud de sortie qui permet d’augmenter le flot. Dans ce cas, on passe
à la seconde étape qui augmente le flot. Soit elle conduit à une coupe de
capacité minimum, prouvant par là que le flot maximum est atteint. Donc
l’algorithme est le suivant :

0. Initialisations.
Mettre :

T= N \S= {2, 3, . . ., n};


S= {1};

E=
Δf1= +∞.

Déterminer un nœud marqué non encore examiné : soit i S, i∉ E


1. Processus de marquage.

∀ j Ttel que fij< cij,


{ Δfj= min {Δfi, cij− fij};
Label(j) = (i+,Δfj);
S=S∪{j},T= T\{j}
};

43
Chapitre 2. Notions de théorie des graphes

∀ j T tel que fji> bji,


{ Δfj= min {Δfi, fji− bji};
Label(j) = (i−,Δfj);
S=S∪{j},T=T\{j}
};

Mettre i E (i est examiné);


Si n S, aller en 2 (on a un chemin permettant d’augmenter le flot);
Si S ∩!=(tous les nœuds marqués ont été examinés),
alors stop : le flot est maximum; la coupe minimum est (S,T);
sinon : Aller en 1.

2. Mise à jour du flot.


Soit k = n. Tant que k ≠1, répéter
{Si le nœud k est marqué (j+,Δfk), alors fjk= fjk+Δfn;
Si le nœud k est marqué (j−,Δfk), alors fkj= fkj− Δfn;
k=j
};
Aller en 0.
Appliquons cet algorithme au cas du 2èmeexemple :

1ère itération :

0. Initialisations
S= {A} T= {B,C,D,E,F} E =
1. Processus de marquage : examen de A.
ΔfB= +1 Label(B) = (A+, +1)
ΔfC= +2 Label(C) = (A+, +2)
S= {A,B,C} T= {D,E, F} E = {A}
1. Processus de marquage : examen de B.
S = {A,B,C} T= {D,E, F} E = {A,B}
1. Processus de marquage : examen de C.
ΔfD= +2 Label(D) = (C+, +2)
S = {A,B,C,D} T= {E,F} E = {A,B,C}
1. Processus de marquage : examen de D.
ΔfE= +2 Label(E) = (D−, +2)
S= {A,B,C,D,E} T= {F} E = {A,B,C,D}

44
Chapitre 2. Notions de théorie des graphes

1. Processus de marquage : examen de E.


ΔfF= +2 Label(F) = (E+, +2)
S = {A,B,C,D,E, F} T= E = {A,B,C,D,E}

2. Mise à jour du flot : + 2 le long du chemin : A, C, D, E et F.

2ème itération :
0. Initialisations
S= {A} T= {B,C,D,E,F} E =
1. Processus de marquage : examen de A.
ΔfB= +1 Label(B) = (A+, +1)
S= {A,B} T= {C,D,E, F} E = {A}
1. Processus de marquage : examen de B.
ΔfC= +1 Label(C) = (B−, +1)
S= {A,B,C} T= {D,E, F} E = {A,B}
1. Processus de marquage : examen de C.
S= {A,B,C} T= {D,E, F} E = {A,B,C}

Stop : le critère d’arrêt est satisfait.


La coupe minimum est (S,T) avec S= {A,B,C} et T= {D,E, F}. Le flot maximum
est de 10 unités.

Conclusion

Dans ce chapitre nous avons vu comment représenter les réseaux sous


forme de graphe et quelques concepts très utiles tel que: le réseau résiduel
pour augmenter le débit, le théorème de coupe minimale flot maximum qui
est calculé en utilisant l’algorithme de Ford et Fulkerson. Ce dernier décrit les
liens qui constituent le goulet d’étranglement, alors que pour accroître le flot
dans un réseau il faudra augmenter les capacités de ces liens.

45
Chapitre 3

Le codage réseau
Introduction

Le codage réseau a des applications intéressantes sur plusieurs types de


réseaux de communications réels. Le premier exemple est l’Internet, où il peut
être utilisé à plusieurs niveaux tels que la couche IP ou la couche application.
On peut citer aussi les réseaux Ad Hoc sans fil. Toutefois, dans chacun de ces
réseaux, il y a un écart significatif entre le travail théorique sur le codage
réseau et ses applications dans des réseaux réels.

3.1 Notion de codage réseau

Le codage réseau (Network coding) est un concept récemment introduit


par R. Ahlswede et al. [21] pour améliorer le débit des transmissions
d’information multicast dans un réseau formé d’une ou de plusieurs sources
et d’un ou de plusieurs récepteurs. Le principe de ce mécanisme consiste à
autoriser les nœuds intermédiaires (situés sur des chemins entre les sources et
les récepteurs) à coder (combiner) les paquets entrants au lieu de les expédier
simplement comme dans la stratégie de routage classique.

Les auteurs de [21] ont prouvé que si le codage réseau est utilisé par les
nœuds intermédiaires pour coder les différents flux, le débit multicast
maximum (capacité multicast) auquel une source peut envoyer l’information
à un ensemble de récepteurs, est donné par la plus petite coupe entre la source
et n’importe lequel récepteur quand la taille de corps tend vers l’infini.

R. Koetter et M. Médard [22][23] ont montré que le codage réseau peut


améliorer le débit pour des transmissions multicast ou unicast. Une borne
maximum pour le débit multicast est identifiée aussi comme la plus petite
coupe entre la source et n’importe quel récepteur. Ils ont prouvé l’existence de
codes linéaires qui atteignent la capacité multicast avec un corps fini de taille
(h.|T|) où h est le débit de la source et |T| le nombre de récepteurs.
46
Chapitre 3. Le codage réseau

S-Y. R. Li, R. W. Yeung et N. Cai [24] ont prouvé que l’utilisation du


codage réseau linéaire avec des symboles de taille finie permet d’atteindre la
capacité multicast maximum. Toutes les opérations de codage linéaire sont
définies en tant que combinaisons linéaires sur un corps fini.

Pour les réseaux acycliques, S. Jaggi, P. Sanders, et al. [25][26] ont montré
comment trouver des coefficients de codage et de décodage en temps
polynomial. Deux versions d’algorithmes ont été proposées: une version
aléatoire, qui est la plus rapide en moyenne, et une version déterministe.

3.2 Les avantages du codage réseau

Les avantages du codage réseau ont été présentés dans plusieurs


contextes. Les auteurs de [21] ont prouvé qu’un gain de débit et de bande
passante peut être obtenu en employant le codage réseau au lieu du routage
classique. Dans [27], deux évaluations des avantages du codage réseau sont
représentées de la manière suivante:

Capacité du codage réseau


Gain du codage réseau  2 1
Capacité du routage réseau

Économie de bande passante

Bande passante totale requise avec codage réseau


12
Bande passante totale requise avec routage seulement

Le codage réseau peut donc permettre à économiser la bande passante


grâce au codage des informations [28].Certains avantages du codage réseau
sont illustrés dans un exemple donné dans [28] où l’on peut voir que le taux
de transmission multicast dans le cas du codage réseau est considérablement
plus grand que le taux de transmission multicast du cas du routage
traditionnel. L’utilisation du codage réseau permet d’équilibrer la charge du
trafic dans le réseau tout en la distribuant aux multiples liens.

Le codage réseau est non seulement employé pour économiser la bande


passante et augmenter le débit mais il peut aussi être utile pour la robustesse

47
Chapitre 3. Le codage réseau

du réseau, notamment lorsque les liens dans les réseaux sont défaillants,
comme par exemple dans les réseaux sans fil.
Un autre intérêt du codage réseau dans les réseaux sans fil est la
possibilité de réduire la quantité d’énergie par bit, ou en d’autres termes, la
possibilité de réduire l’utilisation des ressources du réseau par rapport aux
solutions de routage classiques [29][30].

3.2.1 Le débit

L'utilité la plus mieux connue du codage réseau est l’augmentation de


débit [31]. Cet avantage de débit est réalisé en utilisant des transmissions de
paquets, en offrant plus d'informations avec peu de transmission de paquets.
L'exemple le plus célèbre de cet avantage a été donné par Ahlswede et al [21],
qui a considéré le problème du multicast dans un réseau filaire. Leur exemple,
qui est désigné généralement sous le nom de butterfly network (voir le
figure3.1), représente une transmission multicast d'une source à deux
destinations. Les deux récepteurs voudront recevoir le message entier de la
source.
Dans le cas des réseaux qui utilisent le codage réseau, la connexion
multicast désirée peut être établie seulement si un des nœuds intermédiaires
brise le paradigme traditionnel d’acheminement des réseaux de paquet (où on
permet aux nœuds intermédiaires d’acheminer seulement des copies des
paquets reçus) et effectue une opération de codage, en prenant deux paquets
reçus, et forme un nouveau paquet en appliquant la somme binaire, ou XOR,
des deux paquets, et transmet le paquet résultant.

Figure 3.1 : butterfly network [31]

48
Chapitre 3. Le codage réseau

Dans ce réseau, chaque arc représente un lien orienté qui est capable de porter un
seul paquet. Il y a deux paquets, b1 et b2, présent dans la source s, et nous voulons les
transmettre aux deux nœuds récepteurs, t1, t2.

peuvent combiner les deux paquets. Le paquet résultant est ; <=, formé en
Les nœuds qui reçoivent plusieurs informations (comme le nœud 3)

appliquant l’opération du XOR au niveau du chaque bit de b1 et b2. Les


récepteurs décodent ces paquets reçus en effectuant encore une autre

; <=, et de même le récepteur t2 récupère b1 en appliquant le XOR de b2 et


opération de codage. Le récepteur t1 récupère b2 en prenant le XOR de b1 et

; <=.
Dans le cas du routage traditionnel, nous pourrions transmettre par
exemple b1 et b2 au t1, mais nous ne pourrions transmettre que b2 au t2.
Le réseau butterfly, illustre un aspect important: ce codage réseau peut
augmenter le débit pour le multicast dans un réseau filaire. Les neuf
transmissions de paquets qui sont employées dans le réseau butterfly pour
transmettre le contenu des deux paquets. Sans codage, ces neuf transmissions
ne peuvent pas être employées pour communiquer autant d'informations, et
elles doivent être complétées par des transmissions additionnelles (par
exemple, une transmission additionnelle de nœud 3 à nœud 4).
Tandis que le codage réseau peut augmenter le débit pour la transmission
multicast dans un réseau filaire, ses avantages de débit ne sont pas limités
pour le multicast ou aux réseaux filaires. Une modification simple du réseau
butterfly nous amène à un exemple qui comporte une connexion de deux
transmissions (voir la figure 3.2).

Figure 3.2 : Réseau modifié de butterfly [31]

49
Chapitre 3. Le codage réseau

Dans ce réseau, chaque arc représente un lien dirigé qui est capable de porter un
seul paquet. Il y a un paquet b1 présent dans la source S1 que nous voulons
transmettre au nœud t1 de et un paquet b2 présent dans la source S2 que nous voulons
transmettre pour atteindre le nœud t2.

Cet exemple comporte la connexion de deux transmissions unicast. Deux


transmissions unicast au minimum est nécessaire pour qu'il y ait un gain de
débit du codage réseau.

Figure 3.3 : Le réseau butterfly sans fil [31].

Figure 3.4 : Le réseau butterfly sans fil modifié.

50
Chapitre 3. Le codage réseau

Le codage réseau peut également être étendu aux réseaux sans fil. Dans
les réseaux sans fil, il devient encore plus facile de trouver des exemples où le
codage réseau rapporte un avantage sur le débit par rapport au routage
classique. En effet, pour le réseau sans fil butterfly (le figure3.3) et le réseau
butterfly modifié de (figure3.4) comportent peu de nœuds (six et trois nœuds,
respectivement, au lieu à sept).

Les exemples que nous avons présentés jusqu'ici démontrent que, en


absence des pertes de paquets, le codage réseau peut rapporter un avantage
de débit quand il est appliqué sur une ou plusieurs transmissions simultanées
de multicast ou de deux ou plusieurs transmissions simultanées d'unicast.

3.2.2 Robustesse

Mais avant que nous procédions, nous abordons une question importante
dans des réseaux de paquet, en particulier les réseaux sans fil, que nous avons
jusqu'ici négligés: la perte de paquet.
La perte de paquets apparait pour différentes raisons dans les réseaux, tels
que le débordement dans les files d’attente, la panne de liens, et la collision. Il
y a différentes manières pour traiter cette perte.

• Utiliser le protocole TCP (Transmission Control Protocol).


• Une méthode alternative qui est parfois utilisée est le codage de canal
ou, plus spécifiquement, codage d'effacement. Un code d'effacement,
appliqué par le nœud de source, présente un degré de redondance aux
paquets de sorte que le message puisse être récupéré même si
seulement un sous-ensemble des paquets envoyés par la source est
reçu par le récepteur.

Le codage d'effacement est appliqué par la source. Que diriez-vous du


codage qui est appliqué par des nœuds intermédiaires ?
C'est-à-dire, que diriez-vous du codage réseau ?

Le codage réseau est-il utile contre des pertes de paquets ?


Il est; et la raison qu'il est peut être vue avec un exemple très simple.
Considérer le simple réseau tandem de deux-liens représenté sur la figure3.5.
Dans ce réseau les nœuds 1 et 2 sont capables de transmettre un paquet par

51
Chapitre 3. Le codage réseau

unité de temps sur leurs liens sortants, des paquets sont perdus sur le lien de
connexion 1 et 2 avec la probabilité ε12 et sur le lien de connexion 2 et 3 avec la
probabilité ε23. Un code d'effacement, appliqué au nœud 1, nous permet de
communiquer l'information à un taux de (1 - ε12) (1 - ε23) paquets par unité
temps. Essentiellement nous avons, entre les nœuds 1 et 3, un canal
d'effacement avec la probabilité d'effacement 1 - (1 - ε12) (1 - ε23) dont la
capacité, (1 - ε12) (1 - ε23), peut être atteinte (ou approchée) avec un code
convenablement conçu.

1 2 3

Figure 3.5 : réseau de tandem de Deux lien.

Mais la vraie capacité du système est plus grande, si nous appliquons un


code d'effacement sur le lien 1,2 et un autre sur le lien 2,3. Si nous utilisons
deux étapes de codage d'effacement avec décodage complet et recodage au
nœud 2, alors nous pouvons transmettre l'information entre les nœuds 1 et 2 à
un taux des paquets 1-ε12 par unité de temps et entre les nœuds 2 et 3 à un
taux de 1-ε23 par unité temps. Ainsi, nous pouvons communiquer
l'information entre les nœuds 1 et 3 à un taux de Min (1 - ε12, 1 - ε23), qui est en
général plus grande que (1 - ε12) (1 - ε23).

Donc pourquoi cette solution n'est-elle pas employée dans des réseaux de
paquet ?

La raison principale est le délai. Chaque étape du codage d'effacement, si


elle utilise un code de bloc ou un code de convolution, subit un certain degré
de retard parce que le décodeur de chaque étape doit recevoir un certain
nombre de paquets avant que le décodage puisse commencer.
Ainsi, si le codage d'effacement est appliqué au-dessus de chaque lien ou
connexion, le retard serait grand. Mais l'application des étapes
supplémentaires du codage d'effacement est simplement un formulaire
spécial du codage réseau -elle est appliqué aux nœuds intermédiaires-.
Pour contourner ce problème, Lun et al. [32] ont proposé un schéma de
codage linéaire aléatoire qui atteint la capacité pour des réseaux de

52
Chapitre 3. Le codage réseau

communication par paquets, unicast ou multicast, avec pertes sur tout canal
où les paquets arrivent selon un processus admettant un taux d’arrivée
moyen.
Dans ce schéma, les nœuds intermédiaires réalisent des opérations de
codage linéaire aléatoire sans attendre tous les paquets d’un bloc. Un des
résultats supplémentaires de ces travaux est l’expression du taux de
décroissance de la probabilité d’erreur en fonction du délai de codage.

A coté de la robustesse contre des pertes aléatoires de paquets, le codage


réseau est également utile pour la protection contre la défaillance de liens. Il
permet le rétablissement très rapide des liens défaillants, puisque le
re-routage n'est pas exigé.

3.2.3 Sécurité

D'un point de vue de sécurité, le codage réseau peut offrir des avantages

Supposons qu'un malveillant parvient à obtenir seulement le paquet ; <= ,


et des inconvénients. Considérer encore le réseau butterfly (le figure3.1).

Avec un paquet ; <=, il ne peut pas obtenir b1 ou b2 ; ce qui représente un


mécanisme possible pour la transmission protégée, dans ce cas le codage
réseau offre un avantage de sécurité.

n'envoie pas ; <=, mais plutôt un autre paquet en tant que ; <=. Puisque
Alternativement, supposons que le nœud 3 est un nœud malveillant qui

les paquets sont codés plutôt que routés, il est plus difficile de détecter les
faux paquets. Dans ce cas, le codage réseau a comme conséquence un
inconvénient potentiel de sécurité.

3.2.4 Diminution de l’énergie par bit

Le décodage des donnés dans un récepteur est possible quand ce


récepteur récupère un nombre suffisant de paquets codés. La nouveauté du
codage réseau par rapport au codage à effacement traditionnel que le codage
des données ne se fait pas seulement au niveau de sources mais aussi dans
tous les routeurs du réseau. Considérons la Figure 3.6, où les nœuds A et B
veulent échanger leurs paquets via un nœud intermédiaire S. Chaque nœud
envoie un paquet vers la station S. D’après le codage réseau, la station S
diffuse la combinaison linéaire des paquets au lieu de diffuser chaque paquet
reçu vers les nœuds. Finalement chaque nœud peut récupérer les
53
Chapitre 3. Le codage réseau

informations qui lui manquent, ce qui permet de diminuer le nombre total de


transmissions.

Figure 3.6 : Économie d’énergie grâce au codage réseau


sur un exemple de réseau Ad Hoc sans fil

3.3 Principes fondamentaux du codage réseau

Introduction au Corps finis

La structure de corps fini intervient dans divers domaines des


mathématiques, en particulier dans la théorie de Galois sur la résolution des
équations algébriques où ils sont introduits pour la première fois, ces corps
sont appelés aussi les corps de Galois (Galois fields).
Avec le développement de l’électronique, de l’informatique, de la
transmission de l’information, de nouveaux champs d’applications de
l’algèbre ont vu le jour. Ces domaines font un grand usage de la structure de
corps fini.
Pour traiter et transmettre de l’information il est nécessaire de la
numériser afin que l’alphabet utilisé ait une structure suffisamment riche
permettant des opérations intéressantes. Puisque dans la numérisation on

54
Chapitre 3. Le codage réseau

utilise le système binaire on peut dire que le corps à deux éléments >= est
suffisant.

?  @A où @ est un nombre premier il est noté: Fq= GF(q)={0,1,…,q-1}


Un corps fini Fq est un champ qui ne contient qu’un nombre fini q d’éléments.

Un exemple de corps fini est l’ensemble >= = {0,1} ou GF(2)={0,1}.il est très

>B ={0,1,2} ou GF(3)={0,1,2}.


important en pratique pour représenter des «bits» (chiffres binaires)

Plus formellement le corps de Galois d'ordre q est un ensemble de q éléments


avec deux opérations binaires de modulo p "+" et "×" [19].
Dans la suite les tables d’opérations binaires de GF (2) et GF (3)

GF(2)
+ 0 1
0 0 1
1 1 0

× 0 1
0 0 0
1 0 1

Tab 3.1: Les opérations de (+, ×) en modulo 2

GF(3)
+ 0 1 2
0 0 1 2
1 1 2 0
2 2 0 1

× 0 1 2
0 0 0 0
1 0 1 2
2 0 2 1

Tab 3.2: Les opérations de (+, ×) en modulo 3

55
Chapitre 3. Le codage réseau

L’espace vectoriel

Prenons Ω =>=C un espace vectoriel de dimension m. Les éléments d’un vecteur sont
des éléments de >= sont appelés des scalaires avec des valeurs 0 et 1.

Exemple:

Prenons m=5 alors Ω =>=D tous les vecteurs sont de dimension 5 on a alors
25 =32 vecteurs.
Entre autre les vecteurs suivants :

1 0 1 1 0 1
G0K G1K G0K G0K G1K G1K
F0J , F0J , F0J , F1J , F0J , F1J.
0 0 1 1 1 0
0 0 0 0
E I E I E I E I E I E1I 0

Le vecteur de somme de

1 1 1 1 1P1 0
0
G K G K0 0 0
G K G K G 0 K G0K
F0J , F0J MNO F0J P F0J  F 0 J  F0J
0 1 0 1 1 1
E0I E0I E0I E0I E 0 I E0I

Considérons, pour des buts d'illustration, un réseau de transmission point


à point avec un nœud source et un nœud destinataire. Également [33]
supposons, pour le moment que chaque lien dans le réseau transfert les
paquets sans erreurs de M symboles dans un corps fini donné Fq. Pendant

X1,X2……Xn,(c.-à-d., paquets) chacun avec la taille1 Q R.


chaque transmission, le nœud de source envoie n vecteurs d'information de

Toutes les fois qu'un nœud du réseau a la possibilité de transmission, il


produit un paquet sortant qui est obtenu comme une combinaison linéaire
aléatoire (avec des valeurs de corps fini Fq) de tous les paquets entrants reçus
jusque-là. Chaque nœud du réseau effectue cette opération jusqu'à ce que le
56
Chapitre 3. Le codage réseau

nœud destinataire rassemble les N paquets Y1,Y2……. YN, dont il essaye


déduire les données originales émises par le nœud de source, c.-à-d.
X1,X2….Xn.
Maintenant nous combinons X1,X2…..Xn transmis et les paquets reçus

X une matrice de S Q R, Dont les lignes sont les vecteurs X1,X2…..Xn. De


Y1,Y2…….YN dans une forme de représentation compacte matricielle. prenons

même, prenons Y comme une matrice de T Q R dont les lignes sont les
vecteurs Y1,Y2…….YN. En raison de l'acceptation des opérations linéaires
effectuées par chaque nœud du réseau, Y et X peuvent être rapportés par
l'expression simple de la matrice suivante:

Y=AX (3.1)

Figure 3.7 exemple de transmission de paquets (a) sans erreurs, (b) avec erreurs

Où A est une matrice de T Q S qui correspond à la transformation linéaire


globale appliquée par le réseau. Selon le modèle sans erreurs ci-dessus, il suit
que le récepteur peut obtenir l'ensemble de paquets transmis X1,X2…..Xn de
l'ensemble de paquets reçus Y1,Y2…….YN en résolvant simplement l'ensemble
d'équations linéaires en (3.1).

Maintenant enlevons la proposition de la transmission sans erreur sur des


liens sans fil. Un modèle largement adopté de canal pour le codage réseau est

57
Chapitre 3. Le codage réseau

le soi-disant modèle de RLNCC (Random Linear Network Coding Channel).


Il suppose que les erreurs de paquet pourraient se produire dans n'importe
quel lien du réseau et est modelé comme paquets erronés. En d'autres termes,
un paquet erroné est représenté comme l’addition d'un paquet d'erreur à un

appliqué au lien   U1,2, … , XY dénotant L le nombre de liens du réseau (voir


paquet original. Selon ce modèle, nous dénotons par Zi le paquet d'erreur a

dans une matrice de X Q Rdénotée par Z, le signal reçu au nœud destinataire


la figure3.7 pour un exemple simple). En incorporant le L paquets d'erreur

peut être récrit comme suit :

Y = AX + BZ (3.2)

Où B est une matrice de T Q X qui correspond à la transformation linéaire


globale appliquée aux liens qui incluent les paquets d’erreurs (Z1,Z2,…,ZL)

En outre, si Zi= 0 pour tous   U1,2, … , XY, alors il n'y a aucun paquet erroné
jusqu’a destinataire. Si Zi= 0, là n'est aucune erreur introduite pour le lien i.

dans le réseau et le (3.2) sera (3.1).

3.4 Introduction du codage réseau

Des propositions d’application du codage réseau ont été proposées pour


un grand nombre de réseaux et pour un grand nombre de contextes.
Un premier exemple est l’Internet, où le codage réseau peut être employé à
deux niveaux: sur la couche IP (routeurs) et au niveau de la couche
d’application (réseaux peer -to- peer, réseaux de distribution de contenu,
réseaux overlay).
D’autres exemples sont les réseaux ATM, les réseaux Ad Hoc et sans fil, et
généralement tous les réseaux qui emploient des transmissions par paquets.
Cependant, dans chacun de ces réseaux, il y a une différence entre le travail
théorique sur le codage réseau et les applications pratiques dans ces réseaux
réels.
En effet, les premiers travaux théoriques antérieurs sur le codage réseau
ont supposé que le flux de symboles (paquets) est synchronisé dans le réseau
et que les liens ont des capacités semblables. Par ailleurs, théoriquement, on
suppose souvent avoir au moins une connaissance de la topologie du réseau
afin de construire le code. En outre, les graphes sont souvent supposés sans
cycles. Enfin, le problème de l’hétérogénéité des récepteurs et les problèmes

58
Chapitre 3. Le codage réseau

de la congestion et des pertes sur les liens et dans les routeurs sont souvent
ignorés. D’autres problèmes apparaissant dans les réseaux réels compliquent
l’application du codage réseau dans des réseaux réels. Par exemple,
l’information est transmise d’une manière asynchrone en paquets, les paquets
sont sujets à des délais et des pertes aléatoires sur chaque lien et nœud. Les
liens ont, dans la majorité des cas, des capacités inconnues. De plus, il est
extrêmement difficile d’avoir une connaissance totale du réseau. Enfin, il faut
noter que la topologie du réseau peut varier dans certains types de réseaux
tels que les réseaux ad-hoc ou les réseaux pair-à pair.

Un autre type de problèmes dans les réseaux réels concerne les latences et
les variations de délai. Les variations de trafic engendrent des problèmes de
congestions qui peuvent générer des latences. Pour contrôler les variations de
la capacité des liens, des files d’attente sont employées dans les routeurs. La
limitation des tailles de ces files d’attente peut produire des pertes.
Pour appliquer le codage réseau à des réseaux réels, plusieurs approches
ou stratégies de politiques de codage dans les nœuds intermédiaires ont été
proposées pour intégrer des contraintes pratiques.
Un premier ensemble d’approches, présenté dans [35][34][36], consiste à
effectuer des combinaisons linéaires aléatoires des paquets d’entrée. Dans
[35], il est montré que la probabilité qu’un récepteur puisse décoder avec
succès les données reçues peut être majorée par une borne qui est fonction de
la taille du corps fini utilisé. Dans [36][35][29], un codage aléatoire est
appliqué aux réseaux de pair-à pair et aux réseaux sans fil.
Dans différents contextes, [26] ou [34] présentent des solutions assurant le
codage de tous les paquets dans des nœuds de codage. Dans ces deux
derniers travaux, les implémentations sont basées sur des stratégies
particulières de nœuds de réseau permettant de gérer, entre autres, les
arrivées asynchrones de données. Ces stratégies impliquent un stockage des
informations dans les nœuds de codage afin d’attendre l’arrivée des
informations de la même génération provenant d’autres liens pour réaliser le
codage et les coder avec l’autre information entrante.
D’autres travaux, comme [37] ou [38], ont utilisé une approche classique
pour combiner les paquets selon un code réseau déterminé a priori. Cette
deuxième approche, qui est théoriquement la plus efficace, peut entraîner un
stockage des paquets dans des files d’attente dans des nœuds de codage et
par conséquent, une augmentation des délais de bout-en-bout.

59
Chapitre 3. Le codage réseau

L’approche classique (non-aléatoire), qui peut atteindre théoriquement la


meilleure performance, a été seulement appliquée dans quelques réseaux
particuliers.
Récemment, une approche mixte qualifiée d’"opportuniste" a été
présentée dans [39] et développé dans [40]. Le fait que le canal soit
naturellement à diffusion sur un lien sans fil est exploitée en effectuant des
combinaisons linéaires des paquets d’entrée selon la connaissance du contexte
et quand l’occasion est favorable. L’intérêt de codage réseau dans les réseaux
relais est montré dans [41].
Plusieurs stratégies pour implémenter le codage réseau au niveau
physique de ce type réseaux sont présentées.
Dans [42], les auteurs sont exploitent le fait que les nœuds de relais n’ont pas
besoin de décoder les informations des sources. Cette stratégie suppose que le
nœud relais ne s’occupe pas de décoder le signal mixte reçu mais tout
simplement il l’amplifie et le transfère - comme une somme réelle des signaux
reçus - vers les destinations. Chaque récepteur connaît comment extraire les
paquets qui lui manquent car il connaît ses paquets originaux. Une nouvelle
méthode pour extraire les paquets désirés est présentée aussi dans [42].

Conclusion

Dans la première partie de ce chapitre nous avons vu la notion de codage


réseau; puis plusieurs exemples sur les avantages et les intérêts de son
utilisation. Ensuite nous avons abordé les principes fondamentaux sur les
quels se base le codage réseau et des propositions pour l’implémenter dans
des réseaux réels. Dans le chapitre suivant nous allons voir les algorithmes
proposés pour réaliser le codage réseau.

60
Chapitre 4

Les algorithmes de codage réseau

Introduction

Après avoir introduit de manière intuitive le codage réseau, et quelques


notions de la théorie des graphes nous sommes maintenant prêts à définir
plus précisément le codage réseau. Dans ce chapitre on va voir deux types de
codage réseau, le codage réseau linéaire, et le codage réseau linéaire aléatoire
(RLNC), puis nous développerons ce dernier d’une manière algébrique

4.1 Codage réseau linéaire multicast

Soit h le maximum des maxflow (T) sur tout T∈ N, l’ensemble des nœuds
du réseau. Soit Ω un espace vectoriel de dimension h sur un corps fini
suffisamment grand.
Considérons un symbole sur ce corps fini comme l’unité d’information.
Dans ce cas, 1 symbole dans le corps fini peut être transmis sur un lien chaque
unité de temps.
(LCM) : Un codage linéaire multicast v sur un réseau de transmission (G, S)
est une attribution d’un espace vectoriel v(X) à chaque nœud X et d’un
vecteur v(X, Y) à chaque lien (X, Y) tels que :

• v(S) = Ω;
• v(X, Y ) ∈v(X) pour chaque lien(X, Y ) ;
• Pour tout ensemble ℘de nœuds "non source" dans le réseau
{ v(T) : T ∈℘} = { v(X, Y ) : X ∉℘, Y ∈℘ }

Les informations "entrantes" d’un nœud peuvent être considérées comme un


vecteur d’information qui appartient au sous-espace vectoriel v(X).La quantité
d’information atteignant un nœud X est donnée par la dimension de ce sous-
espace vectoriel.

61
Chapitre 4. Les algorithmes de codage réseau

En fait, la loi de flux d’information dans un nœud, qui implique que les
informations en sortie d’un nœud X sont des combinaisons des informations
"entrantes", implique que le vecteur assigné à un lien sortant de X doit être
une combinaison linéaire des vecteurs assignés aux liens entrants de T [24].
En pratique, les données circulant sur un lien (X,Y) sont calculées en
faisant le produit du vecteur d’information reçu par le vecteur de colonnes
v(X,Y), l’ensemble des vecteurs de colonnes formant une matrice qui
caractérise le codage au niveau d’un nœud [50].

Le LCM sur un réseau de communication est complètement déterminé


par les vecteurs qui sont assignés aux différents liens ou, de même, par les
matrices assignées aux différents nœuds. Illustrons la construction d’un LCM
sur l’exemple suivant.
Considérons la transmission multicast de deux bits b1, b2 de S à Y et Z dans
le réseau représenté sur la Figure 4.1.
On choisit comme corps fini le corps F2 (formé des éléments 0 et 1). Sur cette
Figure, on peut voir que le maximum des maxflow (T) pour tout nœud T vaut
2. On choisit donc comme espace vectoriel Ω = F22, c’est-à-dire l’ensemble des
couples (b1, b2) où b1 et b2 sont des éléments de F2.
Pour que v(S) soit égal à Ω, on considère que cette source génère les 2 bits b1 et
b2 par unité de temps. A partir de là, si on veut envoyer b1 sur (S,U) et b2 sur
(S,T), on doit avoir :

v(S, U) = [\] v(S, T) = [ ; ]


; ^
et

car l’information qui passe sur (S, U) (resp. (S, T)) est égale au produit

(b1, b2)∗ [\] (resp. (b1, b2)∗ [ ; ])


; ^

62
Chapitre 4. Les algorithmes de codage réseau

Figure 4.1 : Exemple de routage dans le cas de codage réseau [50]

Les nœuds qui ne reçoivent qu’une seule information, comme U ou T sont


obligés de la rediriger simplement alors que les nœuds qui reçoivent
plusieurs informations (comme W) peuvent combiner ces informations, c’est-
à-dire utiliser un vecteur contenant plusieurs termes non nuls. En effet,
lorsque tous les vecteurs associés à un code contiennent au plus 1 terme non
nul, on est dans le cas du routage classique (si ce terme non nul vaut 1).

Le codage multicast correspondant à la figure 4.1 est donc :

v(S,T) = v(T,W) = v(T Y ) =[;]


\

v(S,U) = v(U,W) = v(U Z) =[\]


;

v(W,X) = v(X Y ) = v(X,Z) =[;]


;
et

Ce code atteint le maxflow de chaque nœud car la dimension de l’espace


vectoriel formé par les éléments qui arrivent en Y (resp. Z) est 2 (dimension
de (b2, b1 + b2)= 2 ( resp dimension de(b1 + b2, b1)= 2).

63
Chapitre 4. Les algorithmes de codage réseau

4.2 Codage réseau linéaire aléatoire (RLNC)

Dans des réseaux ayant des topologies variables et/ou un grand nombre
de nœuds, il est très difficile d’utiliser le codage réseau classique où les
routeurs réalisent des combinaisons linéaires fixes.
Dans ces conditions, une solution consiste à utiliser du codage réseau
aléatoire (Random Linear Network Coding). Cette approche, proposée dans
[43][44], consiste à ce que chaque nœud du réseau effectue des combinaisons
linéaires aléatoires dans un corps fini à partir des paquets reçus par leur lien
d’entrée. Ils transmettent ensuite les paquets combinés (codés) sur les liens
sortants.
Pour décrire plus précisément cette technique, supposons que chaque
paquet contienne L bits (si les paquets ne sont pas de la même taille, ils seront
complétés avec des zéros).Chaque paquet est composé d’un vecteur de L/m
symboles où un symbole dans le corps F2m est représenté par m bits
consécutifs. Rappelons que la longueur d’un paquet combiné est toujours de
L bits après la combinaison de deux paquets de longueur L et que ce paquet
contient des informations issues de certains des paquets générés par les
sources [45].
Considérons n paquets M1, . . .,Mn générés par une ou plusieurs sources.
Avec un codage réseau linéaire, chaque paquet X dans le réseau est associé à
un vecteur de codage qui est un vecteur de coefficients g = (g1, . . . , gn) dans
(F2m)n.
Le problème de la construction d’un code réseau consiste à déterminer les
combinaisons linéaires que chaque nœud du réseau doit effectuer afin
d’assurer que le récepteur reçoive au moins n combinaisons linéaires
indépendantes à partir desquelles il peut décoder les paquets sources.
Avec le codage réseau aléatoire, chaque nœud du réseau choisit ses
coefficients de façon indépendante, aléatoire et uniforme dans le corps F2m,
d’une manière totalement décentralisée. De plus, aucune coordination n’est
exigée entre les nœuds dans leur choix des combinaisons linéaires d’entrées et
de sorties [43][35].
Dans ce cas, le paquet combiné sera :

_   ` R … (4.1)
a;
64
Chapitre 4. Les algorithmes de codage réseau

où g1, . . ., gn sont des coefficients choisis de façon aléatoire uniforme dans le


corps F2m (voir Figure4.2)
Les paquets étant considérés comme des vecteurs de L/m symboles, la
combinaison linéaire doit être réalisée pour chaque position du vecteur
c’est-à-dire :
S
_   ` R …(4.2)
1

où 0 ≤k ≤L/m −1 et R et Xk sont respectivement les kème symboles de Mi et de X.

Figure 4.2 : Un exemple de codage réseau aléatoire.

En plus des données combinées X, le vecteur des coefficients


g = (g1, . . . , gn) est également stocké dans le paquet combiné. Ces informations
supplémentaires ont un coût supplémentaire pour la transmission, mais ce
coût diminue proportionnellement avec l’augmentation des longueurs de
blocs de données.
Des paquets combinés peuvent également être recombinés dans des
nouveaux nœuds intermédiaires. Supposons qu’un nœud intermédiaire
reçoive un ensemble de paquets combinés reçus (g1,X1), . . . , (gs,Xs), où gj est le

65
Chapitre 4. Les algorithmes de codage réseau

vecteur de codage du jème paquet combiné Xj. Après avoir choisi de façon

générer un nouveau paquet combiné (`́ , _c en faisant la combinaison linéaire


aléatoire uniforme un ensemble de coefficients h1, . . . ,hs, ce nœud peut

e
suivante :

_c   d _ … 4.3
a;

Le vecteur de codage correspondant`́ est alors :

`́   d ` … 4.4


a;

Cette opération peut être répétée dans plusieurs nœuds dans le réseau. Au
niveau du décodage, il est tout d’abord nécessaire que pour chaque paquet
reçu, le récepteur connaisse le vecteur des combinaisons linéaires totales de ce
vecteur en fonction des paquets sources. Il réalise ensuite la combinaison
linéaire inverse (qui correspond à une inversion de matrice) pour retrouver
les paquets sources.
Par exemple, supposons qu’un nœud reçoive l’ensemble de paquets
(g1,X1), . . . , (gs,Xs).
Pour récupérer les paquets sources M1, . . .,Mn, il doit résoudre le système de s
équations linéaires avec n inconnues :

A
k_;   `; R
i  
i a;
i A

_ =   `= R 
j
i
a;
A
i e
i_   `e R
h a;

où les inconnues sont les paquets sources Mi. Si le nombre d’équations


linéairement indépendantes est supérieur ou égal au nombre de paquets
sources, le système d’équations peut être résolu et les n paquets sources
M1, . . .,Mn, peuvent être récupérés.
Dans [44][43], il est montré que la probabilité que des équations linéaires
soient indépendantes augmente avec la taille du corps fini. Lorsque la taille de
corps est suffisamment grande, le codage réseau aléatoire permet d’atteindre
66
Chapitre 4. Les algorithmes de codage réseau

le débit maximum entre la source et les récepteurs avec une grande


probabilité de succès. Cette probabilité, qui dépend de la longueur du code,
tend vers 1 lorsque la taille de corps 2m tend vers l’infini.

Même si il y a une certaine probabilité que les paquets combinés (ou les
combinaisons) soient linéairement corrélés, une petite taille de corps (par
exemple, m = 8) est suffisante pour que cette probabilité devienne négligeable
[35] et que le codage aléatoire reste plus performant que le routage [46].

Au niveau pratique, il faut noter que l’augmentant du nombre de paquets


sources n codés ensemble nécessite une augmentation de la quantité de
mémoire au niveau du récepteur. En effet, le récepteur doit stocker tous les
paquets reçus jusqu’à ce qu’il reçoive au moins n paquets indépendants. En
plus de la mémoire, la taille du bloc codé n a une conséquence sur le délai de
décodage des paquets. Afin de réduire les besoins en mémoire, le délai et la
complexité de calcul, la taille des matrices de décodage doit être limitée.
Pour plus de détails, les principaux avantages du codage réseau aléatoire
comparés au routage classique ainsi que plusieurs exemples sont présentés
dans [35] [34] [43].

4.3 Construction algébrique du codage réseau

Dans cette partie, une méthode de construction algébrique d’un code


réseau introduite dans [22], [23] sera présentée.
Supposons qu’un réseau soit représenté par un graphe orienté sans cycles
G = (V,E) où V est l’ensemble de nœuds et E est l’ensemble des liens⊆V ∗V . Un
lien orienté est noté pare = (v’,v) où v est appelé init(e) et v’ est la term(e).
ΓI (v) et ΓO (v) sont définis comme :
– ΓI(v) est l’ensemble des liens qui entrent dans v.
– ΓO(v) est l’ensemble des liens qui sortent de v.
Et donc
– ΓI(v) = {e ∈E : init(e) = v}.

– ΓO(v) = {e ∈E : term(e) = v}.

Le degré d’entrée δI(v) de v est défini comme :δI(v) = |ΓI(v)|.

Le degré de sortie δO(v) est défini comme : δO(v) = |ΓO(v)|.

67
Chapitre 4. Les algorithmes de codage réseau

Soit χ(v) = {X(v,1),X(v2), ···,X(v, µ(v))} un ensemble de μ(v) variables


aléatoires discrètes obtenues en entrée du nœud v. Une connexion c est définie
comme un triplet (v, v’, χ (v, v’)) ∈ V ∗V ∗ρχ(v)
Où ρχ(v) représente l’ensemble des puissances de χ(v). L’ensemble des
connexions dans G est l.
Pour chaque connexion c = (v, v’, χ (v, v’)) le débit R(c) est défini comme:

l    m _ n,  … 4.5
:p q, r q,q́

Figure 4.3 : Une connexion entre une source et un récepteur

Où H(X) est l’entropie de la variable aléatoire X. Pour une connexion


c = (v, v’, χ(v, v’)): v est la source et v’ est le récepteur.
Un nœud v peut émettre une information via un lien e = (v, v’) à
destination de v’ avec un débit maximum C(e) où C(e) est la capacité du lien e.
Les variables aléatoires représentant les informations transmises sur le lien e
sont notées Y(e), e ∈ΓO(v). Il peut noter que d’autres informations sont

transmises vers v, il s’agit de Y (e’) tel que e’ ∈ΓI(v).

En général, Y(e), qui est transmis sur le lien e = (v, u)∈ ΓO(v), est une fonction

de χ(v) et Y (e’) si e’∈ΓI(v).

68
Chapitre 4. Les algorithmes de codage réseau

Figure 4.4 : Les processus dans un nœud intermédiaire

Si n est un récepteur, ses sorties sont représentées par un ensemble de v(n)


processus aléatoires Z(v) = {Z(v,1), Z(v 2), · · · , Z(v,v(v))}.
Dans le cas où v n’est ni une source ni un récepteur, les différents
processus aléatoires seront représentés comme indiqué sur la Figure 4.4.
Pour simplifier, les suppositions suivantes seront considérées :

• la capacité de chaque lien de G est constante.


• chaque lien dans le réseau de communication a le même délai de
transmission.
• les processus aléatoires X(v,l) où l∈ {1, 2, · · · , μ(v)} sont indépendants
et ont un taux d’entropie constant (m bits par unité de temps).
• les processus aléatoires X(v,l) sont indépendants pour les différents v
(les informations qui sont injectées dans le réseau à des positions
différentes sont supposées indépendantes).

De plus, une communication dans le réseau est considérée comme une


transmission d’un vecteur de bits tels que les longueurs de ces vecteurs sont
égales dans toutes les transmissions. Tous les liens sont supposés être
synchronisés. Chaque vecteur binaire transmis de longueur m peut être
considéré comme un élément d’un corps fini contenant 2m éléments, i.e. F2m.
Les processus aléatoires X(v,l), Y(e) et Z(v,l) sont traités comme des
processus aléatoires discrets: X(v,l) = {X0(v,l),X1(v,l), ···,Xm(v,l)},

Y(e) = {Y0(e),Y1(e), ···} et Z(v,l) = {Z0(v, l), Z1(v, l), ···}. Ces processus génèrent
une succession de symboles dans F2m. Soit G=(V,E) un réseau de

69
Chapitre 4. Les algorithmes de codage réseau

communication considéré sans délai. On peut dire que G est un réseau


linéaire F2m si pour tout lien e tel que e = (v, u) ∈E, Y (e) vérifie :

z q z q

v M   wx,y { _ n, | P  }é,x { v é … 4.6


ya; é:A~ é a~x€ x

où αe,l et βe’,e sont des éléments de F2m.


Les sorties Z(v, l) de n’importe quel nœud v sont une combinaison linéaire
des Y (e) où e ∈ΓI(v) :

‚ n,    ƒé, { v é … 4.7
é:A~ é aq

où εe’,j  F2m.
Pour un réseau donné G et un ensemble donné de connexions l, on définit
le problème de réseau comme une paire (G,l). Ce problème donne des
conditions algébriques sous lesquelles un ensemble de connexions est
possible.
La solution de ce problème consiste à trouver les éléments αe,l, βe’,e et εe’,j
dans un corps fini convenable F2m. S’il existe une solution au problème du
codage réseau, donc le réseau est solvable.
La méthode de construction de la solution, présentée dans cette partie,
relie le problème du codage réseau avec des concepts algébriques, avec le
théorème Min-cut Max-flow ainsi qu’avec l’algorithme de Ford-Fulkerson.
Soit G(V,E) un réseau avec une seule source et un seul récepteur. Dans ce
cas, nous avons une seule connexion c = (v, v’, χ(v, v’)). Le problème de réseau
est solvable si et seulement si le débit de la connexion R(c) est inférieur ou
égal à la valeur minimale de toutes les coupes entre v et v’.
L’algorithme de Ford-Fulkerson donne une solution où tous les paramètres
αe,l, βe’,e et εe’,j sont égaux à 1 ou 0. Il donne une matrice de transfert qui définit
la relation entre le vecteur d’entrée t= (X(v,1),X(v,2), ···,X(v,µ(v))

et les vecteurs de sortie u= (Z(v’,1), Z(v’,2), ···, Z(v’,ν(v))

u= t∗M

70
Chapitre 4. Les algorithmes de codage réseau

où M est une matrice dont les coefficient (αe,l, βe’,e, εe’,j) sont des éléments deF2m.
La matrice M est définie comme: M = A ∗(I −F)−1∗BT
où les matrices A, B sont la matrice d’entrée et la matrice de sortie, définies
comme suit:
Si le réseau contient plusieurs sources et récepteurs, le vecteur d’entrée est
alors:
t= (t1,t2, ···,tµ)

= (X(v1, 1),X(v1, 2), ···,X(v1, µ(v1)),X(v2, 1),X(v2, 2), ···,X(v|V |, µ(v|V |))

La matrice d’entrée A est de taille µ∗|E| où µ = ∑ … n . Pour tout l, elle est


définie de la manière suivante:

wM,| t  _‡OMˆ‰[M ], |Š 
,  † … 4.8
0 NS‹S

u= (z1, z2, ···, zµ)


De façon similaire, soit :

= (Z(v1, 1), Z(v1, 2), ···, Z(v1, ν(v1)), Z(v2, 1), Z(v2, 2), ···,X(v|V |, ν(v|V |))

le vecteur de sortie. La matrice de sortie B est de taille ν∗|E|. Pour tout l, elle est
définie comme:

ƒM,| u  ‚‡SO[M ], |Š 
,  † … 4.9
0 NS‹S

Les éléments de la matrice F sont choisis tels que le déterminant de la


matrice M ne soit pas zéro. La matrice F est représentée comme une matrice
adjacente de taille |E| ∗ |E|. Elle est définie de la manière suivante:

} SO M  OMˆ‰ M 
>,  † M,M … 4.10
0 NS‹S

Il est clair que F est une matrice triangulaire strictement supérieure. La


matrice I –F est donc inversible (voir le lemme 2 dans [23]). Cet inverse doit
être défini dans le corps d’extension de F2 contenant tous les éléments βe’,e,
c’est-à-dire dans F2[···, βe’,e, ···].

71
Chapitre 4. Les algorithmes de codage réseau

4.4 Exemple

Considérons maintenant le réseau avec une source s et deux récepteurs z


et y représentés dans l’exemple de la Figure 4.5 et appliquons la construction
proposée.

Y (e1) = αe1,b1b1+ αe1,b2b2


Y (e2) = αe2,b1b1+ αe2,b2b2

Figure4.5 : Graphe de nœuds et de liens

v M1 wM1,1 wM1,2 
   ‘w w ’ {  1
v M2 M2,1 M2,2 2

Y (e3) = βe1,e3.Y (e1)


Y (e5) = βe1,e5.Y (e1)
Y (e4) = βe2,e4.Y (e2)
Y (e7) = βe2,e7.Y (e2)
Y (e6) = βe3,e6.Y (e3) + βe4,e6.Y (e4)
Y (e8) = βe6,e8.Y (e6)
Y (e9) = βe6,e9.Y (e6)
Z1 = εe5,z1.Y (e5) + εe8,z1.Y (e8)
Z2 = εe5,z2.Y (e5) + εe8,z2.Y (e8)
Y1 = εe7,y1.Y (e7) + εe9,y1.Y (e9)
Y2 = εe7,y2.Y (e7) + εe9,y2.Y (e9)

72
Chapitre 4. Les algorithmes de codage réseau

‚1 ƒ ƒM8,‚1 0 0 v M5
— M5,‚1 š — š
‚ –ƒM5,‚2 ƒM8,‚2 0 0 ™ v M8
. ™  1  . R
“ 2”  – 0
–
v1 0 ƒM7,v1 ƒM9,v1 ™ – v M7 ™ 2
– ™
v2 • 0 0 ƒM7,v2 ƒM9,v2 ˜ •v M9 ˜

Figure 4.6 : Graphe d’étiquette des liens

pour la figure 4.6 la matrice F sera la suivante :


M; M= MB M› Mœ M Mž MŸ M 

0 0 }M1,M3 0 }M1,M5 0 0 0 0
— š
–0 0 0 }M2,M4 0 0 }M2,M7 0 0 ™
–0 0 0 0 0 }M3,M6 0 0 0 ™
– ™
–0 0 0 0 0 }M4,M6 0 0 0 ™
>–
0 0 0 0 0 0 0 0 0 ™
–
–
0 0 0 0 0 0 0 }M6,M8 }M6,M9 ™™
–0 0 0 0 0 0 0 0 0 ™
–0 0 0 0 0 0 0 0 0 ™
•0 0 0 0 0 0 0 0 0 ˜

Et la matrice M est donnée par : M = A ∗(I −F)−1∗BT où les matrices A et B sont


ainsi définies comme:

73
Chapitre 4. Les algorithmes de codage réseau

; wx;,¡; wx=,¡; 0 0 0 0 0 0 0
  
= wx;,¡= wx=,¡= 0 0 0 0 0 0 0

‚; 0 0 0 0 ƒxœ,¢; 0 0 ƒxŸ,¢; 0
— š
‚= –0 0 0 0 ƒxœ,¢= 0 0 ƒxŸ,¢= 0
™

v; –0 0 0 0 0 0 ƒxž,£; 0 ƒx ,£; ™
v= •0 0 0 0 0 0 ƒxž,£= 0 ƒx ,£= ˜

Intuitivement, la matrice A peut être vue comme le codage avant l’entrée dans
le réseau.
De même, la matrice B peut être vue comme le décodage des informations qui
parviennent à chacun des récepteurs. L’inverse de la matrice I−F peut être
calculé de la manière suivante:

(I −F)−1 = (I + F + F2+ F3+ F4+ ···)

Comme F est une matrice triangulaire strictement supérieure, elle est


nilpotente. Ceci permet d’obtenir:

1 0 }x;,xB 0 }x;,xœ }x;,xB }xB,x 0 }x;,xB }xB,x }x,xŸ }x;,xB }xB,x }x,x 
— š
–0 1 0 }x=,x› 0 }x=,x› }x›,x }x=,xž }x=,x› }x›,x }x,xŸ }x=,x› }x›,x }x,x  ™
–0 0 1 0 0 }xB,x 0 }xB,x }x,xŸ }xB,x }x,x  ™
–0 0 0 1 0 }x›,x 0 }x›,x }x,xŸ }x›,x }x,x  ™
¤ 2 > 21  –0 0 0 0 1 0 0 0 0 ™
– ™
–0 0 0 0 0 1 0 }x,xŸ }x,x  ™
–0 0 0 0 0 0 1 0 0 ™
–0 0 0 0 0 0 0 1 0 ™
•0 0 0 0 0 0 0 0 1 ˜

Ensuite, la matrice sera :

¥;; ¥;= ¥;B ¥;› ¥;œ ¥; ¥;ž ¥;Ÿ ¥; 


 
 ¤ 2 > 21  ¥=; ¥== ¥=B ¥=› ¥=œ ¥= ¥=ž ¥=Ÿ ¥= 

74
Chapitre 4. Les algorithmes de codage réseau

Où :

S11 = αe1,b1
S21 = αe1,b2
S12 = αe2,b1
S22 = αe2,b2
S13 = αe1,b1βe1,e3
S23 = αe1,b2βe1,e3
S14 = αe2,b1βe2,e4
S24 = αe2,b2βe2,e4
S15 = αe1,b1βe1,e5
S25 = αe1,b2βe1,e5
S16 = αe1,b1βe1,e3βe3,e6 + αe2,b1βe2,e4βe4,e6
S26 = αe1,b2βe1,e3βe3,e6 + αe1,b2βe2,e4βe4,e6
S17 = αe2,b1βe2,e7
S27 = αe2,b2βe2,e7
S18 = αe1,b1βe1,e3βe3,e6βe6,e8 + αe2,b1βe2,e4βe4,e6βe6,e8
S28 = αe1,b2βe1,e3βe3,e6βe6,e8 + αe2,b2βe2,e4βe4,e6βe6,e8
S19 = αe1,b1βe1,e3βe3,e6βe6,e9 + αe2,b1βe2,e4βe4,e6βe6,e9
S29 = αe1,b2βe1,e3βe3,e6βe6,e9 + αe2,b2βe2,e4βe4,e6βe6,e9

La matrice BT est ainsi obtenue :

‚1 ‚2 v1 v2

0 0 0 0
— 0 0 0 0 š
– ™
– 0 0 0 0 ™
– 0 0 0 0 ™
  –ƒM5,‚1
¦ ƒM5,‚2 0 0 ™
– 0 0 0 0 ™
– 0 0 ƒM7,v1 ƒM7,v1 ™
– ™
–ƒM8,‚1 ƒM8,‚2 0 0 ™
• 0 0 ƒM9,v1 ƒM9,v2 ˜

La matrice M vaut donc :

R;; R;= R;B R;›


R 
R=; R== R=B R=›

75
Chapitre 4. Les algorithmes de codage réseau

Où :

M11 = εe5,Z1αe1,b1βe1,e5 + εe8,Z1αe1,b1βe1,e3βe3,e6βe6,e8 + εe8,Z1αe2,b1βe2,e4βe4,e6βe6,e8


M21 = εe5,Z1αe1,b2βe1,e5 + εe8,Z1αe1,b2βe1,e3βe3,e6βe6,e8 + εe8,Z1αe2,b2βe2,e4βe4,e6βe6,e8
M12 = εe5,Z2αe1,b1βe1,e5 + εe8,Z2αe1,b1βe1,e3βe3,e6βe6,e8 + εe8,Z2αe2,b1βe2,e4βe4,e6βe6,e8
M22 = εe5,Z2αe1,b2βe1,e5 + εe8,Z2αe1,b2βe1,e3βe3,e6βe6,e8 + εe8,Z2αe2,b2βe2,e4βe4,e6βe6,e8
M13 = εe7,Y1αe2,b1βe2,e7 + εe9,Y1αe1,b1βe1,e3βe3,e6βe6,e9 + εe9,Y1αe2,b1βe2,e4βe4,e6βe6,e9
M23 = εe7,Y1αe2,b2βe2,e7 + εe9,Y1αe1,b2βe1,e3βe3,e6βe6,e9 + εe9,Y1αe2,b2βe2,e4βe4,e6βe6,e9
M14 = εe7,Y2αe2,b1βe2,e7 + εe9,Y2αe1,b1βe1,e3βe3,e6βe6,e9 + εe9,Y2αe2,b1βe2,e4βe4,e6βe6,e9
M24 = εe7,Y2αe2,b2βe2,e7 + εe9,Y2αe1,b2βe1,e3βe3,e6βe6,e9 + εe9,Y2αe2,b2βe2,e4βe4,e6βe6,e9

Finalement, les flux sortants de ce réseau seront exprimés en fonction des flux
entrants et de la matrice de transfert M comme suit :

‚; ƒxœ,¢; ƒxŸ,¢; 0 0 v Mœ
— š
ƒ ƒxŸ,¢= 0 0
‚=
“ ” – xœ,¢= ™ { “v MŸ ”  §; = ¨ { R
v; – 0 0 ƒxž,£; ƒx ,£; ™ v Mž
v= • 0 0 ƒxž,£= ƒx ,£= ˜ v M 

Conclusion

Nous avons présenté comment appliquer le codage réseau dans un cas


très simple de deux bits mais en réalité dans l’internet la taille d’un paquet est
supérieure à 1400 octets. Nous allons présenter une technique pour appliquer
le codage réseau dans un réseau de paquets mais après avoir donner en
premier lieu un aperçu sur l’outil de simulation NS-2.

76
Chapitre 5

Environnement de simulations et
outils utilisés
5.1 L’intérêt d’utiliser un simulateur

Pour évaluer et tester les applications et les protocoles d’un réseau sans fil,
la simulation est un choix qui permet non seulement de tester sans aucun coût
des nouvelles normes, des nouvelles technologies mais aussi d’anticiper les
problèmes qui peuvent se poser dans le futur.
Un certain nombre de simulateurs ont été développés pour répondre à ce
besoins. Nous pouvons citer Network Simulateur2 (NS2) [54] et son extension
sans fil “The CMU Monarch Project” [51], OPNET [52] ou encore le
simulateur GloMoSim [53] conçu autour des environnements parallèles.
Les mécanismes utilisés dans les réseaux IP (protocole de routage, file
d'attente et dans notre cas le codage réseau) doivent être évalués afin de
mesurer les performances des stratégies utilisées et de tester leur fiabilité.
L'utilisation d'un réseau réel dans une évaluation est difficile et coûteuse, en
outre de telles évaluations ne donnent généralement pas des résultats
significatifs. Le réseau réel n'offre pas la souplesse de varier les différents
paramètres de l'environnement et pose en plus le problème d'extraction de
résultats; c'est pour cela que la majorité des travaux d'évaluation de
performances utilisent le principe de simulation vu les avantages qu'il offre.
En effet, la simulation permet de tester les protocoles sous une variété de
conditions.

5.2 Le simulateur NS2

NS-2 est un logiciel de simulation de réseaux informatique développé lors


d'un projet de la DARPA. Le Simulateur se compose d'une interface de
programmation en Otcl et d'un noyau écrit en C++

NS2 est un simulateur développé dans le but des recherches, il fournit un


environnement permettant de réaliser des simulations entre autre des
protocoles IP, TCP, routage et des protocoles multicast dans les réseaux
filaires ainsi que dans les réseaux sans fil, avec support de la mobilité des
77
Chapitre 5. Environnement de simulation et outils utilisés

nœuds. Il permet d'étudier le comportement dynamique de flux (par exemple


le contrôle de congestion dans des réseaux de données commutés) en plus il
est une application universitaire Open source (Logiciel libre et largement
utilisé)

Network Simulator 2 a été originellement développé étant que variante du


"REAL network simulator" en 1989, et a considérablement évolué au cours
des années. En 1995, NS-2 était développé par le projet VINT (collaboration
des chercheurs à UC Berkeley, LBL, USC/ISI et Xerox PARC). Actuellement,
son développement est supporté par le DARPA à travers SAMAN et par la
NSF à travers CONSER, tout en incluant de nombreuses contributions
extérieures, comme en particulier les codes pour les réseaux sans fil des
projets Daedalus de l’UCB et Monarch de la CMU et de Sun Microsystems.

Par défaut le débit offert par la couche IEEE 802.11 est de 2Mbit/s. Cependant
cette valeur peut être modifiée explicitement dans le code source. Il faut noter
également que ce logiciel est constamment modifié, corrigé et étendu au fur et
à mesure de l’apparition de nouveaux besoins. Ainsi, au cours du
déroulement de ce mémoire, plusieurs versions se sont succédées, apportant
leurs lots de corrections et améliorations diverses.

Figure 5.1 : Principe de fonctionnement de NS2

78
Chapitre 5. Environnement de simulation et outils utilisés

5.2.1 Composition d'un script de simulation

Avant de lancer une simulation, on introduit les paramètres de la simulation


dans NS2 grâce aux scripts TCL.
Dans le script, l'utilisateur fournit la topologie du réseau, les caractéristiques
des liens physiques, les protocoles utilisés, le type de trafic généré par les
sources, les événements, etc.
Si le script écrit en OTCL permet une utilisation (édition, modification des
simulations) facile du simulateur, les modules -quant à elles- sont écrites en
C++ pour avoir une plus grande puissance de calcul. Ces modules incluent
entre autres plusieurs types de protocoles, de files d'attente et d'algorithmes
de routage.

Un scénario de simulation de réseau en ns est constitué :


– de nœuds de réseau: endroits où est généré le trafic, ou nœuds de routage.
– de liens de communication entre les réseaux.
–d'agents de communication, représentant les protocoles de niveau transport
(TCP, UDP); ces agents sont attachés aux nœuds et connectés l'un à l'autre, ce
qui représente un échange de données (connexion TCP, flux UDP).
– d'applications qui génèrent le trafic de données selon certaines lois, et se
servent des agents de transport.

Figure 5.2 : Protocoles implémentés dans NS2


79
Chapitre 5. Environnement de simulation et outils utilisés

De plus, la description d'une expérience de simulation contient les


instructions de trace des objets que l'on veut observer, et les mesures que l'on
veut collecter. Les outputs des simulations sont des fichiers textes qu’on
appelle fichiers trace. Ces fichiers sont structurés en entrées. Chaque entrée
correspond à une action effectuée par un nœud (envoie de paquet, rejet de
paquet, mise en file d'attente, réception d'un paquet).

Ces fichiers doivent être traités pour pouvoir calculer les valeurs de bande
passante, perte, délai et gigue relatives au scénario en question. Par exemple
PDR, dans notre cas ce traitement a été réalisé par le langage de traitement
des fichiers: Python. Enfin, le traçage des courbes a été réalisé par Excel.
Par ailleurs, le simulateur permet la création d'un fichier d'animation
permettant de visualiser la simulation sur une interface graphique appelée
NAM.

5.2.2 Le langage (O)Tcl

Le langage tcl est un langage de scripts. Les commentaires commencent par


un # et finissent à la fin de ligne.
Les variables ont toujours le type chaîne de caractères (ou liste de chaînes). La
valeur de la variable de nom a est $a. Les variables sont toujours instanciées
avant l'exécution d'une instruction, même à l'intérieur d'une chaîne de
caractères.

Le tableau suivant décrit les principales instructions.

set a 10 affecter la chaîne de caractères 10 à la


variable a
set a "une chaîne de car" autre affectation
set b $a affecter le contenu de la variable a à la
variable b
puts $b imprimer le contenu de la variable b
puts "B vaut $b" idem, mais à l'intérieur d'une chaîne de
caractères. b est évaluée
set a(couleur) "red" les tableaux ont des indices qui sont des
chaînes de caractères
[fonc par1 par2] appeler la fonction fonc avec des paramètres
set obj [new Class1/Class2] créer une instance d'un objet
[$obj meth par1 par2] invoquer la méthode meth de l'objet obj
$obj set field val instancier une variable de l'objet obj
set a [$obj set field] récupérer la valeur d'une variable de l'objet
obj
[expr $a + 6 * $b] évaluer l'expression arithmétique
set f [open "File" w] ouvrir le fichier de nom File en écriture, et
mettre le descripteur dans f
puts $f "truc" écrire une chaîne dans le fichier de
descripteur f
80
Chapitre 5. Environnement de simulation et outils utilisés

exec xemacs & exécuter un processus système (en arrière


plan avec &)

Tab 5.1 : principales instructions de NS2

Les structures de contrôle sont : pour les tests,


if { $a = $b } {
# code if
} else {
# code else
}
et pour les boucles
for { set i 0 } { $i < 10 } { incr i } {
# code de la boucle

Enfin, il est possible de définir des fonctions :


proc fonc { par1 par2 } {
global var1 var2
# code
return $quelquechose
}

5.2.3 Avantages et difficultés de NS2

Comme tout outil de simulation, NS2 permet l’étude de l’existant, la


conception, la validation et l’évaluation de performances et ceci dans le
domaine des protocoles et mécanismes réseau. C’est un simulateur
extrêmement flexible. NS2 permet l’étude des cas difficiles à reproduire dans
la réalité. Il offre la souplesse de pouvoir varier aisément une multitude de
paramètres du réseau (ce qui n’est pas le cas si on simule sur un réseau réel).
Donc, par rapport à l’expérimentation sur un réseau réel, NS2 permet un gain
de temps et d’argent.

D’un autre côté, NS2 souffre des inconvénients des simulateurs tel que la
simplification et l’abstraction du monde réel et la puissance de calcul requise
qui croit exponentiellement avec la complexité du système simulé.

De plus, NS2 souffre de l’état primitif aussi bien de ses outils de collecte et
traitement des résultats que de son interface graphique. Les concepteurs de
NS2 ne manquent pas de mettre en garde les utilisateurs sur l'aspect non
achevé de ce simulateur. Il ne s'agit pas d'un produit fini, de nouveaux bugs
sont souvent trouvés et d'autres constamment introduits par les

81
Chapitre 5. Environnement de simulation et outils utilisés

programmeurs. Finalement, on remarque souvent des problèmes


d'incompatibilité entre les implémentations de NS, les modules développés
pour NS et les versions de linux.

Dans le cas de notre projet, c'est surtout les deux derniers points qui ont
présenté une difficulté de taille pour l'avancement de notre travail d'autant
plus que la documentation manque sévèrement : généralement, les modules
qui sont développés pour NS2 sont en étroite dépendance avec les systèmes
sur lesquels ils ont été développés initialement. De ce fait, il a fallu
constamment faire face à des problèmes d'incompatibilité et de réadaptation
des modules pour qu'ils puissent fonctionner sur la machine qu'on utilise. On
a dû passer par une série de test (implémentation de plusieurs modules,
introduction de plusieurs modifications, test de plusieurs combinaisons).
Le recours aux forums de discussion et la consultation des auteurs des
modules par mail ont été souvent les seuls moyens de surmonter certains
problèmes.

L'établissement d'une procédure de prise en charge du codage réseau par NS2


a consommé beaucoup d'effort et de temps. Et bien qu'elle ne constitue qu'une
étape préliminaire pour notre travail (à savoir l'évaluation des performances
de codage réseau), elle a comme même été très enrichissante du point de vu
expérience dans le débogage.

5.3 Les étapes réalisées

1. intégration du module qui est constitué de quatre classes :


gf2e.cc ,gf2e.h : classe pour gérer toutes les opérations mathématiques
sur un corps fini.
nc_buffer.cc, nc_buffer.h : Cette classe contient toutes les structures et
les méthodes pour stocker les paquets dans un nœud de réseau.
NCR.cc, NCR.h : est le module de la couche réseau (routage) qui est
capable de router des paquets et effectuer codage réseau aléatoire.
rng_NC.cc rng_NC.h: est le générateur de nombres aléatoires pour le
module du codage réseau.
2. Modifier des fichiers de NS2 pour identifier ce nouveau protocole
(NCR)
3. Débogage
4. Recompiler NS2

82
Chapitre 5. Environnement de simulation et outils utilisés

gf2e.cc, NCR.cc, Avant


rng_NC.cc nc_buffer.cc
simulation

For i=1 to 10

Simulation

Exécution :
Script_ de_

Script simulation_i.tcl
Topologie.tcl ˝pour chaque ρ˝

Traitement les fichiers traces


Résultats.txt
Script
python Après
simulation

Traçage des courbes

Figure 5.3: Organigramme de démarches réalisées

83
Chapitre 5. Environnement de simulation et outils utilisés

5.4 Algorithme de codage

Début
Sc : donner par l’utilisateur (0,1; 0,2; ….. ; 1 ) ;
Lors du réception d'un nouveau paquet Pk
Si (Pk) est innovateur alors
Stocker dans le buffer ;
finsi

générer un nouveau paquet ©c;


Si(Sc ==ρ)alors

©c =`; ©; <`= ©= < … < ` ©


/*

Broadcast ©c;
*/

finsi
Fin

5.5 Procédure de décodage

Chaque paquet contient un vecteur de dimension h représentant le vecteur de


codage global g(e). Chaque nœud reçoit un paquet innovateur le met dans la
matrice de décodage Gt, Chaque récepteur peut récupérer les vecteurs de la
source x1,...,xh en réalisant une élimination de Gauss sur les vecteurs de
codage des h paquets entrants (qui se trouvent dans le buffer).

« M; «; M; «= M; ¯ «° M; t; t;,; t;,= ¯ t;,°


ª ¬ ®ª ¬ ¬ ± ¬ ®  ²~ ª ¬ ®  ²~ ª ¬ ¬ ± ¬ ®
« M­ «; M­ «= M­ ¯ «° M­ t­ t­,; t­,= ¯ t­,°

5.6 Installation de Cygwin et NS2

Pour installer NS2 sous windows XP, nous avons choisi la version ns-2.27 et
c’est la même chose pour toutes les autres versions de NS2 (2.28, 2.29, 2.34,… )

5.6.1 installation de Cygwin


1. Ouvrir la page de cygwin http://cygwin.com/
84
Chapitre 5. Environnement de simulation et outils utilisés

2. Cliquer sur "Install Cygwin Now" pour télécharger setup.exe


3. Exécuter setup.exe la fenêtre suivante apparait

Cliquer sur suivant pour avoir la fenêtre suivante

85
Chapitre 5. Environnement de simulation et outils utilisés

Si vous voulez installer cygwin pour la première fois et vous n’avez pas les
packages choisissez Download from internet
Mais si vous avez déjà les packages choisissez install from Local Directory
Cliquer sur suivant pour avoir la fenêtre ci-dessous

Laisser les options par défaut cliquer ensuite sur suivant pour avoir la fenêtre
suivante

86
Chapitre 5. Environnement de simulation et outils utilisés

Cliquer sur Browse et choisissez où se trouve les packages. Dans notre cas
« ftp%3a%2f%2fftp.nctu.edu.tw%2fWindows%2fcygwin » par exemple

Cliquer sur OK ensuite sur suivant la fenêtre ci-dessous va apparaitre

Cette fenêtre contient les packages de cygwin pour voir tous les packages
cliquer sur view le mot category changera en full

87
Chapitre 5. Environnement de simulation et outils utilisés

Les packages suivant doit être choisis XFree86-base, XFree86-bin, XFree86-


prog, XFree86-lib, XFree86-etc, make, patch, perl, gcc, gcc-g++, gawk, gnuplot,
tar and gzip, par ce qu’ils sont nécessaires pour NS2 alors pour les activer
cliquer sur skip du package

88
Chapitre 5. Environnement de simulation et outils utilisés

Cliquer sur suivant l’installation va commencer

Quand l’installation se termine la fenêtre suivante va apparaitre cliquer sur


terminer.

La boite suivante va apparaitre cliquer sur OK

89
Chapitre 5. Environnement de simulation et outils utilisés

5.6.2. Installation de NS2 :


Télécharger NS2 sur le site officiel : http://www.isi.edu/nsnam/ns/ns-
build.html

Cliquer sur l’icône suivante du bureau

Après l’exécution un nouveau répertoire sera créé avec le nom de l’utilisateur


(AMINE) dans le chemin (E:\cygwin\home\AMINE)
Copier ns-allinone-2.27.tar.gz dans le répertoire AMINE ensuite dans Shell
utiliser la commande suivante pour le décompresser “tar xvfz ns-allinone-
2.27.tar.gz’’
Après la décompression changer le chemin au ns-allinone-2.27 en en utilisant
la commande suivante “cd ns-allinone-2.27”
Ensuite pour exécuter le fichier d’installation utiliser la commande ‘’ ./install’’

90
Chapitre 5. Environnement de simulation et outils utilisés

Cliquer ‘’y’’ pour continuer


Quand l’installation sera terminée la fenêtre suivante va apparaitre

Avant exécuter de NS2 il faut modifier les variables d’environnements pour


cela on ajoute les lignes suivantes dans le fichier ‘’.bashrc’’
export NS_HOME=`pwd`/ns-allinone-2.27
exportATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME
/bin:$PATH
export LD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/
unix:$NS_HOME/otcl-1.8:$NS_HOME/lib:$LD_LIBRARY_PATH
export TCL_LIBRARY=$NS_HOME/tcl8.4.5/library

ensuite exécuter la commande ‘’./validate’’ après un long moment vous aurez


la fenêtre ci-dessous

91
Chapitre 5. Environnement de simulation et outils utilisés

Pour le tester on va tout d’abord lancer le mode graphique, la commande


‘’startxwin.bat‘’
Pour tester si le NS2 est installé ave succès on va exécuter des exemples de
NS2 qui se trouvent dans le répertoire ‘’~/ns-allinone-2.27/ns-2.27/ns-
tutorial/examples’’
Et pour exécuter un script par exemple : example2.tcl
Taper la commande suivante ‘’ns example2.tcl’’

Si vous verrez les fenêtres suivantes, félicitations vous avez installé


cygwin + NS2.27 avec succès

92
Chapitre 5. Environnement de simulation et outils utilisés

5.6.3 Intégration du module network coding

Vous pouvez trouve le module sur : http://telecom.dei.unipd.it


Après le débogage nous avons réussi d’intégrer ce module, ensuite nous
avons généré les scripts pour réaliser nos simulations.

5.7 Topologies utilisées : cercle, grille, aléatoire


600

500

400

300

200

100

0
0 100 200 300 400 500 600

Figure 5.4 : Topologie en cercle de 8 nœuds

Figure 5.5 :Topologie en grille de 64 nœuds


93
Chapitre 6

Évaluation de performance

Introduction

Tous les problèmes évoqués précédemment font que l’application du


codage réseau à des réseaux réels n’est pas immédiate dans la plupart des cas.
Toutefois, de plus en plus de travaux sont proposés pour appliquer le codage
réseau dans des contextes réels.
Dans la première partie de ce chapitre nous allons voir une technique
pour appliquer le codage réseau dans le réseau de paquet ensuite dans la
deuxième partie on va faire des simulations dans le cas de broadcast.

6.1 Applications du codage réseau dans le réseau de paquet

chaque lien, une source s  V, et un ensemble de récepteurs T ³V.


Considérons un graphe acyclique G(V,E) avec une unité de capacité pour

entre la source et un récepteur. Chaque lien e  E qui sort d’un nœud v = in(e)
La capacité de diffusion h est le nombre minimum de liens dans chaque coupe

porte un symbole y(e) qui est une combinaison linéaire des symboles y(e’) sur
les liens entrants e’[34]:

« M   ‰x Ḿ « Ḿ … 5.1
x́ :´µ~ x́ aq

Le vecteur de codage local m(e) = [me(e’)]e’:out(e’)=v représente la fonction de


codage au nœud v sur un lien e. Si v est la source s, on rajoute des liens

i =1, . . . , h. La valeur y(e) transmise sur chaque lien e  E est la combinaison


artificiels e’1, . . . , e’h qui entrent dans s en portant h symboles source y(e’i) = xi,

linéaire y(e) = ∑­a; ` M t de ces symboles source.


Le vecteur de h coefficients g(e) = [g1(e), . . . , gh(e)] peut être déterminé par

94
` M   ‰x Ḿ ` Ḿ … 5.2
x́ :´µ~ x́ aq

Le vecteur g(e) est appelé le vecteur de codage global sur un lien e.


Chaque récepteur t reçoit sur ses h (ou plus) liens entrants e1, . . . , eh. les
symboles :

« M; `; M; ¯ `­ M; t; t;
ª ¬ ®ª ¬ ± ¬ ® ª ¬ ®  ²~ ª ¬ ®
« M­ `; M­ ¯ `­ M­ t­ t­

On peut récupérer les symboles source x1, . . . , xh via la matrice Gt des vecteurs
de codage global g(e1), . . . , g(eh).

Figure 6.1 Symboles reçus par un récepteur

Lorsque les vecteurs de codage locaux sont générés aléatoirement, cette


récupération peut être réalisée avec une grande probabilité si les symboles
appartiennent à un corps fini suffisamment grand. Pratiquement, dans un
réseau de paquets, les symboles y(e) transmis sur un lien e sont divisés en
paquets et une taille de corps égale 28 est suffisante. Classiquement, dans
l’Internet, la taille maximale d’un paquet sans l’entête est légèrement
supérieure à 1400 octets. Chaque paquet IP peut donc porter à peu près
N = 1400 symboles si la taille du corps est 28 ou environ N = 700 si la taille du
corps est 216. Ainsi, les symboles y(e) transmis sur chaque lien e sont regroupés
en vecteurs : y(e) = [y1(e), y2(e), . . . , yN(e)]

Chaque vecteur est alors considéré comme une combinaison linéaire

« M   ‰x Ḿ « Ḿ … 5.3
x́ :´µ~ x́ aq

95
des vecteurs y(e’) sur les liens e’ entrants v = in(e). De la même manière, les
symboles de la source xi transmis vers la source sur les liens artificiels e’i sont
groupés en vecteurs Xi= [xi,1, xi,2, . . . , xi,N] et donc chaque récepteur peut
retrouver (avec une grande probabilité) les h vecteurs de la source x1, . . . , xh à
partir de n’importe quels h paquets reçus.

« M; «; M; «= M; ¯ «° M; t; t;,; t;,= ¯ t;,°


ª ¬ ®ª ¬ ¬ ± ¬ ®  ²~ ª ®  ²~ ª ¬
¬ ¬ ± ¬ ®
« M­ «; M­ «= M­ ¯ «° M­ t­ t­,; t­,= ¯ t­,°

Chaque paquet contient un vecteur de dimension h représentant le vecteur de


codage global g(e). Chaque récepteur peut récupérer les vecteurs de la source
x1, . . . , xh en réalisant une élimination de Gauss sur les vecteurs de codage
des h paquets entrants.

`; M; ¯ `­ M; «; M; «= M; ¯ «° M; 1 … 0 t;,; t;,= ¯ t;,°


ª ¬ ± ¬ ¬ ¬ ± ¬ ®=²~ ¶ ¬ ± ¬ ¬ ¬ ± ¬ ·
`; M­ ¯ `­ M­ «; M­ «= M­ ¯ «° M­ 0 … 1 t­,; t­,= ¯ t­,°

Figure 6.2 : Chaque récepteur reçoit une combinaison de vecteurs de la source

Le point négatif de ce schéma est la transmission des h symboles


représentant le codage dans chaque paquet. Toutefois, les avantages de ce
schéma sont très importants :
Les récepteurs peuvent faire le décodage sans connaître la topologie du
réseau ou des fonctions de codage même si des nœuds des liens sont ajoutés
ou supprimés. Les récepteurs peuvent décoder malgré les pertes de certains

96
paquets. Notons que le décodage est réalisable même si les vecteurs de
codage local ont été choisis aléatoirement.

6.2 Évaluation de performance

Notre simulation consiste à étudier la transmission broadcast dans


l’environnement sans fil en utilisant le codage réseau, pour cela on fait une
comparaison entre ce dernier et l’inondation probabiliste.
Néanmoins, NS2 est certainement le simulateur de réseaux le plus utilisé
par la communauté Ad Hoc. Sa gratuité et la disponibilité de son code source
sont autant d’avantages qui font qu’il est largement mis à contribution par les
chercheurs désireux évaluer les performances des protocoles qu’ils
développent. Par conséquence, notre choix s’est finalement fixé sur ce
simulateur.
Dans la suite de cette partie, nous allons procéder à l’évaluation des
performances de codage réseau par rapport à l’inondation probabiliste
(définie dans la section 1.4.1.1).

Nous utilisons le paramètre ¸ Forwarding factor (facteur de transmission)


qui est défini [48] comme le rapport entre le nombre moyen de paquets
transmis et le nombre moyen de paquets innovateurs (innovative) reçue par
nœud.

le nombre moyen de paquets transmis


¸
le nombre moyen de paquets innovateurs reçus

Un paquet reçu est innovateur chaque fois qu'il augmente le rang de la

Pour l’inondation probabiliste ¸ est défini comme le rapport entre le


matrice de décodage [49].

nombre moyen de paquets transmis et le nombre moyen de paquets reçus par


nœud.
En utilisant RLNC (Random Linear Network Coding), chaque nœud
envoie une combinaison linéaire aléatoire des paquets dans sa mémoire
tampon (buffer). Lorsqu’il reçoit un message innovateur une nouvelle
combinaison est transmise avec une probabilité¸ (facteur de transmission),
alors que rien n'est transmis avec une probabilité (1-¸). Par exemple pour

97
¸  0,5 un nœud, en moyenne, envoie un nouveau message à la réception de
deux paquets innovateurs.

6.2.1 Modèle de trafic

Pour le modèle de trafic, chaque nœud  insère dans le réseau un seul


paquet original t et veut recevoir tous les autres paquets insérés. Les paquets
originaux t sont générés de façon aléatoire tel que chaque nœud insère le
paquet d'origine de façon indépendante en choisissant un temps d'insertion

∆ 1»»‰N. La longueur du paquet est L= PHY+MAC+NC(n)+P.


de manière uniforme dans un intervalle de longueur fixe

Avec PHY et MAC sont les entêtes de la couche physique et mac tel que
PHY=192 bits, MAC=224 bits.
NC(n) est l’entête du codage réseau, elle dépend de nombre de nœud n utilisé
et sa taille : NC(n)=8(18+n) bits.
P : représente la taille des paquets CBR que nous allons générer dans nos
simulations qui est 64 bits (8 bytes)
Le débit utilisé est de 12 kb/s

Nos métriques de performances sont :

1) Pourcentage de délivrance de paquets PDR (Packet Delivery Ratio) qui


est défini comme: Rapport entre le nombre de paquets reçu avec succès
(et décodé) et le nombre de paquets qu’il veut recevoir (paquets des
autres nœuds du réseau).

2) Délai : délai de réception de paquets avec succès (Le délai moyen à


partir du moment où un paquet est émis jusqu'à sa réception).

6.2.2 Topologie et scénario

On a utilisé plusieurs topologies :

I. Dans le cas fixe :


Cercle avec (8,16,32) nœuds
Grille avec (9,25,64) nœuds
98
Aléatoires (random) avec (17,50) nœuds

II. Dans le cas mobile: Aléatoires avec (12, 34,50) nœuds

Nous testons notre algorithme en variant ¸ de 0,1 à 1 pour les deux cas :

Pour les schémas ci-dessous ¸ est décidé a priori égale pour tous les
codage de réseau et inondation probabiliste.

nœuds. Nous avons simulé pour chaque ¸ dix scénario différent puis nous
avons pris la moyenne de tous les nœuds, les résultats sont schématisés dans
les graphes ci-dessous :

99
6.2.3 Résultats de simulation

I. Le cas fixe

I.1 Topologie en cercle


Cercle de 8 nœuds : distance entre les nœuds est 175 avec la porté de 200 m
dans une surface de 500 ×500

1
codage réseau
0,9
0,8 inondation probabiliste
0,7
0,6
PDR

0,5
0,4
0,3
0,2
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a:Taux de délivrance de paquet

0,12
Inondation probabiliste
0,1
Codage réseau
Délai de paquets

0,08

0,06

0,04

0,02

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b :délai de bout en bout


Figure 6.3 : la comparaison entre le codage réseau et inondation probabiliste dans
la topologie en cercle avec 8 nœuds.

100
Cercle de 16 nœuds : distance entre les nœuds est 175 avec la porté de 200 m
dans une surface de 1000 ×1000

1
inondation probabiliste
0,9
codage reseau
0,8
0,7
0,6
PDR

0,5
0,4
0,3
0,2
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a.Taux de délivrance de paquet

0,7
inondation probabiliste
0,6
Codage réseau

0,5

0,4
Délai

0,3

0,2

0,1

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b.délai de bout en bout

Figure 6.4 : la comparaison entre le codage réseau et inondation probabiliste dans


la topologie en cercle avec 16 nœuds.

101
Cercle 32 nœuds : distance entre les nœuds est 175 avec la porté de 200 m
dans une surface de 1900 ×1900

1
Codage réseau
0,9
Inondation probabiliste
0,8
0,7
0,6
PDR

0,5
0,4
0,3
0,2
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1

facteur de transmission, ρ

a: Taux de délivrance de paquet

4,5
4 inondation probabiliste
Codage réseau
3,5
3
2,5
Délai

2
1,5
1
0,5
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b :délai de bout en bout

Figure 6.5 : la comparaison entre le codage réseau et inondation probabiliste dans


la topologie en cercle avec 32 nœuds.

102
La comparaison entre le codage réseau (trait continue) avec celui de
l’inondation probabiliste (trait pointillés) en termes de taux de délivrance

pour toutes les valeurs de ¸


dans un réseau circulaire montre que le codage réseau est plus performant

Dans le cas de cercle en 8 nœuds et avec le facteur de transmission 0,7


(peu de transmission) on peut atteindre plus que 90% des paquets de réseau
tandis qu’avec l’inondation probabiliste elle ne dépasse pas 70%
Le délai de codage réseau est élevé par rapport à l’inondation probabiliste il
augmente avec le facteur de transmission, due à sa performance de délivrance
de paquet

103
I.2 Topologie en gille
Grille de 9 nœuds: distance entre les nœuds est 175 avec la porté de 200 m
dans une surface de 400 ×400

1
0,9
0,8
0,7
0,6
PDR

0,5
0,4
0,3
Codage réseau
0,2
Inondation probabiliste
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a: Taux de délivrance de paquet

0,11
0,1
Inondation probabiliste
0,09
Codage réseau
0,08
0,07
0,06
Délai

0,05
0,04
0,03
0,02
0,01
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b: délai de bout en bout

Figure 6.6 : la comparaison entre le codage réseau et inondation probabiliste dans


la topologie en grille avec 9 nœuds.

104
Grille de 25 nœuds: distance entre les nœuds est 175 avec la porté de 200 m
dans une surface de 800 ×800

1
0,9
0,8
0,7
0,6
PDR

0,5
0,4
0,3
Codage réseau
0,2
Inondation probabiliste
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a: Taux de délivrance de paquet

2,5
Inondation probabiliste

Codage réseau
2

1,5
Délai

0,5

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b : délai de bout en bout


Figure 6.7 : la comparaison entre le codage réseau et inondation probabiliste dans
la topologie en grille avec 25 nœuds.

105
Grille de 64 nœuds :distance entre les nœuds est 175 avec la porté de 200 m
dans une surface de 1300 ×1300

1
0,9
0,8
0,7
0,6
PDR

0,5
0,4
0,3
Codage réseau
0,2
0,1 Inondation probabiliste
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a :Taux de délivrance de paquet

25
Inondation probabiliste
Codage réseau
20

15
Deélai

10

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b: délai de bout en bout

Figure 6.8 : la comparaison entre le codage réseau et inondation probabiliste dans


la topologie en grille avec 64 nœuds.

106
Pour la topologie en grille et dans le cas de 9 nœuds et avec ¸  0,3 ou plus,
chaque nœud atteint un taux supérieur à 90%, de même que le délai est court
par rapport au cas d’inondation probabiliste nous pouvons affirmer que le
codage réseau est meilleur dans ce cas.
Dans les deux autres cas (16, 32 nœuds) nous constatons que le codage réseau

paquets de réseau (¸  0,4) avec un délai un peu plus élevé par rapport à
est meilleur en délivrance de paquets et atteint très vite le taux de 90% des

l’inondation probabiliste à l’exception des cas où¸  0,9 et 1 le codage réseau


à un délai plus court que l’inondation probabiliste.

107
I.3 Topologie aléatoire
Aléatoire 17 nœuds: distance entre les nœuds est 175 avec la porté de 200 m
dans une surface de 1000 ×1000

1
Codage réseau
0,9
Inondation probabiliste
0,8

0,7

0,6
PDR

0,5

0,4

0,3

0,2

0,1

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1

a:Taux de délivrance de paquet

0,8
Inondation probabiliste
0,7
Codage réseau

0,6

0,5
Délai

0,4

0,3

0,2

0,1

0
0,1 0,2 0,3 0,4 0,5 de transmission,
facteur 0,6 0,7ρ 0,8 0,9 1

b : délai de bout en bout

Figure 6.9 : la comparaison entre le codage réseau et inondation probabiliste dans


une topologie aléatoire avec 17 nœuds.

108
Aléatoire de 50 nœuds : distance entre les nœuds est 175 avec la porté de 200
m dans une surface de 1000 ×1000

1
0,9
0,8
0,7
0,6
PDR

0,5
0,4
0,3
0,2
Codage réseau Inondation probabiliste
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a :Taux de délivrance de paquet

20
Codage réseau
18
Inondation probabiliste
16
14
12
Délai

10
8
6
4
2
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b : délai de bout en bout

Figure 6.10 : la comparaison entre le codage réseau et inondation probabiliste dans


une topologie aléatoire avec 50 nœuds.

109
II. Le cas mobile
Aléatoire de 12 nœuds: distance entre les nœuds est 175 avec la porté de 200
m dans une surface de 1000 ×1000

1
Codage réseau
0,9
Inondation probabiliste
0,8
0,7
0,6
PDR

0,5
0,4
0,3
0,2
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a : Taux de délivrance de paquet

0,3
Codage réseau
Inondation probabiliste
0,25

0,2
Délai

0,15

0,1

0,05

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b: délai de bout en bout

Figure 6.11 : la comparaison entre le codage réseau et inondation probabiliste dans


une topologie aléatoire avec 12 nœuds.

110
Aléatoire de 34 nœuds: distance entre les nœuds est 175 avec la porté de 200
m dans une surface de 1000 ×1000

1
0,9 Codage réseau
Inondation probabiliste
0,8
0,7
0,6
PDR

0,5
0,4
0,3
0,2
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a: Taux de délivrance de paquet

6
Codage réseau
5 Inondation probabiliste

4
Délai

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b: délai de bout en bout

Figure 6.12 : la comparaison entre le codage réseau et inondation probabiliste dans


une topologie aléatoire avec 34 nœuds.

111
Aléatoire de 50 nœuds: distance entre les nœuds est 175 avec la porté de 200
m dans une surface de 1000 ×1000

1
0,9
0,8
0,7
0,6
PDR

0,5
0,4
0,3
Codage réseau
0,2
Inondation probabiliste
0,1
0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

a: Taux de délivrance de paquet

25
Codage réseau
Inondation probabiliste
20

15
Délai

10

0
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
facteur de transmission, ρ

b: délai de bout en bout

Figure 6.13 : la comparaison entre le codage réseau et inondation probabiliste dans


une topologie aléatoire avec 50 nœuds.

112
Dans le cas mobile le codage réseau est meilleur en délivrance de paquet

l’exception où ¸  U0,8; 0,9; 1Y on peut dire que le délai de codage réseau et


avec un délai un peu élevé par rapport à l’inondation probabiliste à

plus court que dans l’inondation probabiliste.

Conclusion

D’après les simulations on déduit que le codage réseau est très efficace en
délivrance de paquet et surtout avec la topologie en grille; parce que chaque
nœud à plusieurs voisins ce qui lui permet d’avoir l’occasion de coder les

réseau atteint très vite le taux de 90% avec ¸  0,4 ce qui rend le codage
paquets entendu puis ils les retransmettent. Dans cette topologie le codage

réseau plus rentable et surtout pour l’économie d’énergie (batterie) ce qui est
avantageux pour les réseaux sans fil (Ad Hoc, réseau de capteur).

avec ¸  U0,9; 1Y, cela est dû au fait qu’il n’ya pas de redondance de paquets
Le codage réseau est meilleur en délivrance de paquets et en délai

comme cela se fait avec le l’inondation probabiliste où les même paquets


parviennent avant les nouveaux paquets, ce qu’il augmente le délai de bout
en bout. Avec le codage réseau, tous les paquets sont innovateurs et
permettent au nœud de décoder l’ensemble de paquets.
Nous avons utilisé la transmission broadcast qui est un élément essentiel
pour la création des tables de routage et aussi (la détection de nouveaux
nœuds ou de leur absence en utilisant le message hello), alors en utilisant le
concept de codage réseau pour les échanges de messages est plus efficace en
délivrance de paquet et en délai par rapport au cas de broadcast ordinaire.

113
Conclusion
Actuellement, les réseaux 802.11 sont considérés, dans certains
environnements, comme une alternative sérieuse aux réseaux filaires. En effet,
les nombreux avantages qu’offre cette technologie (rapidité de déploiement,
réduction des coûts d’installation, mobilité, etc.) leurs ont permis de s’imposer
rapidement sur le marché.

Les réseaux Ad hoc, commence à susciter l’intérêt des chercheurs par les
nombreuse applications qui peuvent être explorées dans ce type
d’architecture (catastrophes naturelles, guerres ...). Les recherches dans ce
domaine se sont concentrées sur certains problèmes clé, parmi lesquels
minimiser l’énergie qui est une ressource rare dans les réseaux sans fil.

Dans ce travail nous avons montré que l’utilisation du codage réseau


présente un avantage significatif par rapport au cas de transmission broadcast
et ceci en combinant et en transmettant plusieurs paquets ce qui permet à un
nœud d’atteindre la totalité des paquets d’un réseau avec peu de
transmission. En conséquence cela minimise l’utilisation d’énergie, mais pour
le délai il est un peu long ce qui est due essentiellement au décodage des
paquets.

Dans la continuité du travail présenté, nous envisageons dans les travaux


futurs d’introduire dans le contexte des réseaux à qualité de service garantie
par l’utilisation des techniques permettant de combiner les paquets qui ont
une priorité similaire ou de même type de trafic.

En outre, la complexité de décodage est encore assez élevée dans la


plupart des régimes proposés dans la littérature en raison de la longueur des
blocs de codage qui est nécessaire pour concevoir des solutions efficaces de
codage. Trouver le bon compromis entre le retard, le codage l'efficacité et la
complexité est encore une question ouverte.

Nous nous attendons à ce que le codage réseau deviendra une technologie


clé pour plusieurs applications où la communication est effectuée avec des
réseaux aléatoires avec diversité.

114
Bibliographie
[1] Emmanuel CONCHON, "Définition et mise en œuvre d’une solution
d’émulation de réseaux sans fil ", Thèse de doctorat, l’Institut National
Polytechnique De Toulouse, 2006.
[2] S. Corson and J. Macker. Mobile Ad hoc Networking (MANET) “Routing
Protocol Performance Issues and Evaluation Considerations”. Internet
Request for Comments RFC 2501, Internet Engineering Task Force
(IETF), january 1999.
[3] Vincent UNTZ ,"Les réseaux sans fil spontanés pour l’Internet Ambiant",
Thèse de doctorat,INP Grenoble,2007
[4] C. L. Hedrick. Routing Information Protocol. RFC 1058, 1988.
[5] G. Malkin. RIP Version 2. RFC 2453, 1998.
[6] J. M. McQuillan, I. Richer, and E. C. Rosen. “The new routing algorithm
for the ARPANET”. Innovations in Internetworking, pages 119–127,
1988.
[7] E.W. Dijkstra. A note on two problems in connexion with graphs.
Numerische Mathematik, 1 :269–271, 1959.
[8] J. Moy. OSPF specification. RFC 1131, 1989.
[9] J. Moy. OSPF Version 2. RFC 2328, 1998.
[10] R. W. Callon. Use of OSI IS-IS for routing in TCP/IP and dual
environments. RFC 1195, 1990.
[11] IETF MANET Working Group. http://www.ietf.org/html.charters/manet-
charter.html.
[12] GAUCHARD David, " Simulation Hybride des Réseaux IP-DiffServ-
MPLS Multi-servicessur Environnement d’Exécution Distribuée", thèse
de doctorat, Université Toulouse III PAUL SABATIER,2003.
[13] Dominique Dhoutaut, "Etude du standard IEEE 802.11 dans le cadre des
réseaux ad hoc: de la simulation à l’expérimentation",Thèse de doctorat,
L’Institut National des Sciences Appliquées de Lyon, 2003
[14] S. Das C. Perkins, E. Belding-Royer. RFC 3561, Ad hoc On-Demand
Distance Vector (AODV) Routing [en ligne], 2010. Memo. The Internet
Society. Disponible sur : ftp://ftp.rfc-editor.org/in-notes/rfc3561.txt.
[15] Yih-Chun Hu David B. Johnson, David A. Maltz. The Dynamic Source
Routing Protocol for Mobile Ad Hoc Networks (DSR) (draft IETF), 2004.

115
[16] Philippe Jacquet Thomas Clausen. RFC 3626, Optimized Link State
Routing Protocol (OLSR), 2003.
[17] Eric Sigward, Introduction à la théorie des graphes,mars 2002
[18] Daniel DEWOLF Optimisation des flux Dunkerque, Septembre 2003
[19] Nikolaos Pappas, Network Coding, Telecommunications and Networks
Laboratory Institute for Computer Science (ICS) University of Crete,
Technical Report FORTH-ICS/TR-393 – September 2007
[20] FORD L.K. et D.K.FULKERSON, Flows in networks, Princeton
University Press, Princeton, New Jersey, 1962.
[21] R. Ahlswede, N. Cai, S-Y. R. Li, and R.W. Yeung.” Network information
flow”. IEEE Transactions on Information Theory, vol. 46, pp. 1204-1216,
July 2000
[22] R. Koetter and M. Médard. ‘’An algebraic approach to network coding’’.
IEEE/ACM Transactions on Networking (TON), vol. 11, no. 5, pp. 782-
795, October 2003.
[23] R. Koetter and M. Médard. ‘’Beyond routing : An algebraic approach to
network coding’’. In Proceedings of the 21th Annual Joint Conference of
the IEEE Computer and Communications Societies (INFOCOM’02), vol.
1, pp. 122-130, June 2002.
[24] S-Y. R. Li, R. W. Yeung, and N. Cai. ‘’Linear network coding’’. IEEE
Transactions on Information Theory, vol. 49, no. 2, pp. 371-381, 2003.
[25] P. Sanders, S. Egner, and L. Tolhuizen. ‘’Polynomial time algorithms for
network information flow’’. In Proceedings of the Fifteenth Annual ACM
Symposium on Parallel Algorithms (SPAA), San Diego, California, USA ,
pp. 286-294, June 2003.
[26] S. Jaggi, P. Sanders, P. A. Chou, M. Effros, S. Egner, K. Jain, and L.
Tolhuizen. ‘’Polynomial time algorithms for multicast network code
construction’’. IEEE Transactions on Information Theory, vol. 51, no. 6,
pp. 1973-1982, June 2005.
[27] C. K. Ngai and R.W. Yeung. ‘’Network coding gain of combination
networks’’. IEEE Information Theory Workshop, pp. 283-287, October
2004.
[28] T. Noguchi, T. Matsuda, and M. Yamamoto. ‘’Performance evaluation of
new multicast architecture with network coding’’, 2003.
[29] Y. Wu, P. A. Chou, and S-Y. Kung. ‘’Minimum-energy multicast in
mobile ad hoc networks using network coding’’. IEEE Transactions on
Communications, vol. 53, no.11, pp. 1906-1918, November 2005.

116
[30] Y. Wu, P. Chou, Q. Zhang, K. Jain, W. Zhu, and S-Y. Kung. ‘’Network
planning in wireless ad hoc networks : a cross-layer approach’’. IEEE
Journal on Selected Areas in Communications, vol. 23, no. 1, pp. 136-150,
January 2005.
[31] TRACEY Ho,DESMOND S. LUN, “NETWORK CODING An Introduction”
Cambridge University Press 2008
[32] D. S. Lun, M. Médard, R. Koetter, and M. Effros. “ On coding for reliable
communication over packet networks”. Physical Communication, vol. 1,
no. 1, pp. 3-20, March 2008.
[33] Marco Di Renzo, Lana Iwaza; Michel Kieffer, Pierre Duhamel, and
Khaldoun Al Agha. “Robust Wireless Network Coding-An Overview”,
CNRS-SUPELEC-Univ Paris-Sud 11,CNRS-Univ Paris-Sud 11,2010
[34] P. A. Chou, Y. Wu, and K. Jain. “Practical network coding’’. In
Proceedings of the 41st Allerton Conference on Communication, Control,
and Computing, October 2003.
[35] T. Ho, R. Koetter, M. Medard, D. R. Karger, and M. Effros. “The benefits
of coding over routing in a randomized setting”. In Proceedings of IEEE
International Symposium on Information Theory, pp. 442+, July 2003.
[36] C. Gkantsidis and P. Rodriguez. “Network coding for large scale content
distribution”. In Proceedings of the 24th Annual Joint Conference of the
IEEE Computer and Communications Societies (INFOCOM’05), vol. 4,
pp. 2235-2245, March 2005.
[37] Y. Zhu, B. Li, and J. Guo.”Multicast with network coding in application-
layer overlay networks”. IEEE Journal on Selected Areas in
Communications, vol. 22, no. 1,pp. 107-120, January 2004.
[38] Z. Li, B. Li, D. Jiang, and L. C. Lau. “On achieving optimal throughput
with network coding”. In Proceedings of the 24th Annual Joint
Conference of the IEEE Computer and Communications Societies
(INFOCOM’05), vol. 3, pp. 2184-2194, March 2005.
[39] S. Katti, D. Katabi, W. Hu, H. Rahul, and M. Médard.“The importance of
being opportunistic : Practical network coding for wireless
environments”. In Proceedings of the 43st Allerton Conference on
Communication, Control, and Computing, September 2005.
[40] S. Katti, H. Rahul, W. Hu, D. Katabi, M. Médard, and J. Crowcroft. “Xors
in the air : practical wireless network coding”. ACM SIGCOMM
Computer Communication Review, vol. 36, no. 4, pp. 243-254, October
2006.

117
[41] Y.Wu, P. A. Chou, and S-Y. Kung.”Information exchange in wireless
networks with network coding and physical-layer broadcast”. In
Proceedings of the 39th Conference on Information Sciences and Systems
(CISS), March 2005.
[42] S. Katti, S. Gollakota, and D. Katabi. ”Embracing wireless interference :
Analog network coding”. In Proceedings of the 2007 conference on
Applications, technologies, architectures, and protocols for computer
communications (SIGCOMM ’07), pp. 397-408. ACM, 2007.
[43] T. Ho, M. Médard, J. Shi, M. Effros, and D. R. Karger. “On randomized
network coding ‘’ . In Proceedings of the 41st Allerton Conference on
Communication, Control, and Computingin, October 2003.
[44] T. Ho, M. Médard, R. Koetter, D. R. Karger, M. Effros, J. Shi, and B.
Leong.” Toward a random operation of networks”. IEEE Transactions on
Information Theory, vol. 2001, pp. 1-8, 2004.
[45] C. Fragouli, J-Y. Le Boudec, and J. Widmer. “Network coding : an instant
primer”. ACM SIGCOMM Computer Communication Review, vol. 36,
no. 1, pp. 63-68, January 2006.
[46] T. Ho, B. Leong, M. Médard, R. Kotter, Y. H. Chang, and M. Effros. “On
the utility of network coding in dynamic environments ‘’. International
workshop on wireless Ad hoc networks (IWWAN), 2004.
[47] Y. Sasson, D. Cavin, and A. Schiper, “Probabilistic broadcast for flooding
in wireless mobile ad hoc networks,” in IEEE WCNC, Mar2003.
[48] Alfred Asterjadhi, Elena Fasolo, Michele Rossi,Joerg Widmer,
Member,Michele Zorzi, "Toward Network Coding-Based Protocols
forData Broadcasting in Wireless Ad Hoc Networks", 2010.
[49] Christina Fragouli, J¨org Widmer, and Jean-Yves "Efficient Broadcasting
using Network Coding", 2008
[50] Ali Mahmino, "Application du Codage Réseau aux Architectures à
Garanties de Qualité de Service (QoS)", Thèse de doctorat, Institut
National Polytechnique de Toulouse (INPT), 2009.
[51] The CMU Monarch Project’s , “Wireless and Mobility Extensions to ns“,
Carnegie Mellon University, 1999.
[52] OPNET Modeler, [Online] http ://www.mil3.com.
[53] Global Mobile Information Systems Simulation Library (GloMoSim),
[Online] http ://pcl.cs.ucla.edu/projects/glomosim.
[54] The Network Simulation – ns-2. [Online]. http ://www.isi.edu/nsnam/ns/.

118
Annexe

Annexe A
1.Exemple de script Tcl de cercle de 32 nœuds
#====================================================================
# La définition des options
#====================================================================
set val(chan) Channel/WirelessChannel ;# channel type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(rp) NCR ;# routing protocol
set val(nn) 32 ;# number of mobilenodes
set val(x) 1250
set val(y) 1250
set val(stop_sim) 100
set val(print) 80
set val(flooding) 0
set val(probabilistic_nc) 1 ; #Activer le codage réseau aléatoire
set val(force_first) 1
set val(send_count) 1 ; # technique de calculer le facteur de
transmission
set val(statistics) 1
set val(pseudo) 0
set val(sc) 1 ;# numéro de scénario
set val(dist) 175 ;# distance entre les nœuds
set val(R) 200 ; # la porté du nœud
set data_size 8
set data_rate 12Kb
set step 0.004

119
Annexe

# Paramètres des argument d’entrées

if {[llength $argv]>0} {
set val(send_count) [lindex $argv 0]; # it si an integer
}
if {[llength $argv]>1} {
set val(sc) [lindex $argv 1]; # it si an integer
}
if {[llength $argv]>2} {
set val(nn) [lindex $argv 2]; # Number of nodes
}

if {[llength $argv]>3} {
set val(dist) [lindex $argv 3]; # Number of nodes
}

# Paramètres de NCR

Agent/NCR set probabilistic_nc $val(probabilistic_nc)


Agent/NCR set force_first $val(force_first)
Agent/NCR set send_count $val(send_count)
Agent/NCR set statistics $val(statistics)
Agent/NCR set flooding $val(flooding)
Agent/NCR set pseudo $val(pseudo)
Agent/NCR set scenario $val(sc)
Agent/NCR set interval_ $val(interval)
Agent/NCR set N $val(nn)
Agent/NCR set R $val(R)
Mac/802_11 set send_count $val(send_count)

#====================================================================

120
Annexe

# Programme
# ===================================================================

# Initialisation du variable global

set ns [new Simulator]


set tracefd [open simple.tr w]
$ns trace-all $tracefd

# set up topography object


set topo [new Topography]

#$topo load_flatgrid $val(x) $val(y)

# ------------
# Création de l’objet God
# -----------
create-god $val(nn)

# ------------
# Configuration des noeuds
# -----------
set chan_1_ [new $val(chan)]

$ns node-config -adhocRouting $val(rp) \


-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channel $chan_1_ \
-topoInstance $topo \
-agentTrace On \
-routerTrace OFF \
-macTrace OFF \

121
Annexe

-movementTrace OFF

puts "...Creation des noeuds."


# Création des nœuds

for {set i 0} {$i < $val(nn) } {incr i} {


set node($i) [$ns node]
$node($i) random-motion 0
$node($i) attach-node-agent $node($i)
}

puts "..OK!"
# -----------------
# Topologie
# -----------------
# Indication du chemin de la topologie
source
"../../topology_examples/CircularNetwork/circularNet_$val(nn)_$val(dist).tcl"
puts "...OK!"

# -------------------
# Trafic
# -------------------
# Création des applications et du trafic pour chaque nœud
for {set i 0} {$i < $val(nn)} {incr i} {

set udp($i) [new Agent/UDP]


$ns attach-agent $node($i) $udp($i)

set cbr($i) [new Application/Traffic/CBR]


$cbr($i) set rate_ $data_rate
$cbr($i) set packetSize_ $data_size
$cbr($i) attach-agent $udp($i)

set null_($i) [new Agent/Null]


$ns attach-agent $node($i) $null_($i) }
$ns connect $udp(0) $null_([expr $val(nn) -1])

122
Annexe

set rng1 [new RNG]


$rng1 seed 20012

set ran [new RandomVariable/Uniform]


$ran use-rng $rng1
set start 2

# le temps de génération et de stopper le trafic

for {set i 0} {$i < $val(nn)} {incr i} {


set start_t [expr $start + [$ran value]*0.1]
set stop_t [expr $start_t + $step]
$ns at $start_t "$cbr($i) start"
$ns at $stop_t "$cbr($i) stop"
}

puts "...OK!"
#-----------
# Afficher les statistiques
# ---------
for {set i 0} {$i < $val(nn) } {incr i} {
$ns at $val(print) "$node($i) print_stat";
}
# terminer la smiulation

for {set i 0} {$i < $val(nn) } {incr i} {


$ns at $val(stop_sim) "$node($i) reset";
}
$ns at $val(stop_sim) "finish"
$ns at [expr $val(stop_sim) + 1] "puts \"NS EXITING...\" ; $ns halt"
proc finish {} {
global ns tracefd
$ns flush-trace
close $tracefd
}
puts "Starting Simulation..."
$ns run

123
Annexe

2.Script perl pour exécuter la simulation 10 fois pour chaque ρ


allant de 0,1 à 1

#! /usr/bin/perl

$sc[0] = 0.1;
$sc[1] = 0.2;
$sc[2] = 0.3;
$sc[3] = 0.4;
$sc[4] = 0.5;
$sc[5] = 0.6;
$sc[6] = 0.7;
$sc[7] = 0.8;
$sc[8] = 0.9;
$sc[9] = 1.0;
$nSC = 10;

$Nsim = 10;
$nodes[0] = 16;$nodes[1] = 32;$nodes[2] = 64;
$n = 3;
$dist = 175;

for($nn = 0; $nn < $n; $nn++){


for($k = 0; $k < $nSC ; $k++)
{
for($i = 1; $i <= $Nsim; $i++)
{
print STDOUT "\n Start simulation NC 802 with sendcount $sc[$k] - scenario
circular $i \n\n";
system("ns circularNet_802.tcl $sc[$k] $i $nodes[$nn] $dist");
}
system("tarcvzf./Results/MAC_NC_circular_$nodes[$nn]_$dist_$sc[$k].tar.gz
./Results/MAC_NC*.txt");
system("tar cvzf ./Results/NCR_NC_circular_$nodes[$nn]_$dist_$sc[$k].tar.gz
./Results/NCR_NC*.txt");
system("rm -f ./Results/MAC_NC*.txt");
}
124
Annexe

}
exit (0) ;

3.Script python pour traiter les fichiers traces

def moy(lis):
k=0
for i in range (len(lis)):
k=k+lis[i]
return k/len(lis)

fw = open('resultat.txt', 'w')
istm4=[]
listm5=[]
aaa='['
ccc='['
for i in range(16):
a='NCR_NC_'+str(i)+'_0.90.txt'
print a
fs = open(a, 'r') # lire les phrases contenues dans un fichier texte
#t(ext1=raw_input('entrer: ')
col4=[]
col5=[]
j=0
while 1:
tex=fs.readline()
print tex
liste=tex.split()
if liste<>[]:

aa=float(liste[3])
bb=float(liste[4])
print aa,'qq'
col4.append(aa)
print col4
col5.append(bb)
print liste

125
Annexe

j=j+1
print j
if tex =='':
break

print col4
print col5
moy4=moy(col4)
moy5=moy(col5)
listm4.append(moy4)
listm5.append(moy5)
aaa=aaa+','+str(moy4)
ccc=ccc+','+str(moy5)
fw.write('le moyenne de colonne 4 du fichier '+str(i)+'est : '+str(moy4)+'\n')
fw.write('le moyenne de colonne 5 du fichier '+str(i)+'est : '+str(moy5)+'\n')

aaa=aaa+']'
ccc=ccc+']'
bbb=aaa[0]+aaa[2:]
ddd=ccc[0]+ccc[2:]
fw.write('la liste des moyennes d la colone 4 : est' +bbb+'\n')
fw.write('la liste des moyennes d la colone 5 : est' +ddd+'\n')
fw.write('la liste des moyennes d la colone 4 a lexcel : est'+'\n')
for i in range(len(listm4)):
fw.write(str(listm4[i])+'\n')
fw.write('la liste des moyennes d la colone 5 a lexcel : est'+'\n')
for i in range(len(listm5)):

fw.write(str(listm5[i])+'\n')

fs.close()
fw.close()

126

Vous aimerez peut-être aussi