Ajouter SCTP à IPMT : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Analyse)
(Analyse)
Ligne 26 : Ligne 26 :
  
 
== Analyse ==
 
== Analyse ==
Cette analyse est réalisée à partir des documents théoriques et des études déjà réalisées.
+
Cette analyse est réalisée à partir des documents théoriques et des études déjà réalisées comme [http://inl.info.ucl.ac.be/system/files/PublicDefense-2.pdf  Improving Multipath TCP ]  
liens vers les travaux sur  SCTP
+
MPTCP [http://inl.info.ucl.ac.be/system/files/PublicDefense-2.pdf  Improving Multipath TCP ]  
+
 
===Les principes===
 
===Les principes===
  

Version du 12 juin 2016 à 04:57

Mycomputer.png  Deuxième Année  CDROM.png  Informatique 


Project schedule.png
Titre du projet Ajouter SCTP à IPMT
Cadre Projets de spécialité

Encadrants Franck Rousseau


"IP Measurement Tools": [1] est une boite à outils pour la mesure de performances sur les réseaux IP. Actuellement, seuls les protocoles TCP et UDP sont supportés. Ce sujet a pour objectif d'implémenter le protocole SCTP à IPMT, et d'évaluer les performances par le biais de paramètres de mesures pertinents. SCTP est un protocole hérité de SS7, puis étendu à IP dans le RFC 4960: [2], et le RFC 3758: [3] pour son extension de fiabilité partielle.

Introduction

La couche transport du modèle OSI [4], permet entre autres le transfert fiable, efficace et économique d’informations. Elle gère ainsi des communications de bout en bout entre les processus et doit répondre à des qualités de services variables. Actuellement l’augmentation des objets connectés combinée avec la avec la multiplication des réseaux de supports (wifi, 3G, 4G,...) induisent le besoin de rester connecté en tout le temps et partout pour ne pas obérer le fonctionnement des applications (vidéo à la demande, vidéoconférence, …).

Pour se faire, on recherche :

  • à utiliser tous les réseaux de supports disponibles et d’assurer la redondance entre eux (Multihoming).
  • à mutualiser la liaison (socket) pour un maximun d’applications via le Multistreaming.
  • un compromis entre fiabilité de TCP et rapidité d'UDP[5].
  • à améliorer la sécurité des protocoles.

Ainsi, de nouveaux protocoles prenant en comptes ces enjeux, ont vu le jour. Les trois principaux de Multihoming sont SCTP, MPTCP et DCCP.

Analyse

Cette analyse est réalisée à partir des documents théoriques et des études déjà réalisées comme Improving Multipath TCP

Les principes

Datagram Congestion Control Protocol (RFC 4340 IETF / juillet 2004) :  
 • Protocole orienté message avec contrôle de congestion
 • Plusieurs choix de contrôle de congestion possibles
 • Pas de retransmission en cas de perte ou erreur
Stream Control Transmission Protocol (RFC 4960 / octobre 2005) :     
 • Fournit un transport très fiable pour la téléphonie sur IP (multihoming)
 • Détecte les données erronées, le rejet, la duplication de données et retransmet les données corrompues
 • Adaptatif au débit    
Multi Path TCP (RFC 6824 / mars 2011) :
 • extension de TCP
 • contrôle de congestion sur le même principe que TCP (cwnd et RTT)
 • permet l’agrégat d’interfaces (link bonding) pour augmenter le débit

Étude comparative

Fonctionnalités(SCTPMPTCPDCCP).JPG

Le fonctionnement de SCTP

De manière synthétique, SCTP est un protocole unicast qui permet l’échange de données en mode bidirectionnel entre deux “endpoints” SCTP. Il fournit un transport fiable, détecte le rejet, la duplication de données ainsi que les données erronées et retransmet les données corrompues et non reçues. Ce protocole est orienté association qui désigne la liaison entre deux hôtes distants. La principale différence avec une connexion (type TCP) est que l'association SCTP est établie entre deux interfaces réseaux distantes choisies parmi à deux pools. Ainsi, ceci permet au protocole de gérer ce qu'on appelle le Multihoming (communication qui permet que les adresses IP changent sans perte de connexion) et le Multistreaming (communication, au sein d'une même association, par l'intermédiaire de plusieurs flux (streams) logiques) [6] . En ce qui concerne une association, sa mise en place se fait en quatre temps (INIT/INIT-ACK et COOKIE-ECHO/COOKIE-ACK). Ainsi l'échange de cookies va permettre de sécuriser le lien et d'éviter des attaques de type déni de service.

  • Le paquet SCTP

Le paquet SCTP est encapsulé dans un paquet IP, qui est routé à la destination. Il est composé d’un en-tête commun et de Chunks c'est à dire des blocs d'informations contenant des données de contrôle ou des données utilisateur. On distingue plusieurs types de données de contrôle à savoir :

• Blocs SACK qui permet l’acquittement cumulatif de DATA chunks
• Blocs HEARTBEAT/HEARTBEAT-ACK permettant de sonder le lien afin de voir la disponibilité des endpoints SCTP
• Blocs ERROR qui informe des problèmes ou erreurs sur l’association
• Blocs d'ouverture d’association à poignée de mains en 4 temps (INIT/INIT-ACK,COOKIE-ECHO/COOKIE-ACK)
• Bloc de fermeture d’association (SHUTDOWN/ABORT/SHUTDOWN-ACK)
  • Congestion

SCTP est orienté message avec contrôle de congestion, mécanisme similaire à TCP.

  • Gestion des pertes et erreurs

Une erreur dans un paquet SCTP est signalée par un ERROR chunk. La perte de données est quant elle, détectée grâce aux SACK reçus. Lorsque l’émetteur ne reçoit pas de SACK avant l'expiration de la temporisation de retransmission RTO (Retransmission Time Out), il décide de réémettre les chunks non acquittés par leur numéro unique d'identifiant TSN (Transmission Sequence Number). De même le paquet SACK contient les identifiants des paquets reçus en DUPLICATE et ayant déjà fait l'objet d'un acquittement, afin qu'ils ne soient plus retransmis (optimisation de échanges).

  • Le paquet ASCONF

Il permet de modifier dynamiquement les adresses IP de l’association.

Implémentation sous IMPT

Ipmt est un ensemble d'outils de mesure des performances de réseaux actuellement au niveau transport sous TCP/IP et UDP/IP. Afin d'intégrer SCTP à IPMT, nous avons développé conformément à la l'esprit de cet outil, deux agents, à savoir sctptarget (qui fera office de serveur) et sctpmt (client). Ainsi, l'objectif est de créer une association entre le client et le serveur, et de réaliser une série de mesures au niveau de ce premier.

Dans un premier temps, nous avons essayé de gérer le multihoming et le multistreaming.

Voici les commandes pour lancer le serveur et le client :

• ./sctpmt @IP_distante  [-p numPortdistant]  [-n nb_Stream]   [-s tailleChunk]  [-u Chunkordered] [-N nbMessageEmis] 

Ainsi au niveau du serveur, nous sommes capable de choisir l'adresse distante, le port disant, le nombre de stream, la taille des chunks et l'option d'envoi de chunk ordonné.

• ./sctptarget [-p numPortlocal] [-g traceGraphe]

Mesures disponibles

Les mesures sont réalisées au niveau de l'agent sctptarget et peuvent être sous deux formes à savoir graphique ou textuelle.

Graphique

GrapheSCTP.png



  • Afin d'obtenir des mesures graphiques, on fait suivre l'option -g à ./sctptarget.


  • Cette commande prend au compte au plus 4 interfaces IP.


  • Sur ce graphe, l'abscisse correspond au rang du paquet et l'ordonnée à sa taille.


  • On peut ainsi observer le changement d'interface IP, lorsque l'on en désactive une.






Textuelle

Textuelle.png


Les informations textuelles disponibles sont :


  • L'adresse IP locale active (PRIMARY);


  • Le nombre d'octets reçus;


  • L'adresse IP distante active;


  • Le numéro du canal de streaming;


  • L'horodatage du paquet lors de son émission;


  • L'horodatage du paquet lors de sa réception.

Environnement

Le programme a été développé/compilé sous Ubuntu (16.04) et BSD (10.03) et nécessite l'installation des packages sctp et gnuplot.

Auteurs

Projet de Spécialité 2A 2016 Ajouter SCTP à IPMT
Équipe Michel QIN, Moâde KHLIFI, Laurent BRACHOTTE
Tuteur Franck Rousseau
École Grenoble INP -- Ensimag
Date Juin 2016