Étude détaillée du protocole TCP La récupération d erreur et le contrôle de flux



Documents pareils
Le protocole TCP. Services de TCP

Introduction. Adresses

Architecture TCP/IP. Protocole d application. client x. serveur y. Protocole TCP TCP. TCP routeur. Protocole IP IP. Protocole IP IP.

Étude de l application DNS (Domain Name System)

Couche Transport TCP et UDP

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

UDP/TCP - Protocoles transport

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

L annuaire et le Service DNS

DIGITAL NETWORK. Le Idle Host Scan

Devoir Surveillé de Sécurité des Réseaux

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

TP réseaux Translation d adresse, firewalls, zonage

Sécuriser son réseau. Sécuriser son réseau Philippe Weill (IPSL/LATMOS) Frédéric Bongat (SSI/GOUV/FR)

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

TP Déploiement de réseaux IP sous Linux et MS Windows sur une infrastructure virtualisée

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Création d une connexion VPN dans Windows XP pour accéder au réseau local de l UQO. Document préparé par le Service des technologies de l information

Filtrage IP MacOS X, Windows NT/2000/XP et Unix

Algorithmique des Systèmes Répartis Protocoles de Communications

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Les possibilités de paramétrage réseau des logiciels de virtualisation sont les suivantes quant à la connexion réseau :

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

Tutorial Terminal Server sous

Réseau longue distance et application distribuée dans les grilles de calcul : étude et propositions pour une interaction efficace

TCP/IP, NAT/PAT et Firewall

Plan. Programmation Internet Cours 3. Organismes de standardisation

TP 1 et 2 de Réseaux en Master 1 Informatique : Assemblage d un réseau, configuration d adresses IP sous Linux et Windows

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Haka : un langage orienté réseaux et sécurité

RESEAUX MISE EN ŒUVRE

Cloud public d Ikoula Documentation de prise en main 2.0

Les clés d un réseau privé virtuel (VPN) fonctionnel

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

TP4 : Firewall IPTABLES

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

Sécurité des réseaux Les attaques

Installation d un serveur virtuel : DSL_G624M

L3 informatique Réseaux : Configuration d une interface réseau

La collecte d informations

ASR4 Réseaux Département Informatique, IUT Bordeaux 1. DHCP Prénom : Nom : Groupe :

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Rappels réseaux TCP/IP

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

But de cette présentation

Résolution des problèmes de connexion XDMCP aux hôtes UNIX et Linux

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Installer et configurer un réseau local Ethernet commuté. Généralités 1 Utilisation d un Switch administrable D-Link DES-3226

Centrale d Alarme 32 zones sans fils

Sécurité des réseaux Firewalls

CONFIGURATION FIREWALL

Master e-secure. VoIP. RTP et RTCP

Le filtrage de niveau IP

VOIP. QoS SIP TOPOLOGIE DU RÉSEAU

Les ACL Cisco. F. Nolot Master 2 Professionnel STIC-Informatique 1

R eseaux TP RES /2015

VoIP - TPs Etude et implémentation

Windows Server 2008 Sécurité ADMINISTRATION ET CONFIGURATION DE LA SECURITE OLIVIER D.

Fonctionnement Kiwi Syslog + WhatsUP Gold

Mise en place d'un Réseau Privé Virtuel

SOMMAIRE : CONFIGURATION RESEAU SOUS WINDOWS... 2 INSTRUCTIONS DE TEST DE CONNECTIVITE... 5

BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand

Année Universitaire session 1 d automne Parcours : CSB5 Licence 3 STS Informatique

TP a Notions de base sur le découpage en sous-réseaux

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX

Le routeur de la Freebox explications et configuration

Présentation du modèle OSI(Open Systems Interconnection)

Le Multicast. A Guyancourt le

Connexion à distance. Pour configurer les automates Beckhoff via un PC de programmation VERSION : 1.0 / PH

Nmap (Network Mapper) Outil d exploration réseau et scanneur de ports/sécurité

Services Réseaux - Couche Application. TODARO Cédric

Multicast & IGMP Snooping

TAGREROUT Seyf Allah TMRIM

Mettre en place un accès sécurisé à travers Internet

Réseaux grande distance

TP SECU NAT ARS IRT ( CORRECTION )

Introduction à l'analyse réseau Philippe Latu philippe.latu(at)linux-france.org

L accès à distance du serveur

Microsoft Windows NT Server

Internet Protocol. «La couche IP du réseau Internet»

Cisco Certified Network Associate

Gestion et Surveillance de Réseau

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

Administration Réseau sous Ubuntu SERVER Serveur DHCP

Travail d évaluation personnelle UV valeur C : IRE. Planification de réseaux : Simulateur IT-GURU Academic Edition

Manuel du logiciel PrestaTest.

TP : Introduction à TCP/IP sous UNIX

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

Gestion des documents avec ALFRESCO

Les Virtual LAN. F. Nolot. Master 1 STIC-Informatique 1

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Windows Internet Name Service (WINS)

Manuel de System Monitor

Travaux Pratiques Introduction aux réseaux IP

Transcription:

Master 1 Étude détaillée du protocole TCP La récupération d erreur et le contrôle de flux M. Heusse, P. Sicard Introduction L objectif de ce TP est de comprendre les fonctionnalités du protocole TCP (Transfert Control Protocol) utilisé par la plupart des applications utilisant le réseau Internet. Ce protocole est assez complexe vu les nombreux services qu il rend : Contrôle et récupération des erreurs : TCP garantit que toutes les données envoyées seront reçues sans la moindre erreur par l entité distante : il n y aura ni perte, ni modification des données pendant leur transport d une machine à l autre. Ré-ordonnancement : si les données sont envoyées dans un certain ordre, elles seront rendues par TCP dans le même ordre. Contrôle de flux : Pour ne pas saturer le récepteur et risquer d avoir des pertes chez le récepteur, TCP régule le flux des données en fonction de la cadence «d absorption» par l entité réceptrice. Contrôle de congestion : pour palier au problème d embouteillage dans les routeurs intermédiaires d Internet une régulation de l émission est mise en place dans TCP. Multiplexage des accès : une ou plusieurs entités peuvent gérer simultanément plusieurs connexions TCP. Pour réaliser ces différents services TCP est un protocole orienté connexion : cela signifie que si deux entités veulent s échanger des données à travers TCP, elles doivent préalablement établir une connexion virtuelle. Au départ les deux entités possèdent deux rôles distincts : l une est à l écoute de demandes éventuelles, elle est dit «passive», c est ce que l on appelle le serveur ; l autre est active, elle fait la demande de connexion. C est le client. Une fois la connexion ouverte, elle est symétrique et bi-directionnelle. Le service proposé par TCP possède aussi la caractéristique d être de type byte-stream (flux d octets), il n y a pas de découpage fixé par TCP dans le flux de données véhiculées. La notion de port a été introduite pour permettre le multi-accés à TCP. Un port est un entier de 16 bits qui sert à identifier un point d accès aux protocoles de la couche 4. Ainsi une connexion TCP est identifiée de façon unique par deux couples [adresse Internet, numéro de port]. M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux 1

Port Source Port Dest. Data offset Numéro de séquence Numéro d'acquittement Fanions (syn, ack ) Window Checksum (header + data) Option Urgent pointer Padding Fig. 1 Entête TCP L entête TCP est représenté en figure 1. Le champ de bits fanions est composé des 6 fanions suivants : URG, ACK, PSH, RST, SYN, FIN. Signification des différents champs : Source port et destination port : déterminent les points d accés à TCP par les applications de part et d autre de la connexion. Sequence number et ACK number sont utilisés pour le séquencement et la récupération d erreurs de données (le fanion ACK indique si le champ ACK number contient une valeur valide). Data offset indique la taille de l entête TCP en mots de 4 octets (la taille de l entête TCP est variable : elle peut être complétée par une ou plusieurs options de 4 octets chacune). Checksum a le même sens que dans les paquets UDP. Urgent pointer est utilisé pour le transport de «données urgentes» (le flag URG indique si le champ URGENT POINTER contient une valeur valide). Il indique les octets à traiter en priorité. Les flags SYN et FIN sont utilisés pour l établissement et la fermeture des connexions virtuelles. Le flag RST est utilisé pour fermer les connexions virtuelles qui sont dans un état incertain (SYN dupliqués ou panne). Le flag PSH permet de signaler au récepteur qu il faut délivrer immédiatement à l application les données. Le champ Window est utilisé pour le contrôle de flux. Il contient le nombre d octet que le récepteur peut encore stocker à partir du numéro d acquittement contenu dans le même paquet. Utilitaires Pour étudier le protocole TCP, nous allons utiliser différents utilitaires : socklab : Logiciel maison vous proposant une interface souple et simplifiée sur les sockets. Ce «laboratoire» à socket vous permet en fait d appeler de façon interactive les primitives de base de manipulation des sockets. 2 M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux

tcpmt, tcptarget : Logiciels client/serveur vous permettant de générer des flux continus au dessus de TCP (dans le répertoire /root/ ipmt-tools). wireshark : Outil de capture de paquets sur le réseau. On utilisera en particulier le menu statistics qui permet d obtenir des courbes intéressantes sur le comportements de TCP (évolution des numéros de séquences, évolution du RTT...) dummynet : option du noyau système permettant de modifier le comportement d une machine au niveau du protocole IP (délai, pertes,...). sysctl : outil de gestion des paramètres du système et en particulier des paramètres de TCP (taille des buffers, durée de timer...) Pour les expériences qui suivent, il sera souvent judicieux de résumer les échanges de paquets sur un croquis temporel en faisant apparaître les champs pertinents (exemple figure 2). Connect SYN SYN, ACK Write ACK SEQ = 1222 Fig. 2 Ébauche de croquis temporel Déroulement du TP Montez le réseau de la figure 3. On pourra utiliser des câbles croisés. Configurez les interfaces en jeu. Remplissez les tables de routages afin que les 3 machines communiquent. Forcez si nécessaire la machine M2 à être un routeur ( sysctl net.inet.ip.forwarding=1). Remplissez le fichier /etc/hosts à l aide de noms adéquats pour les 3 machines. 1 Établissement d une connexion Sur les deux machines M1 et M3, lancez socklab. Capturez et analysez les paquets générés lors de l établissement d une connexion TCP. Décomposez les étapes de cette connexion : enchaînement dans le temps des demandes de services à TCP et des messages échangés. M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux 3

M1 M2 M3 Net1 Net2 Fig. 3 Réseau à configurer TCP utilise des options, expliquez à quoi sert chacune d elle? : 2 Etude de la récupération d erreur 2.1 Numéro de séquence et d acquittement Dans la précédente connexion TCP, envoyez un paquets de 5000 octets de données entre les deux machines grâce à la commande write (à la place d un message normal, vous pouvez utiliser la notation #nnn pour envoyer un message de nnn octets). Analysez les paquets engendrés par le transport des données. Résumez sur un croquis temporel l expérience en faisant apparaître les champs sequence number et ack. number de l entête TCP. Rappelez la fonctionnalité et l utilisation de ces deux champs.y a-t-il un acquittement par paquet de données? Quel intérêt? On pourra s aider du menu statistics/flow graph de Wireshark. 2.2 Retardement d acquittement Envoyez un paquets de 1000 octets de données entre les deux machines. Notez les temps d arrivée des données et de retour des acquittements correspondants (donnés dans Wireshark). Comparez avec la variable système associé à TCP (delacktime) (sysctl -a grep tcp). Refaites l expérience en envoyant 10000 octets. Quel intérêt de retarder les acquittements? Quel inconvénient peut induire un délai trop grand? Conclusions? 4 M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux

2.3 Augmentation du délai sur le routeur Exemple de configuration à l aide de Dummynet : 1. Si le programme ipfw ne fonctionne pas, l activer par modification du noyau : kldload dummynet.ko. 2. On peut avoir la liste des règles en cours par ipfw list 3. Rajoutez si nécessaire la règle : ipfw add 5000 permit ip from any to any 4. Règle de configuration d un délai supplémentaire de 15 millisecondes pour les paquets portant l adresse source 192.168.10.119 et l adresse destination 10.0.0.2 : ipfw pipe 1 config delay 15ms ipfw add 4001 pipe 1 ip from 192.168.10.119 to 10.0.0.2 in Le in spécifie en entrée de la couche IP, on peut spécifier out. Si on ne spécifie rien, le délai est rajouté deux fois (en entrée et en sortie). 5. Suppression d une règle : ipfw delete 4001 6. Attention les règles sont testées suivant l ordre croissant de leur numéro. Modifiez le délai IP sur M2 à 1ms, 2ms, 3 ms, 10ms et 100ms et vérifiez à l aide de ping ce délai. ATTENTION la granularité du délai n est pas forcément de la finesse désirée. Nous allons pouvoir maintenant à l aide de ce délai simuler un réseau à forte latence. 2.4 Temporisateur de retransmission Réglez le délai de telle manière à obtenir un RTT de 20ms. Après l ouverture d une connexion TCP sur M1 et M3, envoyez des données vers M3. Continuez à en envoyer après avoir au préalable débranché M3 du réseau. Observez ce qu il se passe en capturant les paquets côté émetteur. Quelle est la durée du timer de retransmission (en fonction du RTT)? Comment évolue t-il lors de plusieurs tentative de re-émission? Quel intérêt? 2.5 Paramètres TCP TCP possède de nombreux paramètres que l on peut modifier à l aide de la commande système sysctl. Regardez la liste des paramètres TCP par sysctl net.inet.tcp. A quoi correspondent les paramètres net.inet.tcp.sendspace et net.inet.tcp.recvspace? Nous allons pour les prochaines expériences modifier certains de ces paramètres. Sur M1 et M3, effectuez les commandes suivantes : sysctl net.inet.tcp.rfc1323=0, désactive l option window scale permettant de donner un facteur du champ win (intéressant pour un réseau à forte latence et/ou haut débit). M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux 5

sysctl net.inet.tcp.delayed_ack=0, permet d activer ou non le délai d attente avant émission d acquittement. sysctl net.inet.tcp.hostcache.expire=0, permet d inhiber le mécanisme de cache concernant les caractéristiques des connexions TCP en cours (RTT, taille de la fenêtre de congestion, ;...). sysctl net.inet.tcp.sack.enable=0, désactive le mécanisme d acquittement sélectif possible dans TCP. sysctl net.inet.tcp.inflight.enable=0, désactive une implémentation particulière du contrôle de congestion de TCP. sysctl net.inet.tcp.rfc3390=0, désactive l option de TCP qui ajuste la taille de la fenêtre initiale de congestion lors du slow start. sysctl net.inet.tcp.sendbuf_auto=0, désactive une option permettant à TCP d ajuster la taille du buffer d émission lors d une connexion. sysctl net.inet.tcp.recvbuf_auto=0, désactive une option permettant à TCP d ajuster la taille du buffer de réception lors d une connexion. 2.6 Fenêtre à anticipation et buffer d émission Sur la machine routeur M2 ajouter un délai de 100 ms à la traversée de la couche IP afin d obtenir un RTT de 50ms entre M1 et M3. (vérifiez par un ping entre M1 et M3) ; Sur la machine M1 modifiez la taille du buffer d émission à 10 000 octets. sysctl net.inet.tcp.sendspace=10000 Envoyez un flux à l aide de tcpmt depuis M1 vers M3 (dans /root/ipmt-tools : tcpmt -p Numeroport Host et tcptarget -p Numerodeport). Capturez (sur l émetteur) quelques paquets circulant à ce moment là et observez l évolution des numéros de séquences sur la courbe donnée par Wireshark (voir ci-dessous pour obtenir cette courbe). Comprendre et analyser précisément cette courbe. On regardera aussi attentivement les acquittements émis par le récepteur. Rappeler le principe de la fenêtre d anticipation pour expliquer cette courbe. Où retrouve t-on l influence de la taille du buffer d émission dans cette courbe?. Utilisation de Wireshark Menu statistics/ TCP stream graph / time sequence graph (tcptrace). Il faut sélectionner un paquet de donnée (et non un acquittement) avant d afficher la courbe. En gras sont donnés l évolution des numéros de séquence, en clair sont donnés les numéros d acquittement reçu et les numéros d acquittement augmentés de la valeur du champ WIN. Il est possible de zoomer sur une partie de la courbe en sélectionnant un paquet (sur la courbe) et à l aide des 2 boutons de la souris (ensemble). On peut faire un zoom arrière de la même manière à l aide de la touche majuscule. On peut se déplacer dans la fenêtre de la courbe à l aide du bouton droit de la souris (maintient enfoncé plus déplacement). 6 M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux

On peut en cliquant sur un paquet dans la courbe (segment), sélectionner le paquet dans la liste des paquets de Wireshark. 2.6.1 Influence de la taille du buffer d émission sur le débit applicatif Si nécessaire, relisez le cours sur la récupération d erreur et des mécanismes à fenêtre d anticipation (il n est pas encore trop tard!). Fixer sur la machine M2 un délai de 20ms. Vérifiez le RTT réel à l aide de ping. Réglez la taille du buffer d émission à 1000 octets sur M1 (sysctl net.inet.tcp.sendspace=1000). Effectuez l envoi d un flux à l aide de tcpmt depuis la machine au buffer réduit. Capturez quelques paquets résultants. Notez le débit applicatif que vous obtenez. Expliquez le flux de paquets que vous observez. Quelle est la différence avec un buffer de taille plus importante. Estimez par le calcul le débit maximal (au niveau applicatif) que l on peut espérer obtenir dans ce cas. Comparez le résultat de votre calcul au débit que vous observez avec tcpmt. Refaites l expérience et les calculs avec un buffer de 3000 puis 10 000 octets. Conclusions? Quelle est la taille minimale du buffer d émission qu il faudrait avoir pour obtenir un débit optimal (proche des 100 mégabits). L option WinScale est elle nécessaire dans ce cas? Faites l expérience. ATTENTION le buffer de réception (voir contrôle de flux) peut aussi limiter le débit si il est inférieur à celui d émission. 2.7 Cas de pertes dans la fenêtre à anticipation Réglez la taille du buffer d émission à 30 000 octets sur M1 Sur la machine M2 configurez un taux de 5% de pertes supplémentaire :ipfw pipe 1 config delay 100ms plr 0.04 Envoyez un paquet de 30000 octets à travers une connexion TCP à l aide de Socklab. M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux 7

Comprendre et analyser précisément la courbe de l évolution de séquence et la capture de paquets. Montrez sur la courbe les re-émissions de paquets et les durées des timers de reémission. Vérifiez si les re-émissions ont lieu sur déclenchement de timer ou acquittements dupliqués. Après la re-émission d un paquet, d autres paquets peuvent-ils être aussi re-émis avant l acquittement du premier? Pourquoi? Après une perte combien de paquet sont émis sans attente d acquittements? Pourquoi? Refaites des expériences en faisant varier le taux de perte si nécessaire. 2.8 Vérification expérimentale de l influence du délai de transmission Supprimer sur M2 le délai supplémentaire. Réglez la taille du buffer d émission à 30 000 octets sur M1. Envoyez un flux continu TCP entre M1 et M3 à l aide de tcpmt. Observez le débit obtenu. Augmentez progressivement le délai sur M2 (1ms, 2ms, 3ms, 4ms et 5 ms) jusqu à que le débit diminue. (on peut laisser tourner tcpmt). Vérifiez le RTT réel à l aide de ping. Capturez des paquets pendant les expériences.. Comprendre et analyser précisément la courbe de l évolution de séquence et la capture de paquets. Expliquez pourquoi le débit diminue et par des calculs retrouvez à partir de quel RTT il doit diminuer. Refaire si nécessaire des captures supplémentaires en faisant varier le délai sur M2 3 Contrôle de flux 3.1 principe Fixez sur M2 un délai de 20ms. A l aide de Socklab, ouvrez une connexion TCP, entre M1 et M3. Fixez la taille du buffer de réception à 5000 octets sur M3. Attention la taille du buffer doit être fixée avant l ouverture de la connexion. Emettez sur cette connexion un message de 6000 octets de M1 à M3 Résumez sur un croquis temporel l expérience en faisant apparaître les champs sequence number, ack. number et window de l entête TCP. Observez la courbe de l évolution de numéro de séquence. Montrez sur cette courbe l évolution du champ WIN. 8 M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux

ATTENTION, dans le cas ou l option window scale n est pas désactivée, on prendra soin de capturer l ouverture de connexion TCP au départ (sinon la valeur de WIN donnée par wireshark est fausse). Pourquoi l émetteur continue-t-il à envoyer des paquets d un octet de donnée? Donnez l évolution du temporisateur associé à ces émissions. Faites ensuite des Read successifs coté récepteur de 500 octets. Pourquoi le récepteur ne débloque-t-il pas tout de suite la situation? A partir de quand le fait-il? Quel intérêt? 3.2 Influence de la taille du buffer de réception Estimez par le calcul la taille minimale du buffer de réception pour obtenir un débit maximal dans le cas d un RTT de 20 ms. A l aide de tcpmt envoyez un flux continu de M1 à M3. Comparez le débit obtenu au débit que vous avez calculé. Conclusions. Rappelez à quoi servent les buffers d émission et de réception dans le récupération d erreur et le contrôle de flux. Est que l utilisation d un buffer d émission de taille supérieure à celui de réception est pertinente? Et le contraire? Refaites des expériences si nécessaire. M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux 9