Suma real de canales de Internet - OpenMPTCPRouter

Suma real de canales de Internet - OpenMPTCPRouter

¿Es posible combinar varios canales de Internet en uno? Hay muchos conceptos erróneos y mitos en torno a este tema, incluso los ingenieros de redes experimentados a menudo no saben que esto es posible. En la mayoría de los casos, la agregación de enlaces se denomina erróneamente balanceo de NAT o conmutación por error. Pero la suma real permite ejecutar una sola conexión TCP simultáneamente en todos los canales de Internet, por ejemplo, la retransmisión de vídeos de forma que si se interrumpe alguno de los canales de Internet, no se interrumpirá la retransmisión.

Existen soluciones comerciales costosas para la transmisión de video, pero tales dispositivos cuestan muchos kilos. El artículo describe la configuración del paquete abierto y gratuito OpenMPTCPRouter y trata los mitos populares sobre la suma de canales.

Mitos sobre la suma de canales

Hay muchos enrutadores domésticos que admiten la función Multi-WAN. A veces, los fabricantes llaman a este canal de suma, lo cual no es del todo cierto. Muchos usuarios de redes creen que además de LACP y suma en la capa L2, no existe ninguna otra agregación de canales. A menudo escuché que esto es generalmente imposible de personas que trabajan en telecomunicaciones. Por lo tanto, tratemos de entender los mitos populares.

Equilibrio a nivel de conexiones IP

Esta es la forma más asequible y popular de utilizar varios canales de Internet al mismo tiempo. Para simplificar, imaginemos que tiene tres ISP, cada uno de los cuales le brinda una dirección IP real de su red. Todos estos proveedores están conectados a un enrutador con soporte para la función Multi-WAN. Este puede ser OpenWRT con el paquete mwan3, mikrotik, ubiquiti, o cualquier otro router doméstico, ya que ahora esta opción ya no es poco común.

Para simular la situación, imagina que los proveedores nos dieron las siguientes direcciones:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Es decir, conectarse a un servidor remoto example.com a través de cada uno de los proveedores, el servidor remoto verá tres ip fuente independientes del cliente. El balanceo le permite dividir la carga entre canales y usarlos los tres al mismo tiempo. Para simplificar, imaginemos que dividimos la carga entre todos los canales por igual. Como resultado, cuando un cliente abre un sitio con tres imágenes condicionalmente, descarga cada imagen a través de un proveedor independiente. En el lado del sitio, parece conexiones de tres direcciones IP diferentes.

Suma real de canales de Internet - OpenMPTCPRouter
Al equilibrar a nivel de conexión, cada conexión TCP pasa por un proveedor independiente.

Este modo de equilibrio a menudo causa problemas a los usuarios. Por ejemplo, muchos sitios conectan cookies y tokens a la dirección IP del cliente y, si cambia repentinamente, la solicitud se descarta o el cliente cierra sesión en el sitio. Esto a menudo se reproduce en los sistemas de banco de clientes y otros sitios con reglas estrictas de sesión de usuario. Aquí hay un ejemplo ilustrativo simple: los archivos de música en VK.com están disponibles solo con una clave de sesión válida que está vinculada a IP, y los clientes que usan dicho equilibrio a menudo no reproducen audio, porque la solicitud no pasó por el proveedor al que se envió. la sesión está enlazada.

Suma real de canales de Internet - OpenMPTCPRouter
Al descargar torrents, el equilibrio a nivel de conexión suma el ancho de banda de todos los canales

Este equilibrio le permite obtener la suma de la velocidad del canal de Internet cuando utiliza varias conexiones. Por ejemplo, si cada uno de los tres proveedores tiene una velocidad de 100 megabits, entonces al descargar torrents obtendremos 300 megabits. Porque el torrent abre muchas conexiones que se distribuyen entre todos los proveedores y eventualmente utilizan todo el canal.

Es importante comprender que una sola conexión TCP siempre pasará por un solo proveedor. Es decir, si descargamos un archivo grande a través de HTTP, esta conexión se realizará a través de uno de los proveedores, y si la conexión con este proveedor se interrumpe, la descarga también se interrumpirá.

Suma real de canales de Internet - OpenMPTCPRouter
Una conexión siempre usará un solo canal de Internet

Esto también es cierto para las transmisiones de video. Si transmite video en tiempo real en algún Twitch condicional, el equilibrio a nivel de conexiones IP no brindará ningún beneficio particular, ya que la transmisión de video se transmitirá dentro de una conexión IP. En este caso, si el proveedor WAN 3 comienza a tener problemas de comunicación, como pérdida de paquetes o ralentización, no podrá cambiar inmediatamente a otro proveedor. La transmisión tendrá que ser detenida y reconectada.

Suma de canales verdaderos

La suma real de canales permite iniciar una conexión al Twitch condicional a través de todos los proveedores a la vez de tal manera que si alguno de los proveedores se rompe, la conexión no se interrumpirá. Este es un problema sorprendentemente difícil, que todavía no tiene una solución óptima. ¡Muchos ni siquiera saben que esto es posible!

De las ilustraciones anteriores, recordamos que el servidor de Twitch condicional puede recibir una transmisión de video nuestra desde una sola dirección IP de origen, lo que significa que siempre debe ser constante con nosotros, independientemente de qué proveedores se hayan caído y cuáles funcionen. Para lograr esto, necesitamos un servidor de suma que terminará todas nuestras conexiones y las fusionará en una sola.

Suma real de canales de Internet - OpenMPTCPRouter
El servidor de suma agrega todos los canales en un túnel. Todas las conexiones se originan en la dirección del servidor de suma

Este esquema usa todos los proveedores, y deshabilitar cualquiera de ellos no causará una pérdida de comunicación con el servidor de Twitch. De hecho, este es un túnel VPN especial, bajo cuyo capó hay varios canales de Internet a la vez. La tarea principal de dicho esquema es obtener el canal de comunicación de la más alta calidad. Si los problemas comienzan en uno de los proveedores, la pérdida de paquetes, el aumento de los retrasos, esto no debería afectar la calidad de la comunicación de ninguna manera, ya que la carga se distribuirá automáticamente entre otros canales mejores que estén disponibles.

Soluciones Comerciales

Este problema ha sido durante mucho tiempo una preocupación para quienes transmiten eventos en vivo y no tienen acceso a Internet de alta calidad. Para tales tareas, existen varias soluciones comerciales, por ejemplo, Teradek fabrica enrutadores tan monstruosos en los que se insertan paquetes de módems USB:

Suma real de canales de Internet - OpenMPTCPRouter
Enrutador de video de transmisión con función de suma de canales

Dichos dispositivos suelen tener la capacidad de capturar video a través de HDMI o SDI. Junto con el enrutador, se vende una suscripción al servicio de suma de canales, además de procesar el flujo de video, transcodificarlo y retransmitirlo más. El precio de dichos dispositivos comienza desde $ 2k con un conjunto de módems, más una suscripción por separado al servicio.

A veces parece bastante intimidante:

Suma real de canales de Internet - OpenMPTCPRouter

Configuración de OpenMPTCPRouter

Protocolo MP-TCP (MultiPath TCP) se inventó por la capacidad de conectarse en varios canales a la vez. por ejemplo, su es compatible con iOS y puede conectarse simultáneamente a un servidor remoto a través de WiFi y a través de una red celular. Es importante entender que estas no son dos conexiones TCP separadas, sino una conexión establecida en dos canales a la vez. Para que esto funcione, el servidor remoto también debe ser compatible con MPTCP.

Enrutador MPTCPRabierto es un proyecto de enrutador de software de código abierto que le permite realmente sumar canales. Los autores afirman que el proyecto se encuentra en estado de versión alfa, pero ya se puede utilizar. Consta de dos partes: un servidor de suma, que se encuentra en Internet y un enrutador, al que están conectados varios proveedores de Internet y dispositivos de clientes: computadoras, teléfonos. Un enrutador personalizado puede ser una Raspberry Pi, algunos enrutadores WiFi o una computadora normal. Hay ensamblajes listos para usar para varias plataformas, lo cual es muy conveniente.

Suma real de canales de Internet - OpenMPTCPRouter
Cómo funciona OpenMPTCPRouter

Configuración del servidor de resumen

El servidor de suma está ubicado en Internet y termina las conexiones de todos los canales del enrutador del cliente en uno. La dirección IP de este servidor será la dirección externa al acceder a Internet a través de OpenMPTCPRouter.

Para esta tarea, utilizaremos un servidor VPS en Debian 10.

Requisitos del servidor de suma:

  • MPTCP no funciona en la virtualización OpenVZ
  • Debería ser posible instalar su propio kernel de Linux

El servidor se implementa ejecutando un comando. El script instalará el kernel habilitado para mptcp y todos los paquetes necesarios. Los scripts de instalación están disponibles para Ubuntu y Debian.

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

El resultado de una instalación exitosa del servidor.

Suma real de canales de Internet - OpenMPTCPRouter

Guardamos las contraseñas, las necesitaremos para configurar el enrutador del cliente y reiniciar. Es importante tener en cuenta que después de la instalación, SSH estará disponible en el puerto 65222. Después de reiniciar, debemos asegurarnos de que iniciamos con el nuevo kernel.

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

Vemos la inscripción mptcp junto al número de versión, lo que significa que el kernel se instaló correctamente.

Configuración de un enrutador de cliente

En sitio del proyecto Las compilaciones listas para usar están disponibles para algunas plataformas, como Raspberry Pi, Banana Pi, enrutadores Lynksys y máquinas virtuales.
Esta parte de openmptcprouter se basa en OpenWRT, utilizando LuCI como interfaz, familiar para cualquiera que haya encontrado OpenWRT. ¡El kit de distribución pesa alrededor de 50Mb!

Suma real de canales de Internet - OpenMPTCPRouter

Como banco de pruebas usaré Raspberry Pi y varios módems USB con diferentes operadores: MTS y Megafon. Cómo escribir una imagen en una tarjeta SD, supongo, no hay necesidad de decirlo.

Inicialmente, el puerto Ethernet en Raspberry Pi está configurado como lan con una dirección IP estática. 192.168.100.1. Para no ensuciar los cables de la mesa, conecté la Raspberry Pi a un punto de acceso WiFi y configuré una dirección estática en el adaptador WiFi de la computadora. 192.168.100.2. El servidor DHCP no está habilitado de manera predeterminada, por lo que se deben usar direcciones estáticas.

Ahora puedes ir a la interfaz web 192.168.100.1

Cuando inicie sesión por primera vez, el sistema le pedirá que configure la contraseña de root, SSH estará disponible con la misma contraseña.

Suma real de canales de Internet - OpenMPTCPRouter
En la configuración de LAN, puede configurar la subred deseada y habilitar el servidor DHCP.

Utilizo módems que se definen como interfaces Ethernet USB con un servidor DHCP separado, por lo que requiere instalación paquetes adicionales. El procedimiento es idéntico a la configuración de módems en OpenWRT normal, por lo que no lo cubriré aquí.

A continuación, debe configurar las interfaces WAN. Inicialmente, se crearon dos interfaces virtuales WAN1 y WAN2 en el sistema. Necesitan asignar un dispositivo físico, en mi caso, estos son los nombres de las interfaces de módem USB.

Para no confundirse con los nombres de las interfaces, le aconsejo que mire los mensajes dmesg mientras está conectado a través de SSH.

Dado que mis módems actúan como enrutadores y tienen un servidor DHCP, tuve que cambiar la configuración de sus rangos de red internos y deshabilitar el servidor DHCP, porque inicialmente ambos módems emiten direcciones de la misma red y esto genera un conflicto.

OpenMPTCPRouter requiere que las direcciones de interfaz WAN sean estáticas, por lo que creamos subredes para módems y las configuramos en el menú sistema → openmptcprouter → configuración de interfaz. Aquí también debe especificar la dirección IP y la clave del servidor obtenida durante la instalación del servidor de suma.

Suma real de canales de Internet - OpenMPTCPRouter

En caso de una configuración exitosa, debería aparecer una imagen similar en la página de estado. Se puede ver que el enrutador pudo llegar al servidor de suma y ambos canales funcionan correctamente.

Suma real de canales de Internet - OpenMPTCPRouter

El modo predeterminado es shadowsocks + mptcp. Este es un proxy que envuelve todas las conexiones en sí mismo. Inicialmente, está configurado para manejar solo TCP, pero también se puede habilitar UDP.

Suma real de canales de Internet - OpenMPTCPRouter

Si no hay errores en la página de estado, la configuración se puede considerar completa.
Con algunos proveedores, puede surgir una situación en la que el indicador mptcp se trunca a lo largo de la ruta del tráfico, entonces habrá un error de este tipo:

Suma real de canales de Internet - OpenMPTCPRouter

En este caso, puede usar otro modo de operación, sin usar MPTCP, más sobre esto aquí.

Conclusión

El proyecto OpenMPTCPRouter es muy interesante e importante, ya que es quizás la única solución compleja abierta al problema de la suma de canales. Todo lo demás está cerrado herméticamente y es propietario, o simplemente módulos separados que una persona común no puede manejar. En la etapa actual de desarrollo, el proyecto aún está bastante crudo, con una documentación extremadamente pobre, muchas cosas simplemente no se describen. Pero al mismo tiempo, todavía funciona. Espero que continúe desarrollándose, y obtendremos enrutadores domésticos que podrán combinar canales normalmente de forma inmediata.

Suma real de canales de Internet - OpenMPTCPRouter

Sigue a nuestro desarrollador en Instagram

Suma real de canales de Internet - OpenMPTCPRouter

Fuente: habr.com

Añadir un comentario