TCP compuesto (CTCP) es un algoritmo de Microsoft que se introdujo como parte de la pila TCP de Windows Vista y Windows Server 2008 . Está diseñado para ajustar agresivamente la ventana de congestión del remitente para optimizar TCP para conexiones con productos de gran retardo de ancho de banda mientras intenta no dañar la equidad (como puede ocurrir con HSTCP ). También está disponible para Linux, así como para Windows XP y Windows Server 2003 mediante una revisión. [1]
Al igual que FAST TCP y TCP Vegas , Compound TCP utiliza estimaciones del retraso en la cola como medida de congestión; si el retraso en la cola es pequeño, asume que ningún enlace en su ruta está congestionado y aumenta rápidamente su velocidad. A diferencia de ellos, no busca mantener un número constante de paquetes en cola.
TCP compuesto mantiene dos ventanas de congestión: una ventana AIMD normal y una ventana basada en retrasos. El tamaño de la ventana corredera real utilizada es la suma de estas dos ventanas. La ventana AIMD aumenta de la misma manera que TCP Reno la aumenta. Si el retraso es pequeño, la ventana basada en el retraso aumenta rápidamente para mejorar la utilización de la red. Una vez que se experimenta la cola, la ventana de retraso disminuye gradualmente para compensar el aumento en la ventana AIMD. El objetivo es mantener su suma aproximadamente constante, en lo que el algoritmo estima que es el producto ancho de banda-retraso de la ruta . En particular, cuando se detectan colas, la ventana basada en retrasos se reduce según el tamaño estimado de la cola para evitar el problema de "congestión persistente" reportado para FAST y Vegas. Por lo tanto, a diferencia de TCP-Illinois y su precursor TCP África, TCP compuesto puede reducir su ventana en respuesta a retrasos. Esto aumenta su equidad para con Reno. [ cita necesaria ]
Las descripciones del compuesto TCP se pueden encontrar en un documento de conferencia, [2] en un borrador de Internet, [3] y en una patente estadounidense. [4]
Hay una revisión disponible que agrega compatibilidad con CTCP a Windows XP de 64 bits y Windows Server 2003. [1]
La siguiente clave de registro se puede establecer en 1 para habilitar o 0 para deshabilitar:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TCPCongestionControl
CTCP está habilitado de forma predeterminada en computadoras que ejecutan versiones beta de Windows Server 2008 y deshabilitado de manera predeterminada en computadoras que ejecutan Windows Vista y 7.
CTCP se puede habilitar con el comando:
interfaz netsh tcp establece proveedor de congestión global = ctcp
o deshabilitado con el comando:
interfaz netsh tcp establece proveedor de congestión global = ninguno
Para mostrar la configuración actual para el uso de CTCP:
interfaz netsh tcp muestra global
El parámetro "Proveedor de control de congestión complementario" tendrá un valor de "ninguno" si CTCP está deshabilitado o "ctcp" si está habilitado.
Desde Windows 8, Windows usa el comando de PowerShell Set-NetTCPSetting para modificar el algoritmo de control de congestión. Alrededor de 2018, Microsoft pasó de CTCP a usar CUBIC en Windows 10 y Xbox, porque se consideraba muy sensible al retraso y también funcionaba mal en el centro de datos, donde la variación del retraso era un problema.
CTCP fue portado a Linux por Angelo P. Castellani [ cita requerida ] . En Caltech se desarrolló un parche derivado de esto, que incluía TUning By Emulation (TUBE) de CTCP, y solo se lanzó a los investigadores debido a patentes de software . [5] [ se necesita mejor fuente ] Desde la versión 2.6.17 del kernel, el módulo ha sido incompatible y falla para compilar debido a cambios en la API del kernel.