Compound TCP

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Compound TCP (CTCP) - алгоритм, разработанный Microsoft и впервые включенный в сетевой стек Windows Vista и Window Server 2008 TCP. Разработан для агрессивного увеличения TCP окна (congestion window) для оптимизации TCP скорости передачи данных при большой задержке (en:Bandwidth-delay_product) с минимальными отклонениями от стандарта (в отличие от HSTCP). Реализация существует для Linux, а также для Windows XP и Windows Server 2003 с помощью обновления.[1]

Принцип работы[править | править код]

Также как FAST TCP и TCP Vegas, Compound TCP использует прогноз задержки очереди как меру загрузки канала; если задержка мала, считается, что перегрузки на пути следования пакетов нет, и скорость резко повышается. В отличие от FAST и Vegas, алгоритм не пытается поддерживать фиксированное количество пакетов в очереди.

Compound TCP работает с двумя окнами: обычное AIMD окно и зависимое от задержки. Размер скользящего окна рассчитывается как сумма этих двух окон. Окно AIMD увеличивается так же как в алгоритме TCP Reno. При маленькой задержке быстро увеличивается размер окна задержки для повышения эффективности использования полосы пропускания сети. При попадании пакета в очередь постепенно уменьшается размер окна задержки чтобы компенсировать увеличение основного (AIMD) окна. Цель этого - поддерживать сумму окон в районе некоторой константы, спрогнозированной алгоритмом (en:bandwidth-delay product пути). В частности, при попадании пакета в очередь, окно задержки уменьшается на прогнозируемый размер очереди для избежания проблемы "постоянной перегрузки" (persistent congestion), возникающей в FAST и Vegas. Так, в отличие от TCP-Illinois и его предшественника TCP Africa, Compound TCP может уменьшать размер окна в ответ на увеличение задержки. Увеличение происходит в точности как в алгоритме Reno.[источник не указан 2143 дня]

Поддерживаемые платформы[править | править код]

Windows 2003 и XP x64[править | править код]

Доступно обновление, добавляющее поддержку CTCP в 64 bit Windows XP и Windows Server 2003.[1]

Следующий ключ реестра может быть установлен в 1 для включения или в 0 для выключения:

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

Windows Vista/2008/7[править | править код]

CTCP включено по умолчанию в beta Windows Server 2008 и выключено по умолчанию в Windows Vista и 7.

CTCP может быть включено командой:

netsh interface tcp set global congestionprovider=ctcp 

или выключено:

netsh interface tcp set global congestionprovider=none

Просмотр текущего состояния CTCP:

netsh interface tcp show global

Параметр "Add-On Congestion Control Provider" может принимать значения "none" если CTCP выключено или "ctcp" - если включено.

Windows 8 / 8.1[править | править код]

Windows 8/8.1 использует команду powershell https://web.archive.org/web/20131029184023/http://technet.microsoft.com/en-us/library/hh826132.aspx для управления алгоритмами контроля загрузки (congestion algorithms).

Linux[править | править код]

Кроме Windows, CTCP был портирован в Linux Angelo P. Castellani. Патч был разработан в Caltech, вклюбчен в CTCP's TUning By Emulation (TUBE). Из-за патентных соглашений доступен только для исследователей . Начиная с версии ядра 2.6.17 модуль перестал быть совместимым из-за изменения API ядра.[2]

См. также[править | править код]

Ссылки[править | править код]

Дополнтельные ссылки[править | править код]