These FChatte
These FChatte
These FChatte
Fabien Chatté 1
HEUDIASYC UMR CNRS 6599
Université de Technologie de Compiègne,
Centre de Recherche de Royallieu, BP 20529,
60205, Compiègne, France.
Membres du Jury :
Pr. V. Vèque Univertsité Paris-sud XI (rapporteur)
Pr. G. Leduc Université de Liège (rapporteur)
Pr P. Rolin France Télécom
Pr. A. Bouabdallah Université de Technologie de Compiègne
Dr B. Ducourthial Université de Technologie de Compiègne (directeur de thèse)
Dr S. Niculescu Université de Technologie de Compiègne (directeur de thèse)
1. email: fabien.chatte@hds.utc.fr
2
3
À ma famille
4
5
Remerciements
Je tiens à remercier :
Véronique Vèque d’avoir accepté d’être rapporteur et de faire partie de mon jury de thèse.
Je tiens également à la remercier pour ses conseils qui m’ont permis d’améliorer certains points
dans mon manuscrit.
Guy Leduc pour avoir accepté d’être rapporteur et de faire partie de mon jury de thèse. Je
tiens également à le remercier pour les remarques pertinentes qu’il a pu me faire à travers son
rapport.
Pierre Rolin pour avoir accepté d’être membre de mon jury de thèse.
Abdelmadjid Bouabdallha pour avoir accepté de faire partie de mon jury de thèse, ainsi que
pour les conseils avisés qu’il a pu me donner durant mes études à l’UTC.
Imed Romdhani pour la qualité de nos échanges et l’ambiance chaleureuse qu’il a apportée
au sein de notre bureau.
Résumé
Dans ce manuscrit de thèse, nous commençons par présenter un panorama des différentes
techniques de contrôle de congestion implémentées dans des protocoles de transport unicast.
Ensuite, nous présentons une étude visant à définir les limites de validité de la modélisation
continue des réseaux à commutation de paquets. Puis, nous décrivons et justifions la mise au
point (dans le domaine du continu) d’un correcteur issu de techniques de contrôle d’automa-
tique destiné à réguler le débit d’émission des sources d’un réseau, afin d’éviter la formation
de congestions. Une fois le correcteur développé, il a été discrétisé de manière à l’implémenter
dans un protocole de transport. Afin de comparer objectivement notre mécanisme de contrôle
de congestion à ceux existants, nous définissons une méthodologie de comparaison. Cette mé-
thodologie permet d’évaluer les performances des mécanismes de contrôle de congestion. Pour
finir, grâce à la méthodologie développée, nous comparons les performances de notre protocole
à celles de plusieurs protocoles de transport existants. Cette comparaison nous permet d’analy-
ser, dans différentes situations, le fonctionnement des protocoles testés.
Abstract
In this PhD thesis manuscript, we begin by presenting a panorama of different conges-
tion control techniques implemented in unicast transport protocols. Next, we present a study
in which we try to define the validity limits of the fluid approximation of a packets switched
network. After, we describe and justify the development (in the continuous time domain) of a
controller, which is used to compensate the sending rate of network sources in order to avoid
congestions. Once the controller developed, we discretize it in order to implement it in a trans-
port protocol. To objectively compare our congestion control mechanism to the existing ones,
we define a comparison methodology. This methodology allows to evaluate performance of
congestion control mechanisms. At the end, we compare the performance of our protocol with
those of several existing transport protocols. This comparison allows us to analyse in several
cases, the behaviour of the tested protocols.
8
9
Sommaire
1 Introduction 11
1.1 Contexte de l’étude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Problématique de l’évitement de congestion . . . . . . . . . . . . . . . . . . . 16
1.3 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Un état de l’art sur les protocoles de type TCP incluant un contrôle de congestion 25
2.1 Transmission Control Protocol (TCP) . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Améliorer la gestion des acquittements . . . . . . . . . . . . . . . . . . . . . . 36
2.3 Améliorer la gestion de la fenêtre de congestion . . . . . . . . . . . . . . . . . 40
2.4 Contrôle de congestion basé sur le débit . . . . . . . . . . . . . . . . . . . . . 45
2.5 Contrôle de congestion avec une information provenant du réseau . . . . . . . 52
2.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.4 Réduction de la taille de la file d’attente après une congestion . . . . . . . . . . 88
4.5 Introduction de la composante intégrale . . . . . . . . . . . . . . . . . . . 91
4.6 Discrétisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7 Conclusion 155
7.1 Bilan des travaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.2 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Bibliographie 169
A Rappels 171
A.1 Internet Protocol (IP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
A.2 User Datagram Protocol (UDP) . . . . . . . . . . . . . . . . . . . . . . . . . 173
A.3 Internet Control Messages Protocol (ICMP) . . . . . . . . . . . . . . . . . . . 174
Glossaire 224
Index 227
Chapitre 1
Introduction
tion indépendant des vendeurs. En effet, à l’époque les protocoles de communication étaient
propriétaires , ce qui rendait impossible la communication entre deux machines provenant
de constructeurs différents. Les travaux lancés par l’ARPA avaient pour but de relier ses centres
de recherches pour partager leurs équipements informatiques. C’est ainsi qu’est né ARPAnet,
un réseau suffisamment décentralisé pour qu’en cas d’attaque nucléaire il puisse continuer à
fonctionner même si une partie du réseau était endommagée. En 1972, Ray Tomlinson mit au
point un système de messagerie électronique, qui permettait l’échange d’informations au sein
d’un réseau. Grâce au courrier électronique, il était désormais possible de contacter un grand
nombre de personnes en envoyant un seul mail. À la même époque, des travaux ont permis la
connexion d’autres réseaux au réseau ARPAnet : SATNET 3 , PRNET 4 , puis en 1973 le premier
Ethernet développé par Xerox. C’est de cette interconnexion de plusieurs réseaux que vient
le terme d’Internet. Ces avancées technologiques ont nécessité une gestion du réseau à un ni-
veau plus élevé qu’il ne l’était dans ARPAnet (gestion au niveau matériel). Les protocoles de
1. Advanced Research Projects Agency.
2. Department of Defense.
3. SATellite atlantic packet NET.
4. Packet Radio NETwork.
12 CHAPITRE 1. INTRODUCTION
– couche réseaux (niveau 3) : assure la gestion des adresses, le routage des paquets et le
contrôle de congestion ;
– couche transport (niveau 4) : assure le transport des segments et la gestion des erreurs ;
– couche session (niveau 5) : assure l’ouverture et la fermeture des sessions des ordinateurs
du réseau ;
– couche présentation (niveau 6) : assure le formatage des données (compression, cryptage,
etc.) ;
– couche application (niveau 7) : assure l’interfaçage entre l’application et le réseau.
N
CouchesNomOSI Nom
Modèle DoD
Exemples de protocoles
7 Application Application FTP, Telnet, SMTP, NVT, NFS, navigateurs web, etc.
6 Présentation
5 Session
4 Transport hôte-à-hôte TCP, UDP, etc.
3 Réseau Internet IP, ARP, RARP, ICMP etc.
2 Liaison Accès réseau Ethernet, Token Ring, FDDI, etc.
1 Physique
F IG . 1.1 – Pile protocolaire Internet.
Il est intéressant de noter que les protocoles TCP et IP ne correspondent pas strictement à
la classification du modèle OSI. En effet, de manière générale, TCP est classé comme étant un
protocole de la couche 4 et IP comme étant un protocole de la couche 3. Or, si l’on se réfère au
modèle OSI, c’est la couche 3, donc IP, qui devrait assurer le contrôle de congestion et non la
couche 4 à laquelle TCP est associé.
TP-OSI. Les protocoles de la couche transport du modèle OSI gèrent le contrôle de bout-
en-bout et les erreurs de transmission afin d’assurer le transfert de données. Ils effectuent le
multiplexage et la séparation des connexions au niveau transport, et apportent des fonctionna-
lités telles que le séquencement, le contrôle de flot, la détection et le recouvrement d’erreurs.
Dans la pile OSI, il existe cinq protocoles pour la couche transport, classés du protocole de
transport de classe 0 à celui de classe 4 [53] (TP 13 0, TP1, TP2, TP3 et TP4). Les protocoles
de classes 0 à 3 fonctionnent uniquement sur des réseaux orientés connexion, alors que TP4
fonctionne quel que soit le type de réseau.
Les protocoles TP4 et TCP sont tous deux conçus pour fournir un transport de bout en bout
fiable, orienté connexion au dessus d’un réseau non fiable. Ces deux protocoles sont capables
de gérer le ré-ordonnancement, la duplication et les pertes des paquets. Les différences les plus
marquantes entre ces deux protocoles sont :
– lors d’une ouverture de connexion simultanée entre deux machines, TP4 ouvrira deux
connexions bidirectionnelles alors que TCP n’en ouvrira qu’une ;
– les acquittements TCP peuvent contenir des données (piggy-back) alors que ceux de TP4
ne le peuvent pas ;
– la régulation du flot se fait avec une fenêtre glissante pour TCP, alors qu’elle se fait avec
un sytème de credit pour TP4.
Au début des recherches sur le contrôle de congestion (fin des années 80 début 90), les
études portaient autant sur TCP que sur TP-4 (avec par exemple le protocole DEC-bit). Puis, les
recherches se sont focalisées sur TCP, qui est aujourd’hui sans conteste le protocole de transport
sur lequel se basent la plupart des études.
Modèle DoD. La pile protocolaire OSI est fortement inspiré du modèle DoD 15 [20] qui n’uti-
lise que quatre couches (cf. figure 1.1). Les couches du modèle DoD sont les suivantes :
– Couche accès réseau (Ethernet , Token ring , FDDI 16 , etc.) : assure la définition de la
forme sous laquelle des paquets doivent être acheminés en fonction du type de réseau.
Cette couche regroupe les couches 1 et 2 du modèle OSI.
– Couche Internet (IP, ARP 17 , RARP 18 , ICMP 19 , etc.) : assure le découpage des données
en paquets, leur adressage ainsi que leur routage. Cette couche correspond à la couche 3
du modèle OSI.
– Couche hôte-à-hôte (TCP, UDP, etc.) : assure l’acheminement des données ainsi que le
contrôle de l’état dans lequel elles sont reçues. Cette couche correspond à la couche 4 du
modèle OSI.
– Couche application (Telnet, FTP 20 , navigateur web, NVT 21 , SMTP 22 , NFS 23 , etc.) : com-
prend tout ce qui concerne les applications réseau. Elle regroupe les couches 5, 6, 7 du
modèle OSI.
données sans garantir qu’elles arriveront à destination. Dans un tel réseau, ce sont les équipe-
ments à chaque extrémité de la connexion qui assurent l’intégrité de la communication.
1.1.4 Congestions
Une congestion se produit lorsqu’une machine du réseau à commutation de paquets reçoit
plus de paquets qu’elle ne peut temporairement en stocker, avant de les ré-émettre. En effet, Les
paquets sont d’abord stockés dans des buffers avant retransmission en sortie, lorsqu’ils arrivent
plus vite qu’ils ne sont retransmis, ils s’aglutinent dans les buffers provoquant une congestion
de ces buffers. Lorsqu’une congestion survient, les paquets en excès sont supprimés lors de leur
arrivée à la machine saturée. On peut alors distinguer deux cas :
– les applications fonctionnant en mode dégradé (e.g., sur UDP 29 qui n’implémente aucun
mécanisme fiabilisant les transmissions, cf. annexe A.2)
– les applications nécessitant la retransmission des paquets détruits (e.g., sur TCP qui as-
sure la fiabilité des transmissions). Dans ce cas, les applications devront supporter le
retard engendré par la retransmission des données perdues. De plus, les retransmissions
contribuent à la mauvaise utilisation des ressources du réseau (plusieurs émissions de la
même donnée), déjà fortement sollicitées puisque des congestions y sont apparues.
Les problèmes liés aux congestions concernent donc tous les acteurs d’Internet : les utilisa-
teurs (i.e., les applications) et les opérateurs (i.e., les équipements).
En 1988 [56], sous le poids du nombre croissant de connexions, et à cause de l’importance
du trafic à écouler, Internet connut une première série de graves congestions. Après ces pre-
miers signes d’écroulement d’Internet, les chercheurs ont commencé à travailler sur l’évitement
des congestions. Certaines améliorations furent apportées à TCP ; elles assurèrent la survie
et contribuèrent grandement au développement d’Internet. De nos jours, ce problème reste
de première importance : le trafic double dans Internet tous les 100 jours (selon le construc-
teur CISCO). Le sur-dimensionnement des équipements n’étant pas une solution en soi, il est
impératif d’optimiser l’utilisation des ressources d’Internet, ce qui se traduit par une meilleure
gestion du trafic et donc par une amélioration des mécanismes de contrôle de congestion.
– Amélioration de la gestion des acquittements. Une gestion plus fine des acquittements
[35] ainsi que des informations qu’ils transportent permet une meilleure estimation de
l’état de congestion du réseau. Cette estimation plus précise de l’état du réseau permet
d’éviter les réductions de débit inutile.
– Amélioration de la gestion de la fenêtre d’émission. Une adaptation plus précise de la
taille de la fenêtre d’émission [19, 42, 29] (i.e., du débit) en fonction de l’état du réseau
donne la possibilité de mieux exploiter les capacités du réseau.
– Utilisation d’informations provenant du réseau. Le mécanisme de contrôle de conges-
tion de TCP peut également utiliser des informations explicites provenant des routeurs.
L’utilisation de ces informations autorise une détection plus rapide et plus précise des
congestions [98, 97].
Notons également que de nombreuses études ont été menées sur le contrôle de congestion
dans les réseaux à commutation de cellules (ATM) [60, 51].
Avec la croissance des lignes à haut débit, les applications à flux de données temps réel telles
que les vidéos ou les flux audio, se sont rapidement répandues sur Internet. Ces applications
n’utilisent pas TCP car les fortes variations de débit et la fiabilité qu’il impose ne sont pas
compatibles avec les flots temps réel. C’est la raison pour laquelle elles utilisent UDP qui,
malheureusement, n’effectue aucun contrôle de congestion, et qui ne partage pas équitablement
la bande passante disponible avec les autres flots.
L’équité entre flots est devenue un paramètre crucial, qui assure que tous les flots de données
peuvent utiliser un même réseau sans subir de discrimination. Afin de respecter les critères
d’équité et de transporter des flux multimédia, de nouveaux protocoles ont vu le jour (TFRC
18 CHAPITRE 1. INTRODUCTION
[44], RAP [101], PASTRA [107], etc.). Ils proposent de cohabiter équitablement avec TCP tout
en apportant un mode de transport adapté aux flux temps réel. Ces protocoles sont dits TCP
Friendly car ils partagent équitablement la bande passante avec les flots TCP. Notons que la
plupart d’entre eux n’utilisent pas une fenêtre pour réguler leur débit d’émission.
Le contrôle de congestion peut être fait de manière corrective ou préventive. Dans le cas
d’un contrôle correctif, comme celui de TCP Reno, le protocole fait croı̂tre le débit d’émission
de la source jusqu’à ce qu’il observe une ou plusieurs pertes (i.e., jusqu’à saturer les files des
routeurs). Dès que cela se produit, le débit est réduit. À l’inverse, le contrôle préventif, comme
celui de TCP Vegas, a pour but de ne jamais saturer les files d’attente. Pour cela, lorsqu’une si-
tuation pouvant conduire à une congestion est détectée, le débit de la source est immédiatement
(sans attendre de perdre des paquets) réduit. Il a été montré dans [2, 75] qu’en termes d’équité,
de taux de bonnes transmissions, etc., les protocoles préventifs ont de bien meilleurs résultats
que les protocoles correctifs. Malheureusement, la quasi totalité du trafic Internet est gérée par
diverses versions correctives de TCP (Tahoe, Reno, New Reno, Sack). Ces versions de TCP im-
posent aux nouveaux protocoles d’avoir un comportement correctif, sous peine de s’approprier
toute la bande passante. Suite à l’étude bibliographique présentée au chapitre 2, et malgré les
problèmes de déploiement que cela pose, nous avons décidé de nous intéresser aux protocoles
préventifs.
Sous certaines conditions (que nous étudions au chapitre 3), les études menées avec des
modélisations continues du réseau peuvent s’appliquer à des réseaux à commutation de paquets
(intrinsèquement discrets) et conduisent alors au développement de nouveaux protocoles. C’est
dans cette problématique que s’inscrivent nos travaux.
1.3. CONTRIBUTIONS 19
1.3 Contributions
L’objectif principal de nos travaux est le développement d’un mécanisme de contrôle de
congestion améliorant la qualité des transmissions multimédia. Nous avons également souhaité
montrer la possibilité d’utiliser certains principes d’automatique pour y parvenir.
1.3.2 Résultats
L’étude bibliographique que nous avons réalisée nous a permis de rédiger un état de l’art
(cf. chapitre 2) dégageant les principales pistes de la recherche en contrôle de congestion.
Les travaux menés sur la validité de l’approximation continue (cf. chapitre 3) ont permis
d’en montrer les limites. En effet, les résultats obtenus en continu et en discret sont cohérents
dans un grand nombre de situations. Cependant, nous avons mis en évidence certains contextes
d’exécution dans lesquels les comportements observés en continu et en discret divergent.
La méthode d’évaluation que nous avons développée (cf. chapitre 5) autorise une compa-
raison objective des performances dans des environnements variés. Cette méthode est basée sur
des simulations. L’influence des différents paramètres du réseau y est évaluée selon 7 critères de
performance du contrôle de congestion. La diversité des critères d’évaluation et des situations
testées permet de ne pas favoriser un type de comportement et ainsi de juger les performances
du contrôle de congestion de manière globale.
Le protocole de transport que nous avons développé implémente un mécanisme de contrôle
de congestion basé sur un contrôleur de type Proportionnel Intégral modifié (cf. chapitre 4).
La simplicité et l’efficacité de ce mécanisme rendent ce protocole de transport préventif très
performant en terme de contrôle de congestion (cf. chapitre 6).
1.3.3 Publications
Les travaux présentés dans ce manuscrit de thèse ont donné lieu à des publications.
Chapitre de livre
Advances in communication control networks
chapitre : Delay effects on the asymptotic stability of various fluid models in high perfor-
mances networks
S.-I. Niculecu, W. Michiels, D. Melchor-Aguillar, T. Luzyanina, F. Mazenc, K. Gu, etF.
1.3. CONTRIBUTIONS 21
Chatté
Springer-Verlag : Heidelberg collection : LNCIS 2004
À paraı̂tre ; accepté en novembre 2003.
Conférences internationales
Stability analysis in High-performances networks: a time-domain approach
S.-I. Niculecu, W. Michiels, D. Melchor-Aguillar, F. Mazenc et F. Chatté
À paraı̂tre dans IASTED APPLIED SIMULATION AND MODELLING
Grèce, Juin 2004
Robustness issues of fluid approximation for congestion detection in best effort networks.
F. Chatté, B. Ducourthial, et S.-I. Niculescu
Proceedings of 7th IEEE Symposium on Computers and Communication (ISCC 2002),
Italie, Juillet 2002.
Results on fluid modeling of packet switched networks.
F. Chatté, B. Ducourthial, D. Nace et S.-I. Niculescu.
Proceedings of 3rd IFAC Workshop on Time Delay Systems (IFAC TDS 2001),
USA, Décembre 2001.
Conférence nationale
Modélisation en continu des réseaux à commutation de paquets : perspectives pour la
qualité de service.
F. Chatté et B. Ducourthial.
Actes d’AlgoTel 2002,
Mèze, France, Mai 2002 (INRIA).
Rapports internes
État de l’art des protocoles de transport (version longue actualisée).
F. Chatté et B. Ducourthial.
Avril 2004.
Construction d’un correcteur PI pour le contrôle de congestion. F. Chatté, B. Ducourthial
et S.-I. Niculescu.
Février 2004.
22 CHAPITRE 1. INTRODUCTION
Fluid modelling of packets switched networks: perspectives for congestion control (ex-
tended version)
F. Chatté, B. Ducourthial, D. Nace et S.-I. Niculescu.
Décembre 2002.
Robustness issues of fluid approximation for congestion detection in best effort networks
(extended version)
F. Chatté, B. Ducourthial et S.-I. Niculescu.
Juillet 2002.
Chapitre 2
Dans ce chapitre, nous présentons un état de l’art des différentes techniques de contrôle
de congestion développées dans les protocoles de transport unicast. Le contrôle de congestion
est apparu dans TCP Tahoe. Puis rapidement des améliorations lui ont été apportées dans TCP
Reno ; cette version de TCP est présentée dans la section 2.1.
Le protocole TCP assure un transport fiable d’un flot de données grâce aux acquittements.
L’idée de base est d’émettre un nouveau segment lorsque le précédent a été reçu. En réalité,
pour améliorer le débit d’émission, TCP autorise l’émission de plusieurs segments sans avoir
à attendre leur acquittement. La quantité de données envoyées mais non encore acquittées est
gérée par une fenêtre d’émission. Plus cette fenêtre est grande, plus le débit d’émission sera im-
portant ; la gestion de sa taille est donc primordiale. Ces caractéristiques laissent apparaı̂tre les
types d’améliorations susceptibles d’être apportées au contrôle de congestion : amélioration de
la gestion des acquittements ou de celle de la taille de la fenêtre de congestion. Les protocoles
TCP Sack, TCP New Reno, et TCP Fack proposent d’améliorer la gestion des acquittements.
Leur fonctionnement est présenté dans la section 2.2. Les protocoles TCP Vegas, TCP West-
wood et TCP-L proposent d’améliorer la gestion de la fenêtre de congestion. Leur fonctionne-
ment est décrit dans la section 2.3.
Les techniques de prévention des congestions basées sur un retour d’information de la part
des routeurs (ECN 1 , ICMP) sont présentées dans la section 2.5.
téléphonique. Afin de simplifier les explications nous distinguerons cependant les deux cotés de
la connexion, l’un s’appellera émetteur et l’autre récepteur .
Avec TCP, les données sont transmises sous forme de flux d’octets, ce qui signifie que
les données fournies par l’application ne sont pas segmentées. Les données à transmettre sont
coupées à des endroits quelconques par TCP pour être envoyées sur le réseau sous la forme
de segments. Les segments seront ensuite ré-assemblés par le récepteur afin de reformer un
flux d’octets qu’il fournira à l’application destinataire. Notons que la taille des segments peut
varier mais elle reste toujours inférieure à MSS 2 octets. Cette constante est fréquemment ini-
tialisée à la plus grande taille admise par les paquets IP avant fragmentation. Si les données
fournies par l’application sont jugées trop petites pour être émises directement, l’émetteur
peut choisir d’attendre pour regrouper des données avant de les émettre dans un même segment
[79]. Certaines applications n’acceptent pas que TCP retarde l’émission des données afin de
les regrouper. Dans ce cas, elles utilisent la directive push pour forcer l’émetteur à envoyer
immédiatement les données.
La fiabilité fournie par TCP consiste à s’assurer que chaque octet émis par l’émetteur
sera bien transmis à l’application destinataire grâce à un système d’acquittements. De plus,
le récepteur vérifie l’intégrité de chaque segment reçu grâce à une somme de contrôle (check-
sum). Si la somme de contrôle est correcte, le récepteur enverra un acquittement à l’émetteur
2. Maximum Segment Size.
2.1. TCP 27
pour lui spécifier que les données seront transmises à l’application destinataire. En revanche,
si la somme de contrôle est fausse, le segment reçu sera ignoré et donc non acquitté. Lorsque
l’émetteur s’apercevra que le segment émis n’a pas été acquitté il le ré-émettera dès que possible
(cf. paragraphe 2.1.4).
Afin de ne pas engorger le destinataire, l’émetteur gère son débit d’émission grâce à un
mécanisme de fenêtre de réception. Dans les acquittements, un champ Win indique à l’émet-
teur l’espace dont dispose le récepteur pour stocker temporairement les données avant de les
transmettre à l’application destinataire. De même, pour ne pas saturer le réseau, l’émetteur
utilise une fenêtre de congestion (cf. paragraphe 2.1.5) servant à limiter son débit d’émission.
La taille de cette fenêtre détermine la quantité de données que l’émetteur peut émettre sans
recevoir d’acquittements.
SYN
RST
FIN
longueur
réservé taille fenêtre (win)
d’en-tête
somme de contrôle pointeur d’urgence
bits de
options (s’il y en a) bourrage
données
- Les champs port source et port destination identifient les applications émettrice et récep-
trice.
- Le champs numéro de séquence 3 donne la position du premier octet du segment dans le
flux de données envoyé par l’émetteur. Ce numéro permet au récepteur de ré-ordonner les
données avant de les transmettre à l’application destinataire.
- Le champ numéro d’acquittement donne le prochain numéro de séquence attendu par le
récepteur (i.e., numéro du dernier octet correctement reçu + 1).
- Le champ longueur d’en-tête contient la taille de l’en-tête, qui peut varier de 20 à 60
octets suivant les options utilisées.
- Le champs réservé comporte six bits réservés à un usage ultérieur.
- les six drapeaux qui suivent permettent de spécifier le rôle et le contenu du segment. Il
permettent ainsi d’interpréter correctement certains champs de l’en-tête. La signification
de ces drapeaux, lorsqu’ils sont positionnés à vrai , est la suivante :
3. Il s’agit d’un entier non signé codé sur 32 bits qui retourne à 0 après avoir atteint sa valeur maximale.
28 CHAPITRE 2. ÉTAT DE L’ART
Taille des segments. La taille des segments TCP peut varier durant une connexion, sans ja-
mais dépasser une taille maximale (MSS). Il est généralement intéressant que la taille maximale
des segments corresponde à la taille maximale des datagrammes IP avant qu’ils ne soient frag-
mentés. C’est pourquoi, en général, la taille maximale d’un segment TCP est égale au minimum
entre la taille du tampon d’émission, du tampon de réception, des MTU 5 et des MRU 6 du che-
min emprunté.
Les tampons d’émission et de réception ont une taille de l’ordre de 8 à 16 ko. L’émetteur
connaı̂t la taille du tampon du récepteur grâce au champ taille fenêtre des en-têtes TCP. Pour
découvrir le plus petit MTU des réseaux empruntés entre émetteur et récepteur, on peut utiliser
la technique Path MTU Discovering, qui consiste à envoyer un datagramme IP le plus grand
possible avec le drapeau Don’t Fragment à vrai . Si le paquet est trop gros pour l’une des
machines traversées, le protocole ICMP retournera une erreur et l’émetteur pourra effectuer une
nouvelle tentative avec un datagramme plus petit 7.
2.1.3 La connexion
Comme nous venons de le voir, une connexion est identifiée par une paire de sockets (asso-
ciation des numéros de port aux adresses IP [110]). Notons que plusieurs connexions peuvent
4. Il existe des différences notables sur la gestion de ce pointeur dans les diverses implémentations de TCP, ce
qui nuit à la portabilité des applications l’utilisant.
5. Maximum Transmission Unit.
6. Maximum Receive Unit.
7. Cependant, certains routeurs ignorent ces messages d’erreur pour des raisons de sécurité.
2.1. TCP 29
Client Serveur
Ouverture SYN,
active séq =
ISN
client
Ouverture
+1
Nclient passive
, a c k = IS v e u r
ACK éq = ISNse
Y N , s
S
ACK
, ack
= ISN
serve
ur + 1
Connexion
établie
- Une application, généralement appelée client , effectue une ouverture active en deman-
dant à son TCP d’établir une connexion avec la socket distante. Le client fournit donc à
son TCP le numéro de port de l’application 8 qu’il cherche à joindre ainsi que l’adresse
IP de la machine où se trouve cette application.
La demande du client est ensuite envoyée à la machine où se trouve l’application
serveur . Pour cela, la machine du client envoie un segment TCP ne contenant aucune
donnée, et ayant son drapeau SYN à vrai pour indiquer qu’il faut synchroniser les
numéros de séquence. Le numéro de séquence ISN client 9 contenu dans ce segment est tiré
au sort. Le drapeau ACK du premier segment est positionné à faux afin d’indiquer que
la valeur contenue dans le champs numéro d’acquittement n’est pas à prendre en compte.
- Le serveur , de son coté, a effectué une ouverture passive en créant une socket locale
et en acceptant les connexions sur ce point d’entrée. À la réception du premier segment,
le serveur reconnaı̂t par le drapeau SYN qu’il s’agit de l’établissement d’une nou-
velle connexion. Si cette connexion est réalisable, le serveur envoie un acquittement
au client. Le segment émis ne contient aucune donnée, ses drapeaux SYN et ACK sont
positionnés à vrai , pour indiquer qu’il effectue la synchronisation des numéros de
séquence et que le champ numéro d’acquittement est à prendre en compte. Le champ
numéro de séquence de cet acquittement contient la valeur ISNserveur (tirée au sort) et le
champ numéro d’acquittement contient la valeur ISNclient + 1 (ce numéro correspond au
premier octet de données qui sera transmis par le client [11, 16]).
Dans le cas où la connexion n’est pas réalisable (e.g., mauvais numéro de port), le ser-
veur avertit le client de l’impossibilité d’établir la connexion.
8. Un certain nombre de numéros de ports a été prédéfini pour les applications courantes par l’IANA (Internet
Assigned Number Authority) : port 80 pour HTTP, 20 pour FTP, 23 pour TELNET, etc.
9. Initial Sequence Number.
30 CHAPITRE 2. ÉTAT DE L’ART
- À la réception du premier segment émis par le serveur , la machine cliente accuse
réception de ce segment en envoyant un segment, ayant drapeau SYN positionné à faux ,
et dont le champ numéro d’acquittement contient le numéro de séquence ISNserveur +1
(numéro de séquence du prochain segment qu’émettera le serveur ).
Notons qu’il est possible que les deux extrémités de la connexion effectuent une ouverture
active simultanée.
Client Serveur
Demande de fin
FIN,
de demi-connexion séq =
N
Avertissement à
l’application de la
1
=N+ demi-fermeture
, ack
ACK
Demande de fin de
demi-connexion
séq = M
FIN,
ACK
, ack
=M+
1
Fermeture de
la connexion
- En envoyant un segment vide ayant le drapeau FIN positionné à vrai , avec le champ
numéro de séquence incrémenté, le client informe le serveur qu’il souhaite mettre fin à la
connexion.
- À la réception de ce segment, le serveur l’acquitte et informe l’application de la demi-
fermeture de la connexion. À partir de là, les données ne peuvent plus transiter que dans
un sens (du serveur vers le client ). Lorsque le serveur a terminé d’envoyer des
données, il peut à son tour fermer sa demi-connexion en envoyant un segment ayant le
drapeau FIN positionné à vrai .
- À la réception de ce segment, le client envoie un acquittement qui sera le dernier seg-
ment émis sur cette connexion. Le champ numéro d’acquittement de ce segment contient
encore le prochain numéro de séquence attendu, mais le drapeau FIN est positionné à
faux . Suite à l’émission de ce dernier segment, la partie client de la connexion
sera fermée après une attente d’une durée de deux MSL 10 . Cette attente permet de s’assu-
rer que l’autre extrémité a bien reçu l’acquittement final (i.e., on attend de voir si l’autre
extrémité ne renvoie pas son segment FIN après l’expiration de son délai d’attente).
10. Maximum Segment Lifetime.
2.1. TCP 31
- La réception de ce dernier segment par le serveur entraı̂ne la fermeture de la deuxième
moitié de la connexion, qui disparaı̂t alors totalement.
Notons qu’une connexion peut aussi être fermée de manière inopinée à cause d’un problème
quelconque. Dans ce cas, l’extrémité souhaitant mettre fin immédiatement à la communication
envoie un segment ayant le drapeau RST positionné à vrai . Ce type de fermeture ne per-
met pas de garantir que les segments en transit auront tous été reçus avant la fermeture de la
connexion.
Lorsque l’une des extrémités de la connexion n’effectue pas d’émission régulière, et que
l’autre extrémité soupçonne une rupture de la connexion, cette dernière peut émettre un seg-
ment keep alive. La RFC 1122 indique que ce mécanisme reste optionnel et doit être utilisé
uniquement s’il est indispensable au fonctionnement de l’application.
Mise en œuvre. Comme nous l’avons vu précédemment, chaque octet du flot transmis est
numéroté avec un numéro de séquence, à partir du premier octet transmis, qui porte le numéro
ISN+1 [11, 16]. L’en-tête d’un segment envoyé contient le numéro de séquence du premier
octet de données ainsi que la quantité de données qu’il transporte. À la réception d’un seg-
ment, le récepteur enverra un acquittement (cf. figure 2.4) dont le champ numéro d’acquitte-
ment contiendra le dernier numéro d’octet reçu + 1 (i.e., numéro de séquence du segment reçu
+ quantité de données contenue dans le segment). L’acquittement envoyé indiquera à la source
que le récepteur est prêt à recevoir les données à partir de l’octet numéro d’acquittement (cf.
en-tête des segments).
Pour éviter de charger inutilement le réseau, les acquittements ne sont pas forcément émis
dès la réception d’un segment. En effet, au lieu d’envoyer un acquittement à chaque réception,
le récepteur retarde l’émission des acquittements (delayed acknowledgment) en espérant avoir
des données à transmettre vers l’émetteur (ou tout simplement recevoir d’autres segments afin
de tous les acquitter en même temps). Si le récepteur a des données à transmettre en direction
de l’émetteur, l’acquittement qu’il enverra contiendra également des données. On parle dans
ce cas d’acquittement superposé (piggyback). Notons que l’émission d’un acquittement ne peut
pas être retardée de plus de 500 ms . Notons également que si deux segments de taille maximale
(MSS) sont reçus, leur acquittement ne pourra pas être retardé.
11. Retransmit Time Out.
12. Round Trip Time.
32 CHAPITRE 2. ÉTAT DE L’ART
Émetteur Récepteur
Envoi du segment séq = 12,
N° 12 1024 octe
ts Acquittement des
données envoyées
= 1036
ACK, ack dans le segment N°12
En général, un émetteur TCP n’attend pas qu’un segment émis soit acquitté pour émettre
le suivant. De ce fait, le récepteur peut recevoir plusieurs segments de suite et n’envoyer qu’un
seul acquittement pour toutes les données reçues. On parle dans ce cas d’acquittements cumulés
(cf. second acquittement dans la figure 2.4). Néanmoins, si plusieurs segments sont envoyés à
la suite et que le premier est perdu, le récepteur ne pourra acquitter aucune des données reçues.
Dans ce cas, le récepteur indiquera à l’émetteur qu’il a reçu des données (sans pour autant
les acquitter) en envoyant des acquittements indentiques au dernier émis (on parle d’acquitte-
ments dupliqués). L’émission d’acquittements dupliqués prend fin à la réception du segment
manquant.
– Expiration du chien de garde de retransmission : si aucun segment n’a été acquitté depuis
un certain temps (RTO ms), le chien de garde de retransmission vient à expirer. Dans ce
cas, tous les segments émis depuis le premier segment non acquitté sont retransmis et le
chien de garde est ré-armé avec un délai d’attente doublé [91]. Afin d’éviter que le chien
de garde n’expire prématurément, il est ré-armé à chaque réception d’un nouvel acquitte-
ment. Si tous les segments émis ont été acquittés, le chien de garde de retransmission est
désactivé.
– réception de trois acquittements dupliqués : comme nous venons de le voir, lorsqu’un seg-
ment est perdu, la réception des segments le suivant entraı̂ne l’émission d’acquittements
dupliqués. Lorsque l’émetteur reçoit trois acquittements dupliqués (i.e., quatre acquitte-
ments pour le même segment), le segment suivant celui qui a été acquitté quatre fois sera
considéré comme perdu [16]. En effet, il est exceptionnel que le désordre dans l’ordre
d’arrivée soit supérieur à deux segments. Une détection de perte de segment par trois
acquittements dupliqués entraı̂ne simplement la ré-émission du segment perdu (i.e., les
segments suivants sont supposés reçus [6]). Notons que cette méthode de détection de
pertes est généralement plus rapide que celle utilisant l’expiration du chien de garde.
Pour que cette méthode de retransmission soit efficace, il faut que le récepteur conserve
les segments reçus après celui perdu, de sorte qu’à la réception du segment perdu, tous
2.1. TCP 33
Dans ces équations, et sont des coefficients de lissage dont la valeur est comprise entre
0 et 1. Plus la valeur de ces coefficients est faible, plus la dernière mesure du RTTinst aura de
l’influence sur le calcul du RTT lissé et de sa variation RTTVAR. Il est recommandé dans [59]
de prendre et .
L’utilisation d’acquittements cumulés (rendant imprécise les dates utilisées pour mesurer
les RTTs instantanés) nuit à la précision de cet algorithme. Pour y remédier, l’option timestamp
[58] (remplaçant les options echo et echo reply [57]) a été introduite. Cette option permet de
placer dans l’en-tête des segments une estampille indiquant leur heure d’émission. À l’arrivée
de ces segments au récepteur, l’estampille est recopiée dans l’en-tête des acquittements. À la
réception des acquittements, l’emetteur pourra mesurer le délai d’aller-retour de manière exacte
en soustrayant la valeur contenue dans l’estampille à l’heure d’arrivée de l’acquittement.
À l’établissement de la connexion, ne connaissant pas le délai d’aller-retour, le chien de
garde de retransmission est arbitrairement armé à 3 s [16, 91]. Puis, sa valeur est affinée en
fonction du RTT lissé et de sa variation (RTTVAR).
Chaque évaluation du RTT et de sa variation donne lieu à la mise à jour du RTO [91] avec
l’équation suivante :
RTO RTT max P, K RTTVAR (2.2)
! " #
#
Dans cette équation, représente une constante fixée à , et la granularité des mesures
du RTT ( = 500 ms dans le système BSD).
Lorsque des segments sont perdus et que l’option timestamp n’est pas utilisée, l’estimation
du RTT (et donc du RTO) pose problème. En effet, lorsqu’un segment est considéré comme
perdu, il est ré-émis, mais à la réception de son acquittement l’émetteur ne sait pas quelle date
d’émission utiliser (celle du premier segment émis ou celle de la ré-émission) pour calculer le
RTT. Pour résoudre ce dilemme, l’algorithme de Karn [61] propose d’ignorer les RTTinst des
segments retransmis dans le calcul du RTT lissé, ce qui évite d’influencer le RTO.
La RFC 1122 [16] indique que l’emploi des algorithmes de Van Jacobson et de Karn dans
les implémentations de TCP améliore les performances.
de la source le sera. L’utilisation d’une fenêtre glissante consiste à déterminer quels sont les oc-
tets du flux de données que la source peut émettre (cf. figure 2.5). La fenêtre d’émission contient
les octets à émettre (octets 8 et 9 dans l’exemple) ainsi que les octets émis mais non acquittés
(octets 4 à 7). Lorsque l’octet le plus à gauche dans la fenêtre (octet 4) aura été acquitté, la
fenêtre se déplacera d’un cran vers la droite (elle couvrira alors les octets 5 à 10).
Fenêtre courante
Fenêtre
utilisable
..... 2 3 4 5 6 7 8 9 10 11 12 .....
Octets émis Octets
et acquittés Octets émis prêts
Octets en attentes
et non acquittés
Principe de la fenêtre de congestion dans TCP Reno. Pour faire face au problème d’engor-
gement des réseaux, des mécanismes de contrôle de congestion ont été ajoutés aux spécifications
de TCP dans la RFC 1122 [16]. Ces mécanismes permettent à TCP d’adapter son débit d’émis-
sion aux capacités du réseau. Ils sont décrits dans [56] et dans la RFC 2001 [109], qui a été mise
à jour dans la RFC 2581 [6].
Comme nous l’avons vu précédemment, TCP peut envoyer plusieurs segments sans avoir
reçu les acquittements correspondants. Cela peut s’apparenter à un effet pipeline dans la
connexion émetteur-récepteur. Mais la quantité de données présente dans le pipeline ne
doit pas dépasser les capacités du réseau sous peine de créer des congestions. Cette quantité de
données en transit est régulée grâce à la taille de la fenêtre de congestion (cwnd 13 ). Les ajuste-
ments successifs de la taille de la fenêtre de congestion en fonction des congestions détectées,
ou, au contraire, des bonnes conditions de trafic rencontrées, doivent permettre à l’émetteur de
déterminer le débit d’émission optimal. Les ajustements de la taille de la fenêtre de conges-
tion sont gérés par quatre algorithmes : démarrage lent (slow start), évitement de congestion
(congestion avoidance), retransmission rapide (fast retransmit), et reprise rapide (fast reco-
very). La taille de la taille de la fenêtre de congestion évolue ainsi (figure 2.6) :
13. congestion window.
2.1. TCP 35
TCP Reno
20
Taille de la fenêtre de congestion en paquets
18
16
Légende :
14 To : Détection d’une perte par expiration
du délai d’attente de retransmission.
12
Ta : Détection d’une perte par trois
10 acquittements dupliqués.
2
Ta+CA
0 1 2 4
Ta+CA
3
To+SS
Temps en secondes
CA
SS
Ta+CA CA
%$
– À l’initialisation de la connexion, la taille de la fenêtre de congestion (cwnd) a pour valeur
IW 14 MSS octets. Au début de la communication, cette taille croı̂t exponentiellement
grâce à l’algorithme de démarrage lent, jusqu’à ce qu’elle atteigne le seuil sstrhesh 15. En
phase de démarrage lent, la taille de la fenêtre de congestion augmente de MSS octets
pour chaque réception d’un acquittement.
– Lorsque la taille de la fenêtre de congestion dépasse le seuil de démarrage lent (cwnd &
ssthresh), la fenêtre s’arrête de croı̂tre exponentiellement. Le débit optimal étant proche,
la taille de la fenêtre de congestion continue à croı̂tre mais de manière quasi-linéaire grâce
à l’algorithme d’évitement de congestion. En phase d’évitement de congestion, la fenêtre
augmente de MSS octets à chaque fois que la totalité de la fenêtre de congestion a été
émise et acquittée.
– Lorsqu’une perte de segment est détectée (i.e., une congestion s’est formée sur le réseau)
grâce à l’expiration du chien de garde, ou via un message ICMP (cf. paragraphe 2.5.1),
la fenêtre de congestion est réduite à sa taille initiale IW et l’algorithme de démarrage
lent est relancé. Notons qu’avant d’entrer en phase de démarrage lent, le seuil ssthresh
est recalculé :
,
ssthresh ')(+* taille de la fenêtre de congestion avant réduction
$ - IW. (2.3)
– Si la perte d’un segment est détectée grâce à trois acquittements dupliqués, le segment
fautif est imméditement ré-émis grâce à l’algorithme de retransmission rapide. Après la
14. Initial Window.
15. slow start threshold.
36 CHAPITRE 2. ÉTAT DE L’ART
ré-émission du segment perdu, l’algorithme de reprise rapide est lancé et le seuil ssthresh
est réduit (cf. équation 2.3). L’algorithme de reprise rapide réduit de moité la taille de la
fenêtre de congestion (sans qu’elle devienne inférieure à IW). Puis elle est artificiellement
augmentée de trois MSS, car les trois acquittements dupliqués reçus signifient que trois
segments ont quitté le réseau. À chaque arrivée d’un acquittement dupliqué, la fenêtre est
augmentée d’un segment. Lorsqu’un acquittement non dupliqué est reçu, l’algorithme de
reprise rapide prend fin. La fenêtre est alors réduite d’autant qu’elle a été artificiellement
augmentée pour la réception d’acquittements dupliqués et l’algorithme d’ évitement de
congestion est lancé.
Mise en œuvre. L’option Sack est négociée entre les deux machines à l’initialisation de la
connexion. Si l’une des deux extrémités de la connexion ne supporte pas l’option Sack, cette
dernière ne pourra pas être utilisée.
Les acquittements Sack permettent de spécifier les segments correctement reçus : les blocs
/ 0
de données contiguës (reçus) sont indiqués via leur numéro de séquence de début et de fin plus
un. Selon l’espace disponible dans le champ options des en-têtes des segments TCP, un ac-
quittement Sack peut spécifier trois à quatre blocs par acquittement. Notons que la signification
du champ ack situé dans l’en-tête des segments ne change pas.
L’option Sack impose au récepteur les règles suivantes [39] :
- Le premier bloc d’un acquittement Sack doit inclure le numéro de séquence du segment
ayant déclenché l’émission de cet acquittement. Cette règle assure que les acquittements
reflètent les informations les plus récentes sur l’état de la file du récepteur.
- Le récepteur doit inclure le plus possible de blocs distincts dans les acquittements Sack
(un bloc ne peut pas être un sous-ensemble d’un autre bloc).
2.2. GESTION DES ACQUITTEMENTS 37
18
18
16
16
14
14
12
12
10
10
8 8
6 6
4 4
2. 2
0 2 4 6 8 0 2 4 6 8
Temps en secondes Temps en secondes
F IG . 2.7 – Évolution de la taille de la fenêtre de congestion dans TCP Reno sans utiliser l’option
Sack à gauche et en l’utilisant à droite.
- Les blocs de données reçus seront spécifiés dans plusieurs acquittements Sack successifs.
Cette redondance d’informations permet de pallier les pertes d’acquittements, et ainsi
d’éviter au maximum les expirations inutiles du chien de garde de retransmission.
L’utilisation de l’option Sack ne modifie pas le contrôle de congestion (d émarrage lent,
évitement de congestion, reprise rapide). En revanche, à la détection d’une perte par trois ac-
quittements dupliqués, l’émetteur sera capable de retransmettre tous les segments manquants (et
pas seulement le premier). Une fois que tous les segments manquants sont reçus, le récepteur
les acquittera sans utiliser l’option Sack. En effet, lorsqu’il n’y a aucun trou dans la séquence
de réception, les acquittements émis n’utilisent pas cette option.
Dans la définition de l’option Sack, il est indiqué que l’émetteur possède une file de retrans-
mission qui contient les segments émis mais non acquittés. La RFC 2018 propose d’ajouter
un drapeau Sacked aux segments qui sont dans la file de retransmission. À la réception d’ac-
quittements comportant des blocs Sack, l’émetteur compare les segments présents dans la file
/ 0
de retransmission à ceux acquittés. Lorsqu’un segment présent dans la file de retransmission
/ 0
est contenu dans l’un des blocs de l’acquittement, son drapeau Sacked et mis à vrai . À
l’émission suivante, les segments ayant leur drapeau Sacked à vrai seront extraits de la file
de retransmission. À la réception de trois acquittements dupliqués, les segments présents dans
la file de retransmission seront immédiatement retransmis si :
– ils ont leur drapeau Sacked à faux ; / 0
– et que leur numéro de séquence est inférieur à celui du plus haut segment acquitté dans
un bloc Sack.
Notons que l’option Sack ne modifie pas le comportement de TCP lors d’une expiration
38 CHAPITRE 2. ÉTAT DE L’ART
du chien de garde de retransmission : tous les segments émis depuis le premier segment non
acquitté sont ré-émis.
Mise en œuvre. Les modifications apportées à l’algorithme de reprise rapide résident princi-
palement dans l’ajout de la variable recover et dans la prise en compte d’acquittements partiels.
Un acquittement partiel acquitte le segment retransmis sans acquitter tous les segments émis
avant la détection de la perte.
Comme dans TCP Reno, à la réception du troisième acquittement dupliqué, l’émetteur
détecte la perte d’un segment et entre en phase de retransmission rapide. En entrant dans cette
phase, l’émetteur recopie le plus grand numéro de séquence émis dans la variable recover et re-
tramsmet le segment perdu. Ensuite, comme dans l’algorithme de reprise rapide de TCP Reno,
le seuil ssthresh est actualisé, la fenêtre de congestion prend la valeur de ssthresh augmentée de
trois MSS.
À la réception d’un acquittement partiel (i.e., n’acquittant pas le numéro de séquence reco-
ver), le premier segment non acquitté est ré-émis. Puis, la fenêtre de congestion est diminuée
du nombre de nouveaux segments acquittés moins un et l’émetteur reste en phase de reprise
rapide. S’il s’agit du premier acquittement partiel, le chien de garde de retransmission est ré-
armé. Si l’acquittement reçu est total (i.e., il acquitte un numéro de séquence supérieur ou égal
à recover), comme dans TCP Reno, la fenêtre de congestion est réduite à ssthresh et l’émetteur
passe en phase d’évitement de congestion. L’évolution de la fenêtre de congestion (cwnd) de
TCP New Reno est illustrée dans la figure 2.7.
La seconde modification apportée par TCP New Reno se situe au niveau de l’algorithme de
démarrage lent, dans lequel est introduit la variable send hight. Lorsque le chien de garde de
retransmission expire, l’émetteur TCP New Reno passe en démarrage lent (comme pour TCP
Reno). Dans cette phase, l’émetteur ré-émet tous les segments émis depuis celui perdu. Or, s’il
retransmet des segments qui ont été correctement reçus, le récepteur enverra des acquittements
dupliqués, qui risquent de déclencher une phase de retransmission rapide inutile.
Pour éviter de déclencher inutilement cette phase, à l’expiration du chien de garde, le plus
haut numéro de séquence émis est mémorisé dans la variable send hight. À la réception d’un
acquittement dupliqué, le numéro d’acquittement qu’il contient est comparé à cette variable,
cela permet de déterminer s’il doit être ignoré ou pris en compte.
2.2. GESTION DES ACQUITTEMENTS 39
G)HJI6KMLON PQLSRUT
20
16
14
12
10
0 2 4 6 8
Temps en secondes
Mise en œuvre. Cinq nouvelles variables sont introduites par TCP Fack. Lorsque l’émetteur
ne se trouve pas en phase de reprise rapide, les variables snd una et snd fack sont mises à jour
avec le numéro de séquence contenu dans le dernier acquittement reçu. En revanche, durant
les phases de reprise rapide, la variable snd una est toujours mise à jour grâce au numéro de
séquence contenu dans les acquittements, mais la variable snd fack est mise à jour avec le plus
grand numéro de séquence acquitté dans les blocs Sack. Quelle que soit la phase dans laquelle
se trouve l’émetteur, la variable snd nxt représente toujours le numéro de séquence du prochain
nouveau segment (i.e., qui n’a pas déjà été émis) à émettre. Ces trois variables permettent de
spécifier que :
– tous les octets de numéro de séquence inférieur à snd una ont été correctement reçus ;
– certains octets de numéro de séquence compris entre snd una et snd fack ont été perdus
et doivent être ré-émis (ces octets sont connus grâce aux acquittements Sack) ;
40 CHAPITRE 2. ÉTAT DE L’ART
– les octets de numéro de séquence compris entre snd fack et snd nxt ont été émis mais ne
sont pas encore acquittés.
La variable retran data, qui représente la quantité de données en cours de retransmission,
est également maintenue à jour par TCP Fack. Grâce à ces quatre variables, TCP Fack estime
la quantité de données en transit et stocke cette valeur dans la variable awnd. Cette variable
représente la quantité de données envoyées mais non encore acquittées :
Si le récepteur indique que sa file de réception (dans laquelle sont stockés les segments
arrivés avant les autres) contient plus de trois MSS octets, alors l’émetteur entre en phase de
reprise rapide. Cette méthode permet de détecter plus rapidement les pertes lorsque la tech-
nique des acquittements retardés est utilisée (avec les acquittement retardés, trois acquittements
W
peuvent représenter la réception de 6 segments, cf. section 2.1). L’émetteur entre également en
phase de reprise rapide si snd fack snd una est supérieur à trois MSS. Cette méthode permet
d’améliorer la détection de pertes multiples et consécutives. En effet, si quatre segments sont
envoyés et que les trois premiers sont perdus, la perte ne pourra pas être détectée par la réception
de trois acquittements dupliqués. En revanche, grâce à l’information (plus haut numéro de
séquence reçu) contenue dans le seul acquittement envoyé, la perte sera immédiatement détectée.
À l’entrée en phase de reprise rapide, la valeur de la variable snd next est récupérée. Lorsque la
variable snd una aura rattrapé cette valeur (comme avec la variable recover de TCP New Reno),
TCP Fack sortira de la phase de reprise rapide et passera en phase d’évitement de congestion.
À la détection d’une perte, après avoir été divisée par deux, la taille de la fenêtre de congestion
(cwnd) de TCP Fack reste constante durant toute la phase de reprise rapide (i.e., pas d’aug-
mentation d’un MSS par acquittement dupliqué). Mais TCP Fack émet des segments tant que
la quantité de données en transit (estimée grâce à awnd) reste inférieure à cwnd. La quantité de
données qui peut être émise durant la phase de reprise rapide est donc estimée plus précisément
que dans TCP Reno. Cette amélioration contribue à un meilleur lissage du débit d’émission.
Le protocole TCP Fack améliore également l’algorithme de démarrage lent. Dans TCP
Reno, durant cette phase, lorsque la perte d’un segment est détectée par la réception de trois
acquittements dupliqués, la fenêtre de congestion est réduite de moitié. Or, sachant qu’en phase
de démarrage lent la taille de la fenêtre de congestion double tous les RTTs, après réduction
elle revient à la taille qu’elle avait un RTT plus tôt, c’est-à-dire qu’elle revient à la valeur qui
a entraı̂né la perte de segments. Une nouvelle perte sera donc constatée un RTT plus tard, et
la fenêtre sera de nouveau réduite de moitié. Pour éviter cela, dans le cas où une première
réduction ne ramène pas la taille de la fenêtre de congestion en dessous du seuil ssthresh, TCP
Fack réduit une seconde fois la taille de la fenêtre de congestion (ce qui revient à une division
par quatre).
Dans la RFC 793, il est suggéré d’initialiser la taille de la fenêtre de congestion à un seg-
ment (MSS). Mais l’utilisation des acquittements retardés (attente de la réception d’un second
segment) peut conduire à l’expiration du chien de garde de retransmission. L’utilisation d’une
fenêtre de congestion initale plus grande permettrait d’éviter cette situation. De plus, une aug-
mentation de la taille de la fenêtre de congestion initiale permettrait également aux connexions
ayant une petite quantité de donnée à transmettre de réduire significativement leur temps de
transmission. À l’inverse, une fenêtre initiale trop grande risquerait d’entraı̂ner l’engorgement
du réseau en phase de démarrage lent. Les RFC 2414 [4] (expérimentale) et RFC 3390 [5] (en
cours de standardisation) proposent de porter la taille initale de la fenêtre de congestion à 4 ko,
soit approximativement à 4 segments sur les réseaux classiques.
cwnd V cwnd X Y
quantité de données émises durant le dernier RTT
(2.5)
De plus, il est spécifié que l’accroissement de cwnd à l’arrivée d’un acquittement ne doit
être fait que si la fenêtre de congestion est pleinement utilisée (i.e., s’il y a suffisamment de
données à émettre).
g=h=ikj\lnmDoDp
12
10
0 2 4 6 8
Temps en secondes
Mise en œuvre. Alors que TCP Reno a besoin de créer une congestion (i.e., perte de seg-
ments) pour réussir à estimer la bande passante, TCP Vegas observe la variation du débit. Pour
cela, il compare le débit effectif au débit attendu, en utilisant un RTT de référence, RTTref (plus
petit RTT mesuré). Le débit attendu est calculé grâce à la taille de la fenêtre de congestion,
censée être émise en RTTref secondes :
Le débit effectif est calculé grâce au nombre d’octets envoyés entre la date d’émission q
d’un segment et la date de réception de son acquittement, RTT secondes plus tard :
2.3. GESTION DE LA FENÊTRE DE CONGESTION 43
r
resterait égal à son débit attendu et donc le surcroı̂t de bande passante utilisable ne serait pas
détecté. En revanche, si cwnd était légèrement supérieur aux capacités (i.e., débit attendu
débit effectif) du réseau, lors d’une libération de bande passante, l’émetteur pourrait consta-
ter une augmentation de son débit effectif et donc accroı̂tre la taille de sa fenêtre de congestion
cwnd. Pour maintenir la taille de la fenêtre de congestion légèrement supérieure à la taille idéale
sans congestionner le réseau, TCP Vegas utilise deux bornes entre lesquelles cwnd doit se trou-
ver.
Pour éviter les pertes importantes qu’occasionne le démarrage lent utilisé par TCP Reno,
Vegas utilise la comparaison du débit attendu et du débit effectif. Mais pour que cette com-
paraison soit possible, il est nécessaire que la fenêtre de congestion reste stable pendant au
moins un RTT. Donc, au cours du démarrage lent, TCP Vegas augmente cwnd exponentielle-
ment mais seulement une fois par RTT (et non à chaque réception d’acquittement comme le fait
TCP Reno). Lorsque TCP Vegas détecte que le débit attendu est bien supérieur au débit actuel,
il passe dans une phase d’évitement de congestion.
Dans TCP Vegas, cwnd n’est réduit qu’une seule fois par RTT : la fenêtre de congestion est
réduite seulement si le segment perdu a été émis après la dernière réduction de la fenêtre. Ceci
permet de diminuer la fenêtre de congestion uniquement si la perte est due au débit actuel et
non à un débit qui a déjà été corrigé antérieurement.
De manière générale, dans les autres versions de TCP, tous les segments d’une même fenêtre
de congestion sont émis en un temps très inférieur à un RTT (émission en rafales, puis at-
tente des acquittements). La suppression de ces rafales permet à TCP Vegas de lisser le débit
d’émission. L’émetteur détermine un délai inter-segments durant lequel il s’autorise à envoyer
au maximum deux MSS octets. Notons que ce mécanisme anti-rafales est désactivé durant les
phases de démarrage lent, car les rafales sont nécessaires pour maintenir une croissance expo-
nentielle de la taille de la fenêtre de congestion.
Enfin, TCP Vegas améliore la gestion des délais de retransmission. Dans TCP Reno, le chien
de garde de retransmission n’expire que si aucun acquittement n’est parvenu à l’émetteur depuis
RTO secondes. En plus de ce système, TCP Vegas vérifie, pour chaque segment émis mais non
acquitté, que son temps de transit n’a pas dépassé le délai de retransmission. Cette modification
a pour but de détecter plus rapidement les pertes de segments, ce qui contribue là encore à
limiter les variations du débit d’émission.
44 CHAPITRE 2. ÉTAT DE L’ART
/ 0
plus multiplicative). Cela permet de sanctionner moins lourdement les dégradations passagères,
causées par un lien perturbé ou une congestion ponctuelle (type burst UDP très court).
Mise en œuvre. Sachant que TCP essaie de déterminer la capacité du réseau en faisant croı̂tre
le débit jusqu’à provoquer une congestion, on peut en déduire que le débit de la connexion
tvs u
est proche de la bande passante utilisable peu de temps avant l’apparition de la congestion.
Pour mesurer la bande passante utilisable ( ), TCP Westwood commence par mesurer le débit
wu
instantané de la connexion en divisant la quantité de données nouvellement acquittées par le
x u
temps séparant les deux derniers acquittements. Notons
y y3W{z
la quantité de données acquittées
|t u
dans le dernier acquittement, et le temps séparant l’arrivée des acquittements et . La
tvu V w u u
bande passante instantanée se calcule de la manière suivante :
x (2.9)
Une valeur lissée de la bande passante utilisable est ensuite calculée de la manière suivante :
tvs u V~} u dtvs u X_ z W} u fd tvu X Y tvu avec } u V Y+Y^ Wx uu
u
X x (2.10)
Notons que le coefficient } , dit de lissage, dépend de la constante et du délai inter-
u
acquittements x . Plus le délai inter-acquittements x
u est important (i.e., moins le débit de
l’estimation de la bande passante lissée s .
tvu
réception est élevé), plus les deux dernières mesures de la bande passante auront du poids dans
V~Z)[+] Y d ` ts u d
deux la valeur :
V
ssthresh cwnd MSS
RTTmin
taille seg (2.11)
Dans cette équation, RTTmin représente la plus petite valeur du RTT, et taille seg la taille
moyenne des segments envoyés. Une fois cette mise à jour effectuée, l’émetteur continue d’émet-
tre en phase d’évitement de congestion.
tvs u
Si la perte est détectée par l’expiration du chien de garde de retransmission (i.e., plusieurs
segments ont été perdus), cela signifie que a dû être surestimée. Dans ce cas, la fenêtre de
congestion est réduite à un MSS et le calcul de ssthresh reste le même que précédemment. Après
avoir réduit ssthresh et cwnd, l’émetteur entre en phase de démarrage lent.
2.4. CONTRÔLE DE CONGESTION BASÉ SUR LE DÉBIT 45
/ 0
ter le débit d’émission lorsque l’état du réseau est connu comme étant propice aux conges-
tions. Pour cela, TCP-L apprend au cours de la connexion les relations entre le délai de
transmission (entre la source et le récepteur), la taille de la fenêtre de congestion, et l’appari-
tion de congestions. Après cette phase d’apprentissage, TCP-L autorisera l’augmentation de la
taille de la fenêtre de congestion uniquement si dans les mêmes conditions, cette augmentation
n’avait précédemment pas créé de congestion. Cette amélioration permet de stabiliser le débit
d’émission. Elle offre ainsi une plus large gamme d’utilisation de TCP (i.e., transport de flux
audios, vidéos, etc.).
fait, elles utilisent le protocole UDP qui n’effectue aucun contrôle des congestions (et donc
aucun ajustement du débit). De nouveaux protocoles dont le contrôle de congestion est adapté
au transport de flots de données temps réel ont donc vu le jour. Ces nouveaux protocoles, dont
le contrôle de congestion n’est pas basé sur une fenêtre d’émission, sont capables de cohabiter
équitablement avec TCP (TCP Friendly).
timédia). Ce protocole (en cours de standardisation RFC 3448) tente de résorber les congestions
en utilisant le taux de pertes , le débit de réception D rcvd et le débit TCP-friendly Dfriend , qui est
obtenu via une modélisation Markovienne de la phase d’évitement de congestion de TCP Reno.
V
Le récepteur estime son débit de réception Drcvd ainsi que le taux de pertes de segment , qu’il
transmet à l’émetteur. Initialement, et l’émetteur TFRC se place en phase de démarrage
lent. Puis, dès que le taux de pertes devient non nul, il passe en phase d’évitement de congestion.
Durant la phase de démarrage lent, le débit d’émission est calculé grâce au débit de
réception Drcvd . Alors qu’en phase d’évitement de congestion, le débit D est ajusté en fonction
du débit TCP-friendly Dfriend (cf. équation 2.14).
Mise en œuvre. Contrairement à TCP Reno, qui répond à toute perte de segment par une
réduction massive de la fenêtre de congestion, TFRC ajuste son débit en fonction du taux de
pertes . Ce taux doit refléter l’état du réseau, c’est-à-dire le nombre d’événements de pertes
ainsi que leur importance. Un événement de pertes représente la perte d’un ou de plusieurs seg-
ments consécutifs. Le taux de pertes doit être peu sensible à une perte unique (afin de lisser
le débit), tout en variant significativement lorsque plusieurs événements de pertes se succèdent
(ou lorsqu’un événement de pertes est important). Pour cela, le taux est défini comme étant
l’inverse de la moyenne pondérée des huit derniers intervalles de pertes (utilisation de l’algo-
rithme WALI 16 ). L’intervalle de pertes représente la quantité de données correctement reçues
entre deux événements de pertes. Ainsi, plus les intervalles de pertes sont importants (i.e., la
quantité de données reçues entre deux événements de pertes est importante), plus le taux de
pertes sera faible. Le récepteur TFRC calcule également son débit de réception Drcvd sur une
période d’un RTT, et l’envoie à l’émetteur.
En phase de démarrage lent, l’émetteur utilise le débit de réception pour éviter de saturer
le lien congestionné. Dans cette phase, au lieu de doubler le débit d’émission à chaque RTT
(comme le fait TCP Reno), le nouveau débit d’émission est calculé de la manière suivante :
D V Y dZJ_ D ` D f
rcvd (2.12)
Notons que chaque segment émis (sauf le premier) contient la valeur courante du RTT, ce
qui permet au récepteur de réguler l’émission des acquittements (contenant les valeurs de
et Drcvd ). En effet, le récepteur n’émettra un acquittement qu’à l’expiration d’un chien de garde
de réponse, armé avec le RTT reçu.
16. Weighted Average of Loss Interval.
2.4. CONTRÔLE DE CONGESTION BASÉ SUR LE DÉBIT 47
Lorsque le taux de pertes reçu est non nul, l’émetteur passe en phase d’évitement de conges-
tion. Dans cette phase, le débit D est ajusté en fonction du débit TCP-friendly D friend (cf.
équation 2.14) :
VZJ¢¡ X
Si D Dfriend alors,
D D RTT £ (2.13)
V
Sinon
D Dfriend
/ 0
De cette façon, l’émetteur TFRC ne peut pas être plus agressif qu’un émetteur TCP confronté à
la même congestion : il est friendly avec TCP.
Le débit Dfriend est calculé via l’équation suivante, provenant de la modélisation Marko-
vienne de la phase d’évitement de congestion de TCP Reno :
¤ ¥ ¦¨§ª© ¥ « ª§ ©
taille d’un segment TCP
Y ¦
« d a ¬ d\d_ zX a f d RTO
Dfriend (2.14)
RTT X
inst
Mise en œuvre. Chaque segment envoyé par l’émetteur RAP contient un numéro de séquence.
Pour chaque segment reçu, le récepteur envoie un acquittement (i.e., pas d’acquittements re-
tardés) qui contient le numéro de séquence du dernier segment reçu, celui du dernier segment
non reçu, ainsi que le numéro de séquence du dernier segment reçu avant le segment perdu.
Cette redondance d’informations apporte de la robustesse face aux pertes ponctuelles d’acquit-
tements. Pour détecter les pertes de segments (i.e., les congestions), RAP utilise un chien de
garde de retransmission, ainsi que les trous dans l’enchaı̂nement des numéros de séquence.
Pour chaque segment émis, la source enregistre son numéro de séquence, son heure de départ et
son débit d’émission. Avant chaque émission d’un nouveau segment, la source vérifie si le chien
de garde de retransmission a expiré pour l’un des segments déjà émis. La détection de pertes
grâce aux trous dans l’enchaı̂nement des numéros de séquence est similaire à la détection via la
réception de trois acquittements dupliqués de TCP Reno. Si l’émetteur reçoit un acquittement
pour un segment envoyé trois segments après un segment non encore acquitté, ce dernier est
considéré perdu.
Afin d’éviter que le débit ne soit réduit plusieurs fois au cours du même RTT (i.e., perte
de segments ayant été émis au même débit), RAP utilise un mécanisme de détection de pertes
groupées. Notons Seqfirst le numéro de séquence d’un segment dont la perte a été détectée, et
Seqlast le numéro de séquence du dernier segment émis au moment de cette détection. Puisque
48 CHAPITRE 2. ÉTAT DE L’ART
l’émetteur réagira à la perte du segment Seqfirst , toute perte de segments de numéro Seq vérifiant
Seqfirst Seq Seqlast sera ignorée en ce qui concerne l’ajustement du débit. Lorsque l’acquit-
tement d’un segment ayant un numéro de séquence supérieur à Seqlast sera reçu (i.e., un RTT
®
plus tard), l’émetteur recommencera à prendre en compte les pertes.
}
En l’absence de pertes, le débit d’émission débit augmente régulièrement d’une quantité
constante :
Dans ces équations, C est une constante permettant de jouer sur le pas d’incrémentation du
débit. En cas de perte, le débit est réduit de moitié :
Les ajustements du débit ne doivent pas être effectués trop souvent sous peine de créer
des oscillations dans le débit d’émission. Inversement, des changements trop peu fréquents
entraı̂neraient un temps de réponse trop élevé. Si aucune congestion n’est détectée, RAP ajus-
tera le débit d’émission une fois par RTT. En revanche, si une perte est détectée, le débit sera
immédiatement réduit. Le fait d’ajuster le débit d’émission une fois par RTT permet à la source
d’observer les réactions du réseau face au nouveau débit. La fréquence de l’augmentation du
débit étant basée sur le RTT, plus ce dernier est court, plus la connexion RAP sera agressive
±
envers les flots ayant des RTTs plus longs. Notons que si le débit est mis à jour tous les RTT, et
si la constante est égale à un RTT, l’augmentation du débit d’émission sera d’un segment par
®
RTT, ce qui correspond à la phase d’évitement de congestion de TCP. Pour appliquer le débit
d’émission débit , la source émet un paquet toutes les IPG 17 secondes, où IPG est déterminé
®°¯ V
comme suit :
®°¯
taille d’un segment
IPG
débit
/ 0
données supportant mal les fortes variations de débit. Ce protocole propose d’ajouter à UDP un
mécanisme de contrôle de congestion, en utilisant le concept de durée relative de trajet aller ,
le ROTT 18 . Le ROTT est utilisé pour évaluer l’état du chemin emprunté par les segments. L’état
du chemin permet ensuite à l’émetteur de choisir le mode de transmission adéquat, c’est-à-dire
d’effectuer le contrôle de congestion approprié. Notons que pour calculer son débit d’émission,
la source PASTRA utilise une équation modélisant le débit qu’aurait une source TCP dans les
mêmes conditions.
Mise en œuvre. L’état du chemin est évalué en fonction du temps que mettent les segments
pour aller de l’émetteur au récepteur (ROTT). Ce délai ne peut pas être mesuré de manière
exacte car les horloges de l’émetteur et du récepteur ne sont pas synchronisées. Cette inexacti-
tude ne perturbe pas PASTRA car il utilise la variation du délai d’acheminement et non pas le
17. Inter Packet Gap.
18. Relative One way Trip Time.
2.4. CONTRÔLE DE CONGESTION BASÉ SUR LE DÉBIT 49
délai lui-même. La variation du délai d’acheminement peut également être faussée par la dérive
des horloges respectives de l’émetteur et du récepteur. Notons que cette dérive pourra être cal-
/ 0
culée et compensée grâce à l’algorithme ESRS [114]. À certains moments, les variations du
/ 0
ROTT sont très brusques et des pics sont observables. L’enchaı̂nement de brusques varia-
tions du ROTT sur une brève période est appelée trains de pic 19 . L’étude de la corrélation
/ 0
/ 0
entre les trains de pics , les pertes de segments et la réduction du débit a montré que les
/ 0
pertes de données se produisent essentiellement durant les trains de pics , et ce, quel que
soit le débit d’émission de la source. La détection des trains de pics permettrait donc de
connaı̂tre l’état de congestion du réseau.
Pour ajuster son débit, l’émetteur PASTRA a besoin de connaı̂tre l’état du chemin emprunté
par le flot de données qu’il envoie. À chaque fin de stage 20 , le récepteur vérifie l’état du chemin
emprunté, et envoie un rapport à l’émetteur. Quatre états sont utilisés (cf. figure 2.10) pour
qualifier l’état du chemin :
/ 0
– Dans le premier, Init , le récepteur calcule les paramètres nécessaires à l’estimation du
ROTT [114] (i.e., l’état du chemin n’est pas encore connu).
– Dans le second, / 0
/ 0
Stable , le chemin est considéré comme stable tant que le taux de
segments en transit durant les trains de pics est inférieur à 30%.
– Le troisième état, / Instable 0 , est atteint si le taux de segments en transit durant les
/ trains de pics 0 dépasse 30% ou si PASTRA est incapable d’estimer le ROTT (dans
l’état / Init 0 ).
– Le dernier état, / Changé 0 , est utilisé lorsque le chemin entre la source et la destination
change (i.e., re-routage). Dans ce cas, le récepteur doit calculer le nouveau ROTT de
référence.
Début
Init
La
es dé
h o rlog n’a rive d
d e s e pas es h
e é or
ériv stim été
est loges
La d a été e imé
Le taux de paquets en transit e
lors des trains de pics > 30%
Stable Le taux de paquets en transit
Instable
Ch
an Ré lors des trains de pics < 10%
ge cep
m d ’ tio
de ent estim n d’u
réf du a n
ére RO tion d paq
nce TT u d uet
ébi
t
Changé
Début Probing
Evaluation ?
Réussie
Echouée
¿ j++
Stable
b=1 Transmission au débit deb(j)
j=1 j++
Fin du ds écoulé
stage j
Transmission au débit j=1? Oui
état Init
deb(j) = b . Deb_ref
Non
Fin du ds écoulé état Instable ou perte
état(j) ?
stage j état Stable d’un rapport de réception
j=1? Oui
état Init ρpos(j) > 0.1
état Changé Oui Non
Non
²ª³°´µ³·¶µ¸º¹ ³°´µ»½¼ ¾
état(j) ? deb(j+1) = max (0.5 deb(j), 1 - θρpl(j))
état Changé ou seconde perte état Stable ou perte Seconde perte consécutive
consécutive d’un rapport de réception d’un rapport de réception d’un rapport de réception
deb(j+1) = deb(j) + 0.2(Deb_ref - deb(j))
deb(j+1) = 0.5 deb(j)
Légende :
j : représente le numéro du stage.
ds : représente la durée du stage.
b : facteur de décroissance calculé par le récepteur (compris entre 0,8 et 1).
ρpl : représente le taux de pertes de paquets.
θ : représente un facteur de décroissance (compris entre 2 et 5).
ρpos : représente le taux de paquets ayant un ROTT supérieur à celui du paquet précédent.
Les différents états du chemin sont utilisés pour déterminer le mode de transmission à adop-
ter grâce à un automate (cf. figure 2.11) :
/ 0
– Dans le premier mode, Probing , l’émetteur estime le débit qu’aurait une connexion
/ 0 / 0
TCP dans les mêmes conditions. Il s’agit de l’initialisation de la connexion (le chemin est
dans l’état Init ) ou d’un re-routage (le chemin est dans l’état Changé ).
/
0
– Si PASTRA est incapable d’estimer ce débit, la source passe dans le second mode, Adap-
tive , dans lequel les données sont transmises avec un débit assez faible (i.e., il s’agit
d’une transmission en mode dégradé).
/ 0
– Le dernier mode, Stable est utilisé lorsque l’état du chemin reste à Stable . Dans ce / 0
cas, les données sont transmises à un débit proche de celui qu’aurait une connexion TCP.
/ 0 / 0
/ 0 / 0
Notons que l’émetteur peut sortir du mode Stable pour passer en mode Adaptive si
/ 0 / 0 /
l’état du chemin passe à Instable . Pour sortir du mode Adaptive , l’état du chemin doit
0
être qualifié de Stable ou Changé . Dans les deux cas, l’émetteur passera en mode Pro-
/ 0
bing . Notons également que la perte successive de deux rapports de réception (qui indiquent
/ 0
l’état du chemin) alors que l’émetteur était en mode Stable provoquera son retour en mode
Probing .
2.4. CONTRÔLE DE CONGESTION BASÉ SUR LE DÉBIT 51
Mise en œuvre
Le protocole RTP permet à LDA+ de connaı̂tre le RTT de la connexion grâce aux messages
RTCP 22 qui sont envoyés périodiquement avec un intervalle minimum de 5 s. Les messages
RTCP donnent également des informations sur le taux de pertes. À ces informations, LDA+
ajoute, dans un champ réservé des en-têtes RTCP, la mesure de la bande passante du goulot
t
d’étranglement (i.e., la bande passante disponible).
y u
u
A :
Lorsqu’aucune congestion est détectée à l’étape , le débit D est incrémenté avec un pas
u V Du X Au
D
u
La valeur du pas d’incrémentation A doit évoluer doucement (sans brusque variation) de
(2.17)
manière à avoir un débit d’émission lissé. L’évolution du pas d’incrémentation doit également
u
u u u
permettre de conserver l’équité entre les différents flots circulant sur le réseau. Le pas A est
u add exp TCP
utilisant le débit D , calculé à l’étape yWÏz , et la dernière valeur mesurée de la bande passante
rapport de réception, en
tÎu :
uA VÐ Y W Dtvuu d Au
disponible du goulot
add add
(2.18)
u
Ce pas d’incrémentation autorise la source à augmenter son débit d’émission (au maximum le
t|u ).
doubler) uniquement si le débit qu’elle a actuellement (D ) est inférieur à deux fois la bande
passante disponible (
u
uA VÑÒzÓWÔ]bÕ Ö½¨ Û ×× ØÚØÚÙ^Ù Ü d Du
exp
Le second pas d’incrémentation A , a pour but de limiter l’augmentation du débit :
D
u
exp
(2.19)
tu
Il converge vers 0 lorsque le débit de la connexion D tend vers la valeur de la bande passante
du goulot d’étranglement .
Le dernier pas d’incrémentation A
u a pour but de rendre LDA+ équitable avec les flots
TCP
u V x cwnd
=
x Ý
TCP
A (2.20)
21. Real-time Transport Protocol.
22. RTP Control Protocol.
52 CHAPITRE 2. ÉTAT DE L’ART
Þ
Lorsqu’une perte de segment est détectée, le débit d’émission est déterminé grâce à l’in-
actuel D
u
tervalle de pertes (défini à la manière de TFRC, cf. paragraphe 2.4.1), au débit d’émission
(i.e., lors de la détection de la perte) et au débit Dfriend (calculé grâce à l’équation
de TFRC) qu’aurait une source TCP dans cette situation :
D
u VZ)[+]\ßßàz W{á Þãâ D|u ` D â
friend (2.21)
Probabilité de destruction
Maxp
F IG . 2.12 – Évolution de la probabilité de détruire un paquet dans une file RED en fonction de
la taille moyenne de la file d’attente.
qu’une congestion se forme (i.e., la taille moyenne de la file dépasse le premier seuil), il marque
les paquets qui sont ECN-capable (label certifiant que l’émetteur comprendra le marquage). Ce
marquage, permet d’indiquer explicitement à l’émetteur qu’une congestion est en train de se
former, sans avoir à détruire un paquet, et donc sans engendrer de retransmission.
Mise en œuvre. Après négociation entre l’émetteur et le récepteur, si les deux extrémités
de la connexion comprennent le marquage ECN, les paquets sont dits ECN-capable et labelisés
ä å
comme tels. En cas de congestion, ils pourront alors être marqués par les routeurs (implémentant
une politique ECN), en positionnant le drapeau CE 23 (situé dans l’en-tête) à vrai . Lorsque le
ä å
ä å
récepteur TCP reçoit un paquet ayant le drapeau CE à vrai , il émet un acquittement ayant le
drapeau ECE 24 à vrai . Afin de rendre l’option ECN robuste face aux pertes d’acquittements,
ä å
ä å
le récepteur émet des acquittements ayant le drapeau ECE à vrai jusqu’à ce qu’il reçoive un
paquet ayant le drapeau CWR 25 à vrai . La réception d’un paquet ayant le drapeau CWR à
ä å
vrai n’assure pas que l’émetteur a bien reçu le message ECE, mais qu’il a réduit son débit
ä å
d’émission après avoir émis le paquet que le routeur avait marqué.
Lorsqu’un émetteur TCP reçoit un acquittement ayant le drapeau ECE à vrai , il sait
qu’une congestion est en train de se former sur le chemin aller [34, 98]. Cette indication de
congestion est traitée comme une perte de segment : la fenêtre de congestion est réduite de
moitié, et le seuil de démarrage lent est mis à jour. Le drapeau ECE étant présent dans tous les
acquittements jusqu’à ce qu’un segment CWR arrive au récepteur, TCP ne doit pas réagir plus
ä å
d’une fois par RTT à une série d’indications de congestion. Lorsque l’émetteur TCP réduit la
taille de la fenêtre de congestion, quelle qu’en soit la raison, il positionne à vrai le drapeau
ä å
CWR dans le premier paquet de données émis après la réduction. Le paquet contenant le drapeau
CWR à vrai ne doit jamais être un paquet de retransmission [98].
23. Congestion Experienced.
24. ECN-Echo.
25. Congestion Window Reduced.
54 CHAPITRE 2. ÉTAT DE L’ART
2.6 Conclusion
Bilan. Dans ce chapitre, nous avons rappelé le fonctionnement du mécanisme de contrôle
de congestion de TCP Reno. Puis, nous avons présenté une synthèse de travaux représentatifs
portant sur les nombreuses évolutions et alternatives proposées pour améliorer le contrôle de
congestion. Ces travaux ont été classés en quatre catégories : optimisation des acquittements (cf.
section 2.2), optimisation de la fenêtre de congestion (cf. section 2.3), protocoles sans fenêtre
(cf. section 2.4) et informations sur l’état du réseau (cf. section 2.5).
L’étude des différents mécanismes de contrôle de congestion nous permet de tirer quelques
conclusions. Pour commencer, il est certain que les nouveaux protocoles de transport devront
implémenter un mécanisme de contrôle de congestion [36]. En effet, les progrès attendus aux
niveaux des couches réseau et applicative ne pourront que compléter (et non remplacer) le
contrôle de congestion de la couche transport.
L’amélioration de la gestion des acquittements est une piste qui a déjà été largement explorée
(cf. acquittements cumulés, retardés, TCP Sack, TCP Fack, TCP New Reno). Il semble donc
peu probable que des avancées significatives soient à attendre de ce côté. Cette piste a permis
de réduire la quantité de données inutilement retransmises. En revanche, elle n’a pas apporté
d’amélioration en ce qui concerne les réductions de débit qui restent souvent inadaptées à l’état
de congestion du réseau.
Le marquage des paquets (ou de leur acquittement) est une piste prometteuse (cf. travaux
menés sur ECN [32, 43]). Cependant, les techniques liées aux protocoles implémentés sur les
équipements intermédiaires (e.g., les routeurs) posent des problèmes au niveau du déploiement.
De plus, ce genre de marquage est souvent incompatible avec les mesures de sécurité réseau
(e.g., ECN est incompatible avec certains pare-feux).
Le dernier axe d’amélioration possible est donc une meilleure gestion du débit d’émission
que ce soit avec ou sans fenêtre d’émission. L’utilisation d’une fenêtre d’émission a l’avantage
de réguler automatiquement la quantité de données en transit (i.e., il ne peut y avoir en transit
plus de données que n’en contient la fenêtre). En revanche, l’utilisation d’un délai inter-paquets
facilite le lissage du débit d’émission (i.e., les paquets ne sont pas envoyés en rafale). Il est
cependant possible de lisser le débit d’émission même en utilisant une fenêtre (cf. TCP Vegas
et TCP-L).
Comme nous l’avons vu dans ce chapitre, les propositions d’alternatives à TCP tentent de
lisser le débit d’émission. En effet, les brusques variations du débit qu’impose TCP gênent
les flots temps réel (e.g., flux audio, vidéos, etc.). De plus, des variations fortes et répétées
ont tendance à rendre le réseau instable, ce qui contribue à la sous-utilisation de ses capacités.
Ainsi, les nouveaux protocoles, qu’ils utilisent une fenêtre (TCP Vegas TCP Westwood, TCP-
L), ou qu’ils soient basés sur le débit (TFRC, RAP, PASTRA et LDA+), tentent tous de lisser
au maximum leur débit d’émission.
Des travaux pour adapter le contrôle de congestion aux protocoles multicast sont actuelle-
ment menés [117, 28]. D’autres travaux cherchent à déplacer le contrôle de congestion du côté
du récepteur [96, 102, 46].
Perspectives. Dans cet état de l’art, nous nous sommes concentrés sur un contrôle de conges-
tion unicast implémenté par l’émetteur. Dans cette problématique, des améliorations provien-
dront sans doute encore de l’observation et de l’amélioration des protocoles existants. Mais,
2.6. CONCLUSION 55
dans le champ étroit des améliorations possibles, c’est certainement l’application de nouveaux
modèles mathématiques [83, 55] qui offriront le plus de possibilités.
De plus, des avancées significatives seraient envisageables si l’on faisait abstraction de la
compatibilité avec TCP. En effet, TCP Reno impose aux nouveaux protocoles d’avoir un com-
portement correctif, sous peine de s’approprier toute la bande passante. Cependant, les proto-
coles préventifs tel que TCP Vegas ont de bien meilleurs résultats [2, 75] que les protocoles
correctifs en terme d’équité, de lissage des débits, de taux de bonnes transmissions, etc. En
se plaçant dans un environnement dédié (réseau local, lien entre téléphone cellulaire et réseau
Internet, réseau ad’hoc etc.) les protocoles préventifs pourraient être déployés. Notons qu’il
semble également possible de rendre temporairement agressif un protocole préventif lorsqu’il
est en concurrence avec un protocole correctif [27]. Une telle méthode permettrait donc de
déployer des protocoles préventifs sur Internet.
Le développement de protocoles préventifs basés sur des principes issus de la théorie du
contrôle des systèmes reste jusqu’à présent une piste peu explorée. Notons que la modélisation
continue des phénomènes de congestions sur les réseaux à commutation de paquets apporte une
grande simplification du problème. De plus, ce type de modélisation permet, dans certains cas,
de ramener le contrôle de congestion à des problèmes largement connus et traités en automa-
tique [26]. L’application au contrôle de congestion des résultats obtenus dans ce domaine paraı̂t
être une piste intéressante à suivre. C’est pourquoi nous avons choisi de l’exploiter dans les
chapitres suivants.
Pour finir, on peut facilement imaginer que le contrôle de congestion idéal n’est pas uni-
versel et qu’il dépend fortement du type de données à transporter. C’est pourquoi, à l’avenir,
la technique de contrôle de congestion à employer pourrait être choisie par les applications,
comme cela est proposé dans DCCP [64].
56 CHAPITRE 2. ÉTAT DE L’ART
57
Chapitre 3
ä å
sera modélisée par un système à entrées-sorties avec un délai incertain. Ainsi, il est possible
de définir un bouclage fictif , qui est réalisé par les acquittements allant de la destination
vers la source. L’utilisation de modèles continus permet de réduire la complexité de l’analyse
du comportement des réseaux. Ces analyses permettent de dégager de nouveaux résultats qui
présentent de gros avantages en termes de stabilité et de robustesse [83, 118, 22].
Les réseaux sont intrinsèquement discrets. Or la plupart des études qui sont menées dans
le domaine du continu ne tiennent pas compte de la pertinence des résultats obtenus une fois
qu’ils sont discrétisés. La validité de l’approximation continue a donc été étudiée lors de re-
cherches s’appuyant principalement sur des simulations [63, 81, 13, 99]. En effet, il est difficile
d’obtenir des comparaisons analytiques de modèles discret et continu. À notre connaissance, le
problème de la cohérence entre les réseaux et leurs modélisations continues a été souligné pour
la première fois dans [13]. Dans cet article, les auteurs montraient que l’utilisation de l’approxi-
mation continue donnait des résultats proches de ceux obtenus en discret dans un grand nombre
de scénarios. Les travaux présentés dans ce chapitre étendent les résultats obtenus dans [13, 99].
58 CHAPITRE 3. COHÉRENCE DISCRET CONTINU
æ
source ayant un mécanisme de contrôle de congestion et un récepteur, reliés par un lien de
capacité constante . Les deux modèles obtenus par Izmailov sont caractérisés par les deux
systèmes d’équations suivants :
ç éè Æê ëíìïî~ðêãëñòôóìñ æ
ðõè êãëíìïîñUö÷êãéêÆëñò\øÚìõñMéÎùÒìõñúêûéOêãëñò\øUñøFìñéÎùÒì (3.1)
ç éOè ãê ëíìïîüðêÆëñòôónìñ æ
ðõè êãëíìýîñþöþêûéOêãëñò\øFìDñéùÒìõñúêãéêÆëõñMò\ø÷ñøÚìñéùÒìõñÿ·éOêãëñò\øUñ+ìõñéù (3.2)
Dans ces équations, é représente la taille de la file d’attente, ð le débit de source et é^ù
la taille optimale de la file d’attente (valeur vers laquelle doit tendre é ). Les constantes òôó
et ò\ø représentent respectivement le temps de propagation entre la source et la file d’attente,
figure 3.1). Les constantes ö et ú sont des coefficients d’accroissement et de réduction de débit.
et le temps de propagation entre la file d’attente et la source en passant par le récepteur (cf.
Enfin, la variable ø est un intervalle de temps de ä contrôle å . Cette variable permet de jouer
sur la stabilité et la robustesse du système d’équations [22]. Le système d’équations 3.2 est
ÿ
similaire au premier, mais permet d’introduire un degré de liberté supplémentaire pour lequel
le paramètre doit être calculé [23].
En utilisant la nouvelle variable êÆëíìýîéêÆëíì9ñ¢é+ù
dans le système 3.1 devient une équation du second ordre où : îòôó ò\ø
, l’équation modélisant le débit de la source
ce qui traduit une politique Drop Tail, alors il a été prouvé dans [115] que le mécanisme de
contrôle de congestion de TCP adoptait un comportement chaotique.
Afin de réduire le degré de conservation de la fonction de probabilité de perte, il faut ajouter
une hypothèse assez intuitive : moins le débit entrant sur le lien congestionné est important,
moins la probabilité (" ) de perdre un paquet dans la file sera importante. Réciproquement, plus
le débit entrant sur le lien congestionné est important, plus la probabilité de perdre un paquet
sera importante. En d’autres termes, il faut supposer que la probabilité de pertes est une fonction
croissante, ce qui revient à utiliser une politique RED pour la gestion de la file :
3.1.3 Conclusion
Les deux modélisations présentées permettent d’étudier plus simplement le contrôle de
congestion dans un réseau à commutation de paquets.
ð é
Le premier modèle décrit, grâce à un système de deux équations, l’évolution du débit
d’émission ( ) et celle de la taille de la file d’attente ( ). La transformation de l’équation de
débit en une équation du second ordre, permet de ramener le problème de contrôle de conges-
tion à l’étude de la stabilité asymptotique d’un système à retard. Les problèmes de stabilité sont
ä å
largement connus et traités en automatique, ce qui permet de trouver des solutions exactes à ce
type de problème complexe. Malheureusement, dans le modèle d’Izmailov, la taille idéale
de la file d’attente est supposée connue, ce qui est impossible dans la réalité. En effet, ne sa-
chant pas quels sont les routeurs traversés, ni le nombre de connexions se partageant le lien
congestionné, il est impossible de l’estimer. Ces travaux ne semblent donc pas applicables dans
un environnement réel.
Le second modèle présenté décrit la dynamique de la fenêtre de congestion d’une source
TCP. Cette modélisation permet d’étudier le comportement de TCP dans un environnement
continu, où tous les paramètres sont maı̂trisés. Cette maı̂trise, autorise une analyse plus fine des
algorithmes de contrôle de congestion.
Beaucoup d’autres travaux analysant les caractéristiques du mécanisme AIMD 1 . [88, 7,
104, 72, 76, 62, 68] ont été menés. Ces travaux portent principalement sur l’étude du régime
stationnaire et de l’équité. Enfin, de récentes recherches sur le contrôle de congestion au niveau
de la couche réseau utilisent également des modèles continus [69, 14, 40, 78].
L’ensemble de ces travaux nous amène à nous demander quel est leur domaine de validité
(continu, discret). En effet, ces études étant menées dans un environnement continu alors que
les réseaux sont intrinsèquement discrets, on peut se demander si les comportements observés
1. Additive Increase Multiplicative Decrease.
3.2. MODÈLE EXPÉRIMENTAL 61
en continu sont cohérents avec ceux obtenus en discret. Cette question nous a poussés à préciser
le domaine de validité de l’approximation continue.
noeud source 1
(S1)
x1
(ti
+1
)
noeud de noeud de
congestion destination
(C) (D)
noeud source j xj(ti+1) µ
(Sj) i+1 i
s dipj(i) s Drn
n
Df
)
(ti +1
xn
noeud source n
(Sn)
Notons que, dans le cas simulé, les congestions sont dues à une limitation de la bande pas-
sante du lien partagé et non à une puissance de calcul insuffisante des routeurs intermédiaires.
De par la topologie utilisée, il est supposé qu’il y a un unique goulot d’étranglement entre la
source et la destination, mais qu’il n’y en a aucun dans le sens du retour (entre la destination et
la source). Les délais de propagation des liens allant des sources au nœud de congestion et du
nœud de congestion aux sources (nommés respectivement Df j et Drj ) sont supposés constants
(cf. figure 3.1).
62 CHAPITRE 3. COHÉRENCE DISCRET CONTINU
æ
Le goulot d’étranglement a une bande passante fixée ( kbitsm s) de sorte que : soit æ
inférieur à bSC qui représente la somme de la bande passante des liens entrant au nœud de
congestion.
La file d’attente utilise une politique FIFO 2 et est de taille infinie (pour éviter les pertes
de paquets). L’utilisation d’une file de taille infinie permet de simplifier la comparaison des
modèles discret et continu. Mais surtout, elle évite d’entacher les résultats d’erreurs dues à une
mauvaise modélisation continue du mécanisme de destruction de paquets des files d’attente
(type Drop Tail).
3.2.2 Protocole
Le protocole utilisé implémente un schéma de contrôle de congestion de type AIMD. Un
nœud source envoie un paquet de données à un nœud destinataire, qui retourne un acquittement
à la source. Au début de la communication, le réseau est supposé vide (i.e., aucun paquet ne
circule sur le réseau), il n’y a donc pas de congestion. Tous les paquets de données émis par
la source sont de taille fixe (notée s) et contiennent dans leur en-tête une estampille indiquant
leur heure d’émission. À la réception d’un paquet de données, le destinataire recopie cette es-
êì
tampille dans l’en-tête de l’acquittement avant de l’envoyer à la source. À la réception de cet
acquittement, la source n pourra calculer le RTT du ième paquet, noté rttn i :
ê ìýî
rttn i heure réception ñ estampille de l’ack (3.10)
Le premier RTT calculé alors que le réseau est encore vide, est noté RTT min n et sera utilisé
comme délai d’acheminement de référence. Ce délai de référence représente le RTT le plus petit
que pourra atteindre la connexion n. Pour tout paquet i, on a :
êì
rttn i Sa RTTmin
n (3.11)
î æ
importante, plus la file est pleine. Le taux de remplissage désiré par le protocole pour la file
d’attente est représenté par la tolérance T exprimée en millisecondes. Par exemple, si T s m
æ
(où représente le débit du lien congestionné), la taille requise pour la file d’attente sera d’un
paquet. Notons que, plus la tolérance est importante, plus le protocole laissera la file d’attente
du nœud congestionné se remplir avant de réduire son débit.
On peut distinguer deux cas pour l’ajustement du débit :
– la taille de la file d’attente est inférieure à celle souhaitée :
êì
rttn i R RTTmin
n T (3.12)
Afin d’éviter les situations de blocage infini, le protocole a un débit d’émission minimale
de 3000 bits/s. En effet, si le débit de la source tombait à une valeur proche de 0, le délai inter-
paquets tendrait vers l’infini. Dans une telle situation, plus aucun paquet ne serait émis et donc
aucun acquittement ne serait reçu. La source ne pourrait donc plus être avertie de la fin de la
congestion et la transmission des données serait bloquée.
éê ì
Les simulations en continu ont été effectuées avec Matlab, le code sources utilisé se trouve
êì
êì
en annexe B.1. Le modèle continu est composé de deux fonctions continues t et x t :
n q t représente la taille de la file d’attente du nœud de congestion o à l’instant t
êì
n xn t donne le débit de la source Sn à l’instant t
êñ ì
Lorsque des données de la source n arrivent au goulot d’étranglement à l’instant t, le débit
ñ
auquel elles ont été émises est égal à xn t Dfn . En effet, elles ont été envoyées par la source à
l’instant t Dfn (cf. figure 3.1). Les données sont ensuite envoyées du nœud de congestion vers
la destination. Le débit auquel sont envoyées les données dépend de l’état de la file d’attente :
– si la file d’attente n’est pas vide, les données seront envoyées avec le débit du lien æ
congestionné ;
ê ñ ì
– si la file d’attente est vide et que le débit d’émission des données est inférieur à , elles æ
seront émises avec un débit égal à xn t Dfn .
Les conditions précédentes permettent de définir un système d’équations modélisant l’évo-
lution de la taille de la file d’attente (notons que, pour la simplicité du modèle continu, nous
considérerons des conditions initiales nulles) :
W
prq 46)>?s tJtfGh t ñ q > t h0> q ê tJ°ìïî et , u / xj ê t ñ Dfj ìSR æ alors
q ê tìïîD
Si
(3.15)
W
q ê tìïîv t , / ê ñ ìyxQñ æ x{zFë
Sinon
ww u xj t Dfj
t
W
file non vide
Les données arrivant à l’instant t dans la file d’attente y passeront t m secondes avant d’en éOê ì æ
sortir. L’équation donnant le temps passé dans la file d’attente, noté q attente, par un paquet en
fonction de son heure de sortie de la file est notée :
qt ê ì î q ê tì
q attente | t
æ~} æ (3.16)
Si un acquittement est reçu par la source n à l’heure t, cela signifie que le paquet corres-
ñ
ñ ñ
pondant à cet acquittement a quitté la file d’attente à l’instant t Dr n , ce qui veut dire qu’il est
arrivé dans la file d’attente à t Drn q attente t Drn . ê ñ ì
À l’arrivée d’un acquittement à l’heure t, si
ê ñ ñ ê ñ ìíì 4 T>
q t Drn q attente t Drn
æ (3.17)
cela signifie que le paquet ayant engendré l’émission de l’acquittement a passé dans la file
d’attente un temps supérieur à la tolérance T. Or, si la durée de l’attente tolérée a été dépassée,
cela sous-entend que la taille souhaitée pour la file d’attente a également été dépassée. Afin de
diminuer la taille de la file d’attente, le débit de la source ayant reçu l’acquittement diminue
exponentiellement. Inversement, si le temps passé dans la file d’attente avait été inférieur ou
égal à la tolérance T, le débit aurait augmenté linéairement.
Par conséquent, nous avons :
$ $ $ R
x ê t ìýî min gê ñ ìalors
q t Drn q attente t Drn
Si T
n debn t tmin
n
(3.18)
x ê t ìýîD U)3ê $ *ì >(x
Sinon
C t tmax
w debmax n
n n
Dans ce système d’équation, tmin n représente l’heure à laquelle la source a détecté qu’elle
pouvait de nouveau augmenter son débit, et deb min n le débit auquel elle émettait à cet instant (cf.
max
figure 3.2). De même, la variable tn représente l’heure à laquelle la source a détecté qu’elle
devait réduire son débit, et debmax
n le débit auquel elle émettait à cet instant.
Ces quatre nouvelles variables peuvent être décrites formellement :
î tattente î x êt ì
tmin
î Drn et debmin
î x êt ì
T attente T
Drn
tattente
n n n
(3.19)
tmax
n
T
Drn et debmax
n n
attente T
Drn
La variable tattente T (respectivement tattente T) représente l’heure à laquelle la taille de la file
du nœud de congestion est repassée en dessous (respectivement au dessus) de la taille souhaitée.
Ces deux variables sont définies par le système d’équations suivant :
prq 4;> tel queê Jªs ì4tJfh tattente ñ q> tattente h@>
ê ìSR
T T
120
100
Débit (kbits/s)
80
60
40
20
0 2 4 6 8 t (s)
phase de phase de
décroissance phase de décroissance
croissance
Algorithme 1 : Protocole( , , T)
1 phase = croissante
2 débit min absolu = 3000
3 débit min = débit min absolu
4 t min = 0
5 débit max = débit min absolu
6 t max = 0
7 débit = débit min
8 RTT min = 0
9 rtt = rtt min
10 tp = 1000
11 émission() :
12 t = date()
13 envoyer tp octets, t au nœud destinataire
si rtt RTT min + alors
14
Le débit d’émission doit être réduit.
15
Entrée en phase décroissante.
si phase == croissante alors
16 phase = décroissante
17 débit max = débit
18 t max = t
19 fin si
20 débit = max( débit max exp( (t min - t) / ) , débit min absolu)
21
Le débit doit augmenter.
sinon
22
Entrée en phase croissante.
si phase == décroissante alors
23 phase = croissante
24 débit min = débit
25 t min = t
26 fin si
27 débit = débit min + (t - t min)
28 fin si
29 appeler émission() à la date t + tp / débit
30 réception() :
31 t = date()
32
Réception d’un paquet de données par le nœud destinataire.
si paquet == données alors
ð êÆëíì ð êãëíì
de deux sources.
F IG . 3.4 – Les courbes de débits obtenues avec le modèle continu (à gauche) et le modèle discret
(à droite) représentent les débits et
La période est un indicateur simple qui fournit des résultats cohérents. Elle sera donc utilisée
pour comparer le comportement du protocole dans des environnements continu et discret.
Lors des premières simulations, nous nous sommes aperçus que le modèle discret n’était
pas rigoureusement périodique. En effet, sur une simulation de 300 s, il est possible d’observer
de faibles variations de la période. Afin que la comparaison des périodes continue et discrète ne
soit pas faussée par les variations minimes de la période du modèle discret, nous utiliserons la
valeur période discrète qui représente la moyenne des périodes calculée sur 300 s (entre 30 et
75 périodes suivant les paramètres de simulation) :
,
période discrète î
durée période
(3.21)
nb périodes
Pour le modèle continu, les courbes de débit étant complètement périodiques, il suffit d’uti-
liser une mesure de la période pour comparer les deux modèles.
Afin de faciliter la lecture des résultats, l’indicateur écart-CD (pour écart Continu Discret)
a été défini. Il représente (sous forme de pourcentage) l’écart constaté entre la période obtenue
avec le modèle continu et celle obtenue avec le modèle discret :
corrélés. De plus, il est impossible de simuler toutes les situations existantes. Des choix perti-
nents étaient donc indispensables. Ces choix ont été faits aux vues des résultats obtenus lors de
simulations préliminaires.
î
le couple de valeurs ¡ et î î î
Les simulations ont permis de différencier plusieurs classes de comportements. Par exemple,
(respectivement £¢ et ¡;¤e¥¦ ) correspond à des
ä å ä å
variations lissées (respectivement fortes ) du débit d’émission. De la même manière,
le protocole peut être plus ou moins sensible à la détection des congestions. En effet, plus
la tolérance T est faible, plus le protocole détecte rapidement l’apparition d’une congestion.
Lorsque la tolérance est faible, on dit du protocole qu’il est réactif. La valeur la plus couram-
ment utilisée dans les simulations a été la valeur minimale qui est égale au nombre de sources
émettant simultanément.
La topologie utilisée pour les simulations est composée de I nœuds sources, d’un routeur et
d’un nœud de destination (cf. figure 3.1).
Variation des délais de propagation. Pour cet ensemble de simulations, le réseau est com-
posé de deux sources et d’une seule destination. Les deux connexions ont des temps de pro-
pagation hétérogènes (les délais d’aller retour minimum sont différents). Cette situation fa-
vorise l’inéquité entre les flots et devrait donc accentuer les éventuelles différences entre les
modélisations fluide et discrète.
Nous sommes repartis de la première étude menée sur la cohérence des modèles discret et
continu [13] dans laquelle la congestion était située au milieu du chemin. Nous avons ajouté à
ce cas d’étude un second contexte de simulations où la congestion ne se trouve plus au milieu du
chemin. Afin d’étudier l’importance des délais de propagation, deux cas ont donc été distingués :
– Liens à délais de propagation symétriques. Dans ce cas, le lien entre la source (Sn ) et
le nœud de congestion (C) a le même temps de propagation dans les deux sens (i.e., il
est symétrique). En utilisant un lien S § C ayant un temps de propagation symétrique, la
relation suivante est obtenue : Df Dr î ñ ( ms représentant le temps aller retour
du lien C § D, cf. figure 3.1). Pour ce premier cas, le délai
première source au nœud de congestion a été fixé à Df î M de propagation £
ms (i.e., Dr
î
allant de la
ms).
En revanche, le délai de propagation Df a varié de 100 ms à 1,6 s (et Dr de 300 ms à
1,8 s).
– Liens à délais de propagation asymétriques. Dans ce cas, en terme de temps de propa-
gation, le nœud de congestion est situé au milieu du chemin S n § C § D § C § Sn , ce
î
qui signifie que Df Dr. Les temps de propagation de la première connexion sont tous
70 CHAPITRE 3. COHÉRENCE DISCRET CONTINU
Variation du rapport de bande passante. Afin de mesurer l’influence que peut avoir le rap-
port de bande passante sortante/entrante au nœud de congestion (i.e., bande passante du lien
congestionné divisée par la somme des bandes passantes des liens arrivant au nœud de conges-
tion) sur la cohérence entre les modèles continu et discret, il nous a paru intéressant d’évaluer
l’influence du rapport de bande passante avec deux types de variation de débit. Ces deux pa-
ä å
ramètres (type de variation de débit et rapport de bande passante) sont fortement corrélés. En
effet, plus le goulot d’étranglement est serré , plus la congestion se forme rapidement. De
même, plus les variations de débit sont brusques, plus les congestions se forment rapidement.
Nous avons donc distingué deux ensembles de simulations en fonction du type de variation de
débit :
6î
– Variations de débit lissées. Le protocole est paramétré de telle sorte ( © , î )
que les variations de débits de la source soient lissées.
eî î
– Variations de débit brusques. Inversement, dans cet ensemble le protocole est paramétré
( ¢ , D;¤#¥¦ ) de façon à ce que les variations de débits de la source soient fortes.
Dans les deux situations, on a considéré une réactivité maximale. La tolérance a été fixée à
paquet dans la file, la détection de congestion sera donc rapide voire prématurée.
Le réseau utilisé pour ces ensembles de simulations est composé d’une unique source et la
bande passante du lien entrant sur le nœud deM congestion (lien ª § o ) est de 1,5 Mbits/s. La
æ
bande passante du lien congestion varie de kbits/s à « kbits/s. Les temps de propagation
des liens ont été fixés de sorte que Df = Dr = 330 ms.
Taille des paquets (s). Dans cet ensemble de simulations, l’influence de la taille des paquets
sur la cohérence entre les modèles continu et discret a été évaluée. Un réseau composé de dix
î î
sources a été utilisé pour réaliser cette évaluation. Les temps de propagation ont été fixés à
Dr ~ ms et le rapport bandeM passante sortante/entrante à 50%. Les paramètres du
Df
protocole ont également été fixés à T î eî
paquets pour la réactivité, et îpour les
coefficients de correction. Intuitivement, on peut penser que plus les paquets sont petits, plus le
ä å
modèle discret se rapprochera du modèle continu (i.e., plus les paquets sont petits, plus le flot
de données entre l’émetteur et le récepteur sera continu ). Il est donc intéressant d’observer
l’impact de la taille des paquets sur la cohérence des modèles continu et discret. Pour ce faire,
nous avons fait varier la taille des paquets de 0,1 ko à 50 ko.
Réactivité (T). Le dernier paramètre observé afin d’étudier la cohérence entre les modèles
discret et continu est la réactivité du protocole (i.e., le seuil de détection de congestion). Ce
î î
paramètre a été testé sur des réseaux composés de 2, 3, 5, 10 et 25 sources. Les temps de
propagation ont été fixés à Df Dr £ ms et le rapport bande passante sortante/entrante
15%. La réactivité du protocole T a varié du nombre de sources moins un (I
Mñ à
î
) (plus petite
valeur acceptée) à paquets. Les autres paramètres du protocole ont été fixés à ¨ et
î .
Ces différents ensembles de simulations multi-critères devraient nous autoriser à estimer les
limites de la validité de l’approximation continue.
Nous avons distingué deux cas dans lesquels la congestion se trouve ou ne se trouve pas au
milieu du chemin. Notons que dans les deux cas, les temps de propagation des deux connexions
sont hétérogènes (cf. paragraphe 3.3.2).
40
35
Df = Dr
30
Df = Dr − 200
Cécart− CD (%)
25
20
15
10
0
100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700
Tem ps de pr opagation D f ( s)
Les résultats obtenus pour les deux cas testés sont présentés dans la figure 3.5. Le temps de
propagation des sources ne semble pas avoir une grande importance tant que la différence entre
les RTTs minimaux (i.e., les temps de propagation) des deux sources n’excède pas 1,4 s si la
congestion n’est pas située au milieu du chemin (et 2,64 s si elle l’est).
Cet ensemble de simulation nous montre que, lorsque le temps de propagation n’est pas
trop différent entre les connexions, la modélisation continue est une bonne approximation des
réseaux à commutation de paquets (ici l’écart constaté entre les modèles continu et discret
est inférieur à 1%). En revanche, de fortes différences entre les deux modèles sont observées
lorsque les temps de propagation sont très différents. Notons que sur des réseaux réels, il semble
peu probable qu’une connexion ait un temps de propagation dépassant une seconde et demie.
Les différences observées ne devraient donc pas poser de problèmes si les réseaux modélisés
utilisent des temps de propagation réalistes.
Bande passante du lien congestionné. Dans cet ensemble de simulation, nous cherchons à
évaluer l’impact du rapport de la bande passante sur la cohérence des comportements continu
et discret d’un réseau à commutation de paquets. Cet ensemble de simulations a été testé avec
deux types de correction de débit : brusque et lissé (cf. paragraphe 3.3.2).
Les résultats obtenus avec une variation lissée du débit d’émission sont présentés figure 3.6.
M ¯® par les deux modèles est
ä å ä
On peut remarquer que la cohérence des comportements obtenus
å
généralement assez bonne (écart-CD toujours inférieur à ), et qu’elle est excel-
;
*
>
¦ ®
æ
lente (écart-CD inférieur à ) pour un rapport bande passante sortante/entrante supérieur
à 13,33% ( supérieur à 200 kbits/s).
Les résultats obtenus avec un forte variation du débit d’émission sont présentés dans la
ä å
figure 3.7. Il est important de noter qu’ici, lorsque le rapport bande passante sortante/entrante
est petit , la différence entre les modèles discret et continu est plus marquée (pour un rapport
de 6,66%, écart-CD 4 250%). Cette constatation était prévisible, car en augmentant le risque
de congestion et l’amplitude des variations de débit, la situation obtenue est plus propice aux
discontinuités qui sont mal restituées par la modélisation continue.
3.4. RÉSULTATS DE SIMULATIONS 73
13
12
11
10
Cécart− CD (%)
9
8
7
0
100 200 300 400 500 600 700 800 900
µ ( k bits/s)
F IG . 3.6 – Influence de la bande passante avec une variation de débit lissée ( î¬ , î ).
Quel que soit le type de variation de débit, la différence entre les deux modèles devient
négligeable lorsque le rapport bande passante sortante/entrante est supérieur à 13,33%.
275
250
225
200
Cécart− CD (%)
175
150
125
100
75
50
25
0
100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900
µ ( k bits/s)
F IG . 3.7 – Influence de la bande passante avec une forte variation de d ébit ( °± ² ,
³ ± ;´#µ¶ ).
Les résultats obtenus dans ces simulations montrent que le rapport entre la bande passante
sortante et entrante au nœud de congestion est un paramètre important pour la cohérence des
modèles continu et discret. En effet, plus ce rapport est élevé, moins la différence entre les deux
modèles est importante. Notons que ce phénomène est accentué lorsque le protocole utilise des
coefficients ° et ³ impliquant de fortes variations de débit. Les brusques variations paraissent
favoriser les discontinuités et donc creusent l’écart entre les deux modèles.
Nombre de sources. Cet ensemble de simulations a été exécuté en utilisant le réseau présenté
figure 3.1 avec un nombre de nœuds sources · variant de 1 à 25. Les autres paramètres du
74 CHAPITRE 3. COHÉRENCE DISCRET CONTINU
réseau, ainsi que, ceux du protocole, étaient fixés (cf. paragraphe 3.3.2). Les résultats obtenus
sont résumés dans le tableau figure 3.8.
nombre de sources 1 2 3 5 10 25
écart-CD (%) 1,21 0,16 0,00 0,31 0,61 0,12
F IG . 3.8 – Impact du nombre de sources sur la cohérence des modèles continu et discret (°G±
¸ , ³¹± , T ± n).
Le plus gros écart constaté entre les deux modèles est de 1,21% lorsque le réseau est com-
posé d’une source. Lorsque le réseau est composé de plusieurs sources, l’écart mesuré entre
les deux modèles est vraiment très faible (inférieur à 1%). Cet ensemble de simulations laisse
supposer que le nombre de sources n’a pas de réelle influence sur la cohérence des modèles
continu et discret.
β écart-CD
nb < 0.5 <1 < 2,5 <5 < 10 >> 10
6 sources
une
5 deux
dix
4
Les résultats présentés figure 3.9 montrent que la cohérence entre les modèles continu et
discret est proportionnelle au lissage du débit d’émission. En effet, plus le débit est lissé (i.e.,
° petit et ³ grand), plus les différences constatées entre les deux modèles sont faibles. Inverse-
ment, les fortes variations de débit accentuent l’écart entre le modèle discret (propice au régime
3.4. RÉSULTATS DE SIMULATIONS 75
discontinu) et le modèle continu (inadapté aux discontinuités). Notons que plus le nombre de
sources est élevé, moins l’écart entre les deux modèles est important. Ce phénomène est no-
tamment observable lorsque les variations de débits sont brusques. On peut supposer que plus
le nombre de sources est élevé, plus le flot de données en transit sur le lien de congestion sera
º continu » et donc facilement restituable par un modèle continu.
Remarque. Il est intéressant de noter que les résultats obtenus (pour 1, 2 et 10 sources),
confirment ceux présentés dans [13] pour un réseau composé d’une seule source et vérifiant la
condition : °½¼³¹±D¾ .
Taille des paquets (s). Dans cet ensemble de simulations, nous avons évalué l’influence de la
taille des paquets sur la cohérence des comportements observés en continu et discret. Pour ce
faire, nous avons fait varier la taille des paquets de 0,1 ko à 50 ko (cf. paragraphe 3.3.2).
14
12
Cécart− CD (%)
10
0
0 5 10 15 20 25 30 35 40 45 50
Taille des paquets ( k o)
F IG . 3.10 – Influence de la taille des paquets, °±
¸ et ³± .
Les résultats obtenus (cf. figure 3.10) montrent que plus les paquets sont º gros » , plus
la différence entre les modèles continu et discret est marquée. Cette constatation n’est pas
étonnante, car plus les paquets sont petits, plus le comportement du modèle discret s’approche
de celui du modèle continu. En effet, lorsque les paquets ont une petite taille, le flot de données
en transit sur le modèle discret ressemble à un flot continu : les délais inter-paquets sont très
petits.
1.4
1.3 2 sources
1.2 3 sources
1.1 5 sources
1 10 sources
0.9 25 sources
Cécart− CD (%)
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60
Tolér ance en nom br e de paquets
F IG . 3.11 – Influence de la réactivité, °9±
¸ et ³± .
3.5 Conclusion
Bilan. Dans ce chapitre, nous avons étudié la cohérence entre les modèles discret et continu.
Cette étude s’appuie sur la comparaison de simulations discrètes et continues d’un protocole de
transport simplifié dans différentes situations. Les résultats de ces simulations montrent que la
modélisation continue est pertinente pour une grande plage de valeurs des différents paramètres
du réseau et du protocole.
– Bande passante. Le rapport entre la bande passante sortante/entrante du nœud de conges-
tion est un paramètre important. Plus ce rapport est grand (i.e., moins le goulot d’étrangle-
ment est serré) moins l’écart entre les deux modèles est important. Inversement, lorsque
le rapport de bande passante est faible, et que de fortes variations de débit sont imposées
(i.e., ° grand et ³ petit), les deux modèles ont des comportements assez différents.
– Délais de propagation. Les délais de propagation (s’ils sont réalistes) n’ont pas une
grande influence sur les résultats obtenus en discret et en continu. En effet, lorsque le
RTT de la connexion est inférieur à 1,5 s, les différences constatées entre les modèles
discret et continu sont négligeables (écart-CD À 1%).
– Type de variation du débit. La rapidité de la variation du débit est un paramètre im-
portant. Pour garantir une équivalence entre les deux modèles, il faut que les variations
de débit soient douces. Cependant, les fortes variations de débit sont mieux acceptées à
mesure que le nombre de sources augmente.
– Réactivité. La réactivité du protocole ne semble pas avoir une grande influence sur la
cohérence entre les modèles continu et discret. Notons que lorsque le rapport bande pas-
sante sortante/entrante est faible, une faible réactivité (i.e., une forte tolérance T) peut
réduire l’écart entre les modélisations continue et discrète.
– Taille des paquets. La taille des paquets n’a pas une influence significative si ces derniers
ont une taille réaliste (s À 10 ko).
3.5. CONCULSION 77
Perspectives. Ces résultats ont été obtenus avec un protocole simple de type AIMD, mais
nous pensons qu’ils peuvent être extrapolés à d’autres protocoles de transport de type AIMD.
Cette étude a permis de déterminer certaines limites autorisant une utilisation pertinente de la
modélisation continue de réseaux à commutation de paquets.
Notons que l’intérêt principal de la modélisation continue réside dans la simplification de
l’étude des réseaux qu’elle apporte. En effet, un certain nombre de problèmes de réseaux à
commutation de paquets (comme le contrôle de congestion) peut être réduit à une étude de
systèmes dynamiques (en boucle fermée ou non) équivalents. La cohérence des résultats obtenus
dans les domaines du continu et du discret devrait permettre d’élargir la piste des recherches
visant à améliorer le contrôle de congestion. En effet, les résultats obtenus en continu [83,
118, 22] pouvant être transposés en discret sans que les comportements (observés en continu)
ne se détériorent, de nouvelles perspectives s’ouvrent pour le contrôle de congestion dans les
protocoles de transport.
L’approximation continue devrait également rendre possible l’exécution de simulations de
plus en plus complexes. En effet, dans [67], les auteurs montrent que lorsque le nombre de
paquets générés devient important (i.e., nombre de nœuds et de sources élevé), les simula-
tions utilisant un modèle continu sont plus performantes que celles effectuées en discret. La
modélisation continue devrait donc autoriser des simulations à large échelle, qui sont actuelle-
ment irréalisables (en terme de puissance de calcul nécessaire) avec des simulateurs à événe-
ments discrets tel que ns.
78 CHAPITRE 3. COHÉRENCE DISCRET CONTINU
79
Chapitre 4
Objectifs. La construction d’un correcteur simple (issu des techniques de contrôle) ainsi que
sa validation permettront de privilégier certaines pistes et de les approfondir afin d’améliorer les
techniques de contrôle de congestion. Le correcteur ainsi créé devra répondre aux spécifications
suivantes :
– Rapidité. Le correcteur doit permettre à la source d’atteindre un débit optimal (utilisation
complète de la bande passante disponible) en un minimum de temps. Cette caractéristique
permet de garantir que les ressources du réseau seront utilisées au mieux.
– Prévention. Le correcteur doit avoir un comportement préventif), ce qui signifie que
le débit des sources doit être réduit avant que les files d’attente des routeurs ne soient
saturées. Cette caractéristique permet de réduire le nombre de pertes de paquets et donc
de retransmissions (entraı̂nant une sous-utilisation du réseau).
– Constance du débit. Le correcteur doit permettre à la source d’émettre à un débit variant
le moins possible lorsque le réseau se trouve en régime permanent (la charge du réseau est
stabilisée). En effet, les oscillations du débit d’émission peuvent engendrer des variations
du débit de réception et donc affecter la qualité de réception dans le cas de la transmission
d’un flot temps réel. De plus, les oscillations du débit d’émission nuisent à la stabilité du
réseau.
– Réaction aux perturbations. Une fois le régime permanent atteint, le correcteur doit
être capable de réagir à des perturbations (i.e., arrivée d’une nouvelle connexion). Cette
réaction doit être assez rapide (de manière à ne pas saturer le réseau) et adaptée à la
perturbation (afin d’éviter des réductions de débit inutiles). Autrement dit, le correcteur
doit permettre aux sources d’adapter leur débit à la charge du réseau.
Ces spécifications donneront lieu à la création d’un correcteur multi-critère. Un tel correc-
teur a deux objectifs globaux : optimiser l’utilisation des ressources du réseau (rapidité, réaction
aux pertubations, prévention), et accroı̂tre la qualité de réception du destinataire (rapidité, sta-
bilité, réaction aux perturbations).
aux objectifs fixés car la source doit plus ou moins réduire son débit en fonction de la
gravité de la congestion.
– Action º dérivée » . Elle permet d’anticiper les variations du système en se basant sur le
sens et la rapidité de variation de la sortie. Cette composante permet d’améliorer le temps
de réponse d’un système lors d’un changement de consigne ou lors de l’apparition d’une
perturbation. L’inconvénient de cette composante est qu’elle engendre fréquemment des
dépassements de consigne et donc des oscillations de la variable d’entrée (le débit d’émis-
sion dans le cadre du contrôle de congestion). Les oscillations du débit d’émission pou-
vant entraı̂ner l’instabilité du réseau, la composante º dérivée » ne sera pas utilisée.
– Action º intégrale » . Elle permet de tenir compte de l’historique des variables de sortie
du système. Cette composante permet d’améliorer la stabilité du système au détriment de
la rapidité de réaction. Dans le cas du contrôle de congestion, la composante º intégrale »
permettra à la source d’émettre avec un débit plus lissé : les erreurs (écart entre le RTT ins-
tantané et la consigne) de courte durée auront moins d’influence sur le débit d’émission.
Cette action semble bien adaptée au contrôle de congestion, car elle permet d’accroı̂tre la
stabilité du système.
4.1.2 Variables
Le choix des variables pour construire un correcteur PI dans le cadre du contrôle de conges-
tion est assez restreint. En effet, il n’existe qu’une seule variable de commande, le débit d’émis-
sion et trois variables de sortie, le marquage des paquets en cas de congestion, le délai d’ache-
minement, et le débit de réception.
Description de ces variables :
– Débit d’émission. Pour la source, le seul moyen d’agir sur une congestion est d’ajuster
son débit d’émission. En pratique, ce débit peut être ajusté de deux manières, en jouant
sur :
– la taille d’une fenêtre d’émission (à la manière de TCP)
– la durée du délai inter-paquets (à la manière de RAP ou de TFRC).
– Marquage en cas de congestion. L’information apportée par l’option ECN est incompa-
tible avec l’utilisation d’un correcteur proportionnel car elle ne permet pas de º quanti-
fier » l’importance de la congestion.
En effet, l’option ECN étant intrinsèquement discrète, elle permet uniquement de spécifier
si le réseau est congestionné ou non sans en indiquer l’état précis. Cette variable ne sera
donc pas utilisée pour la construction du correcteur PI.
82 CHAPITRE 4. PRIMO
– Délai d’acheminement. Le RTT est généralement utilisé pour représenter le délais d’ache-
minement des données. De cette variable, on peut déduire l’état de congestion du réseau ;
plus ce délai est important (i.e., plus les files d’attente des routeurs sont pleines), plus le
réseau est congestionné.
Malheureusement, le RTT ne permet pas de différencier les congestions se trouvant dans
le sens retour (chemin emprunté par les acquittements) de celles se trouvant dans le sens
aller (partie du chemin sur laquelle la source peut avoir une influence). La source ne
pouvant agir (en ajustant son débit d’émission) que sur les files d’attente du chemin dans
le sens aller, elle a besoin de pouvoir différencier les congestions se trouvant dans le sens
aller de celles se trouvant dans le sens retour.
À la manière du ROTT de PASTRA (cf. paragraphe 2.4.3), nous utiliserons une variable
dérivée du RTT : le FTT (Forward Trip Time). Cette variable représente le temps que
met un paquet pour aller de la source à la destination et est mesurée par le récepteur.
Le FTT permet donc d’estimer l’état de congestion du chemin emprunté pour aller de
l’émetteur au récepteur et ainsi de s’affranchir des erreurs d’estimation dues au sens retour
du chemin.
Pour mesurer le FTT, il faut que la source indique dans les paquets leur heure d’émission.
À la réception de ces paquets, la machine destinataire soustrait l’heure de réception à celle
d’émission pour obtenir le FTT. La source récupérera la valeur du FTT via les acquitte-
ments.
– Débit de réception. Comme le FTT, le débit de réception est calculé par le récepteur
et fourni à la source via les acquittements. De cette variable, on peut déduire l’état de
congestion du chemin emprunté dans le sens aller. En effet, plus le débit de réception
diminue (i.e., le nombre de paquets de différentes connexions contenus dans les files
d’attente augmente), plus le réseau est congestionné.
Le marquage des paquets n’étant pas compatible avec l’action º proportionnelle » , les va-
riables de sorties utilisées pour la construction du correcteur seront le délai d’acheminement
(i.e., le FTT) et le débit de réception.
Remarque 1 Les horloges des deux machines (source et destinataire) n’étant pas synchro-
nisées, le FTT ne peut pas être mesuré de manière exacte. Cette imprécision ne pose pas de
problème car les correcteurs se basent sur les variations et non sur les valeurs. En revanche, si
les horloges n’ont pas la même précision, la mesure du FTT risque de croı̂tre ou de décroı̂tre
(suivant que l’horloge du récepteur est plus rapide ou moins rapide que celle de l’émetteur) mo-
notonement. Mais cette dérive des horloges est négligeable dans la plupart des cas. Notons tout
de même qu’elle peut être calculée et compensée grâce à un algorithme de type ESRS [114].
après l’initialisation, un FTT inférieur au FTT initial venait à être mesuré (cas où le réseau était
congestionné lors de l’initialisation), le FTT initial prendrait pour valeur cette dernière mesure.
Lorsque l’émetteur reçoit l’acquittement contenant le FTT initial, le FTT consigne (noté
FTT-cons), est calculé. À la manière de TCP Vegas [18], un FTT consigne légèrement supérieur
au FTT initial permettra de détecter tout accroissement de la bande passante disponible. En effet,
supposons que deux connexions aient des FTTs consignes idéaux (de sorte que leurs paquets
ne soient jamais stockés dans les files d’attente), si l’une de ces deux connexions s’arrête, le
FTT instantané de l’autre restera le même et la bande passante libérée ne sera pas réutilisée. En
revanche, si le FTT consigne avait été légèrement supérieur à sa valeur idéale (de sorte qu’au
moins l’une des files du chemin emprunté ne soit pas complètement vide), à l’arrêt de l’une
des deux connexions, le FTT instantané de l’autre aurait diminué. Or, une réduction du FTT
instantané signale une diminution de la taille de l’une des files d’attente et donc une libération
de la bande passante. Cette libération de bande passante doit donc entraı̂ner l’augmentation du
débit d’émission et une utilisation totale de la bande passante disponible.
À la réception du second paquet, le récepteur calcule le débit de réception (noté ÁÃÂLÄyÅ ) de la
manière suivante :
taille d’un paquet
ÁÃÂLÄyÅƱdélai inter-paquets mesuré à la date Ä
(4.1)
Le calcul initial du débit de réception permet d’estimer quelle est la bande passante initia-
lement disponible. En effet, la mesure du délai séparant la réception des deux premiers paquets
reflète le temps qu’ils ont passé dans les files d’attente (lié au temps de mise sur le réseau ou au
taux de remplissage des files) et donc la bande passante disponible.
À la réception du premier acquittement (contenant le FTT initial ainsi que la première me-
sure du débit de réception), la source calcule le FTT consigne et commence à émettre des
données. Les données sont émises avec un débit d’émission égal au débit de réception contenu
dans l’acquittement (noté y-reçuÇ ). L’emploi du débit de réception comme débit d’émission
permet d’utiliser immédiatement toute la bande passante disponible.
Une fois la phase d’initialisation terminée, chaque réception d’un paquet de données en-
traı̂ne l’émission d’un acquittement contenant la dernière mesure du FTT et du débit de récep-
tion. Ces valeurs contenues dans l’acquittement sont ensuite utilisées par l’émetteur qui régulera
son débit en fonction de l’état de congestion du réseau (i.e., du FTT instantané noté FTT-reçu Ç
et du FTT consigne).
4.2.1 Principe
Dans cette première version du correcteur, le calcul du débit d’émission se fait uniquement
grâce à l’erreur constatée entre le FTT instantané et le FTT consigne. Ce correcteur proportion-
84 CHAPITRE 4. PRIMO
Débit précédent
FTT consigne
écart FTT ∗ α + Débit d’émission Débit de réception
- + Modèle du réseau
+ FTT instantané
FTT instantané
nel peut être représenté très simplement (cf. figure 4.1). Dans la figure 4.1, le gain ° représente
le coefficient de proportionnalité (qui est constant). Plus ce gain sera élevé (en valeur absolue),
plus les réactions aux variations du FTT engendreront de forts ajustements du débit d’émission.
Le débit d’émission est donc obtenu de la manière suivante :
Débit d’émission ± Débit précédent ÈÉ°½¼½Â FTT instantané Ê FTT consigneż¹Ë (4.2)
Le paramètre Ë représente une constante exprimée en kbit/s Ì . Cette constante est obtenue
en divisant le débit de réception initial par le FTT initial et elle permet d’obtenir une équation
homogène. Le º Débit précédent » représente le débit qu’avait la source un RTT plus tôt. L’uti-
lisation du º Débit précédent » permet de corriger le débit ayant entraı̂né la mesure du FTT
instantané (et donc l’estimation de l’état de congestion du réseau). Dans le cas où une conges-
tion est détectée, une des idées est d’adapter le débit d’émission en fonction du débit ayant
créé cette congestion (débit de la source un RTT plus tôt). De manière plus formelle, l’équation
obtenue est la suivante :
4.2.2 Évaluation
Pour étudier les performances de ce correcteur, des simulations utilisant la topologie pré-
sentée figure 4.2 ont été effectuées. Afin de simplifier l’étude, dans le cadre de simulations sous
matlab (en continu), les files d’attente seront considérées de taille infinie.
Perturbation
5 kbits/s 2 kbits/s
S C D
F IG . 4.2 – Topologie utilisée pour les simulations avec S : nœud source, C : nœud de congestion,
D : nœud destinataire.
Simulations sans perturbation. Dans ces premières simulations, la perturbation arrivant sur
le nœud congestionné est nulle. En utilisant un FTT consigne dépassant de 3% le FTT initial et
un gain ° de -1, les résultats obtenus sont particulièrement mauvais (cf. figure 4.3). En effet, le
4.2. CORRECTEUR BASÉ SUR LE FTT 85
débit d’émission devrait théoriquement se stabiliser autour de 2 kbits/s. Or, dans cette simula-
tion, il oscille très fortement entre 0 kbit/s et 4 kbits/s. Ces oscillations sont dues à la consigne
qui a une valeur trop élevée (dépassement de 3% du FTT initial) ainsi qu’au gain qui est trop
grand.
3.5
2.5
Débit en kbits/s
1.5
0.5
0
0 1000 2000 3000 4000 5000 6000
Temps en ms
F IG . 4.3 – Première simulation utilisant un correcteur proportionnel avec une consigne ayant
un dépassement de 3% et un gain de -1.
En utilisant un FTT consigne ayant la même valeur que le FTT initial (soit 0% de dépas-
sement), le débit d’émission est totalement stable et vaut 2 kbits/s tout au long de la simulation
(cf. figure 4.4). L’utilisation d’un FTT consigne sans dépassement va entraı̂ner des problèmes
de détection de bande passante disponible. Il faudra donc employer une autre technique pour
découvrir les libérations de bande passante.
F IG . 4.4 – Simulation utilisant un correcteur proportionnel avec une consigne sans d épassement
et un gain de -1.
permettant de détecter les augmentations de bande passante disponible (i.e., libération de bande
passante à l’arrêt d’une connexion). Ces simulations ont également montré que l’utilisation du
FTT comme seule variable de contrôle était insuffisante. En effet, avec ce correcteur, il est
impossible de stabiliser le débit d’émission lorsqu’une perturbation apparaı̂t.
4.3.1 Principe
Lorsque le FTT instantané devient supérieur au FTT consigne, cela signifie qu’au moins
l’une des files d’attente du chemin emprunté n’est pas vide. Or, si au moins une file d’at-
tente contient des paquets, le débit de réception représente la bande passante disponible pour la
connexion (i.e., le débit auquel les paquets de la connexion sortent de la file non vide). Le débit
d’émission de la source pourrait donc prendre la valeur du débit de réception, ce qui permettrait
d’utiliser au mieux la bande passante disponible sans saturer le réseau. L’introduction du débit
de réception pour calculer le débit d’émission en phase de congestion semble donc judicieuse.
Dans cette évolution du correcteur, l’écart entre le FTT instantané et la consigne (l’erreur)
sera toujours utilisé pour estimer l’état de congestion. Dans le cas où l’erreur est positive (i.e.,
une congestion est en train de se former), le débit d’émission sera calculé grâce à l’erreur
constatée entre le débit de réception et le débit d’émission un RTT plus tôt. En cas de conges-
tion, le débit d’émission sera donc obtenu de la manière suivante :
Débit d’émission ± Débit précédent ÈÉ° débit ¼½Â Débit précédent Ê Débit réception Å (4.4)
4.3. INTRODUCTION DU DÉBIT DE RÉCEPTION 87
Le gain ° débit permet de faire converger plus ou moins rapidement le débit d’émission vers
le débit de réception. De manière plus formelle, l’équation obtenue est la suivante :
4.3.2 Évaluation
Afin d’étudier l’impact de l’introduction du débit de réception dans le calcul du débit
d’émission, des simulations ont été effectuées dans le même contexte que précédemment : une
perturbation constante de 1 kbit/s commence et arrête d’émettre en même temps que la source
utilisant le correcteur.
Les résultats obtenus (cf. figure 4.6) avec ce correcteur semblent au premier abord excel-
lents : le débit de la source se stabilise rapidement à 1 kbit/s.
Cependant, on peut remarquer que le débit de la source n’est jamais inférieur à 1 kbit/s, ce
qui signifie que la file ne se videra jamais. En effet, au début de la connexion, la source émet à
1,3 kbits/s et la perturbation émet à 1 kbit/s, le débit du lien congestionné étant de 2 kbits/s et la
file d’attente se remplit. Lorsque le débit de la source atteint 1 kbit/s, la taille de la file d’attente
cesse d’augmenter, mais ne diminue pas car la somme des débits entrants au nœud congestionné
est équivalente au débit de sortie (2 kbits/s). Pour que la file puisse se vider, il faudrait que la
88 CHAPITRE 4. PRIMO
1.8
1.6
1.4
1.2
Débit en kbits/s
0.8
0.6
0.4
0.2
0
0 1000 2000 3000 4000 5000 6000
Temps en ms
somme des débits entrant soit inférieure au débit de sortie du nœud congestionné (i.e., que le
débit de la source soit inférieur à 1 kbit/s).
Le fait de ne jamais vider la file d’attente pose des problèmes évidents de saturation du
réseau. À chaque arrivée d’une nouvelle connexion, la taille de la file va augmenter avant de se
stabiliser ou de saturer. Cette situation n’est donc pas envisageable dans un environnement réel
où les files d’attente ont une taille finie. L’ajout du débit de réception permet de stabiliser le
débit de la source lorsqu’une perturbation apparaı̂t, mais le correcteur doit encore être modifié
afin de répondre aux contraintes d’un environnement réel (i.e., files d’attente de taille finie).
4.4.1 Principe
Pour résoudre le problème du remplissage de la file d’attente, il suffit de faire converger le
débit d’émission vers une valeur légèrement inférieure à la bande passante disponible.
Sachant que lors des phases de congestion, le débit de réception représente la bande passante
disponible, il suffit que la source ait un débit d’émission inférieur à celui de réception pour que
4.4. RÉDUCTION DE LA TAILLE DE LA FILE D’ATTENTE 89
la file d’attente se vide. Une fois la file d’attente vidée, le débit d’émission doit augmenter
de manière à utiliser toute la bande passante disponible. Pour cela, le débit d’émission doit
converger vers une valeur légèrement supérieure au débit de réception.
Notons que cette augmentation du débit d’émission permet également de résoudre le pro-
blème de détection de bande passante nouvellement disponible engendré par l’utilisation d’un
FTT consigne sans dépassement (cf. section 4.2).
L’augmentation du débit d’émission risque d’entraı̂ner la création de º petites congestions »
(i.e., léger dépassement du FTT consigne) et de nouvelles réductions du débit d’émission. Pour
éviter que les oscillations du débit d’émission ne soient trop fortes, l’importance de la conges-
tion doit être prise en compte lors de la réduction du débit.
À la manière de TCP Vegas, pour maintenir le débit d’émission légèrement supérieur à la
bande passante disponible, trois bornes (erreurinf , erreursup1 et erreursup2 ) relatives à l’erreur entre
le FTT instantané et le FTT consigne sont définies. Ces trois bornes sont toutes supérieures à
zéro. Partant de là, on peut distinguer quatre cas :
– Lorsque l’erreur constatée entre le FTT consigne et le FTT instantané est inférieure à la
borne erreurinf , le débit d’émission augmentera.
– Inversement, si l’erreur constatée entre le FTT consigne et le FTT instantané est comprise
entre les bornes erreursup1 et erreursup2 (i.e., légère congestion), le débit d’émission sera
légèrement réduit.
– De même, si l’erreur constatée est supérieure à la borne erreursup2 (i.e., forte congestion),
le débit sera fortement réduit.
– Enfin, si l’erreur constatée est comprise entre les bornes erreurinf et erreursup1 , le débit
d’émission restera inchangé.
Ces quatre cas sont résumés d’un manière formelle dans le système d’équations suivant :
ÕUÖÛ·Ã×ÚÙÞÝ
Avec :
Forte congestion
ÕUÖÛ·Ã× Ý Faible congestion
ÕUÖÛ·Ã×'Ü Ý Risque de sous utilisation du réseau
Avec :ÒÔ
Ò Sinon
4.4.2 Évaluation
Le contexte de simulation précédent ne permettant pas d’évaluer la totalité des améliorations
apportées au correcteur (i.e., découverte de bande passante disponible), un nouveau contexte
a donc été utilisé. Ce nouveau cas d’étude permet d’apprécier la réduction de la taille de la
file d’attente ainsi que la détection de la bande passante disponible. Au lieu de démarrer et
de s’arrêter en même temps que la source utilisant le correcteur proportionnel, la perturbation
constante de 1 kbit/s démarre 1 s après la source (à t=1000) et s’arrête 2 s avant la source (à
t=3000).
Les résultats obtenus (cf. figure 4.7) sont assez satisfaisants. La source réagit assez rapide-
ment à l’apparition de la congestion sans trop réduire son débit. En effet, le débit de la source est
légèrement inférieur à 1 kbit/s, ce qui permet à la file d’attente de se vider. Une fois la file d’at-
tente vidée, la source tente d’augmenter son débit d’émission, ce qui entraı̂ne la création d’une
º petite congestion » immédiatement résorbée (cf. figure 4.7, oscillation du débit d’émission
située juste avant t = 3000).
Le surcroı̂t de bande passante disponible (à l’arrêt de la perturbation) est immédiatement
détecté par la source et le débit augmente jusqu’à atteindre 2 kbits/s. De fortes oscillations sont
visibles durant la période transitoire. En effet, lorsque la source cherche à utiliser pleinement
la bande passante disponible, son débit d’émission varie fortement. En régime permanent (i.e.,
lorsque le réseau est stable), de petites oscillations du débit d’émission sont observables. Ces
oscillations sont dues aux tentatives d’augmentation de débit.
Les améliorations apportées au correcteur permettent de vider les files d’attente après une
période de congestion et donc de répondre aux contraintes d’un environnement réel (i.e., files
4.5. INTRODUCTION DE LA COMPOSANTE º INTÉGRALE » 91
2.5
1.5
Débit en kbits/s
0.5
0
0 1000 2000 3000 4000 5000 6000
Temps en ms
d’attente de taille finie). Ces améliorations ont également résolu le problème de détection de
l’augmentation de la bande passante disponible. Cependant, afin de réduire les fortes oscilla-
tions constatées lors de la récupération de bande passante, le correcteur doit être encore modifié.
4.5.1 Principe
Comme précisé dans le paragraphe 4.1.1, l’action º intégrale » permet de prendre en compte
l’historique de la connexion. Dans le cas du contrôle de congestion, le passé de l’état de conges-
tion du réseau (i.e., l’erreur constatée entre le FTT instantané et le FTT consigne) peut être
utilisé afin de lisser le débit d’émission.
L’action º intégrale » s’appliquera donc à la mesure de l’erreur entre le FTT consigne et le
FTT instantané. Les systèmes d’équations 4.6 et 4.7 restent donc les mêmes ; seul le test (FTT
instantané - FTT consigne) utilisé pour connaı̂tre l’état de congestion du réseau sera modifié.
Le FTT instantané utilisé pour effectuer ce test sera celui récupéré par la source il y a é¼
RTT secondes. La constante é représente le retard pur, qui permet de prendre en compte les
informations avec plus ou moins de retard. Le fait d’utiliser des informations avec un certain
92 CHAPITRE 4. PRIMO
retard permet à la source de réagir moins fortement aux variations de courtes durées. L’introdu-
ction de la composante º intégrale » devrait donc apporter de la stabilité au réseau.
4.5.2 Évaluations
Pour estimer l’amélioration apportée par l’ajout de la composante º intégrale » , des simula-
tions ont été effectuées dans le même cas d’étude que précédemment.
Les résultats obtenus (cf. figure 4.8) montrent que l’ajout de l’action º intégrale » a pour
effet de lisser le débit d’émission. En effet, dans la simulation précédente (cf. figure 4.7), des
oscillations du débit d’émission étaient présentes lors de la récupération de bande passante
libérée. En utilisant la composante º intégrale » , ces oscillations disparaissent. En revanche,
les oscillations constatées, lorsque le débit est stabilisé, sont quasiment identiques que l’action
º intégrale » soit utilisée ou non. L’action º intégrale » permet donc de lisser le débit dans
certains cas sans toutefois résoudre tous les problèmes d’oscillations. Notons que les oscillations
restantes sont très faibles et ne devraient donc pas perturber la stabilté du réseau.
2.5
1.5
Débit en kbits/s
0.5
0
0 1000 2000 3000 4000 5000 6000
Temps en ms
Le code source (matlab) du correcteur obtenu est présenté dans l’annexe C.1.
4.6 Discrétisation
Dans cette section, nous décrivons les modifications apportées au correcteur continu afin
de l’intégrer à un protocole de transport (dont le code source est disponible en annexe C.2).
4.6. DISCRÉTISATION 93
Le principe de fonctionnement général reste le même. Seules quelques différences liées aux
caractéristiques des réseaux à commutation de paquets sont notables.
La gestion du débit d’émission se fera grâce à un délai inter-paquets ( ׯêìë ). Lors de l’émission
du ê ème paquet, si le débit de la source est Ítí , alors le délai séparant le ê ème du êîÈïÙ ème paquet
(noté ׯêìë í ) sera calculé de la manière suivante :
taille du ê
ׯêìë í ±
ème
ÍÚí (4.8)
4.6.1 Initialisation
En continu, lors de l’initialisation, la source envoie deux paquets avec un délai inter-paquets
nul afin d’estimer la bande passante disponible. Dans un réseau à commutation de paquets,
il est risqué d’estimer la bande passante disponible en n’envoyant que deux paquets. En ef-
fet, il est possible que deux paquets d’un même flot (envoyés avec un délai inter-paquets nul)
traverse toutes les files d’attente sans jamais qu’un seul paquet d’un autre flot (empruntant le
même chemin) ne s’intercale entre eux. À la réception de ces deux paquets, le destinataire
aura l’impression d’être seul sur le chemin emprunté. Il estimera donc une part de bande pas-
sante disponible égale à la bande passante du plus petit lien traversé. Cette surestimation de
la bande passante disponible risque d’entraı̂ner la saturation des files d’attente lors du passage
en régime permanent (utilisation du débit de réception initial comme débit d’émission). Inver-
sement, si plusieurs paquets d’un même flot s’intercalent entre les deux paquets initialement
émis, le récepteur sous-estimera la bande bande passante disponible. Cette sous-estimation de
la bande passante disponible risque d’entraı̂ner une situation d’inéquité entre les flots.
Pour réduire les risques d’une mauvaise estimation de la bande passante disponible, l’émet-
teur enverra une rafale de quatre paquets avec un délai inter-paquets nul. Notons que le nombre
de paquets envoyés dans cette rafale ne doit pas être trop important, car cela risquerait de saturer
les files d’attente si plusieurs connexions démarraient simultanément.
Lorsque les quatre paquets de la rafale sont reçus, le récepteur calcule le débit de réception
initial (i.e., la bande passante disponible pour le flot). Le débit de réception initial représentera
la moyenne des débits (i.e., des délais inter-paquets) auxquels ont été reçus les quatre paquets.
L’utilisation d’une moyenne permet de réduire les risques de sur et/ou sous-estimation de la
bande passante disponible.
Pour estimer la bande passante disponible, le récepteur commence par calculer le temps
écoulé entre la réception du premier et du dernier paquet de la rafale (noté temps-écoulé) :
temps-écoulé ± heure de réception du 4ème paquet Ê heure de réception du 1er paquet (4.9)
La bande passante disponible est ensuite calculée en divisant la quantité de données reçues
entre la réception du premier et du dernier paquet (trois paquets) par le temps écoulé entre ces
deux réceptions :
Une fois la bande passante disponible estimée par le récepteur, ce dernier envoie à l’émetteur
un acquittement. Cet acquittement contient dans son en-tête la bande passante disponible ainsi
que le FTT initial calculé lors de la réception du premier paquet. À la réception de cet ac-
quittement, la source initialise le FTT consigne, ainsi que le débit d’émission avec les valeurs
contenues dans l’en-tête.
La réception de cet acquittement permet également de calculer le RTT initial et ainsi d’ini-
tialiser le º retard » (RET) utilisé pour l’action º intégrale » (cf. section 4.5) :
RET ±ðéñ¼ RTT initial ¼gÙ
Comme nous l’avons vu précédemment, l’action º intégrale » a besoin de connaı̂tre la va-
leur qu’avait la variable de contrôle (i.e., l’erreur constatée entre le FTT instantané et le FTT
consigne) RET ms plus tôt. Un tableau permettant de stocker temporairement les º RET »
dernières valeurs de l’erreur est donc créé.
Durant la phase d’initialisation, aucune perte n’est tolérée. Ainsi si l’un des paquets ou
l’acquittement est perdu, cette phase sera intégralement relancée.
que le débit de réception mesuré soit supérieur au débit d’émission. Cela entraı̂ne une augmen-
tation à la place d’une réduction du débit. Ces mesures erronées du débit de réception sont dues
à un effet de Clustering dans les files d’attente. Il peut arriver que des paquets envoyés avec un
délai inter-paquets important se retrouvent placés de manière contiguë dans une file d’attente
(i.e., aucun paquet ne s’est intercalé entre eux et la file n’est pas vide). Si le débit du lien situé
après cette file est supérieur au débit d’émission des paquets, leur délai inter-paquets à la sortie
de la file sera inférieur à celui qu’ils avaient lors de leur émission. Cette réduction du délai inter-
paquets engendrera une mesure erronée du débit de réception (qui sera plus important que celui
d’émission). Ces cas de figure sont assez rares mais lorsqu’ils surviennent, les performances du
contrôle de congestion sont fortement dégradées. De cette manière, lorsqu’une mesure erronée
du débit de réception est détectée, elle est ignorée et le débit d’émission reste inchangé. Notons
qu’inversement, une mesure erronée du débit de réception peut entraı̂ner une réduction du débit
d’émission alors qu’une libération de bande passante avait été détectée. Le même mécanisme
visant à ignorer les mesures erronées a donc été mis en place lors des phases d’augmentation de
débit (si nouveau débit À débit alors ...)
Lors d’une augmentation de la bande passante disponible, il peut arriver que le débit de
réception soit très supérieur à celui d’émission (cf. effet de Clustering). Un mécanisme de limi-
tation a donc été mis en place (si nouveau débit ó 1,1 ¼ débit alors ...) afin d’éviter un aug-
mentation trop importante et inappropriée du débit d’émission pouvant entraı̂ner l’instabilité du
réseau. Ce mécanisme permet de plafonner l’augmentation du débit d’émission : le nouveau
débit d’émission ne pourra pas dépasser de plus de 10% l’ancien débit d’émission. Cette limita-
tion évite de fortes oscillations du débit d’émission lors de la détection d’une augmentation de
la bande passante disponible.
En discret, le lissage du débit d’émission calculé par le correcteur étant moins bon, un
second mécanisme de lissage a été ajouté. En effet, une moyenne pondérée du débit d’émission
est calculée en utilisant le débit actuel (débit qu’avait la source lors de l’émission du dernier
paquet), le nouveau débit ainsi qu’un coefficient de pondération (³ ). Notons que plus ³ sera
grand ( ä³ôäåÙ ), plus les variations de débit seront atténuées et le débit d’émission lissé.
4.7 Conclusion
Les protocoles de transport basent essentiellement le contrôle de congestion sur des règles
empiriques et la plupart de ces protocoles utilisent les pertes de données pour s’informer sur
l’état de congestion du réseau [6, 56, 42]. Cette méthode de détection n’est pas préventive ; elle
induit la création de congestions au lieu de les éviter. L’une des méthodes permettant de créer
un contrôle de congestion préventif est d’utiliser la modélisation continue. L’utilisation d’un
modèle continu autorise une étude simplifiée du comportement du réseau.
Le correcteur construit dans cette section répond aux objectifs que nous nous étions fixés :
98 CHAPITRE 4. PRIMO
Perspectives. Le correcteur décrit dans ce chapitre pourrait donner lieu à la définition d’un
correcteur º adaptatif » , dont la loi d’adaptation serait définie par l’état du réseau. Ce type de
correcteur permet d’ajuster la valeur des coefficients d’augmentation et de réduction du débit
d’émission en fonction de l’état du réseau (i.e., de la loi d’adaptation).
Le protocole de transport Primo présenté dans ce chapitre n’implémente pas de mécanisme
de fiabilité. En effet, actuellement lorsqu’un paquet est perdu il n’est pas retransmis. Dans le
cadre d’une transmission vidéo, cette fonctionnalité n’a pas d’importance. En revanche, si l’on
souhaite utiliser Primo pour transmettre des fichiers, il faudra ajouter un mécanisme fiabilisant
le transport des données. Notons également que, pour l’instant, Primo n’implémente pas de
mécanisme de Piggybacking. Un tel mécanisme permet d’envoyer des données dans les acquit-
tements et ainsi d’optimiser la transmission des données.
Si Primo devait être implémenté dans un environnement réel, ces deux fonctionnalités se-
raient indispensables. Mais dans le cadre de notre étude, portant uniquement sur les mécanismes
de contrôle de congestion, ces aspects ne sont pas nécessaires et, par conséquent, ils n’ont pas
été implémentés.
99
Chapitre 5
Dans ce chapitre, nous développons une méthode permettant d’évaluer des performances du
contrôle de congestion d’un protocole de transport. Pour commencer, différents modes d’éva-
luation sont décrits dans la section 5.1, les avantages et les inconvénients de chacun y sont
soulignés. Puis, dans la section 5.2, les origines, la structure et le fonctionnement du simulateur
ns sont brièvement décrits. Les paramètres de simulations sont ensuite détaillés dans la sec-
tion 5.3. Pour finir, la section 5.4 décrit les critères retenus pour évaluer les performances des
mécanismes de contrôle de congestion.
etc. Les résultats obtenus lors de tests sur Internet sont généralement difficiles à exploiter,
tant le nombre de paramètres pouvant influer sur un protocole est important. Cependant,
afin d’éviter les graves conséquences qu’aurait le déploiement d’un º mauvais » protocole
sur Internet, les tests à large échelle (Internet) sont indispensables.
Le test en environnement réel est donc un mode d’évaluation apportant beaucoup de préci-
sions et garantissant l’exactitude des résultats obtenus. Cependant si ces tests sont uniquement
effectués sur un réseau privé, les résultats obtenus ne seront valables que pour ce réseau. En ef-
fet, les conditions rencontrées sur un réseau privé ne sont pas forcément représentatives de celles
rencontrées dans l’ensemble des réseaux privés et encore moins à celles d’Internet. De plus, ce
mode d’évaluation est difficile à mettre en œuvre, car la phase de développement qu’il nécessite
est vraiment conséquente (remplacement d’une couche protocolaire dans un système d’exploi-
tation). De plus, dans le cas de tests sur un réseau à grande échelle (i.e., Internet), les résultats
sont difficiles à exploiter car ils dépendent d’un grand nombre de paramètres non maı̂trisés.
Ce genre de tests est donc généralement effectué après avoir validé le nouveau protocole par
simulations ou par émulations (i.e., dans des environnements où les paramètres influents sont
maı̂trisés).
5.1.2 Simulations
La simulation consiste à recréer un environnement de tests artificiel grâce à un logiciel.
Cet environnement artificiel permettra d’effectuer diverses expériences irréalisables dans un
environnement réel (coût financier, maı̂trise des paramètres, niveau d’abstraction du tests, etc.).
Cette méthode est de loin la plus utilisée dans les études visant à évaluer les performances des
protocoles. Les simulateurs les plus répandus sont OpNET [87], x-sim [17] et ns [86]. Ils sont
activement supportés et de nombreuses améliorations y sont régulièrement apportées. Ce type
d’évaluation présente tout d’abord un avantage économique car elle ne nécessite qu’une simple
machine et un logiciel de simulation (qui dans le cas de ns est gratuit). Ce genre d’évaluation
permet également de tester un grand nombre de modèles : topologies, capacités des équipements,
protocoles utilisés, etc. Cette souplesse dans la création des scénarios de simulation permet
d’envisager un grand nombre de situations, ce qui n’est pas le cas avec le mode d’évaluation
précédent. De plus, la récupération et l’exploitation des résultats sont généralement très simples
et permettent une interprétation aisée (tous les paramètres de simulation étant maı̂trisés). La
simulation semble donc être une solution idéale permettant de modéliser relativement aisément
des situations qui peuvent apporter des preuves pertinentes de l’efficacité d’un protocole.
Cependant, il est nécessaire de nuancer ce tableau qui semble parfait. Malgré les avantages
indéniables de la simulation, il apparaı̂t que cette méthode souffre de certains inconvénients. Par
exemple, les protocoles utilisés dans les simulateurs ne reflètent pas exactement le comporte-
ment des protocoles implémentés dans les systèmes d’exploitation (cf. interprétation de RFC).
De plus, de par la diversité des situations que l’on peut trouver sur Internet, il est impossible de
définir des scénarios de simulations (topologies, paramètres réseau, traffic, etc.) reflétant exac-
tement la réalité [38]. Les résultats obtenus par la simulation doivent donc être pris comme une
indication pertinente du comportement d’un protocole et non comme une représentation exacte
de son comportement en environnement réel. Ce mode d’évaluation a donc de nombreux avan-
tages, mais il faut garder à l’esprit qu’une simulation ne représentera jamais parfaitement la
réalité.
102 CHAPITRE 5. MÉTHODE D’ÉVALUATION DES PERFORMANCES
5.1.3 Émulation
Une application courante de l’émulation est de transformer une machine disposant de plu-
sieurs interfaces réseau en un routeur grâce à des outils logiciels. Il est alors possible de connec-
ter cette machine à plusieurs réseaux pour qu’elle agisse exactement comme le ferait un véritable
routeur. Ce genre de manipulation apporte un contrôle total du fonctionnement de la machine
émulée (changement de la politique des files d’attente, changement de leur taille, etc.), ce qui
offre une certaine souplesse pour faire des tests [25, 2]. L’installation d’une machine émulée
dans un réseau étant complètement transparente pour les autres machines, les tests effectués
dans cette configuration reflètent parfaitement le comportement des protocoles implémentés sur
les différentes machines du réseau.
L’émulation peut être utilisée sous deux formes :
– Émulation dans un environnement réel. Ce type d’émulation permet, par exemple,
de créer un réseau local (LAN 3 ) ayant le comportement d’un réseau à grande échelle
(WAN 4 ). Dans [2], les auteurs montrent qu’en appliquant des patches à six machines
reliées entre elles par des liens Ethernet, ils sont parvenus à étudier le comportement
qu’aurait TCP Vegas sur un réseau à grande échelle. Cette méthode permet, avec de
faibles moyens, de réaliser des tests sur des réseaux ayant les mêmes caractéristiques
que des réseaux à grande échelle.
– Émulation dans un environnement de simulation. L’émulation peut également être
utilisée en collaboration avec la simulation en injectant par exemple des flux réels dans
un simulateur. Dans ce cas, le simulateur fait partie intégrante d’un réseau réel, ce qui lui
permet d’exploiter de vraies données. Dans cette configuration, un trafic réel est inséré
dans le simulateur. Ce trafic est traité dans le réseau virtuel du simulateur avant d’être ré-
injecté dans le réseau réel dont l’émulateur fait partie. Dans un pareil cas, le simulateur
utilisé contient nécessairement une interface capable de convertir les données réelles en
données virtuelles et inversement (le simulateur ns dispose de cette interface).
L’émulation est donc une méthode de mesure à mi-chemin entre la simulation et les tests en
environnement réel. En effet, elle allie à la fois software et hardware, en tirant avantages des
deux : une certaine liberté dans les tests couplée à l’assurance de résultats très proches de la
réalité. Les avantages de ce mode d’évaluation sont également ses défauts. En effet, l’émulation
n’apporte pas autant de souplesse et de simplicité de mise en œuvre que la simulation, ni l’exac-
titude des résultats obtenus lors de tests en environnement réel.
5.1.4 Conclusion
Bien que les tests en environnement réel permettent de coller à la réalité, ce mode d’évalua-
tion n’est pas le plus pertinent pour le contrôle de congestion. En effet, il permet uniquement
de se placer dans un environnement actuel sans pouvoir se projeter dans l’avenir. De plus, les
topologies et le trafic sur Internet sont complexes. Il est donc quasiment impossible d’analyser
le comportement d’un mécanisme de contrôle de congestion dans un environnement de ce type.
L’émulation se confronte au même genre de problème. La simulation apparaı̂t donc comme le
3. Local Aera Network.
4. Wide Aera Network.
5.2. SIMULATEUR NS 103
mode d’évaluation le plus adapté pour l’étude de mécanisme de contrôle de congestion [38].
Cela offre aussi une grande souplesse et permet ainsi d’évaluer un protocole dans un grand
nombre de situations (qu’elles soient représentatives des conditions actuelles ou non). De plus,
il est reconnu [38] que dans le cadre de l’étude du contrôle de congestion, les scénarios de
simulation les plus simples (i.e., un environnement simple que seule la simulation peut fournir)
sont souvent les plus pertinents.
5.2 Simulateur ns
Pour que les résultats obtenus lors de diverses évaluations de performances soient compa-
rables, il faut que ces évaluations aient toutes utilisées le même simulateur. En effet, l’utilisation
d’un simulateur commun permet de s’assurer que l’implémentation des protocoles testés (i.e.,
le comportement) est la même et ainsi autorise la comparaison des résultats. Acutellement, le
simulateur ns fait office de référence dans le domaine de la recherche en réseau. Ce simulateur
est donc celui qui a été choisi pour le développement de cette méthode d’évaluation.
Cette commande entraı̂ne la création d’un objet simulateur dont le nom sera ns. Cet objet
est indispensable à la création et à l’exécution d’une simulation.
– Création des flots de données. Dans ns, les flots de données sont générés par un tra-
fic ou une application et sont transportés grâce aux agents. Les agents représentent les
protocoles de transport (TCP, UDP, etc.) et sont attachés à un nœud :
set tcp0 [new Agent/TCP/Reno]
$ns attach-agent $n0 $tcp0
set sink0 [new Agent/TCPSink]
$ns attach-agent $n1 $tcp1
Dans cet exemple, l’agent tcp0 est une source implémentant le protocole TCP Reno
qui se situe sur le nœud n0, alors que l’agent sink0 est un récepteur implémentant le
protocole TCP qui se situe sur le nœud n1. Pour pouvoir communiquer, les deux agents
doivent être connectés :
$ns connect $tcp0 $sink0
Le mode de transport des données étant défini, il ne reste plus qu’à spécifier le type de
trafic ou d’application générant les données à transporter :
set ftp0 [new Application/FTP]
$ftp0 attach-agent $tcp0
Ici, l’application FTP (ftp0) utilisera la source tcp0 pour transmettre les données au
récepteur sink0 (situés respectivement sur les nœuds n0 et n1).
– Échéancier. Dans ns, les différentes actions (ici, démarrage et arrêt du transfert de fichers)
sont lancées sous forme d’événements discrets et datés. L’échéancier gère également la
durée de la simulation :
$ns at 1.0 "$ftp0 start"
$ns at 15.0 "$ftp0 stop"
$ns at 20.0 exit
Ces lignes indiquent que le transfert de fichiers entre les deux nœuds commencera après
une seconde de simulation et s’arrêtera au bout de 15 s. La simulation, quant à elle,
prendra fin au bout de 20 s.
106 CHAPITRE 5. MÉTHODE D’ÉVALUATION DES PERFORMANCES
Les scripts de simulation sont donc très simples à créer, et facilement modifiables. De plus,
il existe des librairies de topologies et de trafics simplifiant encore la mise en œuvre des scripts.
Ces librairies donnent la possibilité de tester les protocoles dans un grand nombre de situations.
Il est également possible d’approfondir les résultats obtenus avec des simulations de haut niveau
d’abstraction en spécifiant certains paramètres telles que la taille maximale de la fenêtre de
congestion de TCP, la technique de routage employée, etc.
Le simulateur ns peut également fournir une trace de simulation qui répertorie tous les
événements qui ont eu lieu. Chaque ligne de cette trace représente un événement, et contient 17
champs (type d’événement, date, nœuds source et destination, numéro du paquet, type d’appli-
cation ou de trafic, taille du paquet, etc.) :
+ 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0
r 1.002336 0 2 cbr 210 ------- 0 0.0 3.1 0 0
8. network animator
5.3. PARAMÈTRES DE SIMULATIONS 107
5.3.1 Topologies
Les topologies rencontrées dans la littérature faisant référence à l’évaluation des protocoles
de transport sont peu nombreuses. Elles peuvent être classées en deux grandes familles :
– Les topologies composées de n sources, un lien congestionné (situé entre deux routeurs)
et n récepteurs (cf. figure 5.3). Il existe cependant plusieurs variantes de cette famille de
topologies. Par exemple, dans [49, 10] le réseau est simplement composé d’une paire
source/destination reliée par l’intermédiaire de deux routeurs. Lorsqu’il n’y a qu’une
108 CHAPITRE 5. MÉTHODE D’ÉVALUATION DES PERFORMANCES
source, il arrive également que la topologie se résume à trois nœuds : une source, un
routeur et une destination [31]. De même, il existe des réseaux composés de n sources, un
routeur et une destination [30, 66]. Mais la topologie la plus fréquemment rencontrée est
composée de deux à n paires source/destination, et de deux routeurs [47, 75, 19, 27, 48].
En bornant le nombre de sources à deux, l’étude de l’impact des différents paramètres du
réseau (bande passante, délai de propagation, etc.) est simplifiée tout en permettant d’ob-
server l’équité entre les flots. Mais, il est également intéressant de pouvoir faire varier
le nombre de sources afin d’analyser l’interaction des connexions entre elles. En effet,
certains protocoles sont très sensibles au nombre de connexions avec lesquelles ils par-
tagent la bande passante. Cette famille de topologie, qu’elle soit composée de deux ou de
n sources, est très pratique pour étudier le comportement des algorithmes de contrôle de
congestion.
Routeur 1 Routeur 2
Source (Si) Destination (Di)
Pour l’évaluation des performances de Primo, les deux familles de topologies seront uti-
lisées. Pour la première famille, la topologie utilisée (cf. figure 5.3) sera composée de n paires
source/destination (n variant de deux à vingt) et de deux routeurs. Cette topologie a été re-
tenue car elle permet une étude aisée de l’influence des différents paramètres du réseau sur
5.3. PARAMÈTRES DE SIMULATIONS 109
Rapport de bandes passantes des liens. Le rapport entre la somme des bandes passantes des
liens entrants (liens situés entre les sources et le routeur) et celle du lien de congestion (lien situé
entre les deux routeurs) est un paramètre important dans le cadre de l’évaluation du contrôle de
congestion. En effet, plus la bande passante du lien congestionné est faible par rapport à la
somme des bandes passantes des liens entrant, plus le risque de congestion sera important. La
variation de ce paramètre donne donc la possibilité d’évaluer les capacités d’un protocole à
éviter les congestions dans un environnement favorisant plus ou moins leur apparition. Dans
[49, 31, 75, 66], la bande passante du lien congestionné est fixe et représente entre 5% et 15%
de la somme des bandes passantes des liens entrant. Dans les études proposant de faire varier le
rapport de bandes passantes, les plages de variations peuvent être très différentes. Par exemple,
dans [27], le rapport de bandes passantes varie de 0,5% à 40%, alors que dans [8], le rapport de
bandes passantes varie de 0,001% à 1%.
Certaines plages de variations telles que celles utilisées dans [8] ne testent que les cas à fort
risque de congestions, ce qui revient pratiquement au même que de tester le protocole dans un
seul cas. Les réseaux n’étant pas saturés en permanence, il est également intéressant d’étudier
les cas à faible potentiel de congestion.
110 CHAPITRE 5. MÉTHODE D’ÉVALUATION DES PERFORMANCES
Notons que la plage de variation du rapport de bandes passantes choisie pour effectuer les
simulations dépend du type de trafic à transporter. Si le trafic utilisé est de type On / Off [8]
(trafic pour lequel les sources n’émettent pas de manière continue), il n’est pas aberrant de
considérer des cas où le rapport de bandes passantes est inférieur à 5%. En revanche, si le trafic
utilisé est de type FTP (où toutes les sources émettent simultanément et de manière continue), il
n’est pas réaliste d’utiliser un rapport de bandes passantes inférieur à 5%. En effet, il est fréquent
que des réseaux soient dimensionnés de sorte que le rapport de bandes passantes soit inférieur à
5%, mais dans ce cas, l’hypothèse est faite que toutes les sources ne seront pas simultanéments
actives.
Dans notre cas, le trafic utilisé étant de type FTP (cf. paragraphe 5.3.3), la plage de variation
du rapport de bandes passantes choisie se situe entre 5 et 80%. Dans la littérature on trouve
assez peu de tests effectués dans un environnement à faible potentiel de congestion. Les réseaux
n’étant pas perpétuellement congestionnés, il est pertinent d’envisager les situations à faible
(i.e., rapport de bandes passantes de 80%) comme celles à fort (i.e., rapport de bandes passantes
de 5%) potentiel de congestion.
Files d’attente. Les files d’attente ayant une taille limitée, elles peuvent être amenées, en
cas de congestion, à perdre (ou détruire) des paquets. Dans ce cas, deux paramètres doivent
être pris en compte : la politique de destruction des paquets et la taille maximale de la file
d’attente. Pour ce qui est de la politique de destruction, les algorithmes RED et Drop Tail sont
généralement utilisés. Ces deux politiques sont actuellement implémentées sur les routeurs ; il
est donc nécessaire d’évaluer leur influence sur tous nouveaux protocoles. Quelle que soit la
politique de gestion de la file d’attente, sa taille maximale est un paramètre primordial pour le
contrôle de congestion. En effet, si la file est de petite taille, elle risque d’être fréquemment
saturée. Inversement, si elle est trop grande, cela risque d’induire des temps de transmission
très importants, qui nuisent aux flux temps réel. De plus, lors de congestion, si la file d’attente a
une grande taille, la source mettra longtemps à réagir, car les informations lui parviendront avec
retard important (i.e., les paquets passeront un temps non négligeable dans la file). Cette lenteur
de réaction de la source impliquera un grand nombre de pertes et donc une mauvaise utilisation
du réseau. Dans la littérature, lorsque les topologies utilisées sont composées de deux sources,
la taille maximale de la file d’attente varie entre 5 et 50 paquets [30, 66, 49, 75]. Cette plage de
valeurs sera utilisée pour notre évaluation.
Lorsque la politique RED (cf. paragraphe 2.5.2) est utilisée, il faut également définir deux
seuils, le premier à partir duquel les paquets commenceront à être détruits avec une probabilité
croissant avec la taille moyenne de la file, le second pour lequel tous les paquets arrivant seront
détruits. Dans le cadre de notre évaluation, le premier seuil sera fixé à la moitié de la taille
maximale de la file d’attente. Le second sera fixé à la taille maximale de la file (la probabilité
maximale de destruction des paquets sera donc de 1). Dans la littérature, il n’est jamais fait
mention des valeurs utilisées pour ces deux seuils, c’est pourquoi nous avons choisi de les
fixer arbitrairement. Pour cela, nous avons considéré que lorsque la taille moyenne de la file
atteignait la moitié de sa taille maximale (valeur du premier seuil), le risque qu’une congestion
se forme était réel. Pour le second seuil, nous avons choisi de détruire systématiquement les
paquets arrivant dans la file lorsque celle-ci est complètement saturée : il a donc été fixé à la
taille maximale de la file.
5.3. PARAMÈTRES DE SIMULATIONS 111
Temps de propagation. Les temps de propagation des liens peuvent avoir une forte influence
sur le comportement d’un protocole de transport. Dans le cas où la topologie est composée
de plusieurs nœuds sources, deux cas peuvent être distingués : les temps de propagation des
connexions peuvent être homogènes ou hétérogènes.
– Dans le cas homogène, le temps de propagation de chaque connexion (i.e., RTT de la
connexion lorsque le réseau n’est pas congestionné) sera le même. Seule la durée de ce
temps de propagation peut avoir un impact sur les réactions du protocole. Plus le temps de
propagation de la connexion sera long, plus les sources mettront longtemps à réagir à l’ap-
parition d’une congestion. Dans la littérature, les temps de propagation fréquemment uti-
lisés pour les comparaisons de protocoles varient sur une plage assez étendue, entre 12 ms
et 300 ms [30, 31, 75, 66, 47]. Dans notre cas, le temps de propagation des connexions
variera entre 14 ms et 404 ms. Cette plage de valeurs permettra de tester le protocole
d’une part dans un environnement où il aura la possibilité de réagir rapidement et d’autre
part dans une situation où les informations lui parviendront avec un retard important.
– Dans le cas de temps de propagation hétérogènes [75], l’une des connexions aura un
RTT plus court que l’autre. Cette situation peut avoir pour effet de rendre une connexion
plus agressive que l’autre. Cette configuration est utilisée pour tester l’équité du pro-
tocole lorsque les temps de propagation de deux connexions sont différents (ce qui est
assez fréquent dans la réalité). Pour évaluer l’équité du protocole testé, l’une des deux
connexions aura un temps de propagation fixé à 24 ms, alors que celui de l’autre connexion
variera de 24 ms à 122 ms. Cette plage de valeurs a été définie aux vues des résultats ob-
tenus durant des simulations préliminaires. En effet, cette plage de variation est largement
suffisante pour mettre en évidence les protocoles ayant un comportement inéquitable dans
une telle situation.
5.3.3 Scénarios
De par son comportement préventif, le protocole Primo ne peut être mis en concurrence avec
un protocole correctif sous peine d’obtenir des performances médiocres. En effet, lorsque des
protocoles correctifs et préventifs cohabitent sur un même réseau, les connexions º préventives »
ont du mal à obtenir une part minimum de bande passante. Ce phénomène est dû au fait que
lorsqu’une congestion commence à se former sur le réseau (i.e., la taille d’une file d’attente com-
mence à croı̂tre), la connexion utilisant le protocole préventif va réduire son débit d’émission
alors que l’autre connexion continuera d’augmenter le sien jusqu’à observer la perte d’un de
ses paquets. Dans ces conditions, les protocoles préventifs n’ont aucune chance de fonctionner
correctement. Notons qu’il n’est pas non plus possible de mettre en concurrence différents pro-
tocoles préventifs, car ils n’ont pas forcément le même degré de prévention. En effet, si l’un
des deux protocoles a un seuil d’évitement de congestion (seuil à partir duquel il commence
à réduire son débit) beaucoup plus bas que celui de l’autre protocole, une situation d’inéquité
semblable à celle que nous venons de décrire sera constatée.
L’évaluation du protocole Primo (de type préventif) a donc été faite en supposant qu’il serait
utilisé sur un réseau privé ou sur une partie de réseau où il ne cohabiterait qu’avec lui-même.
Nous avons donc décidé que pour une simulation donnée, toutes les connexions utiliseraient le
même protocole de transport.
112 CHAPITRE 5. MÉTHODE D’ÉVALUATION DES PERFORMANCES
Simulations avec une seule congestion. L’influence des paramètres du réseau présentés pré-
cédemment a été testée sur une topologie composée de deux paires source/destination et de deux
routeurs (cf. figure 5.3, page 108). Afin de limiter le nombre de simulations (qui est supérieur à
400), dans un ensemble de simulations où l’influence d’un paramètre du réseau (dont la valeur
varie) est étudiée, les autres paramètres sont fixés (à des valeurs raisonnables) et identiques
pour toutes les simulations de cet ensemble. Le tableau 5.1 récapitule les valeurs des principaux
paramètres du réseau en fonction de l’ensemble de simulations. Dans l’ensemble de simulations
portant sur les RTTs hétérogènes, les temps de propagation des liens allant des sources au
routeur 1 sont donnés par paires (1/1, 1/2, etc.). Le premier chiffre de chaque paire indique le
temps de propagation du lien allant de la source 1 au routeur 1 et le second celui du lien allant
de la source 2 au routeur 1.
TAB . 5.1 – Récapitulatif des valeurs utilisées lors des simulations. TP-LS : Temps de Pro-
pagation des Liens allant des Sources au routeur 1, TP-LC : Temps de Propagation du Lien
Congestionné, D-LC : Débit du Lien Congestionné.
Les paramètres du réseau ne figurant pas dans ce tableau sont communs aux cinq ensembles
de simulations :
– le débit des liens allant des sources au routeur 1 est de 10 Mbits/s ;
– le débit des liens allant du routeur 2 aux destinations est toujours égal à celui du lien
congestionné ;
– le temps de propagation des liens allant du routeur 2 aux destinations est de 1 ms.
Un dernier ensemble de simulations étudiant l’influence du nombre de sources a été testé.
Dans la littérature, ce paramètre est généralement fixé [30, 31, 75, 66, 47, 8] à des valeurs
très diverses variant d’une à plusieurs dizaines de sources. Nous avons choisi de faire varier
le nombre de source de 2 à 20 afin d’évaluer la capacité de cohabitation du protocole testé
lorsqu’il est mis en concurrence avec d’autres flots. Pour cet ensemble, une topologie composée
de n paires source/destination a été utilisée (cf. figure 5.3 page 108). Cette topologie a donc été
successivement composée de 2, 3, 5, 7, 10, 15, 20 paires source/destination.
Les autres paramètres du réseau sont restés fixes :
– le temps de propagation des liens allant des sources au routeur 1 est de 1 ms ;
5.3. PARAMÈTRES DE SIMULATIONS 113
Le trafic utilisé pour tous les ensembles de simulations correspond au transfert d’un fichier
de taille infini via FTP. L’utilisation d’un tel trafic simplifie l’exploitation des résultats et évite
de les entacher d’erreurs dues à une mauvaise interprétation de comportements liés à un trafic
plus complexe.
Les situations dans lesquelles sont testés les différents protocoles dans cette méthode d’éva-
luation nécessitent la réalisation de 445 simulations décomposées comme suit :
6 ensembles de simulations liés aux paramètres du réseau : rapport de bandes passantes
(1), file d’attente (2), temps de propagation (2), nombre de sources (1) ;
d’acquittements ;
– Débit d’émission [48, 2, 19, 10, 27, 31]. La valeur moyenne du débit d’émission doit être
aussi grande que possible. Cet aspect du débit d’émission est très important d’un point de
vue utilisateur. En effet, plus le débit moyen d’émission est important et plus les transferts
de données se feront rapidement. Du point de vue de l’opérateur, la constance du débit
d’émission est un critère important. En effet, plus le débit d’émission sera constant (tout
en respectant les contraintes liées aux congestions), plus le réseau sera stable.
– Débit de réception [66]. Comme pour le débit d’émission, la valeur moyenne du débit
de réception doit être la plus grande possible. La constance du débit de réception est non
seulement importante d’un point de vue opérateur (cf. stabilité du réseau) mais elle l’est
aussi d’un point de vue utilisateur dans le cas d’une transmission de flots temps réel (ex :
visio-conférence).
– Taux d’occupation [33]. D’un point de vue opérateur, ce critère est primordial. Il repré-
sente le taux d’utilisation des ressources disponibles sur le réseau, il doit donc être le plus
proche possible de 100%. Si le taux d’occupation du réseau est faible, c’est que le réseau
est sous utilisé (ex : temps mort durant une transmission FTP).
– Taux de pertes [48, 19, 33]. D’un point de vue opérateur, ce critère est également très
important. Il représente la quantité de données perdues. Ce critère peut également être
caractérisé par la quantité de données retransmises [2] ou en inversement la quantité de
5.4. EXPLOITATIONS DES RÉSULTATS 115
données acquittées [10, 75]. Un fort taux de pertes indique une mauvaise utilisation du
réseau.
– Équité [10, 75, 33, 47]. Ce critère montre la capacité qu’a un protocole à partager équi-
tablement la bande passante entre plusieurs connexions empruntant un même lien. Idé-
alement, toutes les connexions ayant en commun un lien congestionné auront la même
quantité de bande passante allouée.
– Taux d’espace libre [30]. D’un point de vue utilisateur, ce critère est important dans le
cas d’une transmission de flots temps réel (ce critère peut être caractérisé par la durée du
RTT [10, 2]). Un faible taux d’espace libre de la file d’attente induit un temps de trans-
mission important (temps de propagation + temps passé dans une file d’attente pleine).
Or, un temps de transmission élevé nuit à la qualité de réception des flux temps réel. Pre-
nons l’exemple d’une visio-conférence, si le temps de transmission est élevé, les images
et le son arriveront avec un certain retard et la communication entre les participants ne
sera pas fluide.
– Stabilité de la file d’attente. Dans le cadre d’une transmission d’un flot temps réel,
ce critère compte beaucoup. En effet, si la taille de la file d’attente n’est pas stable, il
risque d’y avoir une gigue importante du délai d’acheminement. Dans la cas d’une visio-
conférence les images et le son arriveront plus où moins rapidement (en fonction de la
taille de la file) et la communication entre les participants risque d’être saccadée. Notons
que ce critère peut également être représenté par la variance du RTT [2].
Mesures. Afin d’évaluer les critères de performance précédents, il est nécessaire d’effectuer
certaines mesures durant les simulations. Ces mesures se décomposent en deux groupes :
– Mesures effectuées sur les nœuds du réseaux. Ce sont principalement les mesures de
débit d’émission et de réception des nœuds sources et destinations. C’est également dans
ce groupe que la quantité totale de données reçue par les récepteurs et le nombre de
paquets perdus sont mesurés. Ces mesures nécessitent un post traitement afin de les
rendre exploitables et d’en extraire une information quantitative autorisant une compa-
raison numérique des différents protocoles testés.
– Mesures effectuées sur les files d’attente. Il s’agit de la récupération périodique de la
taille de la file d’attente. Cet ensemble de valeur permet de tracer une courbe et donc d’ob-
server la dynamique de congestion du réseau. Cette mesure donne également la possibilité
de déterminer le taux moyen d’espace libre dans la file d’attente ainsi que sa stabilité.
5.4.2 Indicateurs
Afin de simplifier la lecture des résultats, à partir des critères d’efficacité précédemment
définis, des indicateurs autorisant une comparaison numérique ont été créés. Ces indicateurs
sont issus du post traitement des mesures effectuées sur les nœuds du réseau. Les sept indica-
teurs obtenus sont les suivants :
Le débit d’émission instantané est récupéré sous la forme d’un vecteur indiquant les va-
leurs successives qu’a pris le débit d’émission durant la simulation. La constance du
débit d’émission est obtenue en calculant l’écart type du débit d’émission instantané.
Pour améliorer la représentation graphique, la valeur obtenue est ensuite normalisée par
le débit d’émission moyen puis mise sous forme de pourcentage de sorte que plus le débit
d’émission sera constant, plus l’indicateur de constance sera proche de 100% :
Constance du débit d’émission ± Ù Ê
débit instantané débit moyen
¼ôÙ (5.2)
débit moyen
Constance du débit de réception ± Ù Ê
débit instantané débit moyen
– Taux d’occupation. Cet indicateur est obtenu en comparant la bande passante du lien
congestionné à la somme des débits de réception moyens des connexions (plus le réseau
est utilisé au maximum de ses capacités, plus le taux d’occupation est proche de 100%).
– Taux d’espace libre dans la file d’attente. Cet indicateur est obtenu en calculant la taille
moyenne de la file d’attente (la taille instantanée de la file d’attente est récupérée sous la
forme d’un vecteur indiquant la taille de la file d’attente au cours du temps). La taille
moyenne de la file d’attente est ensuite comparée à sa taille maximale (plus la file sera
vide, plus ce taux sera proche de 100%)
Taille moyenne de la file d’attente ± ù Â Taille instantanée
de la file d’attenteÅ (5.8)
Taux d’espace libre dans la file d’attente ±åÙ Ê Taille moyenne de la file
Taille maximale de la file
¼gÙ
(5.9)
– Constance de la taille de la file d’attente. La constance de la taille de la file d’attente
est calculée de la même manière que celle du débit d’émission (ou de réception). La
constance de la taille de la file d’attente est donc obtenue en calculant l’écart type de la
taille instantanée. Pour faciliter la lecture graphique des résultats, la valeur obtenue est
alors normalisée par la taille moyen de la file d’attente puis mise sous forme de pour-
centage, de sorte que plus la taille de la file d’attente est constante, plus l’indicateur de
constance est proche de 100% :
Constance de la file d’attente ± Ù Ê
Taille instantanée Taille moyenne
¼gÙ
Taille moyenne
(5.10)
par un polygone reliant les extrémités des sept axes (cf. figure 5.5). Inversement, un protocole
non performant sera représenté par un polygone dont les sommets seront des points placés à
proximité de la base des axes.
La valeur donnée pour chaque indicateur de performances (cf. paragraphe 5.4.2) représente
la note moyenne obtenue pour l’ensemble des simulations (composé de sept simulations, cf.
tableau 5.1), et cela afin de synthétiser les résultats.
Il arrive que l’utilisation de la moyenne biaise les résultats (i.e., la moyenne d’une grande et
d’une petite valeur donne une valeur médiane qui ne reflète pas la réalité). Lorsque c’est le cas,
les commentaires accompagnant les graphiques le précisent. De plus, la totalité des résultats
obtenus aux simulations se trouve dans l’annexe D.
onoslonne
CC t an ce2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
alill
Cto e de8l a f il e
e orléce
débi t dC onne 3
pt i on 50
onne
d’att en t e
0
T aux d’espace
É qu i t é
Colonne 4 Cliob
lonne
re da7n s l a
m oy enn e
f il e d’att en t e
5.5 Conclusion
Dans ce chapitre, une méthode d’évaluation des performances du contrôle de congestion a
été décrite. Des différents modes d’évaluation possibles (tests en environnement réel, simula-
tions, émulations), la simulation apparaı̂t comme étant le mode le plus adapté à notre situation.
La souplesse qu’apporte ce mode d’évaluation donne la possibilité de mesurer les performances
des protocoles testés dans une grande variété de situations. La plupart des études portant sur
l’évaluation des performances des protocoles de transport utilisent le simulateur ns qui fait of-
fice de référence. L’utilisation de ce simulateur nous autorisera à comparer les résultats obtenus
par Primo à ceux obtenus par d’autres protocoles de transport (Reno, Sack, Vegas, TFRC) déjà
développés et validés sous ns.
Différents contextes de simulations ont été définis. Pour commencer, deux types de topolo-
gies ont ensuite été sélectionnés. Le premier type de topologie utilisé est un réseau composé de
n paires source/destination (avec n variant de 2 à 20) et de deux routeurs intermédiaires reliés
5.5. CONCLUSION 119
entre eux par un lien congestionné (cf. figure 5.3). Ce type de topologie est utilisé pour mesurer
l’influence qu’ont les différents paramètres du réseau sur le contrôle de congestion. La seconde
topologie utilisée (cf. figure 5.4) permet de créer plusieurs congestions (de une à trois conges-
tions) sur un même chemin. Ce type de topologie donne la possibilité d’évaluer la capacité d’un
protocole à partager équitablement la bande passante dans des situations propices à l’inéquité.
Afin de définir l’impact de certains paramètres du réseau (sur le contrôle de congestion),
différents ensembles de simulations ont été définis : rapport de bandes passantes, temps de
propagation, files d’attente, nombre de sources (cf. section 5.3). Dans chaque ensemble de si-
mulations, le paramètre du réseau dont l’impact est testé prend différentes valeurs sur une plage
pré-définie alors que les autres paramètres sont fixés (cf. tableau 5.1 page 112). Le trafic utilisé
pour ces ensembles de simulations correspond au transfert d’un fichier de taille infinie via FTP.
Ce type de trafic permet une interprétation précise des résultats et évite les erreurs dues à une
mauvaise compréhension d’un trafic plus complexe.
Les protocoles préventifs ne peuvent être mis en concurrence avec des protocoles correctifs
sous peine d’obtenir des performances médiocres. C’est pourquoi, l’évaluation du protocoles
Primo (de type préventif) s’est faite sous l’hypothèse qu’il serait le seul protocole implémenté
sur le réseau. En effet, de par son comportement préventif, le protocole Primo est destiné à être
utilisé sur un réseau privé ou sur une partie de réseau où il ne cohabiterait qu’avec lui-même.
Les performances de Primo seront comparées dans le chapitre 6 à celle de TCP Reno, de TCP
Sack, de TCP Vegas et de TFRC.
Afin de caractériser les performances d’un protocole, des critères d’efficacité du point de
vue de l’utilisateur et de l’opérateur ont été définis. Des indicateurs numériques ont été créés
afin de donner une valeur à ces critères et donc de les comparer objectivement. Les indicateurs
suivant ont été définis :
– constance du débit d’émission ;
– constance du débit de réception ;
– équité moyenne ;
– taux d’occupation ;
– taux de bonne transmission ;
– taux d’espace libre dans la file d’attente ;
– constance de la taille de la file d’attente.
Une représentation graphique des valeurs des divers indicateurs facilite leur lecture (cf. 5.5).
La méthode d’évaluation que nous avons définie est multi-critères, elle permet ainsi d’éva-
luer un mécanisme de contrôle de congestion de manière complète. En effet, contrairement
aux évaluations généralement rencontrées qui n’évaluent que quelques critères, cette méthode
propose d’évaluer les performances d’un protocole pour l’ensemble des critères d’efficacité que
nous avons recensé dans la littérature [48, 2, 19, 10, 27, 66, 31, 75, 33, 47]. Cette méthode
d’évaluation propose également de tester les mécanismes de contrôle de congestion dans des
situations diverses. L’évaluation des protocoles se fait donc de manière objective et non dans un
environnement qui pourrait en favoriser certains.
Lors de la définition de notre méthode, nous nous sommes placés dans le cas particulier
d’un protocole préventif qui n’est donc pas destiné à être mis en concurrence avec d’autres pro-
tocoles de transport sur Internet. Dans le cadre d’une étude portant sur un protocole visant à être
déployé sur Internet, il serait nécessaire de compléter cette méthode. En effet, le déploiement sur
120 CHAPITRE 5. MÉTHODE D’ÉVALUATION DES PERFORMANCES
Internet implique la compatibilité avec TCP New Reno (l’une des versions les plus répandues
sur Internet [90]), il faudrait donc ajouter un ensemble de simulations où le nouveau protocole
serait confronté à TCP New Reno. Ainsi la méthode développée dans ce chapitre pourrait faire
office de banc d’essais pour l’évaluation des nouveaux protocoles qu’ils soient préventifs ou
correctifs.
121
Chapitre 6
Dans ce chapitre, nous présentons les résultats des simulations permettant de comparer les
performances des protocoles de transport suivants : TCP Reno, TCP Sack, TCP Vegas, TFRC
et Primo.
!
À l’exception de la section 6.7, les résultats présentés sont illustrés par des graphiques ra-
dar (cf. figure 5.5, page 118).
Les sections 6.1 à 6.6 proposent une comparaison des performances en fonction d’un pa-
ramètre du réseau (bande passante, type et taille de la file d’attente, temps de propagation,
nombre de sources). Dans chacune de ces sections, les résultats sont décomposés en deux en-
sembles : ceux obtenus pour des simulations sans pertes d’acquittements et ceux obtenus pour
des simulations avec pertes d’acquittements.
Dans la section 6.7, les résultats obtenus dans un environnement multi-congestionné sont
présentés. Ils sont illustrés par les courbes de débit de réception de chaque connexion. L’analyse
de ces courbes permet d’évaluer visuellement l’équité et la stabilité des protocoles testés.
CoCnosltoann
n ce
e 2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
débi t deCroéce
lonn
pet i o3n t aoillloenndee 8l a f il e
C
50 d’att en t e
0
T aux d’espace
É qu i t é
Colonne 4 Clioblo
renndean7s l a
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
Colonne 5 Colonne 6
du li en part ag é t ran sm i ssi on s
Reno et Sack). En revanche, les résultats obtenus par Primo et TCP Vegas pour la constance de
la taille de la file d’attente (respectivement 40% et 92%) sont assez différents.
Les protocoles TCP Reno et Sack obtiennent également des résultats assez proches. Pour
ces deux protocoles, les débits d’émission et de réception sont assez peu constants (entre 48% et
58%). De plus, le taux d’espace libre ainsi que la constance de la file d’attente sont très faibles.
Notons que TFRC obtient lui aussi de mauvais résultats (15%) pour le taux d’espace libre dans
la file d’attente. En revanche, ce protocole parvient à stabiliser la taille de la file d’attente (la
constance de la taille de la file est de 90%).
Analyse. Nous avons pu voir que TCP Vegas avait du mal à conserver un débit d’émission
constant lorsque le rapport de bandes passantes est faible. On peut supposer que ce phénomène
est lié à son mécanisme anti-rafales qui est moins efficace lorsque la fenêtre d’émission (i.e., le
débit d’émission) est de petite taille.
Les bons résultats obtenus par Primo et TCP Vegas concernant le taux d’espace libre dans la
file d’attente s’expliquent par leur comportement préventif. En effet, les protocoles préventifs
cherchent à éviter les pertes de données en réduisant leur débit d’émission dès que la file d’at-
tente dépasse un certain seuil. Plus ce seuil sera bas, plus le taux moyen d’espace libre dans la
file d’attente sera important.
Remarque 2 Les mauvais résultats obtenus par Primo pour la constance de la taille de la file
d’attente n’impliquent pas de mauvaises performances. En effet, lorsque la file d’attente a une
taille moyenne assez faible (deux à trois paquets), la moindre variation de sa taille instantan ée
est fortement répercutée sur l’indicateur de constance (cf. équation 5.10, page 117). Mais ces
faibles variations n’ont aucune influence sur la qualit é des transmissions de données. En effet,
ces variations paraissent fortes si l’on observe leur valeur en pourcentage (i.e., valeur relative
6.1. INFLUENCE DE LA BANDE PASSANTE 123
à la taille de la file d’attente), mais la gigue r éelle (i.e., valeur dans l’absolu) est faible 1 .
L’inconstance du débit d’émission de TCP Reno et Sack est due au fait qu’aucun de ces
protocoles n’implémente de système évitant l’émission en rafale (i.e., la totalité de la fenêtre de
congestion est envoyée en un temps très restreint). Le passage dans les files d’attente des rou-
teurs ne suffisant pas à atténuer l’effet de rafale, le débit de réception est également inconstant.
Le faible taux d’espace libre dans la file d’attente pour TCP Reno, Sack et TFRC s’explique
par leur comportement correctif. En effet, pour réguler leur débit, ils ont besoin de saturer la file
d’attente (d’où un faible taux d’espace libre) et d’observer des pertes. L’inconstance de la taille
de la file d’attente pour TCP Reno et Sack est liée aux réductions drastiques du débit d’émission
(i.e., réduction de moitié) à chaque détection d’une perte. Chacune de ces réduction entraı̂ne une
forte diminution de la taille de la file d’attente. Ces diminutions importantes, engendrent une
inconstance de la taille de la file d’attente. Contrairement à TCP Reno et Sack, TFRC parvient
à stabiliser la taille de la file d’attente grâce à son système de régulation du débit d’émission qui
évite les brusques variations.
Conclusion. Quel que soit le rapport de bande passante, les résultats obtenus par Primo, TCP
Vegas et TFRC sont satisfaisants pour l’ensemble des indicateurs et assez proches. Cependant,
TCP Vegas et Primo seront plus performants que TFRC pour un transport de données temps réel
car ces protocoles parviennent à conserver un espace libre important dans la file d’attente, ce qui
minimise le délai d’acheminement. Cette différence est due au comportement des protocoles :
préventif pour TCP Vegas et Primo et correctif pour TFRC. Notons également qu’aucun proto-
cole ne se distingue des autres pour ce qui est de l’équité, du taux de bonnes transmissions et du
taux d’occupation. On peut donc en conclure que, quel que soit le comportement du protocole
(préventif ou correctif) et sa manière de gérer le débit (fenêtre ou inter-paquets), le rapport de
bandes passantes n’a pas d’influence pour ces 3 indicateurs.
Résultat 1 Quel que soit le rapport de bande passante, les protocoles pr éventifs parviennent à
maintenir un espace libre important dans la file d’attente.
Résultat 2 Les protocoles TCP Reno et Sack ne parviennent pas à maintenir les débits d’émis-
sion et de réception constants.
CoCnosltonne
an ce2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
débi t deCroéce
lonne
pt i o3n t aoill
C e de8l a f il e
lonne
50 d’att en t e
0
T aux d’espace
É qu i t é
Cliob re da7n s l a
mCooylonne
enn e 4 lonne
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li en Cpoalronne
t ag é 5 tC
raonlonne
sm i ss6i on s
que TFRC reste performant. Pour finir, notons que les résultats de Primo ne sont pas affectés
par les pertes d’acquittements, ils sont sensiblement les mêmes que ceux obtenus sans pertes
d’acquittements.
Analyse. On peut supposer que la détérioration des performances de TCP Vegas est due à
l’augmentation de la durée du RTT engendrée par l’apparition périodique d’une congestion
!
dans le sens du retour. Or, si TCP Vegas voit augmenter la durée du RTT, il estimera, à tort,
que la bande passante disponible a diminué. Cette sous-estimation entraı̂nera une réduction
inutile de la fenêtre de congestion (i.e., du débit d’émission) qui conduira à la sous-utilisation
des capacités du réseau. De plus, comme nous l’avons vu précédemment, lorsque la fenêtre
de congestion est de petite taille (i.e., le débit d’émission est faible), les performances du
mécanisme anti-rafales de TCP Vegas sont diminuées. Les apparitions et disparitions succes-
sives des congestions dans le sens retour engendrent des variations de la durée du RTT et donc
de la taille de la fenêtre de congestion (cf. fonctionnement de TCP Vegas, section 2.3). Ces deux
phénomènes (fenêtre de petite taille et variante) contribuent à l’inconstance du débit d’émission.
Les files d’attente des routeurs ne suffisant pas à atténuer les variations du débit d’émission,
cette inconstance se répercute sur le débit de réception.
Pour TCP Reno, les pertes d’acquittements entraı̂nent des expirations du chien de garde de
retransmission et donc de fortes réductions du débit (i.e., la fenêtre de congestion est réduite
à MSS octets). Dans TCP Reno, la réduction de la fenêtre de congestion après l’expiration
du chien de garde de retransmission est suivie d’une phase de démarrage lent. L’enchaı̂nement
d’une forte réduction puis d’une augmentation exponentielle de la taille de la fenêtre de conges-
tion engendre d’importantes variations du débit d’émission. Ces variations ont pour effet d’ac-
centuer l’inconstance du débit d’émission et donc de celui de réception. Les réductions inutiles
(liées aux pertes d’acquittements) du débit d’émission engendrent une sous-utilisation du réseau
(taux d’occupation du lien inférieur à 75%). De plus, ces réductions provoquent des situations
6.2. INFLUENCE DE LA TAILLE DE FILE D’ATTENTE ( DROP TAIL) 125
d’inéquité (environ 75%). En effet, lorsque l’une des connexions perd des acquittements, elle
réduit son débit d’émission. L’autre connexion en profite alors pour augmenter le sien et donc
prendre une plus large part de bande passante. Grâce à l’amélioration apportée à la gestion des
acquittements, TCP Sack est beaucoup moins affecté que TCP Reno par les pertes d’acquitte-
ments.
Les pertes d’acquittements ralentissent le glissement de la fenêtre de congestion de TCP
Reno et Vegas, ce qui contribue à la réduction du débit d’émission et donc à la sous-utilisation du
réseau. De plus, après la perte d’une série d’acquittements, l’arrivée d’un nouvel acquittement
entraı̂nera un glissement important de la fenêtre de congestion et donc une forte augmentation
du débit. Les variations de la vitesse de glissement de la fenêtre de congestion contribuent donc
également à l’inconstance des débits.
L’insensibilité de TFRC et Primo aux pertes d’acquittements est liée à trois caractéristiques
de leur mécanisme de contrôle de congestion :
– leur système d’évaluation de l’état de congestion du réseau n’est pas basé sur la détection
de pertes de segments via la réception d’acquittements ;
– la régulation de leur débit d’émission est assurée par un délai inter-paquets, ce qui élimine
les problèmes liés à la vitesse de glissement de la fenêtre ;
– leur mécanisme de détection de congestion est implémenté du côté du récepteur, ce qui
leur permet de ne pas tenir compte des congestions se formant dans le sens du retour.
Conclusion. Lorsque le rapport de bande passante varie, qu’il y ait ou non des pertes d’ac-
quittements, les résultats obtenus par TFRC et Primo sont assez proches, même si Primo est
légèrement plus performant. En revanche, on peut observer que les performances de TCP Ve-
gas sont fortement altérées lorsque des pertes d’acquittements surviennent. On peut suppo-
ser que cette diminution des performances est due à l’estimation du RTT dont la valeur aug-
mente à cause des congestions se trouvant dans le sens retour. Cette augmentation du RTT
entraı̂ne des réductions de débit inutiles et donc une sous-utilisation des capacités du réseau.
On peut également constater que TCP Reno est très sensible aux pertes d’acquittements : elles
le poussent à réduire inutilement le débit d’émission et accentuent son inconstance. Enfin, il
apparaı̂t clairement que l’amélioration de la gestion des acquittements apportée par TCP Sack
lui permet d’être peu sensible aux pertes d’acquittements.
Résultat 3 Les performances de TCP Sack sont peu influencées par les pertes d’acquittements.
Résultat 4 Les protocoles utilisant une fenêtre pour réguler leur débit (notament TCP Reno
et Vegas) paraissent plus vulnérables aux pertes d’acquittements que ceux utilisant un d élai
inter-paquets.
Résultat 5 Les protocoles implémentant leur mécanisme de détection des congestions du côté
récepteur (Primo et TFRC) sont moins vulnérables aux pertes d’acquittements.
politique Drop Tail et sa taille varie de 5 à 50 paquets. Les autres paramètres du réseau sont
fixes (cf. tableau 5.1 page 112).
CoCn ostlonne
an ce 2du
débi t d’ém i ssi on
100
Con st an ce de l a
Con st an ce du illoelonne
t aC de l a8f il e
lonne
débi t deCroéce pt i o3n d’att en t e
50
0
T aux d’espace
É qu i t é
Colonne 4 liC dan s7l a
broelonne
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
paorlonne
du li en C t ag é 5 anoslonne
t rC m i ssi6on s
F IG . 6.3 – Influence de la taille de file d’attente (Drop Tail) sans pertes d’acquittements.
Observations. Dans cet ensemble de simulations, les performances des protocoles sont qua-
siment les mêmes que celles obtenues dans l’ensemble de simulations mesurant l’influence de
la bande passante sans pertes d’acquittements (cf. paragraphe 6.1.1).
Quelques différences sont tout de même observables. En effet, le résultat obtenu par TCP
Vegas pour l’équité est bien moins bon que celui obtenu dans l’ensemble de simulations 6.1.1
(64,5 % contre 93,15%). Ce résultat est en partie dû au cas où la file d’attente a une taille maxi-
male de 5 paquets (cf. annexe D), qui fait chuter fortement la moyenne. Dans ce cas, l’équité de
TCP Vegas est seulement de 2,1%, ce qui signifie qu’une seule des deux connexions parvient à
émettre des données. Notons que le résultat obtenu par TCP Vegas pour le taux d’espace libre
dans la file d’attente est également moins bon que dans l’ensemble précédent. Ce résultat est
dû aux simulations pour lesquelles la file d’attente a une taille maximale de 5 et 10 paquets (cf.
annexe D). Dans ces simulations, le taux d’espace libre dans la file d’attente est inférieur à 65%.
L’inconstance des débits d’émission et de réception de TCP Reno et Sack se retrouve dans
cet ensemble de simulations.
Analyse. Cet ensemble de simulations montre que TCP Vegas a besoin d’une taille de file
d’attente minimale supérieure à 5 paquets pour fonctionner correctement. Le système de contrôle
!
de congestion de TCP Vegas cherche à maintenir le débit de la source à une valeur légèrement
supérieure à la bande passante disponible. Cette sur-estimation entraı̂ne un remplissage de la
6.2. INFLUENCE DE LA TAILLE DE FILE D’ATTENTE ( DROP TAIL) 127
file d’attente. Or, si ce remplissage est supérieur ou égal à la taille maximale de la file d’attente,
l’une des deux connexions verra ses paquets se faire détruire. Cette destruction entraı̂nera une
réduction de son débit d’émission. La file étant remplie par les paquets de la connexion n’ayant
pas réduit son débit d’émission, l’autre connexion ne pourra jamais ré-augmenter le sien sous
peine de perdre de nouveau des paquets. Ces conditions conduisent donc TCP Vegas à sacrifier
l’un des flots pour parvenir à maintenir le débit de l’autre. Cependant, notons que dans la réalité,
il est peu probable de rencontrer des routeurs ayant une file d’attente dont la taille maximale
serait de 5 paquets.
La baisse des performances de TCP Vegas pour le taux d’espace libre dans la file d’attente
est également liée au maintien du débit d’émission à une valeur supérieure à la bande passante
disponible. En effet, comme nous venons de le voir, si la file d’attente est petite, l’une des deux
connexions la remplira en permanence. Le taux d’espace libre de la file sera par conséquent
faible.
Les problèmes rencontrés par TCP Vegas auraient également pu être constatés pour Primo
si ce dernier avait été paramétré de manière à être légèrement plus agressif. En effet, en rendant
plus agressif Primo, la taille moyenne de la file d’attente aurait été plus importante, et les mêmes
observations auraient alors été faites.
L’inconstance des débits d’émission et de réception de TCP Sack et Reno, est comme
précédemment liée aux rafales d’émission qui ne sont pas évitées par ces protocoles.
Conclusion. Les résultats obtenus par TFRC et Primo sont assez proches et ces deux proto-
coles sont les plus efficaces pour cet ensemble de simulations où la taille de la file d’attente
variait de 5 à 50 paquets. Cependant, on peut noter que Primo, grâce à son comportement
préventif, obtient de meilleurs résultats que TFRC pour le taux d’espace libre dans la file d’at-
tente ce qui confirme le résultat 1.
Notons que si l’on fait abstraction de la simulation dans laquelle la file d’attente a une taille
de 5 paquets (configuration peu probable dans un environnement réel), les résultats de TCP
Vegas sont également assez proches de ceux de Primo et de TFRC.
Comme précédemment, TCP Reno et Sack se différencient des autres protocoles par l’in-
constance de leurs débits d’émission et de réception (cf. résultat 2).
CoCnosltonne
an ce2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
débi t dCeorléce
onnept3i on aill
tC e de l8a f il e
olonne
50 d’att en t e
0
T aux d’espace
É qu i t é
Colonne 4 e dan7s l a
liCborlonne
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li en Cpoalonne
r t ag é 5 t rCaonlsonne
m i ss6i on s
F IG . 6.4 – Influence de la taille de file d’attente (Drop Tail) en cas de pertes d’acquittements.
Analyse. Les observations effectuées dans cet ensemble de simulations confirment la sensi-
bilité aux pertes d’acquittements de TCP Vegas (cf. paragraphe 6.1.2). Les améliorations ap-
portées par TCP Sack à la gestion des acquittements ne suffisent pas à le rendre insensible à
leur perte. En effet, comme pour TCP Reno, les pertes d’acquittements entraı̂nent des expira-
tions du chien de garde de retransmission de TCP Sack et donc de fortes réductions de débit.
Cependant, la gestion plus fine des acquittements de TCP Sack ainsi que la redondance des in-
formations qu’ils contiennent, lui permettent d’observer moins fréquemment qu’avec Reno des
expirations inutiles du chien de garde de retransmission. Les performances de TCP Sack restent
donc meilleures que celles de TCP Reno dans un tel environnement.
Cet ensemble de simulations confirme également que les protocoles dont le mécanisme de
détection de congestion est situé du côté du récepteur sont peu ou pas sensibles aux pertes
d’acquittements. Ainsi, TFRC et Primo parviennent à conserver leurs bonnes performances
malgré les pertes d’acquittements.
Conclusion. Lorsque la taille maximale de la file d’attente (Drop Tail) varie entre 5 et 50
paquets et que des pertes d’acquittements surviennent, l’inconstance des débits d’émission et
de réception des protocoles TCP Reno, Sack et Vegas les rend inutilisables pour une trans-
mission temps réel. Les protocoles utilisant une fenêtre pour réguler leur débit paraissent plus
vulnérables aux pertes d’acquittements que les protocoles dont la régulation du débit est basée
sur un délai inter-paquets (cf. résultat 4). Comme nous l’avons vu précédemment, la perte d’ac-
quittements a tendance à ralentir le glissement de la fenêtre (pour TCP Reno et Vegas) et
complique la gestion de sa taille, ce qui se traduit par une chute et une inconstance du débit
d’émission. Comme dans les simulations précédentes, les protocoles Primo et TFRC sont les
plus performants.
6.3. INFLUENCE DE LA TAILLE DE FILE D’ATTENTE (RED) 129
CoC n sotlonne
an ce 2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
débi t deCroéce
lonne 3
pt i on tCaill e de 8l a f il e
olonne
50 d’att en t e
0
T aux d’espace
É qu i t é
Colonne 4 liCborlonne
e dan7s l a
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li en pCaorltonne
ag é 5 t raCnoslonne
m i ssi6on s
Observations. Les résultats sont présentés sur le graphique radar de la figure 6.5. Dans!
cet ensemble de simulations, la politique de gestion de file d’attente RED pose des problèmes à
Primo lorsque la taille maximale de la file est de 5 paquets (cf. annexe D). En effet, les résultats
obtenus pour ce cas sont très mauvais : la constance des débits d’émission et de réception,
l’équité, le taux de bonnes transmissions et le taux d’espace libre dans la file d’attente sont
tous inférieurs à 20%. Notons que lorsque la taille de la file d’attente est supérieure ou égale
à 10 paquets, les résultats obtenus par Primo sont meilleurs que ceux obtenus par les autres
protocoles (cf. figure 6.6). Le diagramme de la figure D intégrant tous les résultats (de 5 à 50
paquets) sous la forme d’une moyenne ; le problème mentionné se retrouve atténué.
L’équité de TCP Vegas n’est également pas très bonne (environ 75%). Les autres protocoles
testés ont sensiblement les mêmes performances quelle que soit la politique de gestion de file
utilisée (RED ou Drop Tail).
Analyse. Les mauvaises performances de Primo lorsque la file d’attente a une taille maxi-
male de 5 paquets sont dues à la destruction aléatoire opérée par la politique RED (cf. para-
graphe 2.5.2). En effet, dès que la file dépasse la taille moyenne de 2 paquets, les nouveaux
130 CHAPITRE 6. ÉVALUATION DES PERFORMANCES
paquets arrivant dans la file ont une chance d’être détruits. Cette destruction prématurée et
aléatoire nuit fortement au calcul du débit d’émission. En effet, la perte de paquets finit par
entraı̂ner l’expiration du chien de garde de retransmission de l’une des connexions ce qui la
conduit à réduire de moitié son débit d’émission. Cette situation se répétant plusieurs fois, les
performances du protocole sont fortement diminuées. Notons cependant, comme nous l’avons
déjà souligné précédemment, qu’il est peu probable de rencontrer un routeur ayant une file
d’attente d’une taille maximale de 5 paquets.
Remarque 3 Le même phénomène n’est heureusement pas extrapolable à une situation où la
file d’attente serait de 50 paquets et o ù il y aurait 20 sources (cas de figure beaucoup plus
probable). En effet, avec Primo, quel que soit le nombre de connexions, la quantit é de données
présente dans la file d’attente est la même. Or, si la taille maximale (et le seuil de destruction
préventive) de la file d’attente augmente alors que la quantit é de données qui y est présente
reste la même, il n’y aura plus de pertes de paquets ni d’expirations du chien de garde. Les
bonnes performances de Primo seront donc préservées.
(%) Constance du
100 débit d’émission
90
C onstance du débit
80 de r éception
70 Équité
moyenne
60
Taux d’occupation du
50 lien partag é
40 Taux de bonnes
30 transmissions
F IG . 6.6 – Évolution des indicateurs de Primo en fonction de la taille maximale d’une file
d’attente de type RED.
Avec une politique Drop Tail, TCP Vegas ne parvenait pas à maintenir l’équité entre les
flots lorsque la file d’attente avait une taille maximale de 5 paquets. Ici, dans la même situation,
l’équité entre les flots de TCP Vegas est de 71%, ce qui laisse supposer que la politique RED,
en détruisant plus fréquemment les paquets du flot ayant le débit d’émission le plus important,
permet de rétablir l’équité.
Conclusion. Dans cet ensemble de simulations, lorsque la file d’attente a une taille maximale
supérieure à 5 paquets, la politique RED ne semble pas avoir d’influence sur le contrôle de
congestion des différents protocoles. On peut cependant supposer que, dans un environnement
propice à l’inéquité, la politique RED aura une influence bénéfique sur le contrôle de congestion
(cf. cas de TCP Vegas avec une file d’attente de 5 paquets). En effet, si deux connexions se
partagent inéquitablement la bande passante disponible, la connexion ayant la plus grande part
de bande passante aura plus de chance de voir ses paquets se faire détruire préventivement
6.3. INFLUENCE DE LA TAILLE DE FILE D’ATTENTE (RED) 131
par la politique RED. La destruction des paquets entraı̂nera une réduction de débit et donc un
ré-équilibrage du partage de la bande passante. Hormis pour la simulation dans laquelle la file
d’attente a une taille maximale de 5 paquets (situation peu probable), les performances de Primo
sont très bonnes.
CoCnosltonne
an ce2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
débi t deCroéce
lonne
pt i 3on tCaoilllonne
e de 8l a f il e
50 d’att en t e
0
T aux d’espace
É qu i t é
e dan7 s l a
lioblronne
mCooylonne
enn e4 C
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li en Cpoalronne
t ag é 5 t rCaonlonne
sm i ss6i on s
Analyse. Le protocole Primo n’étant pas influencé par les pertes d’acquittements, les résultats
obtenus précédemment sont sensiblement les mêmes que ceux obtenus dans cet ensemble de
simulations. Ainsi, Primo obtient de bons résultats lorsque la taille maximale de la file d’attente
est supérieure à 5 paquets.
Il est surprenant de constater que, dans ces conditions d’évaluation, lorsque des pertes d’ac-
quittements surviennent, les résultats de TCP Vegas s’améliorent. En effet, il semble qu’ici
l’augmentation de la durée du RTT, engendrée par les congestions se formant dans le sens du
retour, permet à TCP Vegas d’améliorer l’équité entre les flots. Dans ces simulations, nous avons
pu constater que TCP Vegas modifiait plus fréquemment la taille de sa fenêtre de congestion
132 CHAPITRE 6. ÉVALUATION DES PERFORMANCES
lorsque des acquittements se perdent. On peut supposer que ces ajustements successifs de la
fenêtre de congestion (i.e., du débit d’émission) permettent d’améliorer l’équité.
Conclusion. Hormis l’amélioration des performances de TCP Vegas, les résultats obtenus
dans cet ensemble de simulations sont sans surprise. Comme pour les autres simulations, les per-
formances de TCP Reno se dégradent fortement lorsque des pertes d’acquittements surviennent,
alors que les performances des autres protocoles (hormis TCP Vegas) restent sensiblement les
mêmes (cf. résultats 5 et 3).
Il est intéressant de noter que, quelle que soit la politique utilisée (RED ou Drop Tail), à
partir d’une certaine taille maximale de la file d’attente, les résultats obtenus par les protocoles
préventifs ne changent plus. En effet, lorsque la taille maximale de la file d’attente dépasse
10 paquets, les résultats obtenus par TCP Vegas et Primo aux divers indicateurs (hormis ceux
directement liés à la taille maximale de la file) reste constants (cf. annexe D et figure 6.6). Cette
caractéristique tient au fait que ces protocoles sont de type préventif. Ainsi, ils n’ont pas besoin
de saturer la file d’attente du lien partagé pour en estimer la bande passante, comme le font les
protocoles correctifs.
Résultat 6 À partir d’un certain seuil, l’augmentation de la taille maximale de la file d’attente
n’a plus d’influence sur les performances des protocoles pr éventifs (Primo et TCP Vegas).
Analyse. Pour TCP Reno et Sack, on peut remarquer que plus le temps de propagation est
important, plus la constance des débits d’émission et de réception se dégrade. Ce phénomène
est lié à l’utilisation d’une fenêtre sans mécanisme anti-rafales. En effet, plus le RTT est long,
plus la phase d’attente des acquittements permettant le glissement de la fenêtre sera longue. Or,
durant cette phase d’attente, aucun paquet n’est émis et le débit d’émission chute à 0 kbit/s.
6.4. INFLUENCE DES TEMPS DE PROPAGATION HOMOGÈNES 133
!
L’alternance des phases d’émission et de silence conduit à une forte instabilité des débits
d’émission et donc de réception.
La dégradation de la constance des débits d’émission et de réception de TCP Vegas est
due à son mécanisme anti-rafales. Il semble que plus le temps de propagation est important,
! !
moins ce mécanisme est efficace. En effet, l’augmentation du temps de propagation entraı̂ne une
augmentation du délai inter-segments 2 de TCP Vegas, et donc des périodes de silence
entre chaque émission de deux segments (cf. paragraphe 2.3.2). Ce phénomène, bien qu’il soit
moins marqué, est assimilable à celui observé pour TCP Reno et Sack.
Les protocoles n’utilisant pas de fenêtre (i.e., TFRC et Primo) ne semblent pas être perturbés
par l’augmentation du temps de propagation. Le fait de ne pas avoir à attendre le glissement de
la fenêtre permet à ces protocoles de conserver un délai inter-paquets constant et ainsi de lisser
leur débit d’émission.
Conclusion. Lorsque les temps de propagation entre une source et un récepteur sont impor-
tants, il semble plus judicieux d’utiliser un protocole dont la gestion du débit d’émission est
assurée grâce à un délai inter-paquets. Cependant, l’utilisation de tels protocoles peut engendrer
des pertes massives (si leur chien de garde de retransmission est mal calibré) en cas de grave
congestion. En effet, les protocoles n’utilisant pas de fenêtre ne peuvent pas limiter la quantité
de données en transit. Il faut donc s’assurer qu’ils détecteront rapidement les congestions afin
de ne pas saturer le réseau lorsqu’il est déjà congestionné.
Résultat 7 Les protocoles utilisant un délai inter-paquets pour réguler le débit (Primo et TFRC)
parviennent à le maintenir constant, même lorsque les temps de propagation sont tr ès impor-
tants.
Résultat 8 Le mécanisme anti-rafales de TCP Vegas paraı̂t devenir inefficace à mesure que les
temps de propagation augmentent.
CoCnosltonne
an ce2du
débi t d’ém i ssi on
100
Con st an ce de l a
Con st an ce du
t aCilloleonne
de l a8 f il e
débi t deCroéce
lonne
pt i o3 n
50 d’att en t e
0
T aux d’espace
É qu i t é
Colonne 4 dan s7 l a
liCborleonne
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li en Cpoalronne
t ag é 5 t rCanolsonne
m i ss6i on s
F IG . 6.8 – Influence des temps de propagation homog ènes sans pertes d’acquittements.
Analyse. La dégradation des performances de TCP Vegas confirme sa sensibilité aux pertes
d’acquittements. L’augmentation de la durée du RTT engendrée par les congestions dans le sens
du retour entraı̂ne une réduction importante du débit de l’une des sources. Ceci se traduit par
une sous-utilisation des capacités du réseau et l’inéquité du partage de la bande passante.
Comme dans tous les autres ensembles de simulations, les performances de TCP Reno se
dégradent fortement lorsque des pertes d’acquittements surviennent. En effet, les expirations
inutiles et répétées de son chien de garde de retransmission engendrent de fortes réductions de
la taille de la fenêtre de congestion et donc du débit d’émission.
Pour Primo, l’inconstance de la taille de la file d’attente, comme dans les autres ensembles
de simulations, est sans conséquence pour la qualité de la transmission. Mais, comme nous
l’avons vu dans le paragraphe 6.1.1, la taille moyenne de la file d’attente étant très faible (i.e.,
espace libre important), la gigue réelle du délai d’acheminement (i.e., de la taille de la file
d’attente) n’aura pas d’effet sur la transmission des données.
Conclusion. Ces simulations confirment les résultats 4 et 5 obtenus précédemment : les pro-
tocoles TCP Reno et Vegas sont très sensibles aux pertes d’acquittements alors que TFRC et
Primo ne paraissent pas être affectés. Le protocole TCP Sack, grâce à sa gestion plus fine des
acquittements, n’est que légèrement touché par leur perte (cf. résultat 3), ce qui lui permet de
maintenir ses performances.
CoCnosltonne
an ce2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
lonne
débi t deCroéce pt i3on tCaoilllonne
e de8l a f il e
50 d’att en t e
0
T aux d’espace
É qu i t é
Colonne 4 re da7n s l a
Clioblonne
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li en Cpoalronne
t ag é 5 raonlonne
tC sm i ss6i on s
F IG . 6.9 – Influence des temps de propagation homog ènes en cas de pertes d’acquittements.
Analyse. L’inéquité des protocoles TCP Reno et Sack est due à leur technique de contrôle
de congestion, qui est liée à la fréquence de réception des acquittements (i.e., la réception d’un
acquittement entraı̂ne l’augmentation de la taille de la fenêtre de congestion). L’attente entre
l’émission d’un paquet et la réception de son acquittement n’étant pas la même pour les deux
connexions, une forte inéquité entre les flots est inévitable. En effet, la connexion ayant le RTT
le plus court recevra plus rapidement ses acquittements et pourra ainsi augmenter la taille de sa
fenêtre de congestion plus fréquemment. Cette augmentation rapide de la taille de la fenêtre de
congestion de l’une des deux connexions aura pour effet de lui faciliter la récupération de bande
passante et donc favorisera l’inéquité.
Bien que la régulation de la taille de la fenêtre de congestion de TCP Vegas ne soit pas liée
à la fréquence de réception des acquittements, l’équité entre les flots se dégrade lorsqu’ils n’ont
pas les mêmes temps de propagation. En effet, la connexion ayant le RTT le plus court recevra
ses acquittements plus rapidement que l’autre connexion. Or, même si les deux connexions ont
une fenêtre de congestion de même dimension, la fenêtre de la connexion recevant plus rapide-
ment ses acquittements glissera plus fréquemment que l’autre. Cela permettra à la connexion
136 CHAPITRE 6. ÉVALUATION DES PERFORMANCES
dont la fenêtre glisse le plus fréquemment d’émettre des données plus souvent et d’avoir ainsi
un débit plus important. Notons que ce phénomène est également observable pour TCP Reno et
Sack.
Conclusion. Cet ensemble de simulations met en évidence que l’utilisation d’une fenêtre a un
effet négatif sur l’équité lorsque les connexions ont des temps de propagation différents.
Il semble donc plus judicieux d’utiliser des protocoles dont la régulation de débit est basé
sur un délai inter-paquets lorsque différents flots partageant un même lien ont des temps de pro-
pagation hétérogènes. Cette situation étant fréquente, nous retrouvons là l’une des justifications
des recherches sur les protocoles sans fenêtre [37]. Notons cependant que l’utilisation d’un délai
inter-paquets ne garantit pas que l’équité sera respectée lorsque les délais de propagation sont
hétérogènes. En effet, l’équité dans une telle situation dépend également de la manière dont est
gérée l’augmentation (et la réduction) du débit. Ainsi, il est indiqué dans [101] que le protocole
RAP, qui utilise un délai inter-paquets, a un comportement similaire à celui de TCP Reno (donc
inéquitable) lorsque les délais de propagation sont hétérogènes.
Résultat 9 Lorsque les délais de propagation sont hétérogènes, l’utilisation d’un délai inter-
paquets pour réguler le débit d’émission favorise l’équité.
CoCnosltonne
an ce2du
débi t d’ém i ssi on
100
Con st an ce de l a
Con st an ce du illoelonne
t aC de l a8f il e
Colonne 3
débi t de récept i on 50 d’att en t e
0
T aux d’espace
qu i t é4
CoÉlonne liCborelonne
dan s7l a
m oy enn e f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li enCpoalonne
r t a g é5 t rCanoslonne
m i ssi6on s
Analyse. L’amélioration de l’équité des protocoles TCP Reno et Sack peut s’expliquer par le
fait que la connexion ayant le RTT le plus court émet plus de données. Elle reçoit donc plus
d’acquittements que l’autre connexion, ce qui augmente ainsi ses chances d’en perdre. Or, pour
ces deux protocoles, les pertes d’acquittements entraı̂nent des réductions de débit ; la connexion
ayant la plus large part de bande passante réduira plus fréquemment son débit que l’autre. Cette
réduction fréquente du débit permet de ré-équilibrer le partage de la bande passante entre les
deux connexions.
Conclusion. Bien que les performances en terme d’équité s’améliorent pour TCP Reno et
Sack, les protocoles les plus performants restent Primo et TFRC. La sensibilité de TCP Vegas
aux pertes d’acquittements est une fois de plus mise en évidence.
CoCnosltonne
an ce2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
débi t deCroéce
lonne
pt i o3n t aoill
C e de8l a f il e
lonne
50 d’att en t e
0
T aux d’espace
É qu i t é
re da7n s l a
Clioblonne
mCooylonne
enn e4
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li en Cpoalronne
t ag é 5 tC
raonlonne
sm i ss6i on s
" "
Dans cette section, nous évaluons l’influence du nombre de connexions sur le contrôle de
congestion. La topologie est composée de nœuds sources reliés à nœuds destinations par
"
l’intermédiaire de deux routeurs, eux-même reliés entre eux par le lien de congestion (cf. fi-
gure 5.3, page 108). Le nombre de sources et de récepteurs ( ) varie de 2 à 20, alors que les
autres paramètres du réseau restent fixes (cf. page 112).
nombre de sources. Plus il y a de sources, plus la file se remplit (cf. annexe D). En revanche,
les nuisances engendrées par l’augmentation de la taille de la file d’attente sont atténuées par sa
constance (i.e., la constance de la taille de la file d’attente est supérieure à 95%).
Con st an ce du
Colonne 2
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
débi t deCroéce
lonne
pt i o3
n aill
tC e de l a8 f il e
olonne
50 d’att en t e
0
T aux d’espace
É qu i t é
Colonne 4 liCborleonne
dan s7l a
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occu pat i on T aux de bonn es T FR C V eg as
du li enCpoalonne
r t ag é 5 t raCnoslm
onne 6
i ssi on s
On peut remarquer que, pour les protocoles correctifs, le nombre de sources influence lé-
gèrement les taux de bonnes transmissions, notamment pour TFRC, dont l’indicateur chute à
80%. En effet, plus le nombre de sources augmente, plus les pertes de données sont fréquentes
pour TFRC.
Dans cet ensemble de simulations, Primo est le seul protocole dont les performances ne sont
pas affectées par l’augmentation du nombre de sources.
Analyse. Pour TCP Vegas, on peut supposer que la diminution du taux d’espace libre dans la
file d’attente à mesure que le nombre de sources augmente est due à la manière dont la taille de
la fenêtre de congestion est gérée. En effet, comme nous l’avons vu dans le paragraphe 2.3.2,
TCP Vegas augmente de quelques octets la taille de sa fenêtre de congestion afin de maintenir un
débit légèrement supérieur à la bande passante disponible. Or, lorsque le nombre de connexions
croı̂t, l’augmentation arbitraire de la taille de la fenêtre de congestion peut se répercuter sur
l’espace disponible dans la file d’attente.
Pour les protocoles correctifs, la diminution du taux de bonnes transmissions à mesure que
le nombre de sources augmente semble logique. Les protocoles correctifs ont besoin de saturer
périodiquement les files d’attente des routeurs avant de réduire leur débit d’émission. Durant la
période où la file d’attente est saturée (i.e., en période de congestion), les paquets y arrivant sont
détruits. Or, plus le nombre de sources est élevé, plus le nombre de paquets arrivant au routeur
lors des congestions le sera. Ceci explique l’augmentation du taux de pertes (i.e., la diminution
du taux de bonnes transmissions).
6.7. ÉQUITÉ DANS UN ENVIRONNEMENT MULTI-CONGESTIONNÉ 139
Analyse. Les résultats obtenus dans ce dernier ensemble de simulations confirment les précé-
dents. Bien que l’effet des pertes d’acquittements sur TCP Reno et Vegas soit atténué dans cet
ensemble de simulations, ces deux protocoles y restent sensibles. L’insensibilité de TCP Sack,
TFRC et Primo aux pertes d’acquittement est confirmée (cf. résultats 5 et 3).
Conclusion. Dans cet ensemble de simulations, comme dans tous les autres, TFRC et Primo
sont les protocoles les plus performants. L’augmentation du nombre de sources semble atténuer
l’effet des pertes d’acquittements sur les protocoles qui y sont sensibles. En effet, Les résultats
obtenus par TCP Reno et Vegas sont quasiment les mêmes qu’il y ait ou non des pertes d’ac-
quittements.
CoCnosltonne
an ce 2du
débi t d’ém i ssi on
100
Con st an ce du Con st an ce de l a
Ctoalill e de8 l a
f il e
débi t de Créce
olonne 3
pt i on 50
onne
d’att en t e
0
T aux d’espace
u i té 4
CÉoqlonne Cliob
lonne
re da7n s la
m oy enn e
f il e d’att en t e
Pri m o
R en o Sack
T aux d’occCoulp at i on5
onne TCaux de bo
olonne 6 nn es T FR C V eg as
du li en part ag é t ran sm i ssi on s
6.7.1 Observations
Premier scénario de démarrage. Pour commencer, une première série de simulations où
toutes les sources commencent à émettre simultanément a été effectuée (cf. figure 6.14). Les
courbes représentant le débit de réception de chaque connexion nous montrent l’instabilité des
sources utilisant les protocoles TCP Reno ou TCP Sack. Malgré cette instabilité, l’inéquité de
ces deux protocoles est cependant observable. En effet, au bout d’une centaine de secondes de
simulation, les connexions A et D prennent le dessus et commencent à monopoliser la bande
passante. Cette domination est très nette quand le protocole TCP Sack est utilisé.
Les résultats obtenus par TFRC sont assez bons bien que la part de bande passante allouée à
la connexion E soit faible. Hormis pour la connexion E, l’équité moyenne est assez bonne : les
connexions A, B, C et D obtiennent une part équitable de bande passante. On peut également
noter que TFRC ne parvient pas à stabiliser le débit de réception des différentes connexions :
après 200 s de simulation, des variations de débit de l’ordre de 30% sont encore observables.
Cette incapacité à conserver un débit constant pourrait nuire à la stabilité du réseau et donc à la
qualité de réception des données.
Pour la stabilité du débit de réception, le protocole TCP Vegas est le plus efficace. En effet,
le débit de réception de chaque connexion est quasiment constant sur toute la durée de la simu-
lation. Malheureusement, le partage de la bande passante n’est pas très équitable : la connexion
A dispose d’une part de bande passante presque trois fois supérieure à celle dont dispose la
connexion E et aucune des connexions ne possède la même quantité de bande passante.
En utilisant Primo, le partage de la bande passante entre les connexions A, B, C et D est
relativement équitable. En revanche, la connexion E dispose de moitié moins de bande passante
que les autres connexions. Notons que la constance du débit de réception obtenue avec Primo
est quasiment aussi bonne que celle obtenue avec TCP Vegas.
6.7. ÉQUITÉ DANS UN ENVIRONNEMENT MULTI-CONGESTIONNÉ 141
Second scénario de démarrage. Dans la seconde série de simulations (cf. figure 6.15), le
groupe de connexions ne traversant qu’une congestion (connexions A et B) commence à émettre
seul sur le réseau. Puis, dix secondes plus tard, le second groupe (connexions C et D) commence
à émettre. Enfin, après vingt secondes de simulation, la connexion E commence à émettre.
Comme dans le premier scénario, les protocoles TCP Reno et Sack ne parviennent pas à
stabiliser leur débit de réception. Le partage des ressources est également très mauvais : pour
TCP Sack, les connexions A et D prennent rapidement le dessus et utilisent une grande part de
la bande passante disponible. Pour TCP Reno, les connexions A, B, C et D monopolisent à tour
de rôle la bande passante, alors que la connexion E n’en dispose que d’une très faible part.
Le protocole TFRC éprouve également des difficultés à partager équitablement la bande pas-
sante entre les différentes connexions. En effet, on peut voir que les connexions A et D prennent
rapidement une part importante de bande passante. Les connexions B, C et E ne parviennent à
obtenir qu’une part de bande passante environ deux fois inférieure à celle des connexions A et
D. Notons que, quelle que soit la connexion, la stabilité du débit de réception est assez bonne.
Ce protocole serait donc utilisable dans le cadre d’une transmission temps réel.
Les résultats obtenus par TCP Vegas et Primo sont excellents. La stabilité du débit de
réception est quasiment parfaite pour les deux protocoles. Les quelques variations observables
sont dues à la recherche de bande passante disponible. Pour TCP Vegas, l’équité est très bonne,
bien que la connexion E ait une part de bande passante légèrement inférieure à celle des autres
connexions. Pour Primo, l’équité est parfaite et toutes les connexions ont la même quantité de
bande passante allouée.
Troisième scénario de démarrage. Dans la troisième série de simulations (cf. figure 6.16),
le groupe de connexions ne traversant que deux congestions (connexions C et D) commence à
émettre seul sur le réseau. Puis, dix secondes plus tard, le groupe de connexions ne traversant
qu’une congestion (connexions A et B) commence à émettre. Enfin, après vingt secondes de
simulation, la dernière connexion (E) commence à émettre.
Les résultats obtenus pour cette série de simulations sont très proches de ceux obtenus dans
le second scénario. On peut tout de même noter que l’inéquité des protocoles TCP Reno et
Sack est encore plus marquée dans cette série. Pour TCP Sack, les connexions A et D prennent
rapidement et largement le dessus en monopolisant la bande passante du lien congestionné.
Pour TCP Reno, on peut observer que, par moments, les connexion A et D sont quasiment
seules à émettre sur le réseau (par exemple entre t = 100 s et t = 130 s), les autres connexions
ne disposant que d’une part très faible de la bande passante.
L’inéquité entre les flots est également accentuée pour TFRC. En effet, comme précédem-
ment, la quantité de bande passante allouée aux connexions A et B est quasiment deux fois
supérieure à celle allouée aux autres connexions. On peut noter que, pour TCP Vegas, les
connexions ne traversant qu’une congestion disposent de plus de bande passante que les autres,
mais cette différence n’est pas trop marquée. Enfin, les résultats obtenus par Primo restent aussi
bons que dans la série précédente ; la stabilité du débit de réception et l’équité sont quasiment
parfaites.
Quatrième scénario de démarrage. Dans la quatrième série de simulations (cf. figure 6.17),
la connexion traversant trois congestions (connexion E) commence à émettre seule sur le réseau.
6.7. ÉQUITÉ DANS UN ENVIRONNEMENT MULTI-CONGESTIONNÉ 143
Puis, cinq secondes plus tard, le groupe de connexions ne traversant qu’une congestion (con-
nexions A et B) commence à émettre. Enfin, après dix secondes de simulation, le groupe de
connexions traversant deux congestions (connexions C et D) commence à émettre.
Dans cette série de simulations, l’inéquité entre les flots utilisant TCP Sack est très marquée.
Dès le début, et quasiment tout au long de la simulation, la bande passante est monopolisée
par les connexions A et D. Il en va de même pour TCP Reno, avec lequel la domination des
connexions A et D est très rapide et dure toute la simulation.
Les résultats obtenus par TFRC montrent une inéquité assez forte entre les connexions A, D
et E. En effet, la connexion E a une part de bande passante allouée jusqu’à trois fois inférieure
à celle des connexions A et D.
Les résultats obtenus par TCP Vegas et Primo sont quasiment les mêmes que ceux obtenus
lorsque toutes les sources commencent à émettre simultanément. Pour TCP Vegas, la stabilité du
débit d’émission est parfaite mais le partage de la bande passante n’est pas totalement équitable.
Pour Primo, le partage de la bande passante est relativement équitable entre les connexions A,
B, C et D jusqu’à t = 200 s, puis la connexion A consomme légèrement plus de bande passante
que les autres connexions. Notons que, tout au long de la simulation, la part de bande passante
allouée à la connexion E est deux à trois fois inférieure à celle allouée aux autres connexions.
Cinquième scénario de démarrage. Dans cette série de simulations (cf. figure 6.18), la
connexion traversant trois congestions (connexion E) commence à émettre seule sur le réseau.
Puis, cinq secondes plus tard, le groupe de connexions traversant deux congestions (connexions
C et D) commence à émettre. Enfin, après dix secondes de simulation, le groupe de connexions
ne traversant qu’une congestion (connexions A et B) commence à émettre.
Dans cette série de simulations, les résultats obtenus par TCP Sack et TFRC sont assez
mauvais en terme d’équité. En effet, au bout de 25 s pour TCP Sack (et 50 s pour TFRC), les
connexions A et D commencent à monopoliser la bande passante disponible. Pour TCP Sack, on
peut observer qu’à certains moments (par exemple entre t = 200 s et t = 250 s) la bande passante
allouée à la connexion E est plus de dix fois inférieure à celles des connexions A et D. De
même, pour TFRC, au bout de 250 s de simulation, la bande passante octroyée aux connexions
B, C et E est plus de sept fois inférieure à celle des connexions A et D.
Les résultats obtenus par TCP Reno sont similaires à ceux du quatrième scénario : la bande
passante est monopolisée à tour de rôle par les connexions A, B, C, D et la connexion E n’en
obtient qu’une part infime.
Les résultats obtenus par TCP Vegas sont très proches des ceux obtenus dans le quatrième
scénario. Pour Primo, la bande passante est équitablement partagée entre les connexions A, B,
C et D. La part de bande passante obtenue par la connexion E est deux fois plus faible que celle
obtenue par les autres connexions.
6.7.2 Analyse
Lissage et constance du débit. Quel que soit le scénario de démarrage utilisé, la constance
et le lissage du débit de réception, pour un protocole donné, sont les mêmes. En effet, on peut
regrouper les protocoles en trois classes :
146 CHAPITRE 6. ÉVALUATION DES PERFORMANCES
Équité. Idéalement, quel que soit leur groupe d’appartenance, toutes les connexions devraient
obtenir la même quantité de bande passante (i.e., avoir le même débit de réception). Cepen-
dant, nous avons observé que, généralement, la connexion traversant le plus de congestions est
défavorisée par rapport aux autres.
Comme pour le lissage et la constance du débit de réception, on peut distinguer 3 groupes
de protocoles :
– les protocoles avec lesquels on constate une très forte inéquité, quel que soit le scénario
de démarrage des connexions : TCP Reno et Sack ;
– les protocoles avec lesquels l’inéquité entre les connexions est variable, sans jamais être
très bonne, en fonction du scénario de démarrage : TFRC ;
– les protocoles pour lesquels, suivant le scénario de démarrage l’équité obtenue varie de
parfaite à raisonnable : TCP Vegas et Primo.
Comme nous l’avons vu dans l’ensemble de simulations 6.5, TCP Reno et Sack ne par-
viennent pas à maintenir l’équité lorsque les délais de propagation des connexions en concur-
rence sont hétérogènes. Cette constatation se vérifie dans cet ensemble de simulations. On peut
supposer que, dans le cas d’un environnement multi-congestionné, l’inéquité de ces protocoles
est accentuée par les pertes de segments dues aux multiples congestions. En effet, plus le nombre
6.7. ÉQUITÉ DANS UN ENVIRONNEMENT MULTI-CONGESTIONNÉ 149
de congestions traversées par les paquets est important, plus ces derniers ont de chance d’être
détruits dans les routeurs. Or, les connexions dont les paquets traversent le plus de conges-
tions étant celles dont le RTT est le plus long (cf. figure 5.4 page 109), elles ont peu de chance
d’obtenir une part de bande passante équitable.
Le protocole TFRC parvient dans certains cas à réduire l’inéquité entre les connexions.
On peut supposer que ces meilleures performances par rapport à TCP Reno et Sack sont en
partie dues à sa capacité à maintenir l’équité lorsque les connexions concurrentes possèdent des
temps de propagation différents (cf. section 6.5). En revanche, avec ce protocole, quel que soit
le scénario de démarrage de sources, les connexions ne parviennent jamais à obtenir exactement
la même part de bande passante.
Dans plusieurs scénarios de démarrage, TCP Vegas et Primo parviennent à partager de
manière totalement équitable la bande passante entre les différentes connexions. Cette équité est
obtenue grâce au comportement préventif de ces protocoles. En effet, un tel comportement per-
met de réduire l’agressivité des connexions traversant le moins de routeurs, et donc ré-équilibre
le partage de la bande passante. Dans ces simulations, nous avons pu remarquer que Primo
était généralement plus équitable que TCP Vegas. Cette situation est principalement liée à deux
caractéristiques de Primo :
!
– Primo a un degré de prévention plus élevé que TCP Vegas. Comme nous l’avons vu
dans tous les ensembles de simulations précédents, Primo a un taux d’espace libre dans
la file d’attente qui est supérieur à TCP Vegas. Ceci traduit le fait que Primo commence à
réduire son débit d’émission pour un niveau de congestion plus faible que celui utilisé par
TCP Vegas. Il semble donc qu’en autorisant un niveau de congestion plus faible (à partir
duquel le débit sera réduit), Primo améliore l’équité entre les flots.
– Primo utilise un délai inter-paquets pour réguler son débit d’émission. En effet, comme
nous l’avons vu dans l’ensemble de simulations portant sur les délais de propagation
hétérogènes (cf. section 6.5), les protocoles utilisant un délai inter-paquets pour réguler
leur débit parviennent plus facilement à maintenir l’équité.
Dans ces simulations, nous avons observé que les connexions A et D disposaient fréquem-
ment d’une part de bande passante supérieure à celle des autres connexions. L’obtention d’une
part importante de bande passante par la connexion D est difficilement explicable. En effet,
on pourrait s’attendre à ce que ce soient les connexions dont les paquets ne traversent qu’une
congestion (connexions A et B) qui possèdent la plus grande part bande passante. En analy-
sant ces résultats, nous ne voyons pas d’explication liée aux caractéristiques des protocoles. Par
contre, nous pouvons en esquisser une liée à la topologie utilisée. En effet, le nombre de flots
entrant sur les routeurs n’est pas toujours le même. Les routeurs auxquels sont connectés les
sources A, B, C et E n’ont que 3 flots en entrée (cf. figure 5.4 page 109) alors que le routeur
auquel est connecté la source D en a 4. Cette différence pourrait peut-être, dans certains cas,
favoriser la connexion D. Or, si l’on admet que cette situation favorise la connexion D, il est lo-
gique que la connexion B (qui est directement en concurrence avec la D) ait un débit d’émission
inférieur à ce qu’il devrait être. Il est cependant difficile de vérifier cette hypothèse.
Dans la méthode d’évaluation présentée au chapitre 5, nous avons proposé d’utiliser dif-
férents scénarios de démarrage des sources afin d’observer de quelle manière une connexion
parvient à s’imposer lorsque d’autres connexions sont déjà établies. Les résultats de ces simula-
tions ne nous ont permis de tirer aucune conclusion quant à l’influence de l’ordre de démarrage
des sources. En effet, il semble que l’instant auquel démarrent les connexions soit plus impor-
150 CHAPITRE 6. ÉVALUATION DES PERFORMANCES
F IG . 6.19 – Dans la figure de gauche, les groupes de connexions E, C/D et A/B d émarrent à
5 s d’intervalle, dans la figure de droite ces groupes d émarrent dans le même ordre avec un
intervalle de 5,1 s. Ces figures ont été obtenues en utilisant le protocole TFRC.
tant que leur ordre de démarrage. Pour vérifier cette hypothèse nous avons effectué des simula-
tions dans lesquelles l’ordre de démarrage des sources était toujours le même mais en utilisant
différentes valeurs pour l’intervalle de temps séparant les démarrages. Les résultats que nous
avons obtenus ont confirmé notre supposition. Dans la figure 6.19, en conservant le même ordre
de démarrage mais en utilisant des intervalles d’attente différents, nous obtenons pour TFRC
des résultats très différents. On peut donc en conclure que l’ordre d’arrivée des connexions sur
le réseau à moins d’influence que l’instant auquel elles commencent à émettre. Les routeurs
peuvent être saturés ou non ; suivant l’instant auquel le premier paquet d’une connexion y arri-
vera, il sera détruit ou non. Or, si ce paquet est détruit, le débit d’émission de la connexion sera
réduit. Inversement, si ce paquet parvient au récepteur, le débit de connexion sera augmenté.
Ces deux cas engendrent deux situations totalement différentes qui auront une forte influence
sur les résultats de la simulation. Notons que cette observation se vérifie principalement lorsque
les protocoles testés sont de type correctif, car ils ont tendance à périodiquement saturer la file
d’attente. En effet, les protocoles préventifs ne saturant pas les files d’attente, il y a peu de
chance que des paquets soient perdus quel que soit l’instant auquel ils arrivent au routeur.
Comme nous venons de le voir, ces simulations sont difficiles à interpréter et leurs résultats
sont très variables (un léger décalage de l’instant de démarrage d’une source a un impact im-
portant sur les résultats de la simulation). Cependant, elles nous autorisent tout de même à
distinguer les protocoles ayant tendance à être inéquitables. En effet, nous avons pu constater
que, pour les protocoles correctifs, il semble difficile de maintenir l’équité dans un environne-
ment multi-congestionné. Notons que ces constatations ne nous permettent pas de conclure à
la supériorité des protocoles préventifs, mais elles nous autorisent à supposer qu’ils ont plus de
facilités à partager équitablement la bande passante dans un environnement multi-congestionné.
6.8. CONCLUSION 151
6.7.3 Conclusion
Les simulations effectuées dans un environnement multi-congestionné nous ont permis de
distinguer, en terme de lissage et de constance du débit de réception, trois classes de protocoles :
– les protocoles ne parvenant ni à lisser, ni a stabiliser leur débit : TCP Reno et Sack ;
– les protocoles parvenant uniquement à lisser leur débit : TFRC ;
– les protocoles parvenant à lisser et à stabiliser leur débit : TCP Vegas et Primo.
Ces résultats confirment ceux obtenus dans les ensembles de simulations visant à évaluer
l’influence des différents paramètres du réseau (cf. sections 6.1 à 6.6).
Nous avons également distingué trois classes de protocoles pour ce qui est de l’équité :
– les protocoles pour lesquels l’inéquité est très forte, quel que soit le scénario de démarrage
des connexions : TCP Reno et Sack ;
– les protocoles pour lesquels l’inéquité varie, sans jamais être très bonne, en fonction du
scénario de démarrage : TFRC ;
– les protocoles pour lesquels l’équité varie de parfaite à raisonnable, suivant le scénario de
démarrage : TCP Vegas et Primo.
Ces simulations nous laissent supposer que les protocoles préventifs ont plus de faciliter
à maintenir l’équité dans un environnement multi-congestionné. Cependant, la complexité des
résultats nous permet uniquement d’émettre des hypothèses qui seront difficiles à vérifier.
6.8 Conclusion
Après avoir mis au point dans le chapitre 4 un nouveau protocole de transport incluant un
mécanisme de contrôle de congestion, nous avons voulu évaluer ses performances. Cette éva-
luation s’est faite grâce à la méthode présentée au chapitre 5. L’étude des résultats nous a permis
de dégager certaines conclusions sur le comportement des protocoles testés ainsi que sur leur
capacité à être utilisés pour la transmission d’un flot temps réel.
Bilan. Les protocoles TCP Reno et Vegas sont très sensibles aux pertes d’acquittements. En
effet, dans tous les ensembles de simulations, lorsque des pertes d’acquittements surviennent,
leurs performances se dégradent fortement. Les autres protocoles testés ne semblent pas être
sensibles aux pertes d’acquittements. En effet, l’option implémentée par TCP Sack lui permet
de s’affranchir des réductions de débit inutiles engendrées par les pertes d’acquittements et
donc de maintenir ses performances. Le contrôle de congestion de TFRC et de Primo n’étant
pas basé sur la détection de pertes via la réception d’acquittements, leurs performances ne sont
pas diminuées lorsque des congestions apparaissent dans le sens retour.
Les simulations présentées dans ce chapitre ont mis en évidence que TCP Vegas ne parvient
pas à maintenir l’équité entre les flots lorsque la taille maximale de la file d’attente est très
petite (de l’ordre de 5 ko, cf. section 6.2). Notons qu’il est peu probable de rencontrer une telle
situation dans un environnement réel. Le même constat a été fait pour Primo lorsque la file
d’attente implémente une politique RED. Lorsque les files d’attente sont de taille raisonnable
152 CHAPITRE 6. ÉVALUATION DES PERFORMANCES
(supérieure à 10 ko), TCP Vegas et Primo sont les seules protocoles qui parviennent à ne pas
les saturer. Le caractère préventif du contrôle de congestion implémenté par ces protocoles leur
permet de laisser un espace libre important dans les files d’attente.
Les protocoles ayant un comportement correctif (TCP Reno, Sack et TFRC) ont tendance à
saturer les files d’attente. Le protocole TFRC est celui qui laisse le moins d’espace libre dans
les files d’attente.
Résultat 11 Lorsque les files d’attente ont une taille maximale raisonnable (i.e., au moins
supérieure à 10 ko), les protocoles préventifs (Primo et TCP Vegas) ne les remplissent jamais
complètement.
Comme nous l’avons vu dans le chapitre 5, la constance des débits d’émission et de réception
sont des critères importants d’un point de vue utilisateur (i.e., fluidité de la réception d’un flux
temps réel) comme d’un point de vue opérateur (i.e., stabilité du réseau). Dans ce domaine, les
protocoles TCP Reno et Sack obtiennent des résultats assez mauvais. En effet, aucun de ces
deux protocoles n’est équipé d’un mécanisme anti-rafales. Ils ont donc tendance à émettre la
totalité de leur fenêtre d’émission en un temps très restreint, puis à attendre la réception des ac-
!
quittements correspondants. Ce comportement conduit à une alternance de phases d’émission à
un débit très élevé et de phases de silence (phase sans émission).
Le protocole TCP Vegas, qui est équipé d’un système anti-rafales, parvient à maintenir un
débit d’émission et de réception constant tant que les temps de propagations ne sont pas trop
importants, et que la taille de sa fenêtre de congestion n’est pas trop faible. En revanche, lorsque
le RTT augmente (cf. section 6.4) ou que la taille de sa fenêtre de congestion diminue (cf. sec-
tion 6.1), le mécanisme anti-rafales devient inefficace, ce qui rend instable les débits d’émission
et de réception. De même, les pertes d’acquittements semblent perturber le mécanisme anti-
rafales de ce protocole.
Seuls TFRC et Primo, dont le contrôle de congestion n’est pas basé sur une fenêtre, par-
viennent à conserver des débits d’émission et de réception constants quelle que soit la situation.
Résultat 12 L’utilisation d’un délai inter-paquets pour réguler le débit d’émission favorise sa
constance.
Ces simulations ont également montré que les protocoles utilisant une fenêtre pour gérer
le débit d’émission ne sont pas équitables lorsque des flots ayant des temps de propagation
hétérogènes se partagent un même lien. En effet, nous avons constaté qu’avec TCP Reno, Sack
ou Vegas, la connexion ayant le RTT le plus court a tendance à utiliser une part de bande
passante plus importante que celle utilisée par l’autre connexion (cf. section 6.5). Ce phénomène
est dû à deux caractéristiques liées à la gestion des fenêtres de congestion et d’émission :
– la gestion de la taille de la fenêtre de congestion dans TCP Reno et Sack est telle que la
connexion ayant le RTT le plus court verra sa fenêtre croı̂tre plus rapidement que celle de
l’autre connexion ;
– la gestion du glissement de la fenêtre d’émission (quel que soit le protocole) est telle que
la connexion ayant le RTT le plus court verra sa fenêtre glisser plus fréquemment que
l’autre connexion.
Résultat 13 L’utilisation d’un délai inter-paquets pour réguler le débit d’émission favorise
l’équité.
6.8. CONCLUSION 153
Nous avons également constaté que, lorsque le nombre de sources augmente, les perfor-
mances de certains protocoles se dégradent (cf. section 6.6). Pour TCP Vegas, le taux d’espace
libre dans la file d’attente diminue à mesure que le nombre de sources augmente. Pour TFRC, le
taux de bonnes transmissions diminue lorsque le nombre de source augmente. Ces indications
laissent supposer que ces deux protocoles risquent de changer de comportement (i.e., augmen-
tation de la taille de la file d’attente, du taux de pertes, etc.) lors de leur implantation sur un
réseau composé d’un grand nombre de machines. En revanche, les performance de Primo ne
sont pas affectées par l’augmentation du nombre de sources, ce qui est de bonne augure pour
un passage à l’échelle.
Résultat 14 Le protocole Primo supporte mieux que les autres protocoles l’augmentation du
nombre de sources.
Pour finir, un dernier ensemble de simulations nous a permis d’évaluer l’équité des proto-
coles dans un environnement multi-congestionné. La complexité d’interprétation de ces simu-
lations ne nous a pas permis de conclure à la supériorité d’un protocole par rapport aux autres.
En revanche, ces simulation nous indiquent que les protocoles de type préventif paraissent avoir
plus de facilité à maintenir l’équité dans un environnement multi-congestionné.
Résultat 15 Les protocoles préventifs (Primo et TCP Vegas) ont plus de facilité à maintenir
l’équité dans un environnement multi-congestionné.
Le transport de flots temps réel requiert un délai d’acheminement et une gigue de ce délai les
plus faibles possibles. Dans nos simulations, seule la variation de la taille de la file d’attente peut
avoir une influence sur le délai d’acheminement et sa gigue. Lorsqu’il n’y a que deux sources,
en évitant de saturer la file d’attente, TCP Vegas et Primo minimisent le délai d’acheminement.
Nous avons également noté que dans cette situation, ces deux protocoles parviennent à main-
tenir une gigue assez faible (cf. remarque 2, page 123). En revanche, nous avons observé que,
lorsque le nombre de sources augmente, Primo est le seul protocole à conserver un espace im-
portant dans la file d’attente (cf. section 6.6). Enfin, dans un environnement multi-congestionné,
Primo et TCP Vegas, grâce à la constance de leur débit, semblent être les plus aptes à stabiliser
la taille des différentes files d’attente et donc la gigue. L’ensemble de ces observations, nous
permet, pour Primo, d’extrapoler raisonnablement les résultats concernant la constance et le
" #
taux de remplissage des files d’attente (i.e., le délai d’acheminement et sa gigue), pour des si-
tuations à sources et congestions. Ainsi, Primo est le seul protocole à minimiser le délai
d’acheminement ainsi que sa gigue, dans la plupart des situations.
Résultat 16 Le protocole Primo minimise le délai d’acheminement ainsi que sa gigue dans
beaucoup de situations.
Perspective d’utilisation. Les simulations présentées dans ce chapitre nous ont permis de
tirer quelques conclusions à propos des protocoles testés :
– TCP Reno. Le principal défaut de ce protocole pour une transmission multimédia est l’in-
constance de son débit d’émission et donc de réception (par exemple : images saccadées
dans une transmission vidéo). De plus, son comportement correctif le pousse à saturer
les files d’attente, ce qui engendre une augmentation du RTT qui peut nuire à la qua-
lité d’une transmission temps réel (par exemple : temps de latence important durant une
154 CHAPITRE 6. ÉVALUATION DES PERFORMANCES
À l’issue de ces comparaisons, seuls les protocoles TFRC et Primo semblent être utilisables
pour le transport de flux temps réel. En effet, les protocoles TCP Reno et Sack sont inutilisables
dans le cadre d’une transmission vidéo, car ils sont incapables de stabiliser les débits d’émission
et de réception. Quant à TCP Vegas, sa sensibilité aux pertes d’acquittements le rend inefficace
dans un grand nombre de situations.
Dans ces simulations, le protocole Primo est légèrement plus performant que TFRC. Cepen-
dant, on peut noter que dans certains cas, Primo devient largement plus performant que TFRC,
notamment lorsque le nombre de sources augmente. Enfin, on remarquera que Primo est le seul
protocole à préserver un espace libre important dans la file d’attente, quelle que soit la situa-
tion dans laquelle il se trouve. Cette caractéristique rend Primo plus adapté que TFRC pour le
transport de données supportant mal les délais d’acheminement importants.
155
Chapitre 7
Conclusion
travaux menés sur ECN [43, 97, 8, 34]). Cependant, les techniques liées aux protocoles
implémentés sur les équipements intermédiaires (e.g., les routeurs) posent des problèmes
au niveau du déploiement. En effet, le déploiement de ces techniques ne concerne pas uni-
quement les deux extrémités d’une connexion, mais tous les équipements qui participent à
la communication. De plus, l’utilisation de ces techniques peut engendrer des problèmes
de compatibilité avec les politiques de sécurité réseau. Il est, par exemple, fréquent que
des pare-feux rejettent les paquets contenant un marquage ECN en suspectant une attaque.
De ces trois pistes, nous avons choisi d’exploiter celle de l’amélioration de la gestion du
débit d’émission. Une fois la piste d’amélioration, choisie, il a fallut déterminer le type de
comportement que nous souhaitions développer : préventif ou correctif.
Méthode utilisée
La modélisation continue des phénomènes de congestions sur les réseaux à commutation de
paquets apporte une grande simplification du problème. Les problèmes des réseaux à commu-
tation de paquets (comme le contrôle de congestions) peuvent être réduits à des problèmes de
contrôle des systèmes à entrées sorties, qui sont largement traités en automatique [26]. En effet,
une connexion peut être modélisée par un système à une entrée et deux sorties avec un bouclage
implicite à délai incertain. Les sorties du système (le débit de réception et le délai d’achemine-
ment) sont transmises au correcteur (la source) afin qu’il puisse ajuster l’entrée du système (le
débit d’émission). Le développement d’un nouveau mécanisme de contrôle de congestion basé
sur un correcteur automatique est une piste qui jusqu’à présent est restée peu explorée. La mise
au point d’un tel correcteur est plus simple à mettre en œuvre dans un environnement continu
où tous les paramètres sont maı̂trisés.
Le développement de protocoles préventifs, basé sur des principes issus de la théorie du
contrôle des systèmes, semble être l’une des dernières pistes prometteuses peu explorées. C’est
7.1. BILAN DES TRAVAUX 157
Les résultats montrent que, dans une grande variété de situations, la modélisation continue
d’un réseau à commutation de paquets est pertinente. Ces résultats ont été obtenus avec un
protocole simple de type AIMD, mais nous pensons qu’ils peuvent être extrapolés à d’autres
protocoles de transport de type AIMD. Dans notre étude, on retiendra donc que, pour des va-
leurs raisonnables des délais de propagation et de la taille des paquets, si le protocole modélisé
cherche à lisser le débit d’émission (i.e., pas de brusque variations), le protocole (discret) et son
approximation continue auront le même comportement.
La validité de l’approximation continue d’un réseau ouvre de nouvelles perspectives pour
le contrôle de congestion. En effet, des résultats prometteurs [83, 118, 22] obtenus dans le
domaine du continu pourraient être transposés en discret. De plus, la validité de l’approximation
continue autorisera des simulations de plus en plus complexes grâce à de nouveaux modèles.
Ces nouvelles modélisations continues devraient permettre d’effectuer des simulations à large
échelle [67], qui sont actuellement irréalisables avec des simulateurs à événements discrets.
158 CHAPITRE 7. CONCLUSION
Discrétisation
La discrétisation du correcteur développé en continu s’est faite sous ns. Ce simulateur fait
office de référence dans le domaine du contrôle de congestion (i.e., la plupart des études l’uti-
lisent).
Cette étape du développement a donné lieu à l’ajout de quelques fonctionnalités ainsi qu’à
des ajustements (cf. section 4.6). En effet, la discrétisation du correcteur nous a amené à ajouter
des mécanismes détectant les incohérences entre la valeur du FTT et celle du débit de réception
dues à des phénomènes de clustering dans les files d’attente (qui n’existent pas en continu). Il
a également été nécessaire d’ajouter un chien de garde de retransmission afin que le protocole
puisse détecter les situations de blocage et, ainsi qu’il ne sature pas le réseau.
Le correcteur discrétisé a été implanté dans un protocole de transport nommé Primo (Pro-
portionnel intégral modifié).
eux-mêmes reliés entre eux par un lien congestionné (cf. figure 5.3 page 108). Ce type
de topologie permet d’évaluer l’influence des différents paramètres du réseau : rapport de
bande passante des liens, taille et type des files d’attente, temps de propagation et nombre
de sources. Afin d’évaluer les protocoles dans diverses situations, les paramètres testés
du réseau varient sur des plages de valeurs définies à l’aide de la littérature [48, 2, 19, 10,
27, 66, 31, 75, 33, 47] et des constatations effectuées lors de simulations préliminaires.
– La seconde topologie utilisée possède plusieurs liens congestionnés. Elle est composée de
cinq paires source/destination et quatre routeurs intermédiaires (cf. figure 5.4 page 109).
Suivant les routeurs auxquels sont reliées la source et la destination d’une connexion,
le chemin qu’emprunteront ses paquets comprendra de une à trois congestions. Cette
topologie permet d’évaluer les capacités d’un protocole à partager équitablement la bande
passante alors que la situation est propice à l’inéquité.
La diversité des situations simulées (445 simulations) permet d’évaluer les protocoles de
manière objective et non dans un environnement qui pourrait en favoriser certains. La méthode
d’évaluation que nous avons définie est multi-critères (cf. section 5.4). En effet, elle permet
d’évaluer un mécanisme de contrôle de congestion pour l’ensemble des critères d’efficacité que
nous avons recensé dans la littérature [48, 2, 19, 10, 27, 66, 31, 75, 33, 47].
Cette méthode a été définie dans le but d’évaluer un protocole préventif qui n’a pas pour
objectif d’être déployé sur Internet tel qu’il est. Dans le cadre d’une évaluation portant sur un
protocole ayant pour objectif d’être déployé sur Internet, il serait nécessaire de compléter cette
méthodologie d’évaluation. En effet, le déploiement sur Internet implique la compatibilité avec
TCP New Reno (l’une des versions les plus répandues sur Internet [90]). Il faudra donc ajouter
un ensemble de simulations dans lesquelles le nouveau protocole sera mis en concurrence avec
TCP New Reno. Ainsi la méthode développée dans cette étude pourrait faire office de banc
d’essais pour l’évaluation des nouveaux protocoles qu’ils soient préventifs ou correctifs.
d’émission de TFRC est parfaitement lissé grâce à son système de régulation, qui utilise un délai
inter-paquets. Le seul inconvénient de ce protocole, dans le cadre d’une transmission temps réel,
est qu’il a tendance à saturer les files d’attente, ceci est dû à son comportement correctif.
Le protocole Primo, en alliant les avantages de TCP Vegas et de TFRC est très efficace pour
une transmission temps réel. En effet, son caractère préventif, son contrôle de débit basé sur un
délai inter-paquets, ainsi que son système de détection de congestion situé du côté du récepteur,
font de ce protocole, un très bon candidat au transport de données temps réel.
7.2 Perspectives
7.2.1 Implantation
Dans cette étude, il a été montré que le mécanisme de contrôle de congestion implémenté
par Primo est performant lorsqu’il n’est en concurrence qu’avec lui-même. Cette situation est
rendue possible uniquement si Primo se trouve implémenté dans un environnement dédié :
réseau privé dédié à ce protocole (cadre dans lequel nous nous sommes placés pour notre étude),
réseau ad’hoc ou lien entre téléphone cellulaire et réseau Internet.
Réseau ad’hoc. Le mécanisme de contrôle de congestion de Primo tel qu’il a été conçu ne
peut, actuellement, fonctionner que si le chemin allant de l’émetteur au récepteur ne change
pas. Or, généralement les réseaux ad’hoc sont utilisés pour leur capacité d’adaptation à la mo-
bilité des machines composant le réseau. Le mécanisme de contrôle de congestion proposé dans
Primo devra donc subir quelques modifications pour palier le problème des re-routages. Bien
que, dans les réseaux ad’hoc, les routes sont amenées à changer fréquemment, on peut supposer
que la route allant d’un émetteur à un récepteur aura un temps de propagation stable durant
un certain intervalle de temps. Si cet intervalle de temps est suffisamment long (de l’ordre de
la minute), un mécanisme d’évaluation périodique de la bande passante et du FTT pourrait
être ajouté à Primo. Ainsi, périodiquement, Primo mesurerait un nouveau FTT de référence
ainsi que la nouvelle part de bande passante disponible et les utiliserait pour ajuster son débit
d’émission durant la période suivante. Notons que cette technique n’est utilisable que si la
période des mesures est suffisamment longue. Dans le cas contraire, la dégradation des perfor-
mances engendrée par l’estimation trop fréquente du FTT de référence (émission d’une rafale
de quatre paquets) nuirait fortement au contrôle de congestion de Primo et le rendrait inefficace.
Remarquons que, dans la cas d’un réseau où les routes changent très fréquemment, il semble
impossible de définir une mécanisme de contrôle de congestion efficace, quel qu’il soit. Notons
que les réseaux ad’hoc peuvent également être fixes ou à faibles mouvements (e.g., réseaux de
capteurs). Une telle configuration est assimilable à un réseau privé dédié à Primo, et dans ce
cas, il peut être utilisé tel qu’il est actuellement.
Lien entre téléphone cellulaire et Internet. Les problèmes de mobilité qui peuvent être ren-
contrés en ad’hoc, seront réduits ici au mouvement d’une seule machine. En effet, contraire-
ment à un réseau ad’hoc, dans la cas d’une liaison entre téléphone cellulaire et Internet, seul le
téléphone peut se déplacer. Or, comme nous le savons, à chaque changement de cellule, des in-
formations sont échangées entre le téléphone et les bornes réceptrices (c’est le handover) [65].
On peut aisément imaginer que Primo pourrait profiter de ces informations pour savoir à quel
7.2. PERSPECTIVES 161
moment il doit mettre à jour le FTT de référence et ainsi s’adapter à la nouvelle route. Notons
que, comme pour les réseaux ad’hoc, si le changement de cellule est trop fréquent, les estima-
tions répétées du FTT de référence risquent de nuire à l’efficacité du contrôle de congestion.
Internet. Le déploiement sur Internet de Primo semble compromis pour deux raisons :
– Primo est un protocole préventif. La quasi totalité du trafic Internet (90%) est gérée par
diverses versions correctives de TCP (Tahoe, Reno, New Reno, Sack). Or, la cohabitation
entre les protocoles correctifs et préventifs paraı̂t impossible. Cependant, il est possible
de rendre temporairement agressif un protocole préventif lorsqu’il est en concurrence
avec un protocole correctif afin que l’équité soit respectée. En effet, dans [27] les au-
teurs proposent d’ajouter à TCP Vegas un mécanisme lui permettant de ne plus réduire
préventivement le débit d’émission lorsqu’il détecte qu’il est en concurrence avec un pro-
tocole correctif.
– Primo nécessite d’être implémenté aux deux extrémités d’une connexion. Cela signifie
qu’une machine peut communiquer via Primo uniquement si l’autre machine partici-
pant à la communication implémente également Primo. Cette restriction imposerait un
déploiement massif de Primo sur l’ensemble des serveurs Web, qui ne pourraient alors
plus communiquer avec les clients TCP. Cette hypothèse est bien évidemment inenvisa-
geable.
Cependant, un déploiement de Primo serait possible si l’utilisation d’un protocole comme
DCCP [64] se généralisait. Ce protocole permet, via une négociation à l’initialisation de la
connexion, de choisir le type de contrôle de congestion en fonction de l’application. Ainsi,
on peut imaginer que des applications de viso-conférence pourraient choisir d’utiliser Primo
comme mécanisme de contrôle de congestion, alors que les navigateurs Web continuerait d’uti-
liser TCP.
7.2.2 Fonctionnalités
Quel que soit le type d’implantation choisi, si Primo doit être utilisé comme protocole de
transport principal, il faudra lui ajouter des fonctionnalités. En effet, pour cette étude, nous nous
sommes placés dans le cadre d’une transmission multimédia, où les pertes sont tolérées et les
données sont émises dès qu’elles sont fournies.
Si Primo venait à être utilisé comme protocole de transport par des applications nécessitant
une transmission fiable, il faudrait lui ajouter un mécanisme fiabilisant ses transmissions. L’uti-
lisation d’un mécanisme de détection de pertes et de retransmissions de données, tel que celui
de TCP, serait utilisable. Notons que de tels mécanismes n’altéreraient pas les performances du
mécanisme de contrôle de congestion de Primo. En effet, ils agiraient uniquement sur le type des
données émises (nouvelles données ou ré-émission) et non sur la gestion du débit d’émission.
L’ajout d’un mécanisme de ré-ordonnancement des segments serait également indispensable.
Ce mécanisme pourrait également être emprunté à TCP. Notons que ces mécanismes devront
être désactivés lors de l’utilisation de Primo par des applications multimédia.
Enfin, pour améliorer le rendement de Primo (rapport entre quantité de données transmises
et quantité de données utiles), il faudrait inclure un système de piggybacking. Ce système, qui
permet d’ajouter des données à transmettre à un acquittement, ne sera pas simple à mettre
en œuvre. Contrairement aux fonctionnalités précédentes, il serait risquer de ré-utiliser celui
162 CHAPITRE 7. CONCLUSION
implémenté dans TCP, qui est basé sur le retardement des acquittements. En effet, Primo utilise
un délai inter-paquets et non une fenêtre d’émission : les données ne peuvent donc pas être
émises à chaque fois qu’un acquittement doit être envoyé. Inversement, si le débit d’émission
d’une source est faible (i.e., le délai inter-paquets est élevé), les acquittements ne pourront pas
être retardés trop longtemps sous peine de dégrader les performances du contrôle de congestion
de l’autre source. Le développement du système de piggybacking nécessitera donc un com-
promis entre l’amélioration du rendement et la diminution des performances du contrôle de
congestion.
!
Le correcteur obtenu dans cette étude pourrait donner lieu à la définition d’un correcteur
adaptatif , dont la loi d’adaptation serait définie par l’état du réseau. Ce type de correcteur
permettrait d’ajuster la valeur des coefficients de réduction et d’augmentation du débit en fonc-
tion de l’état de congestion du réseau. Actuellement, le correcteur utilise deux coefficients de
réduction (faible et fort) et un coefficient d’augmentation pour réguler le débit. Il est possible
de définir une loi d’adaptation basée sur le degré de congestion du réseau (i.e., l’état du réseau),
qui autoriserait une correction automatique et proportionnelle d’un unique coefficient de cor-
rection de débit (i.e., le gain). Ainsi, la régulation du débit ne serait plus segmentée en quatre
parties (correspondant au risque de sous utilisation du réseau, à la bonne utilisation, à une légère
congestion et à une forte congestion). Il est cependant assez complexe de définir une telle loi
actuellement ; une étude importante en continu sera nécessaire.
Les travaux menés durant ces trois années d’études nous ont permis d’ouvrir certaines pistes
de recherche. De plus, les bons résultats obtenus par le mécanisme de contrôle de congestion
proposé confirment l’intérêt à porter à l’application de la théorie de l’automatique à l’algorith-
mique des télécommunications.
BIBLIOGRAPHIE 163
Bibliographie
[1] J. S. Ahn and P. B. Danzid. Packet network simulation: speedup and accuaracy versus
timing granularity. IEEE transactions on networking, 4(5):743–757, Octobre 1996.
[2] J. S. Ahn, P. B. Danzig, Z. Liu, and L. Yan. Evaluation of TCP Vegas: Emulation and
experiment. In Proceedings of SIGCOMM, pages 185–205, 1995.
[3] M. Allman. TCP congestion control with appropriate byte counting. Internet Draft, IETF
Internet Engineering Task Force, Novembre 2001.
[4] M. Allman, S. Floyd, and C. Partridge. Increasing TCP’s initial window. Request For
Comments 2414, RFC editor, http://www.rfc-editor.org/, Septembre 1998.
[5] M. Allman, S. Floyd, and C. Partridge. Increasing TCP’s initial window. Request For
Comments 3390, RFC editor, http://www.rfc-editor.org/, Octobre 2002.
[6] M. Allman, V. Paxson, and W. Stevens. TCP congestion control. Request For Comment
2581, RFC editor, http://www.rfc-editor.org/, Mars 1999.
[7] A. Altman, C. Barakat, Laborde E., Brown P., and Collange D. Fairness analysis of
TCP/IP. In Proceeding of IEEE Conference on Decision and Control, Sidney, Australia,
Décembre 2000.
[8] P. Bagal, S. Kalyanaraman, and B. Packer. Comparative study of RED,
ECN and TCP rate control. Technical report, Departement of ECSE, RPI,
http://www.ecse.rpi.edu/Homepages/shivkuma/research/papers/final.ps, 1999.
[9] F. Baker. Requirements for IP version 4 routers. Request For Comment 1812, RFC
editor, http://www.rfc-editor.org/, Juin 1995.
[10] H. Balakrishnan, V. N. Padmanabhan, and R. H. Katz. The effects of asymmetry on TCP
performance. In Mobile Computing and Networking, pages 77–89, 1997.
[11] S. Bellovin. Defending against sequence number attacks. Request For Comments 1948,
RFC editor, http://www.rfc-editor.org/, Mai 1996.
[12] J. Bolliger, U. Hengartner, and T. Gross. The effectivness of end-to-end congestion
control mechanisms. Technical Report 313, ETH Zürich, Février 1999.
[13] J.-C. Bolot and A. U. Shakar. Analysis of a fluid approximation to flow control dynamics.
In Proceeding of IEEE INFOCOM’92, pages 2398–2407, 1992.
[14] S. Boulahia-Oueslati. Qualité de service et routage des flots élastiques dans un réseau
multiservice. PhD thesis, ENST, Paris, France, Novembre 2000.
[15] B. Braden, D. Clark, J. Crowcroft, B. Davie, S. Deering, D. Estrin, S. Floyd, V. Jacobson,
G. Minshall, C. Partridge, L. Peterson, K. Ramakrishnan, S. Shenker, J. Wroclawski,
and L. Zhang. Recommendations on queue management and congestion avoidance in
the internet. Request For Comments 2309, RFC editor, http://www.rfc-editor.org/, Avril
1998.
164 BIBLIOGRAPHIE
[16] R.T. Braden. Requirements for Internet hosts, communication layers. Request For Com-
ment 1122, RFC editor, http://www.rfc-editor.org/, Octobre 1989.
[17] L. S. Brakmo, A. C. Bavier, L. L. Peterson, and V. Raghavan. x-sim user’s manual (ver-
sion 1.0). http://www.cs.princeton.edu/courses/archive/spring99/cs461/xsim/xsim.html.
[18] L. S. Brakmo, S. W. O’Malley, and L. L. Peterson. TCP Vegas: New techniques
for congestion detection and avoidance. Technical report, Departement of Computer
Science, The University of Arizona, 1994.
[19] L. S. Brakmo and L. L. Peterson. TCP Vegas: End to end congestion avoidance on a
global internet. IEEE Journal on Selected Areas in Communications, 13(8):1465–1480,
1995.
[20] V. G. Cerf and E. A. Cain. The DoD Internet architecture model. In Computer Networks
and ISDN systems, number 10 in 7, pages 307–318, 1983.
[21] F. Chatté, B. Ducourthial, D. Nace, and S.-I. Niculescu. Fluid modelling of packets swit-
ched networks: perspectives for congestion control. Special issue of IJSS (International
Journal of System Sciences), 34(10-11):583–597, Août 2003.
[22] F. Chatté, B. Ducourthial, and S.-I. Niculescu. Robustness issues of fluid approximations
for congestion detection in best effort networks. In Proceeding of IEEE ISCC 2002,
Taormina, Italy, Juillet 2002. IEEE.
[23] F. Chatté, B. Ducourthial, and S.-I. Niculescu. Robustness issues of fluid approximations
for congestion detection in best effort networks (extended version). Technical report,
Heudiasyc UMR CNRS 6599, Février 2002.
[24] D. Cormer. TCP/IP : Architecture, Protocoles, Applications. Interéditions, 1992.
[25] P. B. Danzig, Z. Liu, and L. Yan. An evaluation of TCP Vegas by live emulation. Tech-
nical Report 94-588, Computer Science Departement, USC, 1994.
$
[26] P. De Larminat. Automatique : commande des systèmes linéaires (2 Ed. revue et aug-
mentée). Hermse, Décembre 1996.
[27] A. De Vendictis, M. Bonacci, and Baiocchi A. TCP NewVegas: Providing good TCP
performance in both homogeneous and heterogeneous environments. In Proceeding of
15th ITC Specialist Seminar, Wuerzburg (Germany), Juillet 2002.
[28] I. El Khayat and G. Leduc. Congestion control for layered multicast transmission. Net-
working and Information Systems Journal,, 3(3-4):559–573, 2000.
[29] I. El Khayat and G. Leduc. Smoothing the TCP rate by learning the delay versus window
size dependency. In LNCS Springer-Verlag, editor, Proceeding. of International Work-
shop on Multimedia Interactive Protocols and Systems, MIPS, pages 18–21, Napoli, Italy,
Novembre 2003.
[30] K. Fall and S. Floyd. Comparison of Tahoe, Reno and Sack TCP. Technical report, In-
ternational Computer Science Institute ICSI, http://www-nrg.ee.lbl.gov/nrg-papers.html,
1995.
[31] K. Fall and S. Floyd. Simulation-based comparisons of Tahoe, Reno and SACK TCP.
Computer Communication Review, 26(3):5–21, Juillet 1996.
[32] http://www.icir.org/floyd/.
[33] S. Floyd. Connections with multiple congested gateways in packet-switched networks.
ACM SIGCOMM Computer Communication Review, 21(5):30–47, Octobre 1991.
BIBLIOGRAPHIE 165
[34] S. Floyd. TCP and Explicit Congestion Notification (ECN). ACM Computer Communi-
cation Review, 24(5):10–23, Octobre 1994.
[35] S. Floyd and T. Henderson. New Reno modifications to fast recovery. Request For
Comment 2582, RFC editor, http://www.rfc-editor.org/, Mars 1999.
[36] S. Floyd and F. Kevin. Promoting the end-to-end congestion control in the Internet. In
Proceeding of IEEE/ACM Transaction on Networking, volume 7, pages 458–472, Août
1999.
[37] S. Floyd, J. D. Padhye, and J. Widmer. Equation-based congestion control for unicast
applications. In Proceeding of SIGCOMM 2000. ACM, Mai 2000.
[38] S. Floyd and V. Paxson. Difficulties in simulating the internet. IEEE/ACM Transactions
on Networking, Février 2001.
[39] S. Floyd and A. Romanow. TCP selective acknowledgement options. Request For Com-
ments 2018, RFC editor, http://www.rfc-editor.org/, Octobre 1996.
[40] G. Fodor, G. Malicsko, M. Piorro, and T. Szymanski. Path optimization for elastic traffic
under fairness constraints. In Proceeding of ITC’01, pages 2013–2017, 2001.
[41] G. F. Franklin, J. D. Powell, and A. Emami-Naeini. Feedback control of dynamic systems.
ADDISON-WESLEY, 1991.
[42] M. Gerla, A. M. Y. Sanadidi, R. Wang, A. Zanella, C. Casetti, and S. Mascolo. TCP West-
wood: congestion control using bandwidth estimation. In Proceeding of IEEE Globecom
2001, Austin, Texas, 2001.
[43] J. Hadi Salim and U. Ahmed. Performance evaluation of explicit congestion notifica-
tion (ecn) in ip networks. Request For Comments 2884, RFC editor, http://www.rfc-
editor.org/, Juillet 2000.
[44] M. Handley, S. Floyd, J. D. Padhye, and Widmer J. TCP friendly rate control (TFRC):
Protocol specification. Request For Comments 3448, RFC editor, Janvier 2003.
[45] M. Handley, J. D. Padhye, and S. Floyd. TCP congestion window validation. Request
For Comments 2861, RFC editor, http://www.rfc-editor.org/, Juin 2000.
[46] D. Haridas. Rebecca – a receiver based congestion control algorithm for TCP. Master’s
thesis, University of Illinois, 2000.
[47] S. Hassan and M. Kara. Simulation-based performance comparison of TCP-Friendly
congestion control protocols. In Proceedings of the 16th Annual UK Performance Engi-
neering Workshop (UKPEW2000), Durham, UK, Juillet 2000.
[48] U. Hengartner, J. Bolliger, and T. Gross. TCP Vegas revisited. In Proceeding of the
INFOCOM’00, volume 3, pages 1546–1555, 2000.
[49] J. C. Hoe. Improving the start-up behavior of a congestion control sheme for TCP. In
Proceedings of the ACM SIGCOMM Conference on Applications, Technologies, Archi-
tectures, and Protocols for Computer Communications, volume 26,4, pages 270–280,
New York, 1996. ACM Press.
[50] C. V. Hollot, V. Misra, D. Towsley, and W. Gong. Analysis and design of controllers
for AQM routers supporting TCP flows. In Proceeding of IEEE Transaction Automatic
Control, volume 47, pages 945–959, 2002.
[51] D. P. Hong, T. Suda, and J. Jungok Bae. Survey of techniques for prevention and control
of congestion in ATM networks. In IEEE International Conference on Communications,
Denver, Juin 1991.
166 BIBLIOGRAPHIE
[52] ISO. Basic reference manuel. Technical Report document IS 7498-1, ISO,
http://www.iso.org, 1993.
[53] ISO. ISO-TP (OSI transport protocols). Technical Report document 8073, ISO,
http://www.iso.org, 1997.
[54] R. Izmailov. Adaptive feedback control algorithms for large data transfer in high-speed
networks. IEEE Transaction Automatic Control, 40:1469–1471, 1995.
[55] R. Izmailov. Analysis and optimization of feedback control algorithms for data transfers
in high-speed networks. SIAM Journal of Control and Optimization, 34:1767–1780,
1996.
[56] V. Jacobson. Congestion avoidance and control. In Proceeding of ACM SIGCOMM’88,
pages 314–329, 1988.
[57] V. Jacobson and R. Braden. TCP extensions for long-delay paths. Request For Comments
1072, RFC editor, http://www.rfc-editor.org/, Octobre 1988.
[58] V. Jacobson, R. Braden, and D. Borman. TCP extensions for high performance. Request
For Comments 1323, RFC editor, http://www.rfc-editor.org/, Mai 1992.
[59] V. Jacobson and M. Karels. Congestion avoidance and control. In Proceedings of ACM
SIGCOMM’88, Novembre 1988.
[60] R. Jain. Congestion control and traffic management in ATM networks: Recents advances
and a survey. In Computer Networks and ISDN systems, 1995.
[61] P. Karn and C. Partridge. Improving round-trip time estimates in reliable transport pro-
tocols. In Proceedings of ACM SIGCOMM’87, pages 2–7, Août 1987.
[62] F. P. Kelly. Mathematical modelling of the internet. Mathematics unlimited, pages 685–
702, 2001.
[63] G. Kesidis, A. Singh, D. Cheung, and W.W. Kwok. Feasibility of fluid event-driven
simulation for ATM networks. In Proceeding of IEEE GLOBECOM’96, pages 2013–
2017, Anchorage, Alaska, USA, Avril 1996.
[64] E. Kohler, M. Handley, and S. Floyd. Datagram Congestion Control Protocol (DCCP).
Internet Draft, IETF Internet Engineering Task Force, Mai 2003.
[65] X. Lagrange, P. Godlewski, and S. Tabbane. Réseaux GSM-DCS. Hermes Sciences,
1999.
[66] Y. C. Lai and C. L. Yao. The performance comparison between TCP Reno and TCP
Vegas. In Seventh International Conference on Parallel and Distributed Systems: Work-
shops (ICPADS’00 Workshops) IEEE, Iwate, Japan, July 2000.
[67] B. Liu, Y. Guo, J. Kurose, D. Towsley, and W. Gong. Fluid simualtion of large scale
networks: issues and tradeoffs. In Proceeding of PDPTA’99, pages 2136–2142, Las
Vegas, NV, USA, Juin 1999.
[68] S. Low, F. Paganini, and J. C. Doyle. Internet congestion control. IEEE Control System
Maggazin, 22:28–43, 2002.
[69] Q. Ma. Quality-of-Service Routing in Integrated Service Networks. PhD thesis, Carnegie
Mellon University, Pittsburgh, USA, Janvier 1998.
[70] G. Malkin. RIP version 2. Request For Comments 2453, RFC editor, http://www.rfc-
editor.org/, Novembre 1998.
BIBLIOGRAPHIE 167
[71] S. Mascolo. Classical control theory for congestion avoidance in high speed internet. In
Proceeding of 38th IEEE Conference Decison Control, pages 2709–2714, Phoenix AZ,
1999.
[72] L. Massoulié. Stability of distributed congestion control with heterogeneous feedback
delays. Technical report, Microsoft Research, 2000.
[73] M. Mathis and J. Mahdavi. Forward acknowledgement: Refining TCP congestion
control. Computer Communication Review, 26(4), 1996.
[74] V. Misra, W. Gong, and D. Towsley. Fluid-based analysis of a network of AQM routers
supporting TCP flows with an application to RED. In Proceeding of ACM SIGCOMM’00,
2000.
[75] J. Mo, R.J. La, V. Anantharam, and J. Walrand. Analysis and comparison of TCP Reno
and Vegas. In Proceeding of IEEE INFOCOM’99, Mars 1999.
[76] J. Mo and J. Walrand. Fair end to end window-based congestion control. In Proceeding
of SPIE’98 Performance and Control of Network Systems II, pages 55–63, Novembre
1998.
[77] J. Moy. OSPF version 2. Request For Comments 2328, RFC editor, http://www.rfc-
editor.org/, Avril 1998.
[78] D. Nace. A linear programming based approach for computing optimal splitable fair
routing. In Proceeding of ISCC 2002, Taormina, Italy, Juillet 2002. IEEE.
[79] J. Nagle. Congestion control in IP/TCP internetworks. Request For Comment 896, RFC
editor, http://www.rfc-editor.org/, Janvier 1984.
[80] K. Nichols, S. Blake, F. Baker, and D. Black. Definition of the differentiated services
field (ds field) in the IPv4 and IPv6 headers. Request For Comments 2474, RFC editor,
http://www.rfc-editor.org/, Décembre 1998.
[81] D. Nicol, M. Goldsby, and M. Johnson. Fluid-based simulation of communication
networks using SSF. In Proceeding of European Simulatioin Symposium, Erlangen-
Nuremberg, Germany, Octobre 1999.
[82] S. I. Niculecu, W. Michiels, D. Roose, D. Melchor-Aguilar, K. Gu, and F. Chatté. Ad-
vances in communication control networks, chapter Delay effects on the asymptotic stabi-
lity of various fluid models in high performances networks. Springer-Verlag : Heidelberg
collection : LNCIS, 2004.
[83] S.-I. Niculescu. Delay effects on stability: A robust control approach. LNCIS. Springer-
Verlag, Heidelberg, Mai 2001. 383 pages.
[84] S.-I. Niculescu. On delay robustness analysis of a simple control algorithm in high-speed
networks. Automatica, Mai 2002.
[85] http://www.ncne.org/nimi/.
[86] The ns project, http://www.isi.edu/nsnam/ns/ns-documentation.html. The ns manual,
Août 2000.
[87] http://www.opnet.com/.
[88] T. Ott, J. Kemperman, and M. Mathis. The stationary behavior of ideal TCP congestion
avoidance. Technical report, ftp://ftp.bellcore.com/pub/tjo/TCPwindow.ps, 1996.
[89] J. D. Padhye. Towards a comprehensive congestion control framework for continuous
media flows in best effort networks. PhD thesis, University of Massachusetts, Amherst,
USA, 2000.
168 BIBLIOGRAPHIE
[90] J. D. Padhye and S. Floyd. Identifying the TCP behavior of web servers. In Proceeding
of ACM SIGCOMM’01, Août 2001.
[91] V. Paxson and M. Allman. Computing TCP retransmission timer. Request For Comments
2988, RFC editor, http://www.rfc-editor.org/, Novembre 2000.
[92] J. Postel. User Datagram Protocol. Request For Comment 768, RFC editor,
http://www.rfc-editor.org/, Août 1980.
[93] J. Postel. Internet Control Message Protocol. Request For Comment 792, RFC editor,
http://www.rfc-editor.org/, Septembre 1981.
[94] J. Postel. Internet Protocol. Request For Comments 791, RFC editor, Septembre 1981.
[95] J. Postel. Transmission Control Protocol. Request For Comment 793, RFC editor,
http://www.rfc-editor.org/, Septembre 1981.
[96] G. Rajarshi, M. Chen, S. McCanne, and J. Walrand. A receiver-driven transport protocol
for the web. In Fifth INFORMS Telecommunication Conference, Mars 2000.
[97] K. Ramakrishnan and S. Floyd. A proposal to add Explicit Congestion Notification
(ECN) to IP. Request For Comments 2481, RFC editor, Janvier 1999.
[98] K. Ramakrishnan, S. Floyd, and D. Black. The addition of Explicit Congestion Notifica-
tion (ECN) to IP. Request For Comments 3168, RFC editor, http://www.rfc-editor.org/,
Septembre 2001.
[99] S. Ramakrishnan, S. Kalyanaraman, J. Wen, and H. Ozbay. Effect to time delay in net-
work traffic control. In Proceeding of American Control Conference, Arlington, Juin
2001.
[100] http://www.cs.cornell.edu/skeshav/real.
[101] R. Rejaie, J. Handely, and D. Estrin. RAP : An end-to-end rate-based congestion control
mechanism for realtime streams in the internet. In Proceeding of IEEE INFOCOM’99,
New-York, NY, USA, Mars 1999.
[102] I. Rhee, V. Ozdemir, and Y. Yi. TEAR: TCP emulation at receivers - flow control for
multimedia streaming. Technical report, DCS, NCSU, Raleigh, CA, USA, Avril 2000.
[103] http://www.ripe.net.
[104] J. Roberts and L. Massoulié. Bandwidth sharing and admission control for elastic traffic.
ITC Specialist Seminar Yokohama, Octobre 1998.
[105] P. Rolin, G. Martineau, L. Toutain, and A. Leroy. Les réseaux : Principes fondamentaux.
Hermes Sciences, 1996.
[106] H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson. RTP: A transport protocol
for real-time applications. Request For Comments 3550, RFC editor, http://www.rfc-
editor.org/, Juillet 2003.
[107] D. Sisalem and A. Wolisz. LDA+: a TCP-friendly adaptation scheme for multimedia
communication. In International Workshop on Network and Operating Systems Support
for Digital Audio and Video (NOSSDAV), Juin 2000.
[108] D. Sisalem and A. Wolisz. LDA+: Enhanced loss-delay based adaptation algorithm. In
IEEE International Conference on Multimedia and Expo (ICME 2000), Juillet 2000.
[109] R. W. Stevens. TCP slow start, congestion avoidance, fast retransmit, and fast recovery
algorithms. Request For Comments 2001, RFC editor, Janvier 1997.
[110] R. W. Stevens. TCP/IP illustré, Les Protocoles. Vuibert, 1998.
BIBLIOGRAPHIE 169
[111] http://tango.isti.cnr.it.
[112] K. I. Thai, V. Vèque, and S. Znaty. Architecture des réseaux haut débit. Hermes Sciences,
1995.
[113] Y. Tobe, Y. Tamura, A. Molano, S. Ghosh, and H. Tokuda. Achieving moderate fairness
for UDP flows by path-status classification. In Proceeding of the IEEE Annual Conf. on
Local Computer Networks (LNC’2000), Tampa, FL, Novembre 2000.
[114] Y. Tobe, Y. Tamura, and H. Tokuda. Detection of change in one-way delay for analysing
the path status. In Proceeding of First Passive and Active Measurement Workshop, Avril
2000.
[115] A. Veras and M. Boda. The chaotic nature of TCP congestion control. In Proceeding of
IEEE INFOCOM’00, 2000.
[116] http://www.isi.edu/nsnam/vint/.
[117] J. Widmer, R. Denda, and M. Mauve. A survey on TCP-friendly congestion control.
IEEE Network, 15(3):28–37, 2001.
[118] K. Zhou, J. Doyle, and K. Glover. Robust and optimal control. Prentice Hall, New Jersey,
USA, 1995.
170 BIBLIOGRAPHIE
171
Annexe A
Rappels
Datagrammes IP. Les datagrammes IP [94, 80]sont constitués d’une en-tête et de données.
L’en-tête est principalement constituée des champs suivants :
– Version : ce champ indique la version du protocole IP (en général, il s’agit de la qua-
trième).
– Longueur de l’en-tête : ce champ indique la taille de l’en-tête qui peut être variable mais
toujours supérieure à 20 octets.
– Type de service (TOS 3 ) : ce champ indique de quelle manière doit être géré le datagramme
(priorité, minimisation du délai d’acheminement, maximisation du débit de transmission,
etc.).
– Longueur totale : ce champ indique la taille du datagramme.
– Identifications, drapeaux et déplacement de fragment (offset) : ces champs interviennent
lorsque le datagramme est fragmenté.
– Durée de vie (TTL 4 ) : ce champ indique le nombre maximum de routeurs que peut tra-
verser un datagramme avant d’être détruit.
1. Request For Comments, statut des Internet Drafts (documents de travail de l’IETF, l’Internet Engineering
Task Force) stabilisés et acceptés par l’IESG, l’Internet Engineering Steering Group.
2. STandard Document, statut d’une RFC, devenue Proposed Standard (au moins deux implémentations du
protocole existent), puis Draft Standard, après que le protocole décrit ait été éprouvé à large échelle.
3. Type Of Service.
4. Time To Live.
172 ANNEXE A. RAPPELS
– Protocole : ce champ permet de spécifier quel protocole de plus haut niveau (TCP, UPD,
ICMP 5 , etc.) a engendré l’émission de ce datagramme.
– Somme de contrôle d’en-tête : ce champ permet de vérifier l’intégrité de l’en-tête du
datagramme.
– Adresses IP source et destination : ces deux champs identifient les machines émettrice et
réceptrice du datagramme.
– Options : ce champ est rarement utilisé car peu de machines sont aptent à gérer les options.
Les datagrammes IP ayant une taille maximale de 655535 octets, les segments fournis par la
couche transport peuvent être découpés. Durant leur acheminement, les datagrammes pourront
également être fragmentés (par exemple, à un point d’interconnexion entre un réseau rapide et
un réseau lent) en plusieurs petits paquets IP qui suivront chacun leur route. Les paquets ainsi
fragmentés pourront eux-mêmes être re-fragmentés par la suite. À leur arrivée à la destination
finale, les paquets seront ré-assemblés afin de ne former qu’un seul datagramme IP transmis-
sible à la couche transport. Notons que les fragmentations sont coûteuses, il est donc préférable
d’envoyer des datagrammes de taille égale au plus petit MTU 6 (i.e., à la plus petite trame de
niveau 2) du chemin.
Le protocole IP (étant non fiable) n’assure pas qu’un datagramme envoyé parviendra à des-
tination et les erreurs passagères telle que la corruption d’un datagramme ne sont pas signalées.
En revanche, les erreurs dites semi-permanentes (telles que les destructions de paquets dues à
l’engorgement d’une file d’attente sur un routeur) feront l’objet d’un message ICMP (émis par
le routeur) afin d’avertir la source (cf. pargraphe A.3).
Routage. Le routage est l’une des fonctionnalité principale du protocole IP et consiste à dé-
terminer la route que doit suivre un datagramme pour aller de la source à la destination.
Pour déterminer cette route, IP utilise un adressage hiérarchique dont les adresses sont
codées sur 32 bits dans la version 4 (IPv4), généralement écrites sous la forme d’un quadru-
plet d’entiers inférieurs à 256 (par exemple 128.21.123.3). Une adresse IP est décomposable en
une adresse de réseau et une adresse de machine dans le réseau (i.e., deux machines apparte-
nant au même réseau auront le début de leur adresse IP en commun). À chaque interface réseau
d’une machine correspond une adresse IP qui peut être définie statiquement ou dynamiquement
au démarrage de la machine avec le protocole DHCP 7 .
!
Le routage des paquets IP est effectué de proche-en-proche 8 ) , ce qui signifie que l’émet-
teur d’un datagramme IP ne connaı̂t pas la route complète pour aller jusqu’à la destination. Il ne
connaı̂t que l’adresse de la machine suivante sur le chemin source-destination. Pour obtenir cette
adresse, chaque machine possède une table de routage, qui met en correspondance l’adresse de
destination du datagramme avec l’interface réseau sur lequel il doit être envoyé. Dans le cas
où le paquet est envoyé à un routeur (i.e., lorsqu’il n’est pas directement envoyé à la machine
!
destinataire), ce dernier aiguillera à son tour le paquet vers sa prochaine destination. Le routage
se fait donc de proche-en-proche .
Bien qu’il soit possible de la définir manuellement, la table de routage d’un routeur est
généralement obtenue grâce à des protocoles permettant de construire et de maintenir des routes.
5. Internet Control Messages Protocol.
6. Maximum Transmission Unit.
7. Dynamic Host Configuration Protocol.
8. En anglais, hop by hop routing.
A.2. USER DATAGRAM PROTOCOL (UDP) 173
Les protocoles RIP 9 et OSPF 10 sont les plus utilisés. Le protocole IRDP 11 permet aux machines
de régulièrement trouver (ou retrouver) la route par défaut (i.e., un routeur du réseau).
Les datagrammes que reçoit le protocole IP peuvent provenir du protocole de couche 4
(transport) ou d’une interface réseau. Dans le cas où le datagramme provient d’une interface
réseau :
– Si l’adresse de destination correspond à celle de l’interface réseau ou à une adresse de
diffusion (broadcast 12), IP vérifie que le datagramme est complet (i.e., que tous les frag-
ments ont été reçus) et le transmet à la couche supérieure.
– Sinon, deux cas se présentent : soit IP n’est pas configuré pour fonctionner comme un
routeur et le datagramme est détruit, soit le datagramme est ré-émis vers sa destination
suivante.
Caractéristiques Le protocole UDP est un protocole de couche 4 qui utilise IP pour trans-
mettre les datagrammes d’une application d’une machine à une autre. Lors d’une transmission
de donnée via UDP, rien ne garantit que les datagrammes émis par la source seront reçus par
l’application destinataire : UDP (n’utilisant pas d’acquittement) est donc non fiable. De plus, le
protocole UDP ne réordonne pas les datagrammes si ceux-ci arrivent dans le désordre.
Ce protocole n’assure pas de contrôle de flux. En effet, si le récepteur est submergé par la
quantité de données envoyée par la source, UDP n’en sera pas informé et ne réduira donc pas
!
son débit d’émission. Le protocole UDP n’implémente pas non plus de mécanisme de contrôle
de congestion. Enfin, UDP ne nécessite pas l’établissement d’une connexion, il est orienté
datagramme.
L’absence de ces fonctionnalités (qui sont présentes dans TCP) en font un protocole of-
frant un faible sur-coût en terme de traitement et de quantité de données de contrôle transmises.
Cette caractéristique est très appréciable pour les applications où la rapidité prime sur la fiabi-
lité (i.e., transmission vidéo, flux audio, etc.). De plus, certaines applications ont leurs propres
mécanismes de fiabilité et/ou de contrôle de flux, il est donc inutile que le protocole de transport
qu’elles utilisent les incorpore. Enfin, dans le cas de diffusions broadcast et multicast 13 où l’ab-
sence d’acquittement est fortement conseillée (pour éviter de surcharger le réseau) le protocole
UDP est très utilisé.
Fonctionnement. Une application cherchant à émettre des données via UDP doit connaı̂tre
son numéro de port 14 . Le récepteur des données doit être identifié par son adresse IP ainsi que
par le numéro de port de l’application destinataire. Le couple adresse IP et numéro de port est
9. Routing Interface Protocol.
10. Open Shortest Path First.
11. Internet Router Discovery Protocol.
12. Diffusion de un vers tous.
13. Diffusions au sein d’un groupe.
14. Point d’entrée dans le système de la machine.
174 ANNEXE A. RAPPELS
appelé socket et une communication en utilise deux (i.e., une paire de sockets). Notons que
contrairement à TCP, deux applications communicant via UDP ne peuvent pas partager une
même socket.
Les données que fournit l’application sont envoyées en un seul message UDP qui sera frag-
menté s’il est trop grand par rapport au réseau IP sous-jacent (i.e., par rapport au MTU). Notons
que la fragmentation des données ralentie le transfert et impose au récepteur d’avoir reçu tous
les fragments avant de les transmettre à la couche UDP destinataire. Il est donc préférable avec
ce protocole d’envoyer des petites quantités de données.
But. Le protocole ICMP permet de gérer les erreurs au niveau de la couche IP qui est non
fiable. Le but de ce protocole n’est pas de fiabiliser IP, mais de lui fournir (à lui ou à couche
supérieure) des informations sur des erreurs détectées dans les routeurs. Certaines erreurs sont
!
temporaires (e.g., erreur de la somme de contrôle) et ne nécessitent donc pas d’être signalées.
En revanche, d’autres erreurs dites semi-permanentes méritent d’être signalées afin d’as-
surer le bon fonctionnement du réseau. Parmi ces erreurs, on peut citer : réseau inaccessible,
machine inaccessible, échec de routage, réseau de destination inconnu, réseau inaccessible pour
!
ce type de service, fragmentation nécessaire alors que le bit de non fragmentation est positionné
à vrai , etc.
L’ensemble des erreurs que signale ICMP, permet à IP d’adapter son comportement afin de
résoudre les problèmes rencontrés et ainsi d’améliorer l’utilisation des capacités du réseau. Par
!
exemple, IP n’a aucun intérêt à surcharger le réseau en envoyant des données vers une machine
inaccessible. Le protocole ICMP a pour but de reporter les erreurs semi-permanentes . Il peut
également être utilisé pour tester le réseau, comme, par exemple, avec la commande ping. Mais
le protocole ICMP ne sera pas utilisé pour signaler un problème concernant des datagrammes
de broadcast, de multicast, de ICMP lui-même, etc.
Fonctionnement. Les erreurs du protocole IP sont signalées via des messages ICMP, eux-
mêmes véhiculés par le protocole IP. C’est pourquoi, dans certains cas, le protocole ICMP n’est
pas utilisé, afin de ne pas aggraver les problèmes.
Le protocole ICMP est constitué d’une liste de comportements divers, associées à différents
messages, qui sont identifiés par un numéro (Message Type). Trois sortes de messages peuvent
être distingués : les requêtes, les réponses aux requêtes et les messages signalant une erreur.
Le format des messages ICMP varie en fonction du comportement associé (i.e., en fonction du
numéro de message).
Les protocoles n’incluant pas de contrôle de leurs communications (e.g., UDP) pourront
pleinement tirer bénéficie d’ICMP. Par contre, certains messages ICMP sont redondants avec
les fonctionnalités d’un protocole tel que TCP, qui contrôle déjà ses communications.
175
Annexe B
if (tdf(2) > 0)
% Testes si des données de la connexion 2 peuvent
% être arrivés dans la file
val_q = val_q + debit_1(tdf(2)) * (pas/1000);
% ajoute les données arrivées dans la file en fonction
% du débit de la connexion 2
end;
val_q = val_q - mu * (pas/1000);
% Retrait de la file des données émises au débit mu
end;
if (val_q < 0)
% Test si le file n’a pas une taille négative
% (cas ou le débit d’enter est inférieur à celui de soutie)
val_q = 0;
end;
B.1.2 Controle-debit.m
function [debit_0 , debit_1 , Time , taille_file] = sources_fluid_2(
source_0 , source_1 , mu , duree, pas)
fid_0 = fopen(’debit_f_0.tr’,’w’);
fid_1 = fopen(’debit_f_1.tr’,’w’);
if (pas == 5)
j = 1;
else
j = 5;
end;
disp([’Fin de l’’initialisation’]);
disp([’Début de la simulation’]);
for i=1:i_max(2)
t = Time(i); % Instant t en ms
t_sec = (t * pas) / 1000; % Instant t en s
end;
if (t-d_0) >= 0
% Test si un acquittement peut avoir atteint la sources
T_0 = (t - dR_0);
% Calcul l’heure à laquelle le paquet ayant généré
% l’acquittement à quitté la file d’attente
else
T_0 = 1;
% Valeur par défaut
end;
if (t - d_1) >= 0
B.1. CODE SOURCE MATLAB 179
T_1 = (t - dR_1);
else
T_1 = 1;
end;
else
if (debit_1_flag == 1)
debit_1_flag = 0;
debit_1_max_temp = debit_1(i-1);
debit_1_expo_temp = t_sec;
if (t_temp_1 == -1)
t_temp_1 = debit_1_expo_temp;
end;
periode_1 = periode_1 + debit_1_expo_temp - t_temp_1;
nb_periode_1 = nb_periode_1 + 1;
t_temp_1 = debit_1_expo_temp;
if (debit_1_max_temp > debit_1_max)
debit_1_max = debit_1_max_temp;
end;
end;
debit_1(i)= debit_1_max_temp*exp(-(t_sec-debit_1_expo_temp)/beta_1);
if (debit_1(i) < 3)
debit_1(i) = 3;
end;
end;
#ifndef ns_mon_protocole_h
#define ns_mon_protocole_h
#define TAILLE_NOM 10
#include "agent.h"
#include "tclcl.h"
#include "packet.h"
#include "address.h"
#include "ip.h"
#include "random.h"
#include <math.h>
struct hdr_mon_protocole {
char ret;
double send_time;
double c; // variance de la taille des paquets
// Header access methods
static int offset_; // required by PacketHeaderManager
inline static int& offset() { return offset_; }
inline static hdr_mon_protocole* access(const Packet* p)
{
return (hdr_mon_protocole*) p->access(offset_);
}
};
public:
Mon_protocoleAgent(const char*, const char*, const char*, const char*) ;
virtual int command(int argc, const char*const* argv);
virtual void recv(Packet*, Handler*);
B.2.2 Protocole-Discret.cc
// Fabien Chatté
// UTC Mai 2001
#include "mon_protocole.h"
#include <stdlib.h>
int hdr_mon_protocole::offset_;
static class Mon_protocoleHeaderClass : public PacketHeaderClass {
public:
Mon_protocoleHeaderClass() : PacketHeaderClass("
PacketHeader/Mon_protocole", sizeof(hdr_mon_protocole)) {
bind_offset(&hdr_mon_protocole::offset_);
}
} class_mon_protocolehdr;
}
} class_mon_protocole;
premier_pkt_data = 1;
rtt_min = 0;
rtt_inst = 0;
premier_ack = 0;
min_rate = 0;
rate = 0;
max_rate = 0;
t_max_rate = 0;
t_min_rate = 0;
alpha= atof(A)*1000 ; // Passage de kbits/s en bits/s
beta = atof(B) ;
last_recv = 0;
inter_recv = 0;
tolerance = atof(tol) + 0.0001;
nb_pkts_recv = 0;
periode_tot = 0;
nb_periode = -1;
t_temp = 0;
deb_max = 0;
if(argc == 2)
{
if (strcmp(argv[1], "resultats") == 0)
{
periode_tot = periode_tot / nb_periode ;
printf("\n La periode de l’agent %s est de %f s, et il y a eu %d
périodes \n",monNom, periode_tot, nb_periode);
printf("L’agent %s à eu un débit max de %f bit/s\n",
monNom, deb_max);
return TCL_OK;
}
if (strcmp(argv[1], "nb_paquets") == 0)
{
printf("\n L’agent %s a reçu %d paquets\n",monNom, nb_pkts_recv);
return TCL_OK;
}
if (strcmp(argv[1], "send") == 0) {
// Creation d’un nouveau paquet
Packet* pkt = allocpkt();
// Acces au header du paquet
hdr_mon_protocole* hdr = hdr_mon_protocole::access(pkt);
// On met ret à 0 car c’est un paquet de donnée (ainsi le
// récepteur envera un ack)
hdr->ret = 0;
// On indique l’heure d’émission du paquet afin de calculer
B.2. CODE SOURCE NS 183
if (premier_pkt_data == 1)
{
// c’est le premier paquetreçu, on récupère l’heure
// de sa réception dans la variable last_recv
last_recv = t_recv;
// On met le flag à 0 pour spécifier qu’un
// premier ack à été reçu
premier_pkt_data = 0;
}
else
{
// On calcul le temps écoulé entre la réception de ce
// paquet et celle du dernier.
inter_recv = t_recv - last_recv;
// On met à jour l’heure de la dernière réception
last_recv = t_recv;
}
// Envoi de l’ack
send(pktret, 0);
}
184 ANNEXE B. DISCRET-CONTINU
else
{
// Réception d’un ack
// Récupération de l’heure de la réception de l’ack
t_recv = Scheduler::instance().clock();
update_rate();
// On note le débit atteint au moment où l’on détecte
// que la file est non vide
max_rate = rate;
min_rate = rate;
// On note l’heure de la détection que la file est vide
t_min_rate = t_recv;
// passage en phase croissante
phase = 1;
}
}
Mon_protocoleAgent :: update_rate()
{
// Mise à jour du débit d’émission
float t;
t = Scheduler::instance().clock();
if (phase==1)
{
rate = min_rate + alpha * (t-t_min_rate);
}
else
{
rate = max_rate * exp (-((t-t_max_rate)/beta));
if (rate < 3000)
rate = 3000;
}
}
Mon_protocoleAgent :: inter_packets_delay()
{
// calcul du délia inter-paquet
float delais_interpaquet ;
int size_bit;
float t;
t = Scheduler::instance().clock();
update_rate();
size_bit = (int)size_ * 8;
delais_interpaquet = (size_bit / rate);
return(delais_interpaquet);
}
186 ANNEXE B. DISCRET-CONTINU
187
Annexe C
else
if (var_FTT < dep_inf)
% Risque de sous-utilisation du réseau
var_deb = x_prec - correcteur.acroiss*deb_in;
% Le débit augmente en utilisant le coefficient alpha_deb
X = x_prec + correcteur.alpha_deb * var_deb;
else
% Cas ou le réseau n’est ni congestion ni en situation de
% sous-utilisation potenielle
X=x_prec;
188 ANNEXE C. CODE SOURCE DE PRIMO
end;
end;
C.2.1 Primo.h
// Fabien Chatté
// UTC Mai 2003
#ifndef ns_primo_h
#define ns_primo_h
#define TAILLE_NOM 10
#include "agent.h"
#include "tclcl.h"
#include "packet.h"
#include "address.h"
#include "ip.h"
#include "random.h"
#include <math.h>
struct hdr_primo {
int ret; // Détermine si le paquet contient un acquittement (oui = 1, non = 0)
double heure_ems; // Heure d’émission du paquet
double deb_ems; // Debit d’émission du paquet
double deb_recp; // Valeur du dernier débit de réception mesuré
double deb_recv_liss; // Valeur lissé du débit de réception
double FTT_inst; // Valeur du dernier FTT mesuré
double deb_ems_don; // Débit d’émission du paquet de données ayant engendrée cet acquittement
double heure_ems_don; // Heure d’émission du paquet de données ayant engendrée cet acquittement
double FTT_cons; // Valeur du FTT consigne lors de l’émission du paquet ayant engendré
// l’émission de l’ack
int seqno; // Numéro de seéquence du paquets
int acked_seqno; // Numéro de séquence du paquet acquitté
// Header access methods
static int offset_; // Nécessité par le PacketHeaderManager
inline static int& offset() { return offset_; }
inline static hdr_primo* access(const Packet* p) {
return (hdr_primo*) p->access(offset_);
}
};
class primoAgent;
class primo{
// Valeur calculée ou récupérée
double DEBIT; // Débit d’émission actuel
double *VAR_FTT; // Tableau (de taille REATRD_G) contenant les valeurs de la variation du FTT
int RETARD; // Retard utilisé par le correcteur PI
int RETARD_G; // Retard prenant en compte la granularité de l’horloge
int RETARD_M; // Retard modulo utiliser pour gérer le tableau circulaire DEBIT
int EMPLACEMENT_PREC; // Varibale permettant de gérer le tableau circulaire
public :
primo(); // Constructeur
// Initilaisation du tableau et des variables
double primo_init(double, double, double, double, double, double, int, double, double, double);
// Calcul du débit en fonction des dernières valeurs reçus
double calcul_debit(double, double, double, double, double, double, double, double, double,
double, double, double);
// Calcul et rangement de la dernière mesure de la variation du FTT
double rangement_var_FTT(double, double, double, double);
// Fonctions d’accèes et mise à jour de variables privées
void set_DEBIT(double);
double access_retard();
double access_debit();
};
protected:
virtual void expire(Event *e); // Fonction déclenchée en cas d’expiration du timer
primoAgent *a_;
};
protected:
virtual void expire(Event *e); // Fonction déclenchée en cas d’expiration du timer
primoAgent *a_;
};
/**********************Varialbles de paramétrage************************/
/********************Variable de mesures**********************/
public:
primoAgent(const char*); // Constructeur
virtual int command(int argc, const char*const* argv); // Récupère et execute les commandes
// provenants du script TCL
virtual void recv(Packet*, Handler*); // Réception d’un paquet de tout type
virtual void timeout(); // Executer en cas d’expiration du timer
virtual void ipg_expire();
};
#endif //ns_primo
C.2.2 Primo.cc
// Fabien Chatté
// UTC 8 octobre 2003
#include "primo.h"
#include <stdlib.h>
#include <time.h>
int hdr_primo::offset_;
static class primoHeaderClass : public PacketHeaderClass {
public:
primoHeaderClass() : PacketHeaderClass("PacketHeader/primo",
sizeof(hdr_primo)) {
bind_offset(&hdr_primo::offset_);
}
} class_primohdr;
/****************************************************************************************************/
/*** ***/
/*** IMPLEMENTATION DES METHODES DE L’OBJET PRIMO ***/
/*** ***/
/****************************************************************************************************/
//
//Constructeur
//
primo :: primo()
{
printf("Création de l’objet primo\n");
}
//
// Fonction d’initialisation des valeurs du protocole
//
double primo :: primo_init(double RTT_inst, double FTT_inst, double DEB_init, double T, double DEP_FTT,
192 ANNEXE C. CODE SOURCE DE PRIMO
int i=0;
double FTT_REF, FTT_CONS, DEP_INF;
RETARD = int(RTT_inst * TAU * 1000); // Calcul du retard (en ms) utilisé par le correcteur PI
FTT_REF = FTT_inst; // Initialisation du FTT de référence avec le premier FTT mesuré
FTT_CONS = FTT_REF * DEP_FTT; // Calcul du FTT consigne en fonction de la valeur de
// réfrence et du dépassement souhaité
RETARD_G = int(RETARD / GRANULARITE); // Retard tenant compte de la granularité de la simulation
RETARD_M = RETARD_G + 1; // Modulo du retard, valeur utilisée pour le tableau
// circulaire contenant les valeur du débit
VAR_FTT = new double [RETARD_M]; // Allocation dynamique du tableau circulaire VAR_FTT
EMPLACEMENT_PREC = int(T * 1000 / GRANULARITE);
EMPLACEMENT_PREC = EMPLACEMENT_PREC % RETARD_M; // Calcul de l’emplacement du rangement initial
DEP_INF = FTT_CONS * BORNE_INF; // Calcul du sueil de détection du risque de sous utilisation du réseau
// Le tableau est initialisé à DEB_INF de manière à ce que pendant
// le premier RTT le débit d’émission soit celui mesuré initialement
while (i < RETARD_M)
{
VAR_FTT[i]= DEP_INF ;
i++;
}
DEBIT = DEB_init; // Le débit durant le RTT suivant sera celui mesuré initialement
return(FTT_CONS);
}
//
// Fonction permettant de calculer le débit de la source à l’instant t
// en fonction des dernières mesures effectuées (débit de réception,
// debit d’émission)
//
double primo :: calcul_debit(double T, double deb_recv, double deb_send, double BORNE_SUP,
double BORNE_INF, double N, double ALPHA_DEB, double REDUC1,
double REDUC2, double GRANULARITE, double FTT_CONS, double AUGMENTE1)
{
int EMPLACEMENT;
double var;
double DEP_SUP, DEP_INF, N_DEP_SUP;
double new_deb;
T = T* 1000 / GRANULARITE;
DEP_SUP = FTT_CONS * BORNE_SUP; // Calcul du sueil de détection de congestion
N_DEP_SUP = N * DEP_SUP; // Calcul du sueil de détection de grosse congestion
DEP_INF = FTT_CONS * BORNE_INF; // Calcul du sueil de sous utilisation du réseau
EMPLACEMENT = int(T * 1000 / GRANULARITE); // Calcul de l’emplacement ou récupérer la
// variation du FTT
EMPLACEMENT = (EMPLACEMENT - RETARD_G) % RETARD_M; // calcul de l’emplacement relatif
// (tableau circulaire)
var = VAR_FTT[EMPLACEMENT]; // Récuparation de la variation du RTT correspondant au calcul
// du débit à l’insatant T
if (var >= N_DEP_SUP) // Cas de grosse congestion : forte réduction du débit
{
new_deb = deb_send + ALPHA_DEB * ( deb_send - (REDUC1 * deb_recv));
if (new_deb > deb_send)
new_deb =deb_send;
}
else
{
if ( var > DEP_SUP ) // Cas d’une congestion légère : petite réduction de débit
{
new_deb = deb_send + ALPHA_DEB * ( deb_send - (REDUC2 * deb_recv));
if (new_deb > deb_send)
C.2. CODE SOURCE DU PROTOCOLE PRIMO 193
new_deb = deb_send;
}
else
{
if (var > DEP_INF) // Cas du réseau bien utilisé : le débit reste inchangé
new_deb = deb_send;
else // Risque de sous utilisation du réseau : augmentation du débit
{
new_deb = deb_send + ALPHA_DEB * ( deb_send - (AUGMENTE1 * deb_recv));
if (new_deb > (1.1 * deb_send))
new_deb = deb_send;
else
{
if (new_deb < deb_send)
new_deb = deb_send;
}
}
}
}
// Lissage des variations du débit
DEBIT= 0.9 * DEBIT + 0.1 * new_deb;
return(DEBIT);
}
//
// Méthode calcul l’écart entre le FTT consigne et le FTT mesuré. La
// valeur obtenu est stockée dans un tableau pour être utilisé
// ultérieurement dans le calcul du débit.
//
i = i%RETARD_M;
while (i != EMPLACEMENT)
{
VAR_FTT[i]=VAR_FTT[i-1];
i++;
i = i%RETARD_M;
}
//
// Méthodes permettant d’acceder à des variables privées de l’objet
//
/************************************************************************************************/
/*** ***/
/*** IMPLEMENTATION DES METHODES DE L’OBJET PRIMOAGENT ***/
/*** ***/
/************************************************************************************************/
bind("packetSize_", &size_);
bind("alpha_deb_", &alpha_deb);
bind("tau_", &tau);
bind ("dep_FTT_", &dep_FTT);
bind ("dep_deb_", &dep_deb);
bind ("borne_sup_", &borne_sup);
bind("borne_inf_", &borne_inf);
bind("reduc1_", &reduc1);
bind("reduc2_", &reduc2);
bind("augmente1_", &augmente1);
bind("n_", &n);
bind("granularite_", &granularite);
bind("FTT_", &FTT);
bind("FTT_cons_", &FTT_cons);
bind("FTT_ref_", &FTT_ref);
bind("var_FTT_", &var_FTT);
bind("RTT_", &RTT);
bind("SRTT_", &SRTT);
bind("RTO_",&RTO);
bind("deb_recp_", &deb_recp);
bind("deb_ems_", &deb_ems);
bind("deb_ems_prec_", &deb_ems_prec);
bind("retard_", &retard);
bind("d_ip_ems_", &d_ip_ems);
bind("d_ip_recp_", &d_ip_recp);
bind("deb_init_", &deb_init);
bind("nb_pkts_recv_", &nb_pkts_recv);
bind("nb_pkts_send_", &nb_pkts_send);
bind("max_seq_", &max_seq);
bind("nb_pkt_",&nb_pkt);
if(argc == 2)
{
if (strcmp(argv[1], "start") == 0) // Démarrage de la connexion
{
running = 1; // Premt par la suite de savoir si l’on est autoriser à ’émettre des paquets
// Initialisation des variables de contrôle
premiers_pkts_data = 0;
init = 0;
tempo = rand()%100;
tempo = tempo / 100;
primo_ipg.sched(0);
return (TCL_OK);
}
if (strcmp(argv[1], "stop") == 0) // Arret des émissions
{
running = 0; // Empeche toute émission
deb_ems=0;
primo_to.cancel(); // Arret du timer
primo_ipg.cancel();
return (TCL_OK);
}
}
return (Agent::command(argc, argv));
}
// Acces au header IP :
double t_recv; // heure de réception du paquet ou de l’acquittment
hdr_ip* hdrip = hdr_ip::access(pkt);
// Acces au header primo headert:
hdr_primo* hdr = hdr_primo::access(pkt);
// Vérification si ret <= 0 (pour émettre ou non un ack)
if (hdr->ret <= 0)
{
/********************* Réception d’un paquet de donnée *********************/
/* Calucul du débit de réception, du FTT insatantané, et émission d’un */
/* acquittement */
/***************************************************************************/
hdrret->FTT_inst = ftt_init;
d_ip_recp = t_recv - last_recv;
hdrret->deb_recp = 3*(size_ * 8) / (d_ip_recp); // Passage d’octets en bits
// Recopie du FTT consigne
hdrret->FTT_cons = ftt_cons;
// Envoi de l’ack
send(pktret, 0) ;
}
}
}
// Destruction du paquet reçu
Packet::free(pkt);
}
/*************************************/
/* Réception d’un paquet de contrôle */
/*************************************/
else
{
t_recv = Scheduler::instance().clock();
if (hdr->ret == 1)
{
/************************* Réception d’un acquittement **************************/
/* Récupération des informations contenues dans l’acquittement, calcul et */
/* rangement de la variation du FTT */
/********************************************************************************/
// Test s’il s’agit du premier ack reçu
if (init == 1)
{
// Si c’est le premier ack, on calcul le rtt qui servira de référence
init = 2;
// Calcul du RTT instantané, et du timer du Time Out
RTT = t_recv - hdr->heure_ems_don;
SRTT = RTT;
RTO = 2*SRTT;
// Récupération du RTT de Référence servant à calculer les période de mesure
// de la bande passante.
RTT_ref= RTT;
// Calcul du FTT de référence, et du débit initilalement mesuré
FTT_ref = hdr->FTT_inst;
deb_init = hdr->deb_recp;
// Initialisation de l’objet primo, qui effectue le calcul du débit
FTT_cons = kiki.primo_init(RTT, FTT_ref, deb_init,t_recv, dep_FTT, tau, granularite,
borne_sup, borne_inf, n);
FTT_cons_ems = FTT_cons; // Mise à jour du ftt consigne
deb_recp = hdr->deb_recp; // Mise à jour du débit de réception mesuré
deb_ems_prec = deb_recp; // Pour le premier ack le débit d’émission précédent est
// initialisé avec la valeur du débit de réception.
TO_experienced =0; // Le nombre d’expiration consécutive du TO est réinitialisé
primo_to.resched(RTO); // Le timer est réarmé avec la dernière valeur calculé du RTO
primo_ipg.resched(0); // Le délai inter-paquets est nul pour la réception
// du premier ack.
}
else
{ // Ce n’est pas le premier ack reçu
// Calcul du RTT instantané, du RTT lissé (SRTT) ainsi que de Time out (RTO)
RTT = t_recv - hdr->heure_ems_don; // Calcul du RTT instantané
SRTT = 0.8 * SRTT + 0.2* RTT; // Calcul du RTT lissé
RTO =d_ip_ems + FTT_cons; // Calcul du RTO
if (RTO < 1) // Le RTO ne peut être inférieur à 1s
{
RTO=1;
}
FTT = hdr->FTT_inst; // Récupération du FTT instantané
if (FTT < FTT_ref) // Eventuelle mise à jour du FTT de référence
{
FTT_ref = FTT;
FTT_cons_ems = FTT_ref * dep_FTT;
}
// Récupération du débit de réception instantané
198 ANNEXE C. CODE SOURCE DE PRIMO
deb_recp = hdr->deb_recp;
// Récupération de la consigne du FTT et du débit d’émission qu’avait la source
// lors de l’émission du paquet ayant engendré cet ack
FTT_cons = hdr->FTT_cons;
// Calcul et rangement de la variation du FTT
var_FTT = kiki.rangement_var_FTT(FTT, t_recv, FTT_cons, granularite);
deb_ems_prec = hdr->deb_ems_don;
TO_experienced =0; // Réinitialisation du nombre d’expiration consécutive du TO
primo_to.resched(RTO);// Réarmement du chien de garde est
}
}
// Destruction du paquet
Packet::free(pkt);
}
}
RTO = 5;
printf("%s resched après un TO : init 0 à t = %f avec un RTO =%f\n",monNom,t,RTO);
init = 0;
primo_ipg.resched(0); // Emission imédiate d’une nouvelle rafale
}
}
}
if(init==0)
{
/****************** Phase d’initialisation de la connexion ********************/
/** émission de paquets ayant un délai inter paquet nul (ie. débit infinit) **/
/** puis attente de la réception des premiers acquittements **/
/******************************************************************************/
max_seq = max_seq + size_; // Mise à jour du numéro de séquence avant l’émission du paquet
Packet* pkt = allocpkt(); // Creation d’un nouveau paquet
hdr_primo* hdr = hdr_primo::access(pkt); // Acces au header du paquet primo pkt
// Ret est mis à -1 pour que le récepteur sache qu’il s’agit du premier
// paquet d’initialisation
hdr->ret = -1;
// L’heure d’émission du paquet est inclue afin de calculer le RTT lors du retour de l’ack
hdr->heure_ems = Scheduler::instance().clock();
hdr->seqno = max_seq; //Le numéro de séquence du paquet est indiqué dans l’entête
send(pkt, 0); // Envoie du paquet
nb_pkts_send ++; // incrémentation du nombre de paquets envoyés
if (init == 2)
{
/********************** Régime permanant de la connexion ********************/
/** Dans cette phase la connexion émet des paquets avec un itnrevale de **/
/** temps de "d_ip_ems" qui est caculé grâce aux débit de la connexion **/
/****************************************************************************/
Annexe D
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
Reno.
Sack.
TFRC.
Vegas.
ack : acknowledgment.
AIMD : Additive Increase Multiplicative Decrease.
API : Application Programming Interface.
ARP : Address Resolution Protocol.
ARPA : Advanced Research Projects Agency.
ATM : Asynchronous Transfert Mode.
CE : Congestion Experienced.
cwnd : congestion window.
CWR : Congestion Window Reduced.
DARPA : Defense Advanced Research Projects Agency.
DHCP : Dynamic Host Configuration Protocol.
DISA : Defense Information Systems Agency.
ECE : ECN-Echo.
ECN : Explicit Congestion Notification.
FDDI : Fiber Distributed Data Interface.
FIFO : First In First Out.
FTP : File Transfert Protocol.
IANA : Internet Assigned Number Authority.
ICMP : Internet Control Messages Protocol.
INRIA : Institut National de la Recherche Informatique et en Automatique.
IP : Internet Protocol.
IPG : Inter Packets Gap.
IRDP : Internet Router Discovery Protocol.
ISN : Initial Sequence Number.
ISO : International Standardisation Organisation.
IW : Initial Window.
LDA+ : Loss Delay Adaptation Algorithm.
MRU : Maximum Receive Unit.
MSL : Maximum Segment Lifetime.
MSS : Maximum Segment Size.
MTU : Maximum Transmission Unit.
NFS : Network File System.
NIMI : National Internet Measurement Infrastructure.
NSF : National Science Foundation.
224 GLOSSAIRE.
&% ,, 62,
62, 69, 72, 74
69, 72, 74
file d’attente, 86
proportionnel, 81
T, 62, 67, 69, 73, 74 proportionnel intégral, 89
écart-CD, 66 critère, 64
awnd, 38 critères (efficacité), 112
cwnd, 32, 33, 39, 40, 42
recover, 36 débit, 43, 46, 79, 80
retran data, 38 émission, 112
send hight, 36 réception, 112
snd fack, 38 délais de propagation, 67, 69, 74, 108, 130,
snd nxt, 38 132
snd una, 37 démarrage lent, 32, 35, 36, 40, 44
ssthresh, 33, 36, 39, 42 DCCP, 53
s, 69, 73, 74 diagramme d’états, 47, 48
DoD, 12
acquittement, 15, 37 drapeau Sacked, 35
acquittement TCP (gestion), 29 Drop Tail, 13, 123
action
ECN, 50, 79
dérivée, 79
émulation, 100
intégrale, 79
environnement multi-congestionné, 137
proportionnelle, 78
environnement réel, 98
algorithme, 64, 94
équité, 113
apprentissage, 43
ethernet, 12
ARP, 12
évitement de congestion, 32, 35, 40, 44
ARPA, 9
ATM, 13 Fack, 37
automatique, 16, 56, 77 FDDI, 12
fenêtre
bande passante, 68, 70, 74, 107, 119
d’émission, 15
blocs (TCP Sack), 34 de congestion, 32, 38, 42
commutation de paquets, 13, 56 glissante, 31
comparaison, 64 file d’attente, 108, 123, 127
congestion, 14 FTT, 80, 81
connexion TCP FTT (consigne), 81
établissement, 27 gestion des acquittements, 34
fermeture, 28 graphique radar, 115
correcteur, 78
débit de réception, 84 ICMP, 12, 50
225
226 INDEX
RAP, 45
RARP, 12
RED, 13, 50, 127
reprise rapide, 32, 35–38, 40
retransmission (TCP Reno), 30
retransmission rapide, 32, 36
RIP, 13
RTC, 13
RTCP, 49
RTO, 31
TABLE DES MATIÈRES 227
1 Introduction 11
1.1 Contexte de l’étude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 Origines d’Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Le contrôle de congestion dans la pile protocolaire Internet . . . . . . . 12
1.1.3 Réseaux à commutation de paquets . . . . . . . . . . . . . . . . . . . 15
1.1.4 Congestions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Problématique de l’évitement de congestion . . . . . . . . . . . . . . . . . . . 16
1.2.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.2 Différents travaux menés . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.3 Utilisation de l’automatique . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.1 Déroulement de l’étude . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.2 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.3 Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Chapitre de livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Articles dans des revues . . . . . . . . . . . . . . . . . . . . . . . . . 21
Conférences internationales . . . . . . . . . . . . . . . . . . . . . . . 21
Conférence nationale . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Rapports internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.4 Plan du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 Un état de l’art sur les protocoles de type TCP incluant un contrôle de congestion 25
2.1 Transmission Control Protocol (TCP) . . . . . . . . . . . . . . . . . . . . . . 26
2.1.1 Caractéristiques et fonctionnement général . . . . . . . . . . . . . . . 26
2.1.2 Segment TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1.3 La connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1.4 Gestion des acquittements . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.5 Gestion du débit d’émission . . . . . . . . . . . . . . . . . . . . . . . 33
2.2 Améliorer la gestion des acquittements . . . . . . . . . . . . . . . . . . . . . . 36
2.2.1 TCP Selective acknowlegment (Sack) . . . . . . . . . . . . . . . . . . 36
2.2.2 TCP New Reno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.3 TCP Forward acknowledgment (Fack) . . . . . . . . . . . . . . . . . . 39
2.3 Améliorer la gestion de la fenêtre de congestion . . . . . . . . . . . . . . . . . 40
2.3.1 Propositions de correctifs pour TCP Reno . . . . . . . . . . . . . . . . 40
2.3.2 TCP Vegas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.3 TCP Westwood . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
228 TABLE DES MATIÈRES
' (
4.4.2 Évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.5 Introduction de la composante intégrale . . . . . . . . . . . . . . . . . . . 91
4.5.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.5.2 Évaluations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.6 Discrétisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.6.1 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.6.2 Régime permanent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.6.3 Chien de garde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.6.4 Résumé des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7 Conclusion 155
7.1 Bilan des travaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.1.1 Positionnement du problème . . . . . . . . . . . . . . . . . . . . . . . 155
Quelle piste d’améliorations ? . . . . . . . . . . . . . . . . . . . . . . 155
Comportement préventif ou correctif ? . . . . . . . . . . . . . . . . . . 156
Méthode utilisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
7.1.2 Validité de l’approximation continue . . . . . . . . . . . . . . . . . . . 157
7.1.3 Développement de Primo . . . . . . . . . . . . . . . . . . . . . . . . . 158
Nouveaux mécanisme de contrôle de congestion . . . . . . . . . . . . 158
Discrétisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7.1.4 Méthode d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7.1.5 Résultats d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.2 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.2.1 Implantation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.2.2 Fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.2.3 Amélioration du correcteur . . . . . . . . . . . . . . . . . . . . . . . . 162
Bibliographie 169
A Rappels 171
A.1 Internet Protocol (IP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
A.2 User Datagram Protocol (UDP) . . . . . . . . . . . . . . . . . . . . . . . . . 173
A.3 Internet Control Messages Protocol (ICMP) . . . . . . . . . . . . . . . . . . . 174
Glossaire 224
Index 227