Protocolo de comunicación | |
Objetivo | Propósito general |
---|---|
Desarrollador(es) | Federación Internacional de Fútbol Americano (IETF) |
Introducción | 2009 ( 2009 ) |
Residencia en | IP , normalmente en capas con TCP |
Capa OSI | Capa de transporte |
RFC(s) | RFC 8684 |
Conjunto de protocolos de Internet |
---|
Capa de aplicación |
Capa de transporte |
Capa de Internet |
Capa de enlace |
Multipath TCP ( MPTCP ) es un esfuerzo continuo del grupo de trabajo Multipath TCP del Grupo de trabajo de ingeniería de Internet (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, la IETF publicó la especificación Multipath 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 utilizar uno solo, como lo requiere el TCP estándar. Multipath TCP es compatible con versiones anteriores del TCP estándar.
El protocolo TCP multitrayecto es particularmente útil en el contexto de redes inalámbricas; [2] el uso tanto de Wi-Fi como de 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]
De esta forma, el problema de la transferencia de enlaces se resuelve mediante la abstracción en la capa de transporte , sin necesidad de mecanismos especiales en las capas de red o de enlace . La funcionalidad de transferencia se puede implementar en los puntos finales sin necesidad de una funcionalidad especial en las subredes , de acuerdo con el principio de extremo a extremo de Internet .
El protocolo TCP multipath también aporta ventajas en términos de rendimiento en entornos de centros de datos . [5] A diferencia de la unión de canales Ethernet mediante la agregación de enlaces 802.3ad , el protocolo TCP multipath puede equilibrar una única conexión TCP a través de múltiples interfaces y alcanzar un rendimiento muy alto. [6]
El protocolo TCP multitrayecto genera una serie de problemas nuevos. Desde una perspectiva de seguridad de red, el enrutamiento multitrayecto provoca una fragmentación de datos entre rutas, lo que hace que los cortafuegos y los escáneres de malware se vuelvan ineficientes cuando solo detectan el tráfico de una ruta. Además, el descifrado SSL se volverá ineficiente debido a los protocolos de cifrado de extremo a extremo. [7]
Para facilitar su implementación, Multipath TCP presenta la misma interfaz de sockets que TCP. Esto implica que cualquier aplicación TCP estándar puede utilizarse sobre Multipath TCP, mientras que, de hecho, se distribuyen los datos en varios subflujos. [8]
Algunas aplicaciones podrían beneficiarse de una API mejorada para controlar la pila TCP Multipath 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 actualmente disponibles son:
En julio de 2014, Oracle informó que se estaba desarrollando una implementación en Solaris . En junio de 2015, el trabajo está en curso. [22] También hay un esfuerzo en curso para impulsar una nueva implementación de TCP Multipath en el núcleo 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íbrido .
El protocolo TCP multipath fue diseñado para ser compatible con el protocolo TCP normal. Por lo tanto, puede admitir cualquier aplicación. Sin embargo, algunas implementaciones específicas [25] aprovechan la capacidad de usar diferentes rutas simultáneamente.
Apple utiliza Multipath TCP para dar soporte a 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. Estos 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 Multipath TCP para agregar el ancho de banda de diferentes redes. Por ejemplo, varios tipos de teléfonos inteligentes, especialmente en Corea, utilizan Multipath TCP para unir WiFi y 4G a través de servidores proxy 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, se utiliza Multipath TCP para equilibrar de manera eficiente el tráfico sobre la red xDSL y LTE. [28]
En la estandarización de redes de comunicación fijas y móviles convergentes, 3GPP y BBF están interoperando para proporcionar una característica ATSSS (selección de tráfico de acceso, conmutación, división) para soportar sesiones de múltiples rutas, por ejemplo, aplicando TCP de múltiples rutas tanto en el equipo de usuario (UE) o el gateway residencial (RG) como en el lado de la red. [29]
El protocolo TCP multipath utiliza opciones que se describen en detalle en el RFC 8684. Todas las opciones del protocolo TCP multipath están codificadas como opciones TCP con tipo de opción 30, tal como lo reserva la IANA. [30]
La opción TCP de múltiples rutas consta de los valores estándar Option-Kind (en este caso 30) y Length, seguidos de un campo de subtipo de 4 bits, para el cual la IANA mantiene un subregistro denominado "Subtipos de opciones MPTCP" en el registro "Parámetros del Protocolo de control de transmisión (TCP)". Este campo de subtipo indica el tipo de encabezado MPTCP y sus valores se definen de la siguiente manera:
Valor | Símbolo | Nombre |
---|---|---|
0x0 | MP_CAPABLE | Capacidad de trayectos múltiples |
0x1 | MP_UNIRSE | Unirse a la conexión |
0x2 | Servicio de Seguridad Nacional | Señal de secuencia de datos (reconocimiento de datos y mapeo de secuencia de datos) |
0x3 | AGREGAR_DIRECCIÓN | Agregar dirección |
0x4 | ELIMINAR_DIRECCIÓN | Eliminar dirección |
0x5 | MP_PRIO | Cambiar la prioridad del subflujo |
0x6 | Error de MP | Retroceder |
0x7 | MP_CIERRE RÁPIDO | Cierre rápido |
0x8 | MP_TCPRST | Restablecimiento del subflujo |
0xf | MP_EXPERIMENTAL | Reservado para uso privado |
Los valores 0x9 a 0xe actualmente no están asignados.
La idea central del protocolo TCP multitrayecto es definir una forma de construir una conexión entre dos hosts y no entre dos interfaces (como lo hace el protocolo 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 una interfaz Ethernet (con dirección IP 20.21.22.23).
En el protocolo TCP estándar, la conexión debe establecerse entre dos direcciones IP. Cada conexión TCP se identifica mediante una tupla de cuatro direcciones (direcciones de origen y destino y puertos). Dada esta restricción, una aplicación solo puede crear una conexión TCP a través de un único enlace. El protocolo TCP multiruta permite que la conexión utilice varias rutas simultáneamente. Para ello, el protocolo TCP multiruta crea una conexión TCP, denominada subflujo, sobre cada ruta que se necesite utilizar.
El propósito 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 investigación 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 de control de congestión TCP clásicos es que deben reaccionar a la congestión en las diferentes rutas sin ser injustos con las 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 de transporte de flujo de datagramas en orden confiable, originalmente pensado para 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 interfaz de acceso en función del flujo de datagramas. También admite la movilidad a través de la renegociación de acceso. Por lo 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 admite totalmente la movilidad de una manera similar a Multipath TCP. [35]
Dentro de la arquitectura del Subsistema Multimedia IP (IMS), el Protocolo de Inicio de Sesión (SIP) puede soportar 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 llevan mensajes del Protocolo de Descripción de Sesión (SDP) para negociar flujos de medios. El SDP permite la (re)negociación de los flujos de una sesión de medios a través de múltiples rutas. A su vez, esto permite el transporte multitrayecto en la capa de aplicación. Desde este punto de vista, IMS puede por lo tanto ofrecer soporte multitrayecto en la capa de aplicación con granularidad de flujo y acceso concurrente. Una extensión multitrayecto para el Protocolo de Transporte en Tiempo Real (RTP) ha sido objeto de discusión dentro del IETF. [36] El RTP multitrayecto puede ofrecer granularidad de flujo con acceso concurrente y movilidad (a través de IMS, señalización SDP o el protocolo de control RTP). [35] Además, muy recientemente se discutió en el IETF en el TSVWG (Transport Area Working Group) [37] una propuesta para ampliar también el DCCP (Protocolo de control de congestión de datagramas) mediante una función de trayectos múltiples, denominada MP-DCCP.
El IETF está desarrollando actualmente el protocolo QUIC , que integra las características que se encuentran tradicionalmente en los protocolos TCP , TLS y HTTP . Puede ampliarse para admitir los mismos casos de uso que Multipath TCP. Se ha propuesto un primer diseño para Multipath QUIC, que se ha implementado y evaluado [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.