É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

Étude de l application DNS (Domain Name System)

Introduction. Adresses

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

Couche Transport TCP et UDP

UDP/TCP - Protocoles transport

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

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

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

L annuaire et le Service DNS

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

DIGITAL NETWORK. Le Idle Host Scan

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

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

TCP/IP, NAT/PAT et Firewall

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

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 :

Tutorial Terminal Server sous

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

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

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

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

Fonctionnement Kiwi Syslog + WhatsUP Gold

But de cette présentation

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

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

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

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

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

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

Cloud public d Ikoula Documentation de prise en main 2.0

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

Plan. Programmation Internet Cours 3. Organismes de standardisation

Installation d un serveur virtuel : DSL_G624M

Sécurité des réseaux Les attaques

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

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

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

La collecte d informations

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

Le routeur de la Freebox explications et configuration

Rappels réseaux TCP/IP

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

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

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

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

Multicast & IGMP Snooping

Sécurité des réseaux Firewalls

Le Multicast. A Guyancourt le

RESEAUX MISE EN ŒUVRE

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

Le filtrage de niveau IP

TP4 : Firewall IPTABLES

R eseaux TP RES /2015

VoIP - TPs Etude et implémentation

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

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

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

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

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

06/11/2014 Hyperviseurs et. Infrastructure. Formation. Pierre Derouet

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

Centrale d Alarme 32 zones sans fils

VOIP. QoS SIP TOPOLOGIE DU RÉSEAU

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

Master e-secure. VoIP. RTP et RTCP

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

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

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

Travaux Pratiques Introduction aux réseaux IP

CONFIGURATION FIREWALL

Tutoriel XBNE Connexion à un environnement XBMC distant

L accès à distance du serveur

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

Microsoft Windows NT Server

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Contrôleur de communications réseau. Guide de configuration rapide DN

Cisco Certified Network Associate

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

Rapport du projet Qualité de Service

Gestion et Surveillance de Réseau

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

Administration Réseau sous Ubuntu SERVER Serveur DHCP

Manuel du logiciel PrestaTest.

Couche application. La couche application est la plus élevée du modèle de référence.

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

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

MANUEL D INSTALLATION

Gestion des documents avec ALFRESCO

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Windows Serveur 2012 : DHCP. Installation et mise en place

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

Transcription:

RICM 4 É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). socket connect CLIENT SERVEUR socket bind listen SYN SYN, ACK write ACK SEQ = 1222 accept read 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 ou des switchs 100 mégabits/s. Configurez les interfaces en jeu. Vérifiez que vous avez bien des réseaux en 100 mégabits/s. 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. 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 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. 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. 4 M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux

Quel intérêt de retarder les acquittements? Quel inconvénient peut induire un délai trop grand? Conclusions? 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, et 10ms et vérifiez à l aide de ping le RTT obtenu. 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 tentatives 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? M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux 5

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). 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 réglez un délai 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. 6 M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux

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). 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 afin d obtenir un RTT de 20ms entre M1 et M3. 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. Rappel : sysctl net.inet.tcp.rfc1323=1, active 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). 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 3% de pertes supplémentaire :ipfw pipe 1 config delay 100ms plr 0.03 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. 3 Contrôle de flux 3.1 Principe Fixez sur M2 un délai afin d avoir un RTT de 20ms entre M1 et M3. 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. 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 10 ms. Réglez sur M3 le buffer de réception à la taille que vous venez de calculer. Si nécessaire re-activez l option winscale (sysctl net.inet.tcp.rfc1323=1) Réglez sur M1 le buffer d émission à la taille que vous venez de calculer (pourquoi est ce 8 M. Heusse, P. Sicard La récupération d erreur et le contrôle de flux

nécessaire?). Fixez sur M2 un délai afin d avoir un RTT de 10ms entre M1 et M3. A l aide de tcpmt envoyez un flux continu de M1 à M3. Comparez le débit obtenu au débit que vous attendiez. 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