TCP multitrayecto

Tecnología de Protocolo de Control de Transmisión
Protocolo multitrayecto (MPTCP)
Protocolo de comunicación
ObjetivoPropósito general
Desarrollador(es)Federación Internacional de Fútbol Americano (IETF)
Introducción2009 ; hace 15 años ( 2009 )
Residencia enIP , normalmente en capas con TCP
Capa OSICapa de transporte
RFC(s)RFC  8684

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.

Beneficios

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]

Interfaz de usuario

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]

TCP multitrayecto en la pila de protocolos

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]

Implementaciones

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 .

Casos de uso

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:

  • Retroalimentación del usuario (tiempo hasta la primera palabra) 20 % más rápido en el percentil 95
  • Reducción de 5x en fallas de red

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]

Opciones de TCP de múltiples rutas

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:

ValorSímboloNombre
0x0MP_CAPABLECapacidad de trayectos múltiples
0x1MP_UNIRSEUnirse a la conexión
0x2Servicio de Seguridad NacionalSeñal de secuencia de datos (reconocimiento de datos y mapeo de secuencia de datos)
0x3AGREGAR_DIRECCIÓNAgregar dirección
0x4ELIMINAR_DIRECCIÓNEliminar dirección
0x5MP_PRIOCambiar la prioridad del subflujo
0x6Error de MPRetroceder
0x7MP_CIERRE RÁPIDOCierre rápido
0x8MP_TCPRSTRestablecimiento del subflujo
0xfMP_EXPERIMENTALReservado para uso privado

Los valores 0x9 a 0xe actualmente no están asignados.

Operación del protocolo

Descripción simplificada

Diferencia entre TCP y MPTCP

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:

  • Para controlar cuándo y cómo agregar o eliminar rutas (por ejemplo, si se pierde una conexión o se produce algún control de congestión)
  • para ser compatible con hardware TCP heredado (como algunos firewalls que pueden rechazar automáticamente las conexiones TCP si los números de secuencia no son sucesivos)
  • definir una estrategia justa de control de congestión entre los diferentes enlaces y los diferentes hosts (especialmente con aquellos que no soportan MPTCP)
Ejemplo de una sesión MPTCP completa

Multipath TCP agrega nuevos mecanismos a las transmisiones TCP:

  • El sistema de subflujo, que se utiliza para reunir varias conexiones TCP estándar (las rutas de un host a otro). Los subflujos se identifican durante el protocolo de enlace de tres vías TCP. Después del protocolo de enlace, una aplicación puede agregar o eliminar algunos subflujos (subtipos 0x3 y 0x4).
  • La opción DSS de MPTCP contiene un número de secuencia de datos y un número de confirmación. Estos permiten recibir datos de múltiples subflujos en el orden original, sin ninguna corrupción (subtipo de mensaje 0x2)
  • Un protocolo de retransmisión modificado maneja el control de la congestión y la confiabilidad.

Especificación detallada

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]

Control de congestión

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 algoritmo de incremento vinculado definido en RFC 6356
  • El algoritmo de incremento vinculado oportunista [33]
  • El algoritmo de control de congestión basado en retrasos de wVegas
  • El algoritmo de incremento enlazado equilibrado [34]

Alternativas

Protocolo de transmisión de control de flujo

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]

Sistema de información de Internet (SIP) de IMS

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.

QUIC de trayectos múltiples

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]

Otros protocolos y experimentos

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.

Solicitud de cotización

  • RFC 6181 - Análisis de amenazas para extensiones TCP para operaciones multitrayecto con múltiples direcciones
  • RFC 6182 - Directrices arquitectónicas para el desarrollo de TCP multitrayecto
  • RFC 6356 - Control de congestión acoplado para protocolos de transporte de múltiples rutas
  • RFC 6824 - Extensiones TCP para operaciones multitrayecto con múltiples direcciones (v0; reemplazada por RFC 8684)
  • RFC 6897 - Consideraciones sobre la interfaz de aplicación de protocolo multitrayecto TCP (MPTCP)
  • RFC 7430: Análisis de amenazas residuales y posibles soluciones para el protocolo Multipath TCP (MPTCP)
  • RFC 8041: casos de uso y experiencia operativa con TCP multipath
  • RFC 8684 - Extensiones TCP para operaciones multitrayecto con múltiples direcciones (v1)
  • RFC 8803 - Protocolo de conversión TCP 0-RTT

Véase también

Referencias

  1. ^ Grupo de trabajo sobre TCP multiruta
  2. ^ Paasch, Christoph; Detal, Gregory; Duchene, Fabien; Raiciu, Costin; Bonaventure, Olivier (2012). "Explorando la transferencia móvil/WiFi con TCP multitrayecto". Actas del taller ACM SIGCOMM de 2012 sobre redes celulares: operaciones, desafíos y diseño futuro - Cell Net '12 . Taller ACM SIGCOMM sobre redes celulares (Cellnet'12). pág. 31. doi : 10.1145/2342468.2342476 . ISBN 9781450314756.
  3. ^ ab S. Pokhrel; M. Panda; H. Vu (24 de febrero de 2017). "Modelado analítico de TCP multitrayecto sobre redes inalámbricas de última milla". Transacciones IEEE/ACM sobre redes . 25 (3): 1876–1891. doi :10.1109/TNET.2017.2663524. S2CID  21518823.
  4. ^ S. Pokhrel; M. Mandjes (24 de marzo de 2019). "Mejora del rendimiento de TCP multitrayecto en redes WiFi y celulares: un enfoque analítico". IEEE Transactions on Mobile Computing . 25 (3): 1876–1891. doi :10.1109/TMC.2018.2876366. S2CID  69263415.
  5. ^ Raiciu; Barre; Pluntke; Greenhalgh; Wischik; Handley (2011). "Mejora del rendimiento y la robustez del centro de datos con TCP multitrayecto". ACM SIGCOMM Computer Communication Review . 41 (4): 266. CiteSeerX 10.1.1.306.3863 . doi :10.1145/2043164.2018467. S2CID  61962047. 
  6. ^ C. Paasch; G. Detal; S. Barré; F. Duchêne; O. Bonaventure. «La conexión TCP más rápida con Multipath TCP» . Consultado el 20 de septiembre de 2013 .
  7. ^ Afzal, Zeeshan (2020). La vida de un middlebox de seguridad: desafíos con protocolos y tecnologías emergentes (PhD). ISBN 978-91-7867-103-8.OCLC 1139703033  .
  8. ^ abc "El proyecto MultiPath TCP del núcleo Linux" . Consultado el 28 de noviembre de 2014 .
  9. ^ Hesmans, B.; Detal, G.; Barre, S.; Bauduin, R.; Bonaventure, O. (2015). "SMAPP". SMAPP hacia aplicaciones inteligentes con TCP habilitado para Multipath . págs. 1–7. doi :10.1145/2716281.2836113. ISBN 9781450334129.S2CID 9940025  .
  10. ^ Hesmans, Benjamin; Bonaventure, Olivier (2016). "Una API de socket mejorada para TCP multitrayecto". Actas del taller de 2016 sobre Applied Networking Research Workshop - ANRW 16 . págs. 1–6. doi :10.1145/2959424.2959433. ISBN 9781450344432.S2CID13799560  .
  11. ^ "Encuesta sobre implementaciones de MPTCP (borrador de Internet, 2013)" . Consultado el 20 de septiembre de 2013 .
  12. ^ Barre; Paasch; Bonaventure (2011). "MultiPath TCP: de la teoría a la práctica". Redes IFIP .
  13. ^ Raiciu; Paasch; Barre; Ford; Honda; Duchene; Bonaventure; Handley (2012). "¿Qué tan difícil puede ser? Diseño e implementación de un TCP multitrayecto desplegable". Usenix NSDI : 399–412.
  14. ^ "Proyecto upstream MPTCP de Linux".
  15. ^ "Multipath TCP para FreeBSD v0.1" . Consultado el 23 de septiembre de 2013 .
  16. ^ "Nota de la versión: BIG-IP LTM y TMOS 11.5.0". f5 Networks. 2014-05-30 . Consultado el 2014-05-30 .
  17. ^ John Gudmundson (28 de mayo de 2013). "Maximice la experiencia del usuario móvil con NetScaler Multipath TCP". Citrix . Consultado el 20 de septiembre de 2013 .
  18. ^ "Apple también parece creer en Multipath TCP" . Consultado el 20 de septiembre de 2013 .
  19. ^ "MPTCP SE MUEVE LIBREMENTE (POR DEFECTO) – OS X YOSEMITE". 2014-10-20 . Consultado el 2015-09-16 .
  20. ^ Georg Hampel (26 de octubre de 2012). "Lanzamiento de código para el proxy MPTCP". Alcatel-Lucent . Consultado el 28 de diciembre de 2016 .
  21. ^ Georg Hampel; Anil Rana (26 de octubre de 2012). "MPTCP PROXY" (PDF) . Bell Labs / Alcatel-Lucent . Consultado el 28 de diciembre de 2016 .
  22. ^ Rao, Shoaib. "Algunos comentarios sobre RFC 6824" . Consultado el 25 de junio de 2015 .
  23. ^ "Proyecto Upstream del MPTCP". 17 de diciembre de 2019. Consultado el 10 de enero de 2020 .
  24. ^ "GiGA LTE de KT" (PDF) .
  25. ^ Bonaventure, Olivier; Véase, SungHoon (2016). "Implementaciones TCP de múltiples rutas". IETF Journal .
  26. ^ C. Paasch, Actualizaciones de implementación de iOS y Linux, IETF-99, https://datatracker.ietf.org/meeting/99/materials/slides-99-mptcp-sessa-ios-linux-implementation-updates/
  27. ^ S. Seo, GiGA LTE de KT: implementación de proxy MPTCP móvil, IETF-97, https://www.ietf.org/proceedings/97/slides/slides-97-banana-kt-giga-lte-mobile-mptcp-proxy-development-01.pdf
  28. ^ Gregory Detal, Sebastien Barre, Bart Peirens, Olivier Bonaventure, "Aprovechamiento de TCP multitrayecto para crear redes de acceso híbridas", SIGCOMM'17 (demostración industrial), http://conferences.sigcomm.org/sigcomm/2017/files/program-industrial-demos/sigcomm17industrialdemos-paper4.pdf
  29. ^ 3GPP TR 23.793, "Estudio sobre la dirección del tráfico de acceso, conmutación y soporte de división en la arquitectura del sistema 5G (versión 16)", https://www.3gpp.org/ftp/Specs/latest/Rel-16/23_series/23793-g00.zip
  30. ^ "Números de tipo de opción TCP del registro de protocolo IANA" . Consultado el 24 de septiembre de 2013 .
  31. ^ Paasch, Christoph; Bonaventure, Olivier (abril de 2014). "Multipath TCP". Comunicaciones de la ACM . 57 (4): 51–57. doi :10.1145/2578901. S2CID  17581886.
  32. ^ Raiciu, Costin; Iyengar, Janardhan; Bonaventure, Olivier (2013). Haddadi, Hamed; Bonaventure, Olivier (eds.). Avances recientes en protocolos de transporte confiables. ACM SIGCOMM.
  33. ^ Khalili, Ramin; Gast, Nicolas; Popovic, Miroslav; Upadhyay, Utkarsh; Le Boudec, Jean-Yves (2012). "MPTCP no es pareto-óptimo". Actas de la 8.ª conferencia internacional sobre experimentos y tecnologías de redes emergentes. págs. 1–12. doi :10.1145/2413176.2413178. ISBN 9781450317757. Número de identificación del sujeto  14210629.
  34. ^ Peng, Qiuyu; Walid, Anwar; Hwang, Jaehyun; Low, Steven H. (2013). "TCP multitrayecto: análisis, diseño e implementación". IEEE/ACM Transactions on Networking . 24 : 596–609. arXiv : 1308.3119 . Código Bibliográfico :2013arXiv1308.3119P. doi :10.1109/TNET.2014.2379698. S2CID  250322.
  35. ^ abc P. Rodriguez; E. Biersack (1 de julio de 2002). "Acceso paralelo dinámico a contenido replicado en Internet" (PDF) . Transacciones IEEE/ACM sobre redes. Archivado desde el original (PDF) el 27 de septiembre de 2013.
  36. ^ "Borrador-ietf-avtcore-MPRTP-03".
  37. ^ "Borrador-ietf-TSVWG-multipath-DCCP-04".
  38. ^ P. De Coninck; O. Buenaventura (30 de octubre de 2010). "Extensión de rutas múltiples para QUIC". IETF .
  39. ^ Q. De Coninck; O. Bonaventure (12 de diciembre de 2010). "Multipath QUIC: diseño y evaluación" (PDF) . Proc. Conext'2017, Seúl, Corea.
  40. ^ R. Chakravorty; I. Pratt; P. Rodríguez (1 de julio de 2003). "Mobile Access Router". Universidad de Cambridge, Microsoft Research.
  • El proyecto MultiPath TCP del kernel de Linux
  • El proyecto Linux Kernel MultiPath TCP (antiguo sitio web)
  • Un artículo claro que explica la implementación de MPTCP en Linux
Obtenido de "https://es.wikipedia.org/w/index.php?title=TCP_multiruta&oldid=1220417775"