Articulo de referencia

TCP cúbico

CUBIC es un algoritmo para evitar la congestión de la red TCP que puede lograr conexiones de alto ancho de banda en redes de manera más rápida y confiable, incluso con alta late...

CUBIC es un algoritmo para evitar la congestión de la red TCP que puede lograr conexiones de alto ancho de banda en redes de manera más rápida y confiable, incluso con alta latencia, que los algoritmos anteriores. Ayuda a optimizar redes largas y de gran capacidad . [ 1 ] [ 2 ]

En 2006, se publicó la primera implementación de CUBIC en el kernel de Linux 2.6.13 . [ 3 ] Desde la versión 2.6.19 del kernel, [ 4 ] CUBIC reemplaza a BIC-TCP como algoritmo predeterminado de control de congestión TCP en el kernel de Linux. [ 3 ]

macOS adoptó TCP CUBIC con el lanzamiento de OS X Yosemite en 2014, [ 5 ] [ 6 ] mientras que la versión anterior , OS X Mavericks, todavía usaba TCP New Reno. [ 7 ] [ 8 ]

Microsoft lo adoptó por defecto en Windows 10.1709 Fall Creators Update (2017) y en la actualización 1709 de Windows Server 2016. [ 9 ]

Características

CUBIC es una variante menos agresiva y más sistemática de BIC TCP , en la que el tamaño de la ventana es una función cúbica del tiempo transcurrido desde el último evento de congestión, con el punto de inflexión fijado al tamaño de la ventana anterior al evento. Debido a que es una función cúbica, el crecimiento de la ventana tiene dos componentes. El primero es una porción cóncava donde el tamaño de la ventana aumenta rápidamente hasta alcanzar el tamaño anterior al último evento de congestión. A continuación, se produce un crecimiento convexo donde CUBIC busca más ancho de banda, lentamente al principio y luego muy rápidamente. CUBIC pasa mucho tiempo en una meseta entre la región de crecimiento cóncavo y convexo, lo que permite que la red se estabilice antes de que CUBIC comience a buscar más ancho de banda.

Otra diferencia importante entre CUBIC y muchos algoritmos TCP anteriores es que no depende de la cadencia de los RTT para aumentar el tamaño de la ventana. [ 10 ] El tamaño de la ventana de CUBIC depende únicamente del último evento de congestión. Con algoritmos anteriores como TCP New Reno, los flujos con tiempos de retardo de ida y vuelta (RTT) muy cortos recibirán ACK más rápido y, por lo tanto, sus ventanas de congestión crecerán más rápido que otros flujos con RTT más largos. CUBIC permite una mayor equidad entre los flujos, ya que el crecimiento de la ventana es independiente del RTT.

Esta independencia del RTT es particularmente importante en los centros de datos modernos y los entornos de nube, donde los flujos pueden recorrer rutas con tiempos de ida y vuelta muy diferentes. Estudios [ 11 ] [ 12 ] han demostrado que, en redes con flujos RTT mixtos, CUBIC logra una equidad hasta 3-5 veces mayor en comparación con algoritmos tradicionales basados ​​en pérdidas como Reno. La propiedad de equidad del RTT hace que CUBIC sea especialmente adecuado para redes de entrega de contenido ( CDN ) y sistemas distribuidos donde servidores en diferentes ubicaciones geográficas se comunican con clientes simultáneamente.

Algoritmo

CUBIC amplía su ventana para que dependa del tiempo real, en lugar de depender del RTT como BIC. El cálculo de cwnd (ventana de congestión) también es más sencillo que en BIC.

Defina las siguientes variables:

  • β : Factor de disminución multiplicativo
  • w max : Tamaño de la ventana justo antes de la última reducción
  • T : Tiempo transcurrido desde la última reducción de ventana.
  • C : Una constante de escala
  • cwnd : La ventana de congestión en el momento actual

El RFC 8312 indica lo siguiente:

  • La unidad de medida para todos los tamaños de ventana en este documento son los segmentos del tamaño máximo de segmento (MSS), y la unidad de medida para todos los tiempos son los segundos. (Sección 4)
  • β DEBE establecerse en 0,7 (Sección 4.5)
  • C DEBE establecerse en 0,4 (Sección 5)

Entonces, cwnd puede modelarse mediante:

downorted = do(TK)3+wmetroaincógnitadónde K=wmetroaincógnita(1β)do3{\displaystyle {\begin{array}{lcr}cwnd\ =\ C(TK)^{3}+w_{max}\\{\textrm {donde}}\ K={\sqrt[{3}]{\frac {w_{max}(1-\beta )}{C}}}\end{array}}}

Alternativas

Aparte de los algoritmos basados ​​en ventanas como Cubic, hay algoritmos basados ​​en tasas (incluido TCP BBR de Google) que funcionan de manera diferente usando la "tasa de envío" en lugar de la ventana. [ 13 ] A diferencia de CUBIC, que se basa principalmente en la pérdida de paquetes como señal de congestión, BBR utiliza un enfoque basado en modelos que estima el ancho de banda disponible y el RTT mínimo de la ruta de red. [ 14 ] BBR opera alternando entre cuatro estados: STARTUP, DRAIN, PROBE_BW y PROBE_RTT, midiendo y adaptándose continuamente a las condiciones de la red. La diferencia fundamental en el enfoque significa que BBR puede lograr un mayor rendimiento en redes con búferes poco profundos o donde ocurre pérdida aleatoria de paquetes (como las redes inalámbricas), ya que no interpreta todas las pérdidas como señales de congestión. [ 15 ] Sin embargo, los estudios han demostrado que cuando los flujos de BBR compiten con los flujos de CUBIC, BBR puede ser más agresivo y puede dominar la asignación de ancho de banda.

Véase también

Referencias

  1. Sangtae Ha; Injong Rhee; Lisong Xu (julio de 2008). "CUBIC: una nueva variante TCP de alta velocidad compatible con TCP" (PDF) . ACM SIGOPS Operating Systems Review . 42 (5): 64–74 . doi : 10.1145/1400097.1400105 . S2CID 9391153. Archivado del original (PDF) el 26 de julio de 2015. Recuperado el 29 de septiembre de 2015 . 
  2. Sangtae Ha; Injong Rhee; Lisong Xu; Lars Eggert; Richard Scheffenegger (febrero de 2018). CUBIC para redes rápidas de larga distancia . IETF . doi : 10.17487/RFC8312 . RFC 8312 .
  3. 1 2 Ha, Sangtae; Rhee, Injong; Xu, Lisong (2008). "CUBIC: Una nueva variante TCP de alta velocidad compatible con TCP". ACM SIGOPS Operating Systems Review . 42 . ACM Nueva York, NY, EE. UU.: 11. doi : 10.1145/1400097.1400105 . S2CID 9391153 . 
  4. " [ TCP ] : Hacer cubic el predeterminado · torvalds/Linux@597811e" . GitHub .
  5. "apple-oss-distributions/distribution-macOS en os-x-1010" . GitHub .El control de congestión TCP está implementado en el kernel XNU; esta confirmación hace referencia al kernel XNU utilizado en Mac OS X Yosemite.
  6. "xnu/tcp_cc.h en a3bb9fcc43a00154884a30c9080595284c26cec9 · apple-oss-distributions/xnu" . GitHub . 29 de abril de 2022.Archivo de cabecera de la implementación de control de congestión TCP del kernel XNU utilizado en Mac OS X Yosemite que indica CUBIC como predeterminado
  7. "apple-oss-distributions/distribution-macOS en os-x-1095" . GitHub .Referencias: Núcleo XNU utilizado en Mac OS X Mavericks
  8. "xnu/tcp_cc.h en d2a0abf2ede8152c5a107fe51e032c1193d2015b · apple-oss-distributions/xnu" . GitHub . 29 de abril de 2022.Archivo de cabecera de la implementación de control de congestión TCP del kernel XNU utilizado en Mac OS X Mavericks que indica New Reno como predeterminado
  9. Microsoft (15 de noviembre de 2017). "Actualizaciones sobre Windows TCP" (PDF) .
  10. La Rosa, Alexander (10 de julio de 2019). "¿Por qué CUBIC nos lleva de vuelta al control de congestión TCP?" . Pandora FMS . Archivado del original (html) el 12 de julio de 2019 . Recuperado el 12 de julio de 2019 . La intención es tener un algoritmo que funcione con ventanas de congestión cuyos procesos incrementales sean más agresivos, pero que estén restringidos para no sobrecargar la red. Para lograr esto, se propone que el esquema para aumentar y disminuir la relación de transmisión se establezca de acuerdo con una función cúbica.
  11. Ja, Sangtae; Rhee, Injong; Xu, Lisong (1 de julio de 2008). "CUBIC: una nueva variante TCP de alta velocidad compatible con TCP" . Opera SIGOPS. Sistema. Rdo . 42 (5): 64– 74. doi : 10.1145/1400097.1400105 . ISSN 0163-5980 . 
  12. Xu, Lisong; Harfoush, K.; Rhee, Injong (marzo de 2004). "Control de congestión de incremento binario (BIC) para redes rápidas de larga distancia". IEEE Infocom 2004. Vol. 4. págs. 2514–2524 vol.4. doi : 10.1109/INFCOM.2004.1354672 . ISBN   0-7803-8355-9.
  13. "Control de congestión, basado en la tasa del módulo del kernel PK3C para servidores de transmisión de vídeo y datos" . GitHub . Consultado el 1 de agosto de 2021 .
  14. Cardwell, Neal; Cheng, Yuchung; Gunn, C. Stephen; Yeganeh, Soheil Hassas; Van Jacobson (23 de enero de 2017). "BBR: control de congestión basado en la congestión" . Commun. ACM . 60 (2): 58– 66. doi : 10.1145/3009824 . ISSN 0001-0782 . 
  15. Hock, Mario; Bless, Roland; Zitterbart, Martina (octubre de 2017). «Evaluación experimental del control de congestión BBR». 2017 IEEE 25.ª Conferencia Internacional sobre Protocolos de Red (ICNP) . págs. 1-10 . doi : 10.1109/ICNP.2017.8117540 . ISBN  978-1-5090-6501-1.
  • Página principal de BIC y CUBIC en la Universidad Estatal de Carolina del Norte .