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 с помощью обновления.

Принцип работы Также как 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.

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

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

Следующий ключ реестра может быть установлен в 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 ядра.

См. также :en:TCP congestion avoidance algorithm Explicit Congestion Notification

Ссылки

Дополнительные ссылки Compound TCP Internet-Draft «A Compound TCP Approach for High-speed and Long Distance Networks» July 2005 Performance Enhancements in the Next Generation TCP/IP Stack, The Cable Guy The Compound TCP for High-speed and Long Distance Networks, Microsoft Research publication Vista’s TCP/IP Promises and Perils , Article at Network Performance Daily Caltech’s Compound TCP patch for Linux Enabling CTCP on 2003/XP x64: , Report on experimental evaluation of Compound TCP Hamilton Institute and Caltech, March 2008. A simulation-based study of Compound TCP July 14, 2008

Категория:TCP/IP Категория:Алгоритмы маршрутизации