Verdadera suma de canales de Internet - OpenMPTCPRouter



¿Es posible combinar varios canales de Internet en uno? Hay muchos conceptos erróneos y mitos sobre este tema, incluso los ingenieros de redes con experiencia a menudo no saben que esto es posible. En la mayoría de los casos, la agregación de enlaces se denomina erróneamente NAT o conmutación por error. Pero la suma real le permite ejecutar una sola conexión TCP al mismo tiempo en todos los canales de Internet , por ejemplo, la transmisión de video, de modo que cuando alguno de los canales de Internet se interrumpe, la transmisión no se interrumpa.

Existen costosas soluciones comerciales para transmisiones de video, pero tales dispositivos cuestan muchos kilobaxes. El artículo describe la configuración del paquete abierto y gratuito OpenMPTCPRouter, y se analizan los mitos populares sobre la agregación de canales.

Mitos de resumen de canales


Hay muchos enrutadores domésticos que admiten la función Multi-WAN. A veces los fabricantes llaman a este resumen de canal, lo cual no es del todo cierto. Muchos networkers creen que, aparte de LACP y la suma en el nivel L2, no existe otra agregación de enlaces . A menudo escuché que esto es generalmente imposible para las personas que trabajan en telecomunicaciones. Por lo tanto, trataremos de comprender los mitos populares.

Equilibrio de conexión IP


Esta es la forma más económica y popular de utilizar varios canales de Internet al mismo tiempo. Para simplificar, suponga que tiene tres proveedores de Internet, cada uno de los cuales le proporciona una dirección IP real de su red. Todos estos proveedores están conectados a un enrutador que admite Multi-WAN. Puede ser OpenWRT con mwan3, mikrotik, paquete ubiquiti o cualquier otro enrutador doméstico, ya que ahora esta opción no es infrecuente.

Para simular la situación, imagine que los proveedores nos dieron estas direcciones:

WAN1 — 11.11.11.11 WAN2 — 22.22.22.22 WAN2 — 33.33.33.33 

Es decir, conectándose al servidor remoto example.com a través de cada uno de los proveedores, el servidor remoto verá tres clientes ip de origen independientes. El equilibrio le permite compartir la carga en los canales y usarlos los tres al mismo tiempo. Para simplificar, imagine que compartimos la carga entre todos los canales por igual. Como resultado, cuando un cliente abre un sitio en el que convencionalmente hay tres imágenes, carga cada imagen a través de un proveedor separado. En el lado del sitio, parece conexiones de tres IP diferentes.


Al equilibrar en el nivel de conexión, cada conexión TCP pasa por un proveedor separado .

Este modo de equilibrio a menudo causa problemas a los usuarios. Por ejemplo, muchos sitios adjuntan estrictamente cookies y tokens a la dirección IP del cliente, y si cambia repentinamente, la solicitud es rechazada o el cliente cierra sesión en el sitio. Esto a menudo se reproduce en los sistemas de banco cliente y en otros sitios con estrictas reglas 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 ese equilibrio a menudo no reproducen audio, porque la solicitud no pasó por el proveedor al que está vinculada la sesión.


Al descargar torrents, el equilibrio en el 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 múltiples conexiones. Por ejemplo, si cada uno de los tres proveedores tiene una velocidad de 100 megabits, al descargar torrents obtenemos 300 megabits. Porque el torrent abre muchas conexiones que se distribuyen entre todos los proveedores y, en última instancia, 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á.


Una conexión siempre usará solo un canal de Internet

Esto es cierto para las transmisiones de video. Si está transmitiendo video a algún tipo de Twitch condicional, el equilibrio en el nivel de las conexiones IP no dará 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, por ejemplo, pérdida de paquetes o reducción de velocidad, no podrá cambiar instantáneamente a otro proveedor. La transmisión tendrá que detenerse y volver a conectarse.

Resumen de canal verdadero


La suma real de los canales hace posible iniciar una conexión al Twitch condicional inmediatamente a través de todos los proveedores de tal manera que si alguno de los proveedores se interrumpe, la conexión no se interrumpirá. Esta es una tarea 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 Twitch condicional puede recibir una transmisión de video de nosotros 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 estén trabajando. Para lograr esto, necesitamos un servidor de suma que termine todas nuestras conexiones y las combine en una.


El servidor sumador agrega todos los canales en un túnel. Todas las conexiones ocurren desde la dirección del servidor sumador

En este esquema, se utilizan todos los proveedores, y deshabilitar cualquiera de ellos no provocará una interrupción en la comunicación con el servidor Twitch. De hecho, este es un túnel VPN especial, bajo el cual hay varios canales de Internet a la vez. La tarea principal de tal esquema es obtener el canal de comunicación de más alta calidad. Si los problemas comenzaron en uno de los proveedores, la pérdida de paquetes, el aumento de las demoras, esto no debería afectar la calidad de la comunicación de ninguna manera, ya que la carga se distribuirá automáticamente a través de otros canales mejores disponibles.

Soluciones comerciales


Este problema ha estado molestando durante mucho tiempo a quienes transmiten eventos en vivo y no tienen acceso a Internet de alta calidad. Existen varias soluciones comerciales para tales tareas, por ejemplo, la compañía Teradek fabrica enrutadores monstruosos en los que se insertan paquetes de módems USB:


Enrutador de transmisión de video con función de suma de canales

En tales dispositivos, generalmente, 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, así como el procesamiento de la transmisión de video, la transcodificación y la transmisión adicional. El precio de tales dispositivos comienza en $ 2k con un conjunto de módems, más una suscripción separada al servicio.

A veces se ve bastante aterrador:



Configurar OpenMPTCPRouter


El protocolo MP-TCP (MultiPath TCP) se inventó para la capacidad de conectarse a través de múltiples canales a la vez. Por ejemplo, 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 comprender que estas no son dos conexiones TCP separadas, sino solo una conexión establecida inmediatamente en dos canales. Para que esto funcione, el servidor remoto también debe ser compatible con MPTCP.

OpenMPTCPRouter es un proyecto de enrutador de código abierto que le permite agregar canales de verdad. Los autores declaran que el proyecto está en estado alfa, pero ya se puede usar. Se compone de dos partes: un servidor de suma, que se encuentra en Internet y un enrutador, al que se conectan varios proveedores de Internet y dispositivos de clientes: computadoras, teléfonos. Como un enrutador personalizado, Raspberry Pi, algunos enrutadores WiFi o una computadora normal pueden actuar. Hay ensamblajes ya preparados para varias plataformas, lo cual es muy conveniente.


Cómo funciona OpenMPTCPRouter

Configurar un servidor sumador


El servidor de suma se encuentra 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 cuando acceda a Internet a través de OpenMPTCPRouter.

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

Requisitos del servidor de resumen:

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

El servidor se implementa ejecutando un solo comando. El script instalará el kernel con soporte de 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.



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, debe asegurarse de que arrancamos con el nuevo núcleo

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

Vemos mptcp junto al número de versión, lo que significa que el kernel está instalado correctamente.

Configurar un enrutador cliente


En el sitio del proyecto , los ensamblajes listos para usar están disponibles para algunas plataformas, por ejemplo, enrutadores Raspberry Pi, Banana Pi, Lynksys y máquinas virtuales.
Esta parte de openmptcprouter se basa en OpenWRT, utilizando LuCI como interfaz, familiar para todos los que se han encontrado con OpenWRT. ¡El kit de distribución pesa unos 50 MB!



Como banco de pruebas, usaré Raspberry Pi y varios módems USB con diferentes operadores: MTS y Megaphone. Cómo escribir la imagen en la tarjeta SD, creo, no es necesario decirlo.

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

Ahora puede ir a la interfaz web 192.168.100.1

En el primer inicio de sesión, el sistema le pedirá que establezca la contraseña de root, SSH estará disponible con la misma contraseña.


En la configuración de LAN, puede establecer la subred deseada y habilitar el servidor DHCP.

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

A continuación, debe configurar las interfaces WAN. Inicialmente, se crearon dos interfaces virtuales WAN1 y WAN2 en el sistema. Se les debe 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 conectándose a través de SSH.

Como 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 dan direcciones de la misma red, y esto causa un conflicto.

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



En caso de una instalació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 normalmente.



El modo predeterminado es shadowsocks + mptcp. Este es un proxy que envuelve todas las conexiones. Inicialmente, está configurado para manejar solo TCP, pero puede habilitar UDP.



Si no hay errores en la página de estado, la configuración puede considerarse completa.
Con algunos proveedores, puede surgir una situación cuando la bandera mptcp se corta en la ruta del tráfico, entonces habrá un error:



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

Conclusión


El proyecto OpenMPTCPRouter es muy interesante e importante, ya que esta es quizás la única solución integral abierta al problema de la suma de canales. Todo lo demás está cerrado y patentado, o simplemente módulos separados con los que una persona común no puede lidiar. En la etapa actual de desarrollo, el proyecto todavía es bastante crudo, documentación extremadamente pobre, muchas cosas simplemente no se describen. Pero él todavía trabaja. Espero que continúe desarrollándose, y obtengamos enrutadores domésticos que normalmente puedan combinar canales listos para usar.



Suscríbase a nuestro desarrollador de Instagram


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


All Articles