Compound TCP (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.[источник не указан 4244 дня]

Поддерживаемые платформы

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

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

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

  1. 1 2 Обновление добавляющее поддержку Compound TCP (CTCP) в Windows Server 2003 и Windows XP. Дата обращения: 29 октября 2014. Архивировано 6 мая 2008 года.
  2. アーカイブされたコピー. Дата обращения: 2 августа 2008. Архивировано из оригинала 2 августа 2008 года.

Дополнительные ссылки

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