stringtranslate.com

TCP CÚBICO

CUBIC es un algoritmo para evitar la congestión de la red para TCP que puede lograr conexiones de gran ancho de banda a través de redes de manera más rápida y confiable frente a una alta latencia que los algoritmos anteriores. Ayuda a optimizar las redes largas y grasas . [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 2.6.19 del kernel, [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 la versión 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 Windows Server 2016 1709. [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 antes del evento. Debido a que es una función cúbica, el crecimiento de la ventana tiene dos componentes. La primera es una porción cóncava donde el tamaño de la ventana aumenta rápidamente hasta el tamaño anterior al último evento de congestión. El siguiente es 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, lo 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, no de RTT como BIC. El cálculo de cwnd (ventana de congestión) también es más sencillo que el de BIC.

Defina las siguientes variables:

RFC 8312 indica lo siguiente:

Entonces cwnd puede modelarse mediante:

Ver también

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

Referencias

  1. ^ Sangtae Ha; Injong Rhee; Lisong Xu (julio de 2008). "CUBIC: una nueva variante de TCP de alta velocidad compatible con TCP" (PDF) . Revisión de los sistemas operativos ACM SIGOPS . 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 TCP de alta velocidad compatible con TCP". Revisión de los sistemas operativos ACM SIGOPS . 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 cúbico el valor predeterminado · torvalds/Linux@597811e". GitHub .
  5. ^ "apple-oss-distributions/distribution-macOS en os-x-1010". GitHub .El control de congestión de TCP se implementa en el kernel XNU; esta confirmación hace referencia al kernel XNU usado en Mac OS X Yosemite
  6. ^ "xnu/tcp_cc.h en 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 indica CUBIC como predeterminado
  7. ^ "apple-oss-distributions/distribution-macOS en os-x-1095". GitHub .Referencias XNU Kernel 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 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 Windows TCP" (PDF) .
  10. ^ Ingeniería Tetcos (2014). "Comparación de algoritmos de control de congestión TCP" (PDF) . Archivado (PDF) desde el 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 devuelve al control de congestión de 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 tener un algoritmo que trabaje con ventanas de congestión cuyos procesos incrementales sean más agresivos, pero que no sobrecarguen la red. Para lograr esto, se propone que el esquema de aumento y disminución de la relación de transmisión se establezca según una función cúbica.
  12. ^ "Control de congestión, velocidad del módulo kernel PK3C basada en transmisión de video y servidores de datos". GitHub . Consultado el 1 de agosto de 2021 .

enlaces externos