Compound TCP (CTCP) est un algorithme créé par Microsoft qui a été introduit dans la pile TCP des systèmes Windows Vista et Windows Server 2008. Il est conçu pour ajuster de manière agressive la fenêtre de congestion de l'expéditeur afin d'optimiser TCP pour les connexions ayant des latences importantes, tout en essayant de préserver l'équité (contrairement à HSTCP). Il est aussi disponible pour Linux, ainsi que pour Windows XP et Windows Server 2003 via un correctif.

Principes de fonctionnement modifier

Comme FAST TCP et TCP Vegas, Compound TCP utilise des estimations de délais d'attente comme mesures de congestion. Si le délai est faible, on suppose qu'aucun lien sur son chemin n'est congestionné et on augmente rapidement sa vitesse. Cependant, contrairement à FAST et Vegas, il ne cherche pas à maintenir un nombre constant de paquets en file d'attente.

Compound TCP maintient deux fenêtres de congestion : une fenêtre AIMD et une fenêtre basée sur la latence. La taille de la fenêtre glissante réellement utilisée est la somme de ces deux fenêtres. La fenêtre AIMD augmente de la même manière qu'avec le protocole TCP Reno. Si le délai est faible, la fenêtre basée sur la latence augmente rapidement pour optimiser l'utilisation du réseau. Une fois que la latence est connue, la fenêtre associée diminue progressivement pour compenser l'augmentation de la fenêtre AIMD. Le but est de garder leur somme à peu près constante, à une valeur que l'algorithme estime être le produit bande passante * latence. En particulier, lorsqu'un ralentissement est détecté, la fenêtre basée sur la latence est réduite par l'estimation de la taille de file d'attente afin d'éviter le phénomène de la congestion persistante, rencontré avec FAST et Vegas. Ainsi, contrairement à TCP-Illinois et son précurseur TCP Africa, Compound TCP peut réduire sa fenêtre en réaction à un ralentissement. Cela augmente son équité par rapport à Reno.[réf. nécessaire]

Plateformes supportées modifier

Windows 2003 et XP x64 modifier

Un correctif incluant CTCP est disponible pour Windows XP 64 bits et Windows Server 2003[1].

La clé de registre suivante peut être positionnée sur 1 pour l'activer ou 0 pour le désactiver :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TCPCongestionControl

Windows Vista/2008/7 modifier

CTCP est activé par défaut sur les versions bêta de Windows Server 2008 et désactivé par défaut sur Windows Vista et 7.

CTCP peut être activé avec la commande :

netsh interface tcp set global congestionprovider=ctcp

ou désactivé avec la commande :

netsh interface tcp set global congestionprovider=none

Pour afficher le paramétrage de CTCP :

netsh interface tcp show global

Le paramètre "Add-On Congestion Control Provider" a pour valeur "none" si CTCP est désactivé ou "ctcp" s'il est activé.

Windows 8 et supérieur modifier

Depuis Windows 8, Windows utilise une commande PowerShell pour modifier l'algorithme de contrôle de congestion.

Linux modifier

En plus de Windows, CTCP a également été porté sous Linux par Angelo P. Castellani. Un patch dérivé a été développé à Caltech, il comprenait le réglage CTCP TUning By Emulation (TUBE). Le patch était uniquement disponible pour les chercheurs à cause de brevets logiciels. Depuis la version 2.6.17 du noyau, le module est incompatible et ne peut plus être compilé en raison de changements de l'API du noyau[2].

Voir aussi modifier

Références modifier