Outils pour utilisateurs

Outils du site


gabriel_rotella:gabriel_rotella2

Multipath TCP

a) Définition

MPTCP est un protocole de couche transport qui consiste en un ensemble d'extensions TCP dont le but est de faire fonctionner une connexion TCP sur plusieurs chemins ou sous-flux de données simultanément. De cette façon, en utilisant plusieurs chemins différents, il est possible de maximiser les ressources réseau d'un nœud avec plusieurs interfaces. MPTCP a eu sa première définition formelle par l'IETF en 2013 dans la RFC 6824 et à ce jour de nombreuses études ont été réalisées à cet égard ainsi que plusieurs autres RFC ont été définis.

La motivation derrière la création de ce nouveau protocole est d'utiliser toute la capacité offerte par les ressources réseau qu'un nœud peut avoir. TCP limite la communication entre deux extrémités à une seule connexion au niveau du transport. Ces connexions sont établies socket à socket, de sorte que chaque extrémité est associée à une seule paire d'adresses de port IP et donc à une interface unique et à un chemin réseau unique. Mais que se passe-t-il si nous avons plusieurs cartes réseau? Dans ce cas, avec TCP, nous gaspillerions des ressources précieuses.

Avec cette idée clé à l'esprit, il est possible d'exposer les principaux avantages du protocole MPTCP:

  • Augmentation de l'efficacité:

En utilisant deux ou plusieurs interfaces réseau ou chemins d'accès simultanément, il est possible d'augmenter la bande passante d'une connexion TCP par rapport à celle obtenue en utilisant une seule. Cependant, ce cas se produirait s'il y avait des conditions favorables, c'est-à-dire que les chemins ajoutés n'ont pas un retard élevé ou de grandes pertes de paquets. Ces problèmes donnent naissance au deuxième avantage MPTCP décrit ci-dessous.

  • Plus grande robustesse dans la connexion:

En ajoutant de nouveaux chemins, il est également possible d'introduire une redondance de paquets. Avec ce mécanisme, MPTCP est capable d'atteindre un degré élevé de réduction des pertes, garantissant ainsi une connexion plus stable et moins sujette aux pannes. De plus, comme expliqué plus loin dans cette section, en sélectionnant de manière appropriée l'algorithme de contrôle de congestion utilisé par MPTCP, il est possible de répartir la charge entre les sous-flux existants, de sorte que le flux avec moins de congestion, de pertes, etc. recevoir plus de trafic.

Cependant, pour rendre l'utilisation du MPTCP possible et utilisable à la place du TCP, deux contraintes clés ont été établies dans la conception du protocole. Tout d'abord, il est supposé que l'hôte peut avoir plusieurs interfaces réseau connectées à différents sous-réseaux avec différentes adresses IP. Deuxièmement, le protocole MPTCP doit avoir une compatibilité descendante avec TCP.

Ainsi, afin d'assurer cette rétrocompatibilité précitée, les trois aspects listés ci-dessous sont définis:

  • Restrictions externes: MPTCP doit fonctionner via des périphériques intermédiaires tels que des pare-feu, des NAT, des proxys, etc.
  • Restrictions d'application: le protocole doit être transparent pour les applications, c'est-à-dire que l'API socket est la même que pour TCP.
  • Régression: MPTCP doit être capable de revenir à TCP seul pour communiquer avec les hôtes qui ne le prennent pas en charge.

Avec ces restrictions et considérations de conception en place, il a été possible de définir un nouveau protocole de transport qui s'étend à TCP pour profiter des avantages de posséder plusieurs interfaces réseau et ainsi augmenter les performances et la robustesse des connexions TCP. De plus, le protocole garantit que dans le pire des cas, il se comportera, au moins, de la même manière que TCP, donc il n’y aura des pénalités de performance.

b) Fonctionnement

MPTCP fonctionne au-dessus de TCP comme une extension de celui-ci. Plus précisément, son utilisation (ou désir d'utilisation) est indiquée par le champ des options TCP. De cette façon, il est possible de signaler que l'hôte est capable d'utiliser la version multichemin du protocole.

Avant de commencer à expliquer le fonctionnement du protocole, nous voulons souligner la différence entre le flux de données et le sous-flux.

Un flux secondaire de données MPTCP est un chemin formé entre l'une des adresses IP source et l'une des adresses IP de destination (ainsi que, bien sûr, les ports source et de destination pertinents). Ce sous-flux n'est rien de plus qu'une connexion TCP normale dans laquelle les paquets transportent des options MPTCP qui permettent à ce protocole d'être utilisé et de les associer à un flux MPTCP.

D'un autre côté, un flux de données MPTCP est un ensemble d'un ou plusieurs sous-flux. Les données sont envoyées de manière interchangeable via tous les sous-flux établis, formant un flux de données comme s'il s'agissait d'une seule connexion.

* Etablissement de connexion

La connexion avec MPTCP se fait de manière très similaire à celle qui est effectuée dans TCP; la prise de contact à trois voies est toujours la méthode d'établissement de la connexion. La seule différence est qu'en plus des indicateurs SYN et ACK correspondants, il dispose également d'une option TCP associée qui indiquera qu'il s'agit d'une connexion MPTCP. La figure montre l'échange de messages effectué pour établir la connexion; qui est exactement la même que dans TCP.

L'option qui est ajoutée à l'en-tête TCP est appelée “ Multipath Capable ” (MP_CAPABLE), ce qui signifie littéralement que cet hôte est capable d'utiliser MPTCP.

Le premier à envoyer cette option est l'hôte qui souhaite établir la connexion; hôte A. Si l'hôte B avait également la possibilité d'utiliser MPTCP, il retournerait le SYN / ACK de la même manière avec l'option MP_CAPABLE. Cependant, si vous n'avez pas implémenté MPTCP, vous renverriez le SYN / ACK sans cela et une connexion TCP normale continuerait.

Dans la négociation à trois voies, un échange de clé MPTCP se produit également. Chaque nœud génère sa propre clé qui identifie la connexion MPTCP et qui sera utilisée ultérieurement pour ajouter de nouveaux sous-flux de données; la figure montre comment cet échange se produit. Cependant, bien que le transfert de données puisse être démarré avec cette connexion, aucun autre sous-flux n'a encore été ajouté pour utiliser TCP sur plusieurs chemins.

* Ajout de sous-flux

Analogue à l'établissement de la connexion MPTCP, l'ajout de trois flux produit également une prise de contact à trois voies. Cependant, l'option MPTCP utilisée dans ce cas est MP_JOIN.

Dans le cas de la figure, l'hôte A démarré un nouveau sous-flux entre l'une de ses adresses IP et l'une des adresses IP de l'hôte B. Le jeton utilisé est généré à partir de la clé B et sert à identifier la connexion à laquelle le nouveau sous-flux est ajouté. D'autre part, le HMAC (Hash-based Message Authentication Code), utilisé pour l'authentification, est généré à partir des nonces (« number that can be only used once », nombres aléatoires) avec les clés échangées dans l'établissement de la connexion. De plus, des identifiants d'adresse sont également envoyés qui peuvent être utilisés pour référencer l'adresse source du flux, évitant ainsi d'éventuels problèmes de changement d'adresse IP lors du passage par un NAT (Network Address Translation).

* Transmission de données

L'un des problèmes qui se posent lorsque l'on parle de transmission de données est celui d'assurer la livraison des colis de manière fiable et ordonnée. Pour cela, MPTCP introduit des numéros de séquence 64 bits (contre 16 pour TCP) appelés DSN (Data Sequence Number), qui sont utilisés pour numéroter toutes les données du flux MPTCP. De cette manière, les informations peuvent être envoyées via différents sous-flux en cas de besoin de retransmission.

Deux options de protocole MPTCP ont déjà été introduites: Multipath Capable et Multipath Join. Dans ce cas, l'option utilisée pour envoyer des données est le signal de sécurité des données (DSS). A l'intérieur de celui-ci, outre le DSN, il existe également un ACK de données ainsi que d'autres domaines dont l'étude n'appartient pas au domaine d'application de ce document.

De cette façon, les mécanismes sont définis pour assurer la livraison fiable des données à la fois au niveau du flux MPTCP (avec le DSN et les données ACK), ainsi qu'au niveau du sous-flux en utilisant les mécanismes TCP.

* Fermeture de conexión

La fermeture de la connexion s'effectue de manière analogue à celle de TCP. La différence est qu'au lieu d'utiliser l'indicateur TCP FIN, l'indicateur DATA_FIN de MPTCP est utilisé; cela met fin à la transmission des données dans l'ensemble du flux. Cependant, une fois ce processus terminé, les connexions TCP individuelles de chacun des sous-flux doivent être interrompues.

gabriel_rotella/gabriel_rotella2.txt · Dernière modification: 2020/06/03 10:05 par Gabriel Rotella