Multipath TCP ( MPTCP ) es un esfuerzo continuo del grupo de trabajo Multipath TCP del Internet Engineering Task Force (IETF), que tiene como objetivo permitir que una conexión de Protocolo de control de transmisión (TCP) utilice múltiples rutas para maximizar el rendimiento y aumentar la redundancia. [1]
En enero de 2013, el IETF publicó la especificación Multipath TCP v1 como estándar experimental en RFC 6824. Fue reemplazada en marzo de 2020 por la especificación Multipath TCP v1 en RFC 8684.
La redundancia que ofrece Multipath TCP permite la multiplexación inversa de recursos y, por lo tanto, aumenta el rendimiento de TCP a la suma de todos los canales de nivel de enlace disponibles en lugar de usar uno solo como lo requiere el TCP estándar. TCP multiruta es compatible con versiones anteriores de TCP estándar.
TCP multiruta es particularmente útil en el contexto de redes inalámbricas; [2] usar tanto Wi-Fi como una red móvil es un caso de uso típico . [3] Además de las ganancias en rendimiento de la multiplexación inversa, se pueden agregar o eliminar enlaces a medida que el usuario entra o sale de la cobertura sin interrumpir la conexión TCP de extremo a extremo. [4]
El problema del traspaso de enlaces se resuelve así mediante la abstracción en la capa de transporte , sin ningún mecanismo especial en la red o en las capas de enlace . La funcionalidad de traspaso se puede implementar en los puntos finales sin requerir funcionalidad especial en las subredes , de acuerdo con el principio de extremo a extremo de Internet .
TCP multiruta también aporta beneficios de rendimiento en entornos de centros de datos . [5] A diferencia de la unión de canales Ethernet que utiliza la agregación de enlaces 802.3ad , Multipath TCP puede equilibrar una única conexión TCP a través de múltiples interfaces y alcanzar un rendimiento muy alto. [6]
TCP de rutas múltiples causa una serie de problemas nuevos. Desde una perspectiva de seguridad de la red, el enrutamiento de rutas múltiples provoca una fragmentación de datos entre rutas que da como resultado que los firewalls y los escáneres de malware se vuelvan ineficientes cuando solo ven el tráfico de una ruta. Además, el descifrado SSL se volverá ineficaz debido a los protocolos de cifrado de extremo a extremo. [7]
Para facilitar su implementación, Multipath TCP presenta la misma interfaz de socket que TCP. Esto implica que cualquier aplicación TCP estándar se puede utilizar por encima de Multipath TCP y, de hecho, se distribuyen los datos entre varios subflujos. [8]
Algunas aplicaciones podrían beneficiarse de una API mejorada para controlar la pila TCP de múltiples rutas subyacente. Se han propuesto dos API diferentes para exponer algunas de las características de la pila TCP Multipath a las aplicaciones: una API que extiende Netlink en Linux [9] y una API de socket mejorada. [10]
En julio de 2013, el grupo de trabajo MPTCP informó cinco implementaciones independientes de Multipath TCP, [11] incluida la implementación de referencia inicial [8] en el kernel de Linux. [12] [13]
Las implementaciones disponibles actualmente son:
En julio de 2014, Oracle informó que se estaba desarrollando una implementación en Solaris . En junio de 2015, el trabajo está en progreso. [22] También hay un esfuerzo continuo para impulsar una nueva implementación TCP multiruta en el kernel principal de Linux. [23]
Durante la reunión del MPTCP WG en IETF 93, SungHoon Seo anunció que KT había implementado desde mediados de junio un servicio comercial que permite a los usuarios de teléfonos inteligentes alcanzar 1 Gbit/s utilizando un servicio proxy MPTCP. [24] Tessares utiliza la implementación del kernel de Linux para implementar redes de acceso híbridas .
TCP multiruta fue diseñado para ser compatible con versiones anteriores de TCP normal. Como tal, puede admitir cualquier aplicación. Sin embargo, algunas implementaciones específicas [25] aprovechan la capacidad de utilizar simultáneamente diferentes rutas.
Apple utiliza Multipath TCP para admitir la aplicación Siri en iPhone . Siri envía muestras de voz a través de una sesión HTTPS a los servidores de Apple. Dichos servidores responden con la información solicitada por los usuarios. Según los ingenieros de Apple, los principales beneficios [26] de Multipath TCP con esta aplicación son:
Otras implementaciones utilizan TCP de ruta múltiple para agregar el ancho de banda de diferentes redes. Por ejemplo, varios tipos de teléfonos inteligentes, especialmente en Corea, utilizan TCP multiruta para vincular WiFi y 4G a través de proxies SOCKS. [27] Otro ejemplo son las redes de acceso híbridas que implementan los operadores de red que desean combinar redes xDSL y LTE . En esta implementación, Multipath TCP se utiliza para equilibrar eficientemente el tráfico a través de la red xDSL y LTE. [28]
En la estandarización de las redes de comunicaciones fijas y móviles convergentes, 3GPP y BBF están interoperando para proporcionar una función ATSSS (selección, conmutación y división de tráfico de acceso) para soportar sesiones de rutas múltiples, por ejemplo, aplicando TCP de rutas múltiples tanto en el equipo de usuario (UE) como en Gateway Residencial (RG) y del lado de la red. [29]
TCP de rutas múltiples utiliza opciones que se describen en detalle en RFC 8684. Todas las opciones de TCP de rutas múltiples están codificadas como opciones de TCP con el tipo de opción 30, según lo reservado por IANA. [30]
La opción TCP de ruta múltiple consta de los valores estándar Tipo de opción (en este caso 30) y Longitud, seguidos de un campo de subtipo de 4 bits, para el cual la IANA mantiene un subregistro titulado "Subtipos de opciones MPTCP" en "Control de transmisión". Registro de parámetros de protocolo (TCP). Este campo de subtipo indica el tipo de encabezado MPTCP y sus valores se definen de la siguiente manera:
Los valores 0x9 a 0xe no están asignados actualmente.
La idea central del TCP multiruta es definir una forma de construir una conexión entre dos hosts y no entre dos interfaces (como lo hace el TCP estándar).
Por ejemplo, Alice tiene un teléfono inteligente con interfaces 3G y WiFi (con direcciones IP 10.11.12.13 y 10.11.12.14) y Bob tiene una computadora con interfaz Ethernet (con dirección IP 20.21.22.23).
En TCP estándar, la conexión debe establecerse entre dos direcciones IP. Cada conexión TCP se identifica mediante una tupla de cuatro (direcciones y puertos de origen y destino). Dada esta restricción, una aplicación sólo puede crear una conexión TCP a través de un único enlace. TCP multiruta permite que la conexión utilice varias rutas simultáneamente. Para ello, Multipath TCP crea una conexión TCP, denominada subflujo, sobre cada ruta que debe utilizarse.
La finalidad de las diferentes operaciones del protocolo (definidas en RFC 6824) son:
Multipath TCP agrega nuevos mecanismos a las transmisiones TCP:
La especificación detallada del protocolo se proporciona en RFC 8684. Varios artículos de estudio proporcionan una introducción al protocolo. [31] [32]
Se han definido varios mecanismos de control de congestión para Multipath TCP. Su principal diferencia con los esquemas clásicos de control de congestión de TCP es que necesitan reaccionar a la congestión en las diferentes rutas sin ser injustos con fuentes TCP de ruta única que podrían competir con ellos en una de las rutas. [3] Actualmente, la implementación de Multipath TCP en el kernel de Linux admite cuatro esquemas de control de congestión de Multipath TCP.
El Protocolo de transmisión de control de flujo (SCTP) es un protocolo confiable de transporte de flujo de datagramas en orden originalmente destinado a la señalización de telecomunicaciones. Admite el uso simultáneo de múltiples enlaces de acceso y permite que la aplicación influya en las selecciones de la interfaz de acceso en función del flujo de datagramas. También apoya la movilidad mediante la renegociación del acceso. Por tanto, SCTP también es una solución de capa de transporte. Ofrece granularidad de flujo de tipo 3 con concurrencia, pero con más control de programación de flujo que Multipath TCP. También es totalmente compatible con la movilidad de forma similar a Multipath TCP. [35]
Dentro de la arquitectura del Subsistema multimedia IP (IMS), el Protocolo de inicio de sesión (SIP) puede admitir el uso simultáneo de múltiples direcciones IP de contacto para el registro de uno o más agentes de usuario IMS. Esto permite la creación de múltiples rutas de señalización IMS. En estas rutas de señalización, los mensajes de señalización transportan mensajes del Protocolo de descripción de sesión (SDP) para negociar flujos de medios. SDP permite la (renegociación) de los flujos de una sesión de medios a través de múltiples rutas. A su vez, esto permite el transporte multiruta en la capa de aplicación. Desde este punto de vista, IMS puede ofrecer soporte de múltiples rutas en la capa de aplicación con granularidad de flujo y acceso concurrente. En el IETF se ha debatido una extensión de rutas múltiples al protocolo de transporte en tiempo real (RTP). [36] Multipath RTP puede ofrecer granularidad de flujo con acceso y movilidad concurrentes (a través de IMS, señalización SDP o el protocolo de control RTP). [35] Muy recientemente, además, en el IETF en el TSVWG (Grupo de Trabajo del Área de Transporte) [37] se discute una propuesta para ampliar también el DCCP (Protocolo de control de congestión de datagramas) mediante una función de rutas múltiples, denominada MP-DCCP.
Actualmente, el IETF está desarrollando el protocolo QUIC que integra las características que tradicionalmente se encuentran en los protocolos TCP , TLS y HTTP . Se puede ampliar para admitir los mismos casos de uso que Multipath TCP. Se ha propuesto, implementado y evaluado un primer diseño para QUIC Multipath [38] . [39]
En la capa de sesión, el proyecto Mobile Access Router experimentó en 2003 con la agregación de múltiples accesos inalámbricos con tecnologías heterogéneas, equilibrando de forma transparente el tráfico entre ellos en respuesta al rendimiento percibido de cada uno de ellos. [40]
Los esquemas de acceso paralelo [35] utilizados para acelerar las transferencias aprovechando las solicitudes de rango HTTP para iniciar conexiones a múltiples servidores de un contenido replicado, no son equivalentes a Multipath TCP ya que involucran la capa de aplicación y están limitados a contenido de tamaño conocido.