stringtranslate.com

TCP cúbico

CUBIC es un algoritmo de prevención de congestión de red para TCP que puede lograr conexiones de alto ancho de banda en redes de manera más rápida y confiable frente a una alta latencia que los algoritmos anteriores. Ayuda a optimizar redes largas y pesadas . [1] [2]

En 2006, se lanzó la primera implementación de CUBIC en el kernel de Linux 2.6.13 . [3] Desde la versión del kernel 2.6.19, [4] CUBIC reemplaza a BIC-TCP como el algoritmo de control de congestión TCP predeterminado 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ó de forma predeterminada en Windows 10.1709 Fall Creators Update (2017) y en la actualización 1709 de Windows Server 2016. [9]

Características

CUBIC es un derivado menos agresivo y más sistemático de BIC TCP , en el que el tamaño de la ventana es una función cúbica del tiempo desde el último evento de congestión, con el punto de inflexión establecido en el tamaño de la ventana anterior al evento. Debido a que es una función cúbica, hay dos componentes para el crecimiento de la ventana. El primero es una parte cóncava donde el tamaño de la ventana aumenta rápidamente hasta el tamaño anterior al último evento de congestión. A continuación está el 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óncava y convexa que permite que la red se estabilice antes de que CUBIC comience a buscar más ancho de banda. [10]

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. [11] 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.

Algoritmo

CUBIC aumenta su ventana para que dependa del tiempo real y no del RTT como BIC. El cálculo de cwnd (ventana de congestión) también es más simple que el de BIC.

Defina las siguientes variables:

RFC 8312 indica lo siguiente:

Luego cwnd puede modelarse mediante:

Alternativas

Además de los algoritmos basados ​​en ventanas como Cubic, existen algoritmos basados ​​en velocidad (incluido TCP BBR de Google) que funcionan de manera diferente utilizando la "velocidad de envío" en lugar de la ventana. [12]

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 desde el original (PDF) el 26 de julio de 2015. Consultado 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. doi : 10.17487/RFC8312 . RFC 8312.
  3. ^ ab Ha, Sangtae; Rhee, Injong; Xu, Lisong (2008). "CUBIC: una nueva variante de TCP de alta velocidad compatible con TCP". Revisión de sistemas operativos SIGOPS de ACM . 42 . ACM Nueva York, NY, EE. UU.: 11. doi :10.1145/1400097.1400105. S2CID  9391153.{{cite journal}}: Mantenimiento CS1: fecha y año ( enlace )
  4. ^ "[TCP]: Hacer que cúbico sea el valor predeterminado · torvalds/Linux@597811e". GitHub .
  5. ^ "distribuciones-apple-oss/distribucion-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 at a3bb9fcc43a00154884a30c9080595284c26cec9 · apple-oss-distributions/xnu". GitHub . 29 de abril de 2022.Archivo de encabezado de la implementación de control de congestión TCP del kernel XNU utilizado en Mac OS X Yosemite que establece CUBIC como predeterminado
  7. ^ "distribuciones-apple-oss/distribucion-macOS en os-x-1095". GitHub .Referencias del kernel XNU utilizado en Mac OS X Mavericks
  8. ^ "xnu/tcp_cc.h at d2a0abf2ede8152c5a107fe51e032c1193d2015b · apple-oss-distributions/xnu". GitHub . 29 de abril de 2022.Archivo de encabezado 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 TCP de Windows» (PDF) .
  10. ^ Tetcos Engineering (2014). «Comparación de algoritmos de control de congestión TCP» (PDF) . Archivado (PDF) del original el 31 de marzo de 2017. Consultado el 6 de agosto de 2017 .
  11. ^ La Rosa, Alexander (10 de julio de 2019). «¿Por qué CUBIC nos lleva de nuevo al control de congestión TCP?». Pandora FMS . Archivado desde el original (html) el 12 de julio de 2019. Consultado el 12 de julio de 2019. La intención es disponer de un algoritmo que trabaje con ventanas de congestión cuyos procesos incrementales sean más agresivos, pero que tengan restricciones para sobrecargar la red. Para lograrlo, se propone que el esquema de incremento y decremento de la relación de transmisión se establezca en función de una función cúbica.
  12. ^ "Control de congestión, módulo de kernel PK3C basado en velocidad para transmisión de video y servidores de datos". GitHub . Consultado el 1 de agosto de 2021 .

Enlaces externos