Agrégation de connexion internet – théorie

agregation-bp

Si vous aussi, vous voulez comprendre comment agréger 2 connexions internet rapidement, vous êtes au bon endroit.

Pour commencer, il est important de comprendre qu’il existe 2 grands types d’agrégations. Il est donc nécessaire de les catégoriser pour pouvoir mieux comprendre les contraintes de chacunes.

Agrégation de type « bonding »

Le bonding, c’est quand vous utilisez l’entièreté de la bande passante des 2 lignes en simultané. Le seul souci, c’est qu’en réseau, il n’est possible que de communiquer d’un point vers un autre, dans la plupart du temps. La mise en place d’un bonding nécessite donc un point de sortie qui recollera les morceaux. Certains ISPs le gèrent via le protocole MLPPP, mais ces offres, de par leur prix élevé, ne sont pas souvent destinées au grand public.

Fonctionnement :

Si vous ne disposez pas de solution mettant en place le MLPPP, il est possible d’obtenir un « bonding » par le biais de plusieurs VPNs couplés ensembles.

Le principe est simple. Vous établissez d’abord un lien VPN entre chaque connexion et votre point de sortie (dédié, VPS, …) . Puis, vous agrégez vos interfaces virtuelles pour former une seule interface en utilisant le bonding sous Linux ou le protocole LACP par exemple.

Il existe plusieurs algorithmes de bonding: certains sont destinés à faire du active/active (les 2 connexions servent au passage simultané de données), d’autres du active/backup (une connexion des données, l’autre s’activant en cas de secours). Par contre, dans la plupart des cas, l’algorithme balance un paquet sur l’interface A, puis un sur l’interface B. Ce comportement a pour effet que si la ligne B est plus lente, la ligne A tombera à la même vitesse. Il est donc recommandé d’avoir deux lignes à la même vitesse.

Avantages :

– Utilisation de toute la bande passante indépendamment de l’application derrière.

Inconvénients :

– Perte de quelques pourcents pour la liaison de transport.

– Les lignes doivent être rigoureusement identiques (latence, jitter, bande passante) pour que le bonding soit optimal.

– La nécessite d’avoir un point de sortie: il vous faut un serveur (couts++ et latence++).

– Si vous avez une IP dans un datacenter, celles-ci peuvent être bloquées par des sites web tels que leboncoin.

Quelques solutions :

– Le noyau linux qui gère quelques algos tels que le LACP;

– MLVPN qui monte un tunnel de type PPP et gère l’agrégation de façon logicielle. MLVPN gère les différences de connexion. C’est donc un candidat sérieux;

– Zeroshell: une distribution GNU/Linux dédiée aux serveurs ou au matériel embarqué dont le but principal est de fournir un firewall et une connexion réseau de basé.

 

Agrégation de type « Load Balancing »

Le loadbalancing, c’est la répartition de charge entre plusieurs connexions. Par exemple, je lance le téléchargement qui sature ma connexion 1. Ensuite, je lance un 2eme téléchargement qui va donc aller sur la connexion 2. Là aussi, il existe plusieurs algos de load balancing et surtout, il ne nécessite aucun point de sortie vu qu’une seule connexion ne sort que par un seul point.

Avantages :

– Aucune perte, toute la bande passante de chaque connexion est exploitable;

– Pas de point de sortie: latences optimales;

– Meilleure tolérance aux pannes;

– Fonctionne sur des lignes différentes.

Inconvénients :

– La totalité de la bande passante n’est pas utilisable par une seule connexion TCP.

– Plusieurs IPs de sortie, certaines applications web peuvent ne pas aimer un changement d’IP trop fréquent.

Quelques solutions :

– La plupart des routeurs professionnels: MikroTik, Fortinet, Cisco, Juniper, …

– Iptables (évidemment)

– dispatch-proxy (nodejs) qui est un proxy http avec une surcouche de loadbalancing très efficace pour les downloads multithreadés. Je reviendrai dessus prochainement, car cette solution vaut vraiment le détour.

Conclusion

Il existe plusieurs types de bonding, il est important de choisir celui qui vous conviendra le mieux en fonction de vos usages. Sachez qu’à l’avenir, je compte réaliser un article sur la mise en place d’une solution par type de bonding. J’utilise déjà dispatch-proxy qui fonctionne très bien, mais reste limité, car il ne peut pas fonctionner avec tout.

2 comments

  1. Hello,

    Merci ce petit article qui fait que ce que je cherche a faire est faisable …
    Mais je ne sais pas comment faire.

    Vous parler de faire un article plus détaillé de chaque solution et que vous utilisez dispatch-proxy.
    Auriez-vous une doc / article qui décrit comment faire ?

    1. Bonjour Hep,
      En effet, je n’ai pas pris le temps de rédigé les autres articles.
      Depuis il y a eu pas mal d’évolutions dans le milieu.
      Si tu cherche à faire de l’agrégation de 2 connexions, je t’invite à regarder des solutions comme l’overthebox ou son clone opensource openMPTCPRouter
      L’avantage de ces solutions, c’est que tu peux agréger différents types de médiats et en profiter sur tout les protocols (et pas seulement tcp / socks)

Répondre à cédric r Annuler la réponse.

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.