Véritable somme des canaux Internet - OpenMPTCPRouter



Est-il possible de combiner plusieurs canaux Internet en un seul? Il existe de nombreuses idées fausses et mythes autour de ce sujet, même les ingénieurs réseau expérimentés ne savent souvent pas que cela est possible. Dans la plupart des cas, l'agrégation de liens est appelée à tort NAT ou basculement. Mais la véritable somme vous permet d'exécuter une seule connexion TCP en même temps sur tous les canaux Internet , par exemple, la diffusion vidéo afin que lorsque l'un des canaux Internet tombe en panne, la diffusion ne soit pas interrompue.

Il existe des solutions commerciales coûteuses pour les diffusions vidéo, mais ces appareils coûtent beaucoup de kilobaxes. L'article décrit la configuration du package ouvert et gratuit OpenMPTCPRouter, et les mythes populaires sur l'agrégation de canaux sont analysés.

Mythes de sommation des canaux


Il existe de nombreux routeurs domestiques qui prennent en charge la fonction Multi-WAN. Parfois, les fabricants appellent cette sommation de canal, ce qui n'est pas entièrement vrai. De nombreux networkers pensent qu'en dehors de LACP et de la sommation au niveau L2, aucune autre agrégation de liens n'existe. J'ai souvent entendu dire que cela est généralement impossible de la part des personnes qui travaillent dans les télécommunications. Par conséquent, nous allons essayer de comprendre les mythes populaires.

Équilibrage des connexions IP


Il s'agit du moyen le plus abordable et le plus populaire d'utiliser plusieurs canaux Internet en même temps. Pour simplifier, supposons que vous ayez trois fournisseurs Internet, chacun vous donnant une véritable adresse IP à partir de votre réseau. Tous ces fournisseurs sont connectés à un routeur prenant en charge Multi-WAN. Il peut être OpenWRT avec le package mwan3, mikrotik, ubiquiti ou tout autre routeur domestique, car maintenant cette option n'est pas rare.

Pour simuler la situation, imaginez que les prestataires nous ont donné ces adresses:

WAN1 — 11.11.11.11 WAN2 — 22.22.22.22 WAN2 — 33.33.33.33 

C'est-à-dire qu'en se connectant au serveur example.com distant via chacun des fournisseurs, le serveur distant verra trois clients ip source indépendants. L'équilibrage vous permet de partager la charge sur les canaux et de les utiliser tous les trois en même temps. Pour simplifier, imaginez que nous partageons la charge entre tous les canaux de manière égale. Par conséquent, lorsqu'un client ouvre un site sur lequel il y a classiquement trois images, il télécharge chaque image via un fournisseur distinct. Côté site, cela ressemble à des connexions de trois IP différentes.


Lors de l'équilibrage au niveau de la connexion, chaque connexion TCP passe par un fournisseur distinct .

Ce mode d'équilibrage cause souvent des problèmes aux utilisateurs. Par exemple, de nombreux sites attachent étroitement des cookies et des jetons à l'adresse IP du client, et si elle change soudainement, la demande est rejetée ou le client se déconnecte du site. Ceci est souvent reproduit sur les systèmes client-banque et sur d'autres sites avec des règles de session utilisateur strictes. Voici un exemple illustratif simple: les fichiers musicaux dans VK.com ne sont disponibles qu'avec une clé de session valide liée à IP, et les clients utilisant un tel équilibrage ne lisent souvent pas d'audio, car la demande n'est pas passée par le fournisseur auquel la session est liée.


Lors du téléchargement de torrents, l'équilibrage au niveau de la connexion résume la bande passante de tous les canaux

Cet équilibrage vous permet d'obtenir la somme de la vitesse du canal Internet lors de l'utilisation de plusieurs connexions. Par exemple, si chacun des trois fournisseurs a une vitesse de 100 mégabits, alors lors du téléchargement de torrents, nous obtenons 300 mégabits. Parce que le torrent ouvre de nombreuses connexions qui sont réparties entre tous les fournisseurs et utilisent finalement la totalité du canal.

Il est important de comprendre qu'une seule connexion TCP passera toujours par un seul fournisseur. Autrement dit, si nous téléchargeons un gros fichier via HTTP, cette connexion sera établie via l'un des fournisseurs, et si la connexion avec ce fournisseur est interrompue, le téléchargement sera également interrompu.


Une connexion utilisera toujours un seul canal Internet

Cela est vrai pour les émissions vidéo. Si vous diffusez de la vidéo sur une sorte de Twitch conditionnel, l'équilibrage au niveau des connexions IP ne donnera aucun avantage particulier, car le flux vidéo sera diffusé au sein de la même connexion IP. Dans ce cas, si le fournisseur WAN 3 commence à avoir des problèmes de communication, par exemple une perte de paquets ou une réduction de la vitesse, vous ne pourrez pas passer instantanément à un autre fournisseur. La diffusion devra être arrêtée et reconnectée à nouveau.

True Channel Summation


La sommation réelle des canaux permet d'établir immédiatement une connexion au Twitch conditionnel via tous les fournisseurs de telle sorte que si l'un des fournisseurs se rompt, la connexion ne se rompra pas. Il s'agit d'une tâche étonnamment difficile, qui n'a toujours pas de solution optimale. Beaucoup ne savent même pas que c'est possible!

À partir des illustrations précédentes, nous nous souvenons que le serveur Twitch conditionnel peut recevoir un flux vidéo de notre part à partir d'une seule adresse IP source, ce qui signifie qu'il doit toujours être constant avec nous, quels que soient les fournisseurs tombés en panne et ceux qui fonctionnent. Pour ce faire, nous avons besoin d'un serveur de sommation qui mettra fin à toutes nos connexions et les combinera en un seul.


Le serveur sommateur regroupe tous les canaux dans un tunnel. Toutes les connexions se produisent à partir de l'adresse du serveur sommateur

Dans ce schéma, tous les fournisseurs sont utilisés, et la désactivation de l'un d'eux ne provoquera pas de rupture de communication avec le serveur Twitch. En fait, il s'agit d'un tunnel VPN spécial, sous le capot duquel se trouvent plusieurs canaux Internet à la fois. La tâche principale d'un tel schéma est d'obtenir le canal de communication de la plus haute qualité. Si des problèmes ont commencé chez l'un des fournisseurs, perte de paquets, retards accrus, cela ne devrait en aucun cas affecter la qualité de la communication, car la charge sera automatiquement distribuée via d'autres canaux meilleurs disponibles.

Solutions commerciales


Ce problème préoccupe depuis longtemps ceux qui diffusent des événements en direct et n'ont pas accès à Internet de haute qualité. Il existe plusieurs solutions commerciales pour de telles tâches, par exemple, la société Teradek fabrique de tels routeurs monstrueux dans lesquels des packs de modems USB sont insérés:


Routeur de diffusion vidéo avec fonction de sommation de canaux

Dans de tels appareils, généralement, la possibilité de capturer de la vidéo via HDMI ou SDI. Avec le routeur, un abonnement au service de sommation de canaux est vendu, ainsi que le traitement du flux vidéo, son transcodage et son relais. Le prix de ces appareils commence à 2 000 $ avec un ensemble de modems, plus un abonnement séparé au service.

Parfois, cela semble assez effrayant:



Configurer OpenMPTCPRouter


Le protocole MP-TCP (MultiPath TCP) a été inventé pour la capacité de se connecter sur plusieurs canaux à la fois. Par exemple, il prend en charge iOS et peut se connecter simultanément à un serveur distant via WiFi et sur un réseau cellulaire. Il est important de comprendre qu'il ne s'agit pas de deux connexions TCP distinctes, mais d'une seule connexion établie immédiatement sur deux canaux. Pour que cela fonctionne, le serveur distant doit également prendre en charge MPTCP.

OpenMPTCPRouter est un projet de routeur open source qui vous permet d'ajouter véritablement des canaux. Les auteurs déclarent que le projet est en statut alpha, mais qu'il peut déjà être utilisé. Il se compose de deux parties: un serveur de sommation, situé sur Internet et un routeur, auxquels plusieurs fournisseurs Internet et appareils clients se connectent eux-mêmes: ordinateurs, téléphones. En tant que routeur personnalisé, Raspberry Pi, certains routeurs WiFi ou un ordinateur ordinaire peuvent agir. Il existe des assemblages prêts à l'emploi pour diverses plates-formes, ce qui est très pratique.


Fonctionnement d'OpenMPTCPRouter

Configuration d'un serveur de sommation


Le serveur sommateur est situé sur Internet et met fin aux connexions de tous les canaux du routeur client en un seul. L'adresse IP de ce serveur sera l'adresse externe lors de l'accès à Internet via OpenMPTCPRouter.

Pour cette tâche, nous utiliserons un serveur VPS sur Debian 10.

Configuration requise pour le serveur de synthèse:

  • MPTCP ne fonctionne pas sur la virtualisation OpenVZ
  • Il devrait être possible d'installer votre propre noyau Linux

Le serveur est déployé en exécutant une seule commande. Le script installera le noyau avec le support mptcp et tous les packages nécessaires. Des scripts d'installation sont disponibles pour Ubuntu et Debian.

 wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh 

Résultat d'une installation réussie du serveur.



Nous enregistrons les mots de passe, nous en aurons besoin pour configurer le routeur client et redémarrer. Il est important de garder à l'esprit qu'après l'installation, SSH sera disponible sur le port 65222. Après le redémarrage, vous devez vous assurer que nous démarrons avec le nouveau noyau

 uname -a Linux test-server.local 4.19.67-mptcp 

Nous voyons mptcp à côté du numéro de version, ce qui signifie que le noyau est installé correctement.

Configuration d'un routeur client


Sur le site du projet , des assemblages prêts à l'emploi sont disponibles pour certaines plates-formes, par exemple, les routeurs Raspberry Pi, Banana Pi, Lynksys et les machines virtuelles.
Cette partie de openmptcprouter est basée sur OpenWRT, utilisant LuCI comme interface, familière à tous ceux qui ont déjà rencontré OpenWRT. Le kit de distribution pèse environ 50 Mo!



Comme banc d'essai, j'utiliserai le Raspberry Pi et plusieurs modems USB avec différents opérateurs: MTS et Megaphone. Comment écrire l'image sur la carte SD, je pense, pas besoin de le dire.

Initialement, le port Ethernet du Raspberry Pi est configuré comme un lan avec une adresse IP statique de 192.168.100.1 . Afin de ne pas jouer avec les fils sur la table, j'ai connecté le Raspberry Pi au point d'accès WiFi et défini l'adresse statique 192.168.100.2 sur l'adaptateur WiFi de l'ordinateur. Le serveur DHCP n'est pas activé par défaut, vous devez donc utiliser des adresses statiques.

Vous pouvez maintenant accéder à l'interface Web 192.168.100.1

Lors de la première connexion, le système vous demandera de définir le mot de passe root, SSH sera disponible avec le même mot de passe.


Dans les paramètres LAN, vous pouvez définir le sous-réseau souhaité et activer le serveur DHCP.

J'utilise des modems, qui sont définis comme des interfaces Ethernet USB avec un serveur DHCP séparé, donc cela a nécessité l'installation de packages supplémentaires . La procédure est identique à la configuration des modems dans l'OpenWRT habituel, donc je ne vais pas la considérer ici.

Ensuite, vous devez configurer les interfaces WAN. Initialement, deux interfaces virtuelles WAN1 et WAN2 ont été créées dans le système. Il faut leur affecter un périphérique physique, dans mon cas ce sont les noms des interfaces de modem USB.

Afin de ne pas se tromper dans les noms des interfaces, je vous conseille de regarder les messages dmesg en vous connectant via SSH.

Étant donné que mes modems eux-mêmes agissent comme des routeurs et qu'ils ont eux-mêmes un serveur DHCP, j'ai dû modifier les paramètres de leurs plages de réseau internes et désactiver le serveur DHCP, car initialement les deux modems émettent des adresses du même réseau, ce qui provoque un conflit.

OpenMPTCPRouter nécessite que les adresses des interfaces WAN soient statiques, nous proposons donc des modems pour le sous-réseau et le configurons dans le menu système → openmptcprouter → paramètres d'interface. Ici, vous devez spécifier l'adresse IP et la clé de serveur obtenues lors de l'installation du serveur de sommation.



En cas de configuration réussie, une image similaire devrait apparaître sur la page d'état. On peut voir que le routeur a pu atteindre le serveur de sommation et que les deux canaux fonctionnent normalement.



Le mode par défaut est shadowsocks + mptcp. Il s'agit d'un proxy qui encapsule toutes les connexions. Initialement, il est configuré pour gérer uniquement TCP, mais vous pouvez activer UDP.



S'il n'y a aucune erreur sur la page d'état, le paramètre peut être considéré comme terminé.
Avec certains fournisseurs, une situation peut se produire lorsque le drapeau mptcp est coupé sur la route du trafic, puis il y aura une telle erreur:



Dans ce cas, vous pouvez utiliser un mode de fonctionnement différent, sans utiliser MPTCP, plus d'informations ici .

Conclusion


Le projet OpenMPTCPRouter est très intéressant et important, car c'est peut-être la seule solution complète ouverte au problème de la sommation des canaux. Tout le reste est soit étroitement fermé et propriétaire, soit simplement des modules séparés auxquels une personne ordinaire ne peut pas faire face. Au stade actuel de développement, le projet est encore assez grossier, documentation extrêmement pauvre, beaucoup de choses ne sont tout simplement pas décrites. Mais il travaille toujours. J'espère que cela continuera à se développer, et nous obtiendrons des routeurs domestiques qui pourront normalement combiner des canaux hors de la boîte.



Abonnez-vous à notre développeur Instagram


Source: https://habr.com/ru/post/fr479026/


All Articles