Brevet FR3023106A1 — publié le 20160101

PROCEDE DE COMMUNICATION TCP VIA DES CHEMINS MULTIPLES ENTRE DEUX TERMINAUX La présente invention concerne le domaine des télécommunications, et notamment les réseaux de communications mettant en oeuvre le protocole IP (Internet Protocol). Plus particulièrement, la présente invention concerne la fourniture de services dans les réseaux IP à valeur ajoutée, c'est-à-dire des réseaux capables d'effectuer des traitements différenciés selon la nature du trafic de données acheminé dans le réseau. L'invention s'applique à tout type de dispositif-client tel qu'un terminal fixe ou mobile, ou une passerelle domestique (« Residential Gateway » en anglais) ou une passerelle située dans une entreprise, ou encore une passerelle d'opérateur réseau (« Gateway » en anglais). Par souci de concision, un dispositif-client de n'importe quel type sera souvent appelé « terminal » ci-après. Les terminaux, tels que les téléphones intelligents (« smartphone » en anglais) et les ordinateurs personnels (« Personal Computer », ou PC en anglais) sont désormais capables d'activer et d'exploiter plusieurs interfaces logiques liées à une ou plusieurs interfaces physiques. De tels terminaux sont dits « multi-interfaces » (« Multi-Interface », ou MIF en anglais). Plusieurs adresses IP peuvent alors être attribuées à ces terminaux MIF pour se connecter à différents types de réseaux tels qu'un réseau fixe, un réseau mobile ou un réseau WLAN (initiales des mots anglais « Wireless Local Area Network » signifiant « Réseau Local Sans-Fil », dont les réseaux Wi-Fi sont un exemple emblématique). Ces adresses IP peuvent : - appartenir à la même famille d'adresses ou à des familles d'adresses distinctes (IPv4, IPv6 ou les deux), - avoir des durées de vie différentes, - avoir des portées différentes, par exemple adresse IPv4 privée, adresse IPv6 unique locale (Unique Local Address, ou ULA en anglais), ou adresse IPv6 de portée globale (Global Unicast Address, ou GUA en anglais), et - être affectées à la même interface réseau logique ou à différentes interfaces réseau logiques. On notera toutefois que la caractéristique « MIF » est volatile, car la capacité d'utiliser plusieurs interfaces dépend des conditions de raccordement au(x) réseau(x), de la localisation du dispositif, et ainsi de suite. Un dispositif peut devenir MIF en cours d'établissement d'une connexion simple (c'est-à-dire, le long d'un chemin unique avec son correspondant), voire après l'établissement d'une connexion simple. De plus, un dispositif mono-interface ne sait pas a priori s'il lui est possible d'utiliser plusieurs chemins distincts pour établir une communication avec un correspondant ; en effet, cette information ne lui devient disponible qu'à l'issue d'une phase au cours de laquelle il échange avec son correspondant des messages relatifs à la connexion à chemins multiples. On rappelle que le protocole TCP (initiales des mots anglais « Transmission Control Protocol » signifiant « Protocole de Contrôle de Transmission »), défini notamment dans la spécification RFC 793 de l'IETF (Internet Engineering Task Force), est l'un des protocoles principaux utilisé par les terminaux connectés à un réseau IP (par exemple, Internet), de sorte que la littérature évoque souvent la suite de protocoles « TCP/IP ». Le protocole TCP permet d'acheminer de manière fiable, ordonnée et sans erreurs un flux de données numériques entre des applications exécutées sur des terminaux connectés à un réseau local (par exemple, Intranet) ou à l'Internet. Il fonctionne au niveau de la couche transport du modèle OSI. Les navigateurs Web utilisent le protocole TCP lorsqu'ils se connectent à des serveurs distants ; le protocole TCP est aussi utilisé pour acheminer du courrier électronique ou pour transférer des fichiers d'un endroit à un autre. Des protocoles comme HTTP, HTTPS, SMTP, POP3, IMAP, SSH, FTP, Telnet, ainsi que de nombreux autres protocoles sont transportés sur des connexions TCP. Une connexion TCP est identifiée par l'adresse et le numéro de port du terminal source, ainsi que l'adresse et le numéro de port du terminal de destination. Deux terminaux peuvent insérer des « options TCP » dans les messages TCP échangés entre eux, afin, par exemple, d'optimiser la qualité de la transmission TCP. De telles options occupent l'espace disponible en fin d'en-tête TCP, et ont une longueur (« length » en anglais) exprimée en octets. Le type (« kind » en anglais) d'option est un identifiant unique descriptif de la nature de l'option TCP. Par exemple, la valeur « 0 » indique la fin de la liste des options, et la valeur « 2 » indique la taille maximum du segment TCP (« Maximum Segment Size », ou MSS en anglais). L'avènement des terminaux MIF introduit une complexité supplémentaire pour utiliser tout ou partie des adresses IP allouées via les réseaux disponibles. Notamment, étant donné que les connexions TCP sont associées à une adresse IP et un numéro de port, toute modification d'au moins l'une de ces informations est de nature à pénaliser le fonctionnement d'une connexion TCP en cours, et, partant, le service utilisant ladite connexion TCP. Ce changement est particulièrement préjudiciable lorsque le terminal se voit attribuer une nouvelle adresse IP, ou parce que le terminal se connecte à un autre réseau, ou encore lorsque l'interface à laquelle l'adresse IP est associée n'est plus disponible. Par exemple, des moyens pour informer un correspondant TCP distant qu'une adresse IP n'est plus valide sont alors nécessaires pour assurer le maintien d'une connexion existante. Le groupe de travail mptcp de l'IETF a été missionné en 2009 pour spécifier des extensions du protocole TCP capables de s'accommoder des contraintes imposées par la possibilité d'affecter plusieurs adresses IP aux différentes interfaces logiques ou physiques d'un terminal. Ce groupe de travail a publié les premières spécifications du protocole dit « MPTCP » (Multi-Path TCP) (cf. A. Ford, C. Raiciu et M. Handley, « TCP Extensions for Multipath Operation with Multiple Addresses », RFC 6824, janvier 2013), que certains téléphones intelligents et certains systèmes d'exploitation sont déjà capables de mettre en oeuvre. L'IETF envisage de faire progresser le statut des spécifications MPTCP actuelles, pour en faire de véritables normes au sens de l'IETF. Le protocole MPTCP a donc été proposé pour minimiser les risques de rupture intempestive d'une connexion TCP liés à de telles modifications d'adressage, et plus généralement pour répondre aux exigences posées par un contexte où un terminal a la capacité de se raccorder à un ou plusieurs réseaux via une ou plusieurs interfaces. Le protocole MPTCP répond notamment aux besoins d'assurer une continuité de session en cas de mobilité du terminal. Différents cas d'usage peuvent être envisagés pour le protocole MPTCP, tels que : - transférer du trafic entre plusieurs points d'accès WLAN, - décharger un réseau mobile, et basculer le trafic vers un point d'accès WLAN, - agréger plusieurs liens d'accès, - répartir la charge entre plusieurs chemins, et - optimiser l'utilisation des ressources réseau. On rappelle à cet égard (cf. Wikipedia) que « l'agrégation de liens » est, dans le domaine des réseaux, une notion décrivant le regroupement de plusieurs interfaces réseau comme s'il s'agissait d'une seule, dans le but d'accroître le débit au-delà des limites d'un seul lien, et éventuellement de faire en sorte que d'autres interfaces prennent le relais si un lien réseau tombe en panne (principe de redondance). Un exemple particulièrement avantageux d'application du protocole MPTCP est le transfert de fichiers volumineux utilisant les ressources du protocole FTP (File Transfer Protocol). Un dispositif agissant en tant que client FTP peut dynamiquement exploiter l'ensemble des chemins disponibles qui lui permettent d'accéder à un serveur FTP, pourvu que ce dernier soit apte à mettre en oeuvre les différentes connexions MPTCP établies par le client FTP. Le temps de transfert des données est ainsi significativement réduit par rapport à une connexion TCP. Dans le cadre de MPTCP, on appelle « sous-session » (« subflow » en anglais) une connexion TCP reposant sur l'utilisation de l'un des couples (adresse IP, numéro de port) disponibles. De ce fait, une connexion MPTCP est un agrégat de sous-sessions TCP. A titre d'exemple, la figure 1 montre une connexion MPTCP entre un terminal A et un terminal B ; la sous-session initiale est établie entre l'adresse Al du terminal A et l'adresse 131 du terminal B ; ultérieurement, une sous-session additionnelle est établie entre l'adresse A2 du terminal A et l'adresse 131 du terminal B. Les systèmes d'exploitation présentent aux applications des interfaces dédiées, appelées API (Application Programming Interface) pour interagir avec les couches TCP/IP. L'API classique présentée aux applications pour TCP/IP est l'interface « socket ». Une « socket » est caractérisée par plusieurs « attributs » tels que « Local Socket Address », « Remote Socket Address » et « Protocol ». De nouvelles extensions (API MPTCP) ont été spécifiées par l'IETF dans le document RFC 6897 pour permettre aux applications de contrôler les connexions MPTCP. On notera que l'API MPTCP est une extension de l'API TCP. On appelle « table de connexion MPTCP » une structure logicielle utilisée pour grouper toutes les sous-sessions TCP associées à une même connexion MPTCP. Plusieurs attributs peuvent être utilisés pour caractériser une table de connexion MPTCP. En plus des attributs TCP/IP classiques mentionnés ci-dessus, une valeur est donnée à des attributs spécifiques au protocole MPTCP. La valeur de ces attributs de la table de connexion est contrôlée via l'API MPTCP. Une connexion MPTCP est initialisée comme n'importe quelle connexion TCP classique, à l'exception du fait que l'option MP CAPABLE (signifiant que le terminal émetteur est compatible avec les extensions MPTCP) est incluse dans le message contenant le drapeau d'initialisation de connexion (SYN) et dans les messages ultérieurs. Un terminal MPTCP peut signaler au terminal distant la disponibilité d'une adresse IP supplémentaire à l'aide de l'option ADD ADDR, sans nécessairement créer de sous-session associée. Toutefois, la signalisation de plusieurs adresses IP disponibles et susceptibles d'être utilisées pour communiquer avec un correspondant peut conduire à l'échec de l'établissement de certaines sous-sessions TCP parce que les adresses IP externes telles que perçues par les terminaux distants peuvent ne pas être les mêmes que celles visibles localement. Pour cette raison, l'option ADD_ADDR du protocole MPTCP comprend un identificateur d'adresse (« Address ID ») utilisé pour identifier sans ambiguïté une adresse IP disponible. Cette disposition est censée, selon l'état de l'art, éviter les problèmes induits par la présence d'un NAT (initiales des mots anglais « Network Address Transtator » signifiant « Traducteur d'Adresse Réseau ») sur le chemin suivi par les paquets entre les deux terminaux qui ont établi une connexion MPTCP. L'option ADD_ADDR est également utilisée pour transmettre un numéro de port dans le cas où l'un des terminaux MPTCP n'utilise pas le même numéro de port pour l'ensemble des adresses IP disponibles. De même, le protocole MPTCP prévoit des dispositions qui sont 30 censées permettre, notamment, la traversée de pare-feux (« firewall » en anglais). Plus précisément, la spécification du protocole MPTCP stipule que les numéros de séquence tels qu'indiqués dans l'en-tête TCP sont spécifiques à chaque sous-session, tandis que le numéro de séquence indiqué dans l'option DSS (« Data Sequence Signal ») du protocole MPTCP sert à associer ces sous-sessions à la même connexion MPTCP. Le protocole MPTCP entend ainsi faire face à la prolifération massive de « middle boxes » (équipements intermédiaires dans une chaîne de communication), comme les NAT et les pare-feux, dans les réseaux actuels. En outre, il est prévu dans le document RFC 6824 qu'en cas d'échec d'une tentative d'établissement d'une connexion MPTCP, la connexion se transforme automatiquement en une connexion TCP simple. Malheureusement, en dépit de toutes ces précautions, d'autres problèmes peuvent surgir lors de la tentative d'établissement d'une connexion MPTCP. Par exemple : - certaines options MPTCP, voire toutes, peuvent être filtrées (c'est- à-dire, retirées) par des fonctions intermédiaires (par exemple, un NAT ou un pare-feu) situées en coupure de flux entre deux pairs MPTCP, comme illustré sur la figure 2 ; - même si les messages SYN MPTCP (mentionnés ci-dessus) sont échangés avec succès entre deux pairs MPTCP, des fonctions intermédiaires peuvent filtrer les options DSS (mentionnées ci-dessus) des paquets de données ; dans ce cas, comme illustré sur la figure 3, la tentative d'établissement d'une connexion MPTCP ne peut pas aboutir, avec comme conséquence le repli sur une connexion TCP simple comme dans le cas illustré en référence à la figure 2 ; - il peut se produire qu'une première sous-session TCP soit établie avec succès, mais que l'établissement de sous-sessions ultérieures échoue faute de l'existence de chemins multiples compatibles avec les extensions MPTCP. Or les auteurs de la présente invention ont réalisé que la présence de telles fonctions intermédiaires était de nature à dégrader sensiblement le délai d'établissement de sous-sessions TCP et, par conséquent, avait un impact négatif sur la qualité du service de communication, telle que perçue par l'utilisateur. La présente invention concerne donc un procédé de communication TCP (Transmission Control Protocol) entre un premier dispositif-client (Ti) et un second dispositif-client (T2), comprenant les étapes suivantes : a) ledit premier dispositif-client ou un premier dispositif-relais connecté au premier dispositif-client, envoie audit second dispositif-client ou à un second dispositif-relais connecté au second dispositif-client un message d'initialisation d'une connexion TCP selon un chemin, dit premier chemin, b) ledit premier dispositif-client ou premier dispositif-relais et ledit second dispositif-client ou second dispositif-relais initialisent également une connexion à chemins multiples entre eux selon ledit premier chemin, et c) si au moins l'un des deux dispositifs-clients ou l'un des deux dispositifs-relais constate une anomalie concernant ladite connexion à chemins multiples, le premier dispositif-client et le second dispositif-client utilisent ladite connexion TCP pour échanger des données utiles. On notera que lesdites étapes a) et b) peuvent être mises en oeuvre simultanément ou avec un décalage (positif ou négatif) dans le temps. Ainsi, selon l'invention, on initialise de manière concomitante une 25 connexion TCP simple et une connexion à chemins multiples. On dira que cette connexion TCP simple est une connexion TCP « duale ». Lorsque deux pairs établissent une connexion à chemins multiples : - si aucun d'entre eux ne détecte d'anomalie, ils peuvent intégrer la connexion TCP duale à la connexion à chemins multiples ; - si, en revanche, une anomalie a été détectée lors de l'établissement de la connexion à chemins multiples (par exemple, un délai trop long d'établissement de la connexion à chemins multiples comparé à celui observé pour la connexion TCP duale, ou l'absence de certaines options MPTCP lorsque les deux pairs sont configurés pour mettre en oeuvre MPTCP), les pairs peuvent utiliser la connexion TCP duale pour échanger des données utiles, de façon à garantir la continuité du service ; ce repli sur une connexion TCP simple ne cause, avantageusement, aucun délai supplémentaire puisque cette connexion TCP est déjà en cours d'établissement, voire déjà en place. On notera que l'invention peut être mise en oeuvre par tout dispositif-client compatible avec TCP. Ce dispositif-client peut disposer d'une ou plusieurs adresses externes, ou d'une ou plusieurs interfaces réseau (logiques ou physiques). Mais ce dispositif-client peut ne disposer que d'une seule interface s'il est situé derrière un dispositif-relais (tel qu'un routeur ou une passerelle résidentielle) connecté à un ou plusieurs réseau(x) et compatible avec les options TCP à chemins multiples. Les dispositifs communicants visés (dispositifs-clients et dispositifs-relais) peuvent être de type quelconque, par exemple un terminal, un routeur ou une passerelle résidentielle. Grâce à l'invention, ces dispositifs communicants peuvent découvrir les capacités d'éventuels « équipements intermédiaires » (tels que mentionnés ci-dessus), et anticiper l'échec de connexions TCP à chemins multiples. Il en résulte une réduction du délai d'établissement de connexions à chemins multiples, et donc évidemment une qualité d'expérience utilisateur sensiblement améliorée. De plus, un tel dispositif communicant peut : - ajuster son comportement en fonction de son attachement réseau (par exemple, en cas d'attachement à un nouveau réseau, d'indisponibilité d'une interface réseau, ou de la détection d'un « équipement intermédiaire »), - décider, sans risquer de dégrader la qualité de la communication avec son correspondant, d'activer une connexion à chemins multiples, ou de désactiver une connexion à chemins multiples en cours ou toutes ses connexions à chemins multiples en cours, ou encore d'ajouter une nouvelle sous-session TCP à une connexion à chemins multiples en cours, et - rétablir une connexion à chemins multiples si les circonstances qui ont précédemment causé un repli vers une connexion TCP simple ont changé. Par ailleurs, ladite connexion à chemins multiples pourra avantageusement être conforme au protocole MPTCP, de manière à bénéficier des dispositions, mentionnées succinctement ci-dessus, de ce 15 protocole. Selon des caractéristiques particulières, lors de ladite étape b), ledit second dispositif-client ou second dispositif-relais initialise ladite connexion à chemins multiples suite à la réception dudit message d'initialisation d'une connexion TCP envoyé par ledit premier dispositif- 20 client ou premier dispositif-relais lors de ladite étape a). Grâce à ces dispositions, la mise en place de la connexion à chemins multiples peut optionnellement être automatique. Toutefois, un tel mode de réalisation « implicite » présente quelques dangers. En effet, il peut se produire que le second dispositif-client ou le second dispositif- 25 relais refuse une connexion supplémentaire (c'est-à-dire, la connexion à chemins multiples ou la connexion TCP duale) avec le même pair (en l'occurrence, le premier dispositif-client ou le premier dispositif-relais), en raison, par exemple, de dispositions destinées à protéger le réseau contre les attaques par déni de service (« Denial of Service », ou DoS en 30 anglais), ou d'une configuration du second dispositif-client ou second dispositif-relais (par exemple, un serveur Web accessible en HTTP) destinée à limiter le nombre de connexions par client. C'est pourquoi, selon des caractéristiques encore plus particulières, lors de ladite étape a), ledit premier dispositif-client (Tl ) ou premier dispositif-relais inclut dans ledit message d'initialisation une option TCP (DUAL) indiquant qu'une connexion à chemins multiples doit être initialisée en sus de ladite connexion TCP. Grâce à ces dispositions, le premier dispositif-client ou le premier dispositif-relais indique explicitement au second dispositif-client ou au second dispositif-relais qu'il souhaite qu'une connexion à chemins multiples soit associée, selon le même chemin, à la connexion TCP simple en cours d'établissement. On notera que l'invention vise notamment le cas où il existe au moins deux chemins de communication possibles entre un premier dispositif-client et un second dispositif-client, même s'il n'existe qu'un seul chemin utilisable lors de l'initialisation de la connexion TCP. De préférence, l'invention sera mise en oeuvre pour chacun des chemins de communication possibles entre les deux dispositifs-clients, suite à la découverte de ce chemin par l'un ou l'autre de ces dispositifs-clients. Ainsi, selon d'autres caractéristiques particulières, si en revanche aucune anomalie concernant ladite connexion à chemins multiples n'est constatée, et s'il existe entre lesdits premier et second dispositifs-clients au moins un chemin autre que ledit premier chemin : - on vérifie la compatibilité dudit autre chemin avec les options TCP propres à la connexion à chemins multiples, et - si ladite vérification est positive, le premier et le second dispositifs-clients échangent entre eux, au sein de la connexion à chemins multiples, des données utiles via cet autre chemin en sus dudit premier chemin. Grâce à ces dispositions, on bénéficie au maximum des possibilités offertes par la connexion à chemins multiples. Selon des caractéristiques encore plus particulières, pour effectuer ladite vérification de la compatibilité dudit autre chemin, le premier dispositif-client ou premier dispositif-relais et le second dispositif-client ou second dispositif-relais émet un message d'initialisation d'une sous-session TCP selon ledit autre chemin au sein de ladite communication à chemins multiples, ledit message d'initialisation d'une sous-session TCP comprenant une option TCP indiquant que ladite sous-session TCP ne doit pas être utilisée pour échanger des données utiles avant une conclusion positive de ladite vérification. Grâce à ces dispositions, les deux pairs peuvent commodément tester de nouveaux chemins (pouvant donner lieu à de nouvelles sous-sessions) au sein de la communication à chemins multiples, sans risquer de dégrader la qualité de cette communication. Corrélativement, l'invention concerne un dispositif communicant possédant des moyens pour participer à une communication TCP (Transmission Control Protocol). Ledit dispositif communicant est remarquable en ce qu'il possède en outre des moyens pour : - initialiser une connexion TCP selon un chemin, dit premier chemin, avec un autre dispositif communicant, - initialiser également une connexion à chemins multiples avec ledit autre dispositif communicant selon ledit premier chemin, et - s'il constate une anomalie concernant ladite connexion à chemins multiples, utiliser ladite connexion TCP pour échanger des données utiles avec ledit autre dispositif communicant. Ce dispositif communicant pourra comprendre un dispositif-client, tel qu'un terminal d'utilisateur, ou un dispositif-relais, tel qu'un routeur ou une passerelle résidentielle. Selon des caractéristiques particulières, ledit dispositif communicant comprend en outre des moyens pour initialiser ladite connexion à chemins multiples suite à la réception d'un message d'initialisation d'une connexion TCP envoyé par ledit autre dispositif communicant. Selon des caractéristiques encore plus particulières, ledit dispositif communicant comprend en outre des moyens pour prendre en compte dans ledit message d'initialisation une option TCP lui indiquant qu'une connexion à chemins multiples doit être initialisée en sus de ladite connexion TCP. Selon d'autres caractéristiques particulières, ledit dispositif communicant comprend en outre des moyens pour envoyer audit autre dispositif communicant un message d'initialisation de ladite connexion TCP comprenant une option TCP indiquant qu'une connexion à chemins multiples doit être initialisée en sus de ladite connexion TCP. Selon encore d'autres caractéristiques particulières, ledit dispositif communicant comprend en outre des moyens pour, lorsqu'il existe au moins un chemin autre que ledit premier chemin le connectant audit autre dispositif communicant, émettre un message d'initialisation d'une sous- session TCP selon ledit autre chemin au sein de ladite communication à chemins multiples, ledit message d'initialisation d'une sous-session TCP comprenant une option TCP indiquant que ladite sous-session TCP ne doit pas être utilisée pour échanger des données utiles avant une conclusion positive d'une vérification de la compatibilité de cet autre chemin avec les options TCP propres à la connexion à chemins multiples. Les avantages offerts par ce dispositif communicant sont essentiellement les mêmes que ceux offerts par les procédés corrélatifs succinctement exposés ci-dessus. On notera qu'il est possible de réaliser ces dispositifs dans le contexte d'instructions logicielles et/ou dans le contexte de circuits électroniques. L'invention vise également un programme d'ordinateur téléchargeable depuis un réseau de communications et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur. Ce programme d'ordinateur est remarquable en ce qu'il comprend des instructions pour l'exécution des étapes du procédé de communication succinctement exposé ci-dessus, lorsqu'il est exécuté sur un ordinateur. Les avantages offerts par ce programme d'ordinateur sont essentiellement les mêmes que ceux offerts par ledit procédé. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée ci-dessous de modes de réalisation particuliers, donnés à titre d'exemples non limitatifs. La description se réfère aux figures qui l'accompagnent, dans lesquelles : - la figure 1, décrite ci-dessus, représente un agrégat de sous-sessions TCP formant une unique connexion MPTCP, - la figure 2, décrite ci-dessus, représente l'échec d'une tentative d'établissement d'une sous-session MPTCP vers le terminal B à partir d'un terminal A, suite au filtrage des options MPTCP par des fonctions intermédiaires, - la figure 3, décrite ci-dessus, représente l'échec d'une tentative d'établissement d'une sous-session MPTCP vers le terminal B à partir d'un terminal A, suite au filtrage des options DSS par des fonctions 25 intermédiaires, - la figure 4 illustre l'option DUAL selon l'invention, - la figure 5 illustre un exemple de configuration de réseau comprenant trois terminaux D1, D2 et D3, - la figure 6 illustre les sous-sessions TCP établies entre les 30 terminaux D1 et D3 de la figure 5, - la figure 7 illustre l'option PROBE selon l'invention, et - la figure 8 illustre un exemple d'application de l'invention à une configuration de réseau comprenant un terminal T1 placé derrière un dispositif-relais R. L'invention propose une nouvelle option TCP, que l'on appellera « DUAL », et qui est illustrée sur la figure 4. Cette option DUAL comprend les champs suivants : - « Kind » : indique le type d'option ; ce champ inclut un identifiant unique descriptif de la nature de l'option TCP ; - « Length » : ce champ indique la longueur de l'option, exprimée en octets ; - « DUAL » : ce champ indique le sous-type de cette option à chemins multiples pour distinguer d'une manière non-ambiguë l'option DUAL des autres options à chemins multiples ; - « Rsrv'd » : ces bits sont réservés pour un usage futur ; - « Address ID » : ce champ indique l'identifiant d'une adresse IP. L'option DUAL est utilisée par un terminal pour indiquer à un pair que la connexion TCP est une connexion duale, c'est-à-dire qu'une connexion à chemins multiples doit être initialisée concomitamment à cette connexion TCP. L'invention propose également plusieurs nouveaux attributs à inclure dans les tables de connexion à chemins multiples. Ces attributs sont les suivants : - PATH CHECKED : ce champ est valorisé à « 1 » pour indiquer qu'une sous-session TCP est compatible avec les extensions à chemins multiples, et valorisé à « 0 » dans le cas contraire, et - DUAL : ce champ est valorisé à « 1 » pour indiquer qu'une connexion TCP duale concomitante à cette connexion à chemins multiples est active ; la valeur « 0 » est utilisée pour indiquer qu'aucune connexion TCP simple n'est associée à cette connexion à chemins multiples. L'invention s'applique de manière générale à tout protocole concernant les connexions TCP à chemins multiples. On va décrire à 5 présent l'application de l'invention au protocole MPTCP décrit succinctement ci-dessus. En particulier, l'API MPTCP, mentionnée ci-dessus, doit être modifiée pour que l'on puisse transmettre aux applications la valeur des attributs DUAL et PATH CHECKED selon l'invention. 10 Le protocole MPTCP comprend classiquement un certain nombre de dispositions incluant notamment la définition des options TCP suivantes : - MP CAPABLE : cette option est utilisée pour signaler au terminal distant que le terminal émetteur est compatible avec les extensions 15 MPTCP ; - ADD ADDR : cette option est utilisée pour ajouter une nouvelle adresse ; elle comprend un champ optionnel de deux octets permettant de fournir également un numéro de port, le cas échéant ; - REMOVE ADDR : cette option est utilisée pour supprimer une 20 adresse ; - MP PRIO : cette option est utilisée pour modifier la priorité d'une connexion ; - MP JOIN : cette option est utilisée pour identifier la connexion TCP qui est associée à l'établissement d'une nouvelle sous-session ; 25 - MP FAIL : cette option est utilisée pour revenir au mode TCP sans options MPTCP ; et - MP FASTCLOSE : cette option est utilisée pour clôturer rapidement une connexion MPTCP. Le protocole MPTCP peut être activé selon plusieurs modes : - mode natif : deux terminaux MPTCP établissent toutes les sous-sessions qui correspondent aux numéros des adresses/ports disponibles, et utilisent l'ensemble de ces sous-sessions ; - mode primaire : deux terminaux MPTCP signalent des sous-5 sessions, mais seul un sous-ensemble de ces sous-sessions est effectivement utilisé pour le transfert de données ; - mode secondaire : en cas d'indisponibilité (ou de surcharge) du sous-ensemble « primaire » de sous-sessions, un sous-ensemble « secondaire » de sous-sessions est alors sollicité pour assurer la 10 continuité de la connexion MPTCP ; et - mode repli : deux terminaux MPTCP utilisent une sous-session unique ; en cas de panne, le trafic est basculé vers une nouvelle sous-session créée à cet effet. La figure 5 illustre un exemple de configuration de réseau 15 comprenant trois terminaux D1, D2 et D3. On voit sur cette figure : - un terminal D-I connecté à un ou plusieurs réseaux IP via n noeuds de raccordement (F1, F2, ..., Fn) et n réseaux d'accès R1, R2, ..., Rn respectifs ; ces noeuds de raccordement peuvent héberger des fonctions NAT, pare-feu, et ainsi de suite, ou être des routeurs IP 20 qui n'embarquent aucune fonction service avancée telle qu'un NAT ou un pare-feu ; on suppose que : o F-I filtre les options MPTCP, o F2 ne filtre que les options MPTCP des paquets de données, et o Fn ne filtre ni ne modifie aucune des options MPTCP ; 25 - un terminal D2 connecté à un réseau IP via un seul noeud de raccordement ; on suppose que D2 est compatible avec MPTCP, et qu'une adresse IP unique lui a été allouée ; et - un terminal D3 connecté à un ou plusieurs réseaux IP via m noeuds de raccordement (Fa, Fb, ..., Fm) ; ces noeuds peuvent héberger 30 des fonctions NAT, pare-feu, et ainsi de suite, ou être des routeurs IP qui n'embarquent aucune fonction service avancée telle qu'un NAT ou un pare-feu ; on suppose que : o Fa filtre les options MPTCP, o Fb ne filtre ni ne modifie aucune des options MPTCP, et o Fm ne filtre ni ne modifie aucune des options MPTCP. Comme illustré sur la figure 6, les chemins MPTCP valides entre Dl et D3 sont alors les suivants : le chemin passant par Fn et Fb, et le chemin passant par Fn et Fm. Les terminaux Dl et D3 ne peuvent pas utiliser MPTCP si d'autres chemins que ces deux chemins sont sélectionnés pour échanger des données entre Dl et D3. De plus, Dl et D3 ne disposent pas de moyens pour identifier la cause de l'échec de l'établissement d'une connexion à chemins multiples. En particulier, ils ne peuvent pas déterminer si la cause de cet échec est une défaillance des fonctions intermédiaires côté D1, côté D3, ou entre les deux. On va décrire à présent, à titre d'exemple, plusieurs modes de réalisation du procédé selon l'invention, dans lesquels on suppose qu'un terminal Ti veut établir une connexion MPTCP avec un terminal T2. Selon un premier mode de réalisation, on met en oeuvre les étapes suivantes. Lors d'une étape E1, le terminal Ti initialise, selon un premier chemin, une connexion TCP ainsi qu'une connexion MPTCP vers le terminal T2. Le terminal Ti inclut l'option DUAL dans son message d'initialisation MPTCP pour indiquer à son correspondant qu'une connexion TCP est également en cours. Le terminal Tl peut initialiser les deux connexions en même temps ou avec un décalage temporel (positif ou négatif) entre les deux connexions. Lors d'une étape E2, le terminal Tl constate que le terminal T2 30 n'est pas compatible avec les extensions MPTCP. Enfin, lors d'une étape E3, le terminal T1 met fin à la connexion MPTCP, et les deux terminaux échangent des données via la connexion TCP. On notera que les deux terminaux échangent ainsi des données 5 avec succès sur la connexion TCP, sans que ce repli ne cause aucun délai puisque la connexion TCP était déjà en place. Selon un deuxième mode de réalisation, on met en oeuvre les étapes suivantes. Lors d'une étape E'1, le terminal T1 initialise, selon un premier 10 chemin, une connexion TCP ainsi qu'une connexion MPTCP vers le terminal T2. Le terminal T1 inclut l'option DUAL dans son message d'initialisation MPTCP pour indiquer à son correspondant qu'une connexion TCP est également en cours. Le terminal T1 peut initialiser les deux connexions en même temps ou avec un décalage temporel (positif 15 ou négatif) entre les deux connexions. Lors d'une étape E'2, le terminal T2, qui est compatible avec les extensions MTPCP, détecte une anomalie (par exemple, l'absence de l'une des options MPTCP), et notifie le terminal T1 du fait qu'il a constaté une anomalie. 20 Enfin, lors d'une étape E'3, les deux terminaux mettent fin à la connexion MPTCP, et échangent des données via la connexion TCP. On notera ici encore que les deux terminaux échangent ainsi des données avec succès sur la connexion TCP, sans que ce repli ne cause aucun délai puisque la connexion TCP était déjà en place. 25 Selon un troisième mode de réalisation, on met en oeuvre les étapes suivantes. Lors d'une étape E"1, le terminal T1 initialise, selon un premier chemin, une connexion TCP ainsi qu'une connexion MPTCP vers le terminal T2. Le terminal T1 inclut l'option DUAL dans son message 30 d'initialisation MPTCP pour indiquer à son correspondant qu'une connexion TCP est également en cours. Le terminal Ti peut initialiser les deux connexions en même temps ou avec un décalage temporel (positif ou négatif) entre les deux connexions. Lors d'une étape E"2, aucun des deux terminaux n'ayant détecté d'anomalie lors de l'échange de données en utilisant la connexion MPTCP, ils peuvent mettre fin à la connexion TCP et ne maintenir que la connexion MPTCP. Les deux terminaux peuvent échanger des messages pour coordonner la clôture de la connexion TCP ; cette coordination permettra de décharger la connexion TCP et de n'utiliser que la connexion MPTCP pour l'envoi des données. En variante, les deux terminaux peuvent décider de ne mettre fin à la connexion TCP qu'à l'issue de l'étape E"3 ci-dessous. Selon encore une autre variante, ils peuvent maintenir la connexion TCP afin de faciliter la bascule au cas où les chemins multiples compatibles avec MPTCP deviennent ultérieurement indisponibles. Lors d'une étape E"3, la première sous-session MPTCP ayant été établie avec succès, on vérifie, le cas échéant, la compatibilité avec les extensions MPTCP d'éventuels chemins (donc de sous-sessions TCP) entre les terminaux Ti et T2 autres que ledit premier chemin. La découverte de ces autres chemins peut être réalisée, par exemple, à l'aide d'un protocole d'allocation dynamique d'adresses IP comme DHCP (Dynamic Host Configuration Protocol), ou par un mécanisme de création de mapping, tel que PCP (Port Control Protocol), UPnP (Universal Plug and Play), IGD (Internet Gateway Device), ou STUN (Session Traversai Utilities for NAT). On rappelle à cet égard que l'on appelle « mapping » l'association d'une adresse IP interne et d'un numéro de port interne avec une adresse IP externe et un numéro de port externe. Dans le cas d'une fonction NAT, l'adresse IP interne et le numéro de port interne sont les informations servant de données d'entrée, alors que l'adresse IP externe et le numéro de port externe sont alloués par la fonction NAT. Dans le cas d'un pare-feu, les informations internes et externes sont identiques. Un « mapping » peut inclure d'autres informations, telles que l'adresse IP et le numéro de port du correspondant ou un identifiant du protocole de communication utilisé. Cette vérification de la compatibilité avec les extensions MPTCP peut, par exemple, être mise en oeuvre par les terminaux Ti et T2 eux-mêmes en stimulant l'initialisation de sous-sessions TCP à l'aide d'une option TCP selon la présente invention, que l'on appellera « PROBE », et qui est illustrée sur la figure 7. La présence de l'option PROBE est une indication au terminal distant que la sous-session concernée ne devrait, de préférence, pas être utilisée (provisoirement) pour l'échange de données utiles, mais qu'elle est initialisée afin de vérifier la compatibilité du chemin sous-jacent avec les extensions TCP à chemins multiples. L'utilisation de l'option PROBE n'est pas exclusive au terminal qui a initié la connexion TCP à chemins multiples. Ainsi, des sous-sessions de test (incluant l'option PROBE) peuvent être établies à l'initiative de l'un des pairs ou des deux à la fois. Les deux pairs Ti et T2 peuvent initier, chacun de son côté, une sous-session de test associée au même chemin. Plusieurs sous-sessions de test peuvent être initiées simultanément. L'option PROBE comprend les champs suivants : - « Kind » : indique le type d'option ; ce champ inclut un identifiant unique descriptif de la nature de l'option TCP ; - « length » : ce champ indique la longueur de l'option, exprimée en octets ; - « PROBE » : ce champ indique le sous-type de cette option à chemins multiples pour distinguer d'une manière non-ambiguë l'option PROBE des autres options à chemins multiples ; - « IPVer » : ce champ renseigne la famille d'adresses (IPv4, IPv6) à laquelle appartient l'adresse incluse dans le champ « Address » ; - « Address ID » : ce champ indique l'identifiant d'une adresse IP , - « Address » : ce champ est utilisé pour inclure une adresse IP ; il peut s'agir d'une adresse IPv4 ou d'une adresse IPv6 ; - « Port » : ce champ est optionnel ; il mentionne, s'il est présent, un numéro de port ; - « Reserved » : ce champ est réservé pour un usage futur ; par exemple, ce champ peut par exemple être utilisé pour demander au pair distant d'initialiser une sous-session afin de tester le chemin retour (car le routage est asymétrique), d'injecter certains types de paquets, ou de réguler le débit de la sous- session. Enfin, le cas échéant, lors d'une étape E"4, pour au moins l'un des éventuels chemins entre les terminaux T1 et T2 autres que ledit premier chemin : - si, suite à ladite vérification, cet autre chemin s'avère être compatible avec les options MPTCP, l'attribut PATH CHECKED associé à ce chemin est valorisé à « 1 » ; les deux terminaux peuvent alors, au besoin, utiliser la sous-session TCP associée à cet autre chemin, en sus de la sous-session TCP associée au premier chemin, pour échanger des données au sein de la connexion MPTCP ; et - si, en revanche, cet autre chemin s'avère être incompatible avec les options MPTCP, l'attribut PATH CHECKED associé à ce chemin est valorisé à « 0 » ; cet autre chemin ne pourra évidemment pas être utilisé par les terminaux T1 et T2 pour établir entre eux une sous-session TCP supplémentaire, ou pour l'initialisation d'une autre connexion TCP duale associée à une autre connexion MPTCP impliquant ces deux pairs. On notera que, optionnellement, un terminal pourra vérifier la compatibilité d'éventuels autres chemins avant même d'avoir initialisé la première connexion MPTCP. Aussi longtemps que la connexion TCP duale n'a pas été clôturée, les participants à une connexion MPTCP peuvent exécuter ladite procédure de test à chaque changement de condition d'accès au réseau, notamment en cas de détection de nouveau(x) réseau(x) ou de détection de nouveaux chemins : en cas de test positif, les deux terminaux pourront basculer de la connexion TCP duale établie concomitamment avec une connexion MPTCP, vers cette connexion MPTCP ; inversement, en cas de test négatif, c'est-à-dire s'il s'avère qu'aucun chemin multiple n'est compatible avec les options MPTCP, alors la connexion MPTCP bascule vers la connexion TCP duale. La figure 8 illustre un exemple d'application de l'invention à une configuration de réseau comprenant un terminal TCP ou MPTCP Ti placé derrière un dispositif-relais R, tel qu'un routeur ou une passerelle résidentielle, compatible avec MPTCP. Le dispositif-relais R met en oeuvre la présente invention pour communiquer avec des terminaux distants. Ce dispositif-relais R est connecté à un ou plusieurs réseau(x) IP via n noeuds de raccordement (F1, F2, ..., Fn) et n réseaux d'accès R1, R2, ..., Rn respectifs ; ces noeuds de raccordement peuvent héberger des fonctions NAT, pare-feu, et ainsi de suite, ou être des routeurs IP qui n'embarquent aucune fonction service avancée telle qu'un NAT ou un pare-feu. L'invention peut être mise en oeuvre au sein de noeuds de réseaux de communications, par exemple des terminaux, des routeurs ou des passerelles, au moyen de composants logiciels et/ou matériels. Les composants logiciels pourront être intégrés à un programme d'ordinateur classique de gestion de noeud de réseau. C'est pourquoi, comme indiqué ci-dessus, la présente invention concerne également un système informatique. Ce système informatique comporte de manière classique une unité centrale de traitement commandant par des signaux une mémoire, ainsi qu'une unité d'entrée et une unité de sortie. De plus, ce système informatique peut être utilisé pour exécuter un programme d'ordinateur comportant des instructions pour la mise en oeuvre de l'un quelconque des procédés de communication selon l'invention. En effet, l'invention vise aussi un programme d'ordinateur tel que décrit succinctement ci-dessus. Ce programme d'ordinateur peut être stocké sur un support lisible par ordinateur et peut être exécutable par un microprocesseur. Ce programme peut utiliser n'importe quel langage de programmation, et se présenter sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations, inamovible, ou partiellement ou totalement amovible, lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que décrit succinctement ci-dessus. Ce support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comprendre un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou un moyen d'enregistrement magnétique, tel qu'un disque dur, ou encore une clé USB (« USB flash drive » en anglais). D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme d'ordinateur selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. En variante, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution de l'un quelconque des procédés de communication selon l'invention. REVENDICATIONS1. Procédé de communication TCP (Transmission Control Protocol) entre un premier dispositif-client (T1) et un second dispositif- client (T2), comprenant les étapes suivantes : a) ledit premier dispositif-client (T1) ou un premier dispositif-relais connecté au premier dispositif-client (T1), envoie (E1, El , E"1) audit second dispositif-client (T2) ou à un second dispositif-relais connecté au second dispositif-client (T2) un message d'initialisation d'une connexion TCP selon un chemin, dit premier chemin, b) ledit premier dispositif-client (T1) ou premier dispositif-relais et ledit second dispositif-client (T2) ou second dispositif-relais initialisent également une connexion à chemins multiples entre eux selon ledit premier chemin, et c) si au moins l'un des deux dispositifs-clients ou l'un des deux dispositifs-relais constate (E2, E'2) une anomalie concernant ladite connexion à chemins multiples, le premier dispositif-client (T1) et le second dispositif-client (T2) utilisent (E3, E'3) ladite connexion TCP pour échanger des données utiles. 2. Procédé de communication selon la revendication 1, caractérisé en ce que, lors de ladite étape b), ledit second dispositif-client (T2) ou second dispositif-relais initialise ladite connexion à chemins multiples suite à la réception dudit message d'initialisation d'une connexion TCP envoyé par ledit premier dispositif-client (T1) ou premier dispositif-relais lors de ladite étape a). 3. Procédé de communication selon la revendication 2, caractérisé en ce que, lors de ladite étape a), ledit premier dispositif-client (T1) ou premier dispositif-relais inclut dans ledit message d'initialisation une option TCP (DUAL) indiquant qu'une connexion à chemins multiples doit être initialisée en sus de ladite connexion TCP. 4. Procédé de communication selon l'une quelconque des revendications 1 à 3, caractérisé en ce que, si aucune anomalie concernant ladite connexion à chemins multiples n'est constatée (E"2), et s'il existe entre lesdits premier et second dispositifs-clients (T1, T2) au moins un chemin autre que ledit premier chemin : - on vérifie (E"3) la compatibilité dudit autre chemin avec les options TCP propres à la connexion à chemins multiples, et - si ladite vérification est positive, le premier et le second dispositifs-clients (T1, T2) échangent entre eux (E"4), au sein de la connexion à chemins multiples, des données utiles via cet autre chemin en sus dudit premier chemin. 5. Procédé de communication selon la revendication 4, caractérisé en ce que, pour effectuer ladite vérification de la compatibilité dudit autre chemin, le premier dispositif-client (T1) ou premier dispositif-relais et le second dispositif-client (T2) ou second dispositif-relais émet un message d'initialisation d'une sous-session TCP selon ledit autre chemin au sein de ladite communication à chemins multiples, ledit message d'initialisation d'une sous-session TCP comprenant une option TCP (PROBE) indiquant que ladite sous-session TCP ne doit pas être utilisée pour échanger des données utiles avant une conclusion positive de ladite vérification. 6. Procédé de communication selon l'une quelconque des revendications 1 à 5, caractérisé en ce que ladite connexion à chemins multiples met en oeuvre le protocole MPTCP (Multi-Path TCP). 7. Dispositif communicant possédant des moyens pour participer à une communication TCP (Transmission Control Protocol), caractérisé en ce qu'il possède en outre des moyens pour : - initialiser une connexion TCP selon un chemin, dit premier chemin, avec un autre dispositif communicant,- initialiser également une connexion à chemins multiples avec ledit autre dispositif communicant selon ledit premier chemin, et - s'il constate une anomalie concernant ladite connexion à chemins multiples, utiliser ladite connexion TCP pour échanger des données utiles avec ledit autre dispositif communicant. 8. Dispositif communicant selon la revendication 7, caractérisé en ce qu'il comprend en outre des moyens pour initialiser ladite connexion à chemins multiples suite à la réception d'un message d'initialisation d'une connexion TCP envoyé par ledit autre dispositif communicant. 9. Dispositif communicant selon la revendication 8, caractérisé en ce qu'il comprend en outre des moyens pour prendre en compte dans ledit message d'initialisation une option TCP (DUAL) lui indiquant qu'une connexion à chemins multiples doit être initialisée en sus de ladite connexion TCP. 10. Dispositif communicant selon l'une quelconque des revendications 7 à 9, caractérisé en ce qu'il comprend en outre des moyens pour envoyer audit autre dispositif communicant un message d'initialisation de ladite connexion TCP comprenant une option TCP (DUAL) indiquant qu'une connexion à chemins multiples doit être initialisée en sus de ladite connexion TCP. 11. Dispositif communicant selon l'une quelconque des revendications 7 à 10, caractérisé en ce qu'il comprend en outre des moyens pour, lorsqu'il existe au moins un chemin autre que ledit premier chemin le connectant audit autre dispositif communicant, émettre un message d'initialisation d'une sous-session TCP selon ledit autre chemin au sein de ladite communication à chemins multiples, ledit message d'initialisation d'une sous-session TCP comprenant une option TCP (PROBE) indiquant que ladite sous-session TCP ne doit pas être utilisée pour échanger des données utiles avant une conclusion positive d'unevérification de la compatibilité de cet autre chemin avec les options TCP propres à la connexion à chemins multiples. 12. Dispositif communicant selon l'une quelconque des revendications 7 à 11, caractérisé en ce qu'il comprend un dispositif-client (T1, T2). 13. Dispositif communicant selon l'une quelconque des revendications 7 à 11, caractérisé en ce qu'il comprend un dispositif-relais (R).