# Compound TCP

Compound TCP (CTCP) és un algorisme de Microsoft que es va introduir com a part de la pila TCP de Windows Vista i Windows Server 2008. Està dissenyat per ajustar de manera agressiva la finestra de congestió del remitent per optimitzar el TCP per a connexions amb productes de retard d'amplada de banda gran mentre s'intenta no perjudicar l'equitat (com pot passar amb HSTCP). També està disponible per a Linux, així com per a Windows XP i Windows Server 2003 mitjançant un hotfix.

## Principis de funcionament

Igual que FAST TCP i TCP Vegas, Compound TCP utilitza estimacions del retard de la cua com a mesura de la congestió; si el retard de la cua és petit, s'assumeix que no hi ha cap enllaç congestionat al seu camí, i augmenta ràpidament la seva velocitat. A diferència d'ells, no pretén mantenir un nombre constant de paquets a la cua.
El TCP compost manté dues finestres de congestió: una finestra AIMD normal i una finestra basada en retards. La mida de la finestra corredissa real utilitzada és la suma d'aquestes dues finestres. La finestra AIMD s'augmenta de la mateixa manera que TCP Reno l'augmenta. Si el retard és petit, la finestra basada en el retard augmenta ràpidament per millorar l'ús de la xarxa. Un cop experimentada la cua, la finestra de retard disminueix gradualment per compensar l'augment de la finestra AIMD. L'objectiu és mantenir la seva suma aproximadament constant, en el que l'algorisme estima és el producte de retard d'ample de banda del camí. En particular, quan es detecta cua, la finestra basada en retards es redueix per la mida estimada de la cua per evitar el problema de "congestió persistent" reportat per a FAST i Vegas. Així, a diferència de TCP-Illinois i el seu precursor TCP Africa, Compound TCP pot reduir la seva finestra en resposta al retard. Això augmenta la seva equitat amb Reno.
Les descripcions de Compound TCP es poden trobar en un document de conferència, un Internet-Draft, i una patent dels EUA.

## Linux

CTCP va ser portat a Linux by Angelo P. Castellani. Un pedaç derivat d'això es va desenvolupar a Caltech, que incloïa TUning By Emulation (TUBE) de CTCP i només es va llançar als investigadors a causa de les patents de programari. Des de la versió 2.6.17 del nucli, el mòdul ha estat incompatible i no es pot compilar a causa dels canvis de l'API del nucli.

## Windows 8 i posterior

Des de Windows 8, Windows utilitza l'ordre de PowerShell Set-NetTCPSetting per modificar l'algoritme de control de congestió. Al voltant del 2018, Microsoft va passar de CTCP a utilitzar CUBIC a Windows 10 i Xbox, perquè es considerava molt sensible al retard i també funcionava malament al centre de dades, on la variació del retard era un problema.

## Referències

* ↑ Sah Tyagi, Sumarga Kumar; Pokhrel, Shiva Raj; Nemati, Mahyar; Jain, Deepak Kumar; Li, Gang «Redesigning compound TCP with cognitive edge intelligence for WiFi-based IoT». Future Generation Computer Systems, 125, 01-12-2021, pàg. 859–868. DOI: 10.1016/j.future.2021.07.028. ISSN: 0167-739X.
* ↑ Tan, K. «A Compound TCP Approach for High-Speed and Long Distance Networks». A: Proceedings IEEE INFOCOM 2006. 25TH IEEE International Conference on Computer Communications (en anglès), 2006, p. 1–12. DOI 10.1109/INFOCOM.2006.188. ISBN 1-4244-0221-2.
* ↑ «Compound transmission control protocol [US7577097B2]» (en anglès). Google Patents, 22-03-2005.
* ↑ «Compound TCP in Linux» (en anglès). Arxivat de l'original el 2008-08-02. [Consulta: 4 gener 2011].