複合TCP(英語:Compound TCP,簡稱CTCP)是微軟Windows Vista及Window Server 2008開始在TCP棧中引入的一個演算法。它旨在積極調整傳送方的擁塞窗口英語Congestion window,以在不損害公平原則英語Fairness measure的基礎上(HSTCP同樣遵循)最佳化TCP對高頻寬時延積連接的表現。該方案還可在Linux、Windows XP以及Windows Server 2003上使用。[1]

操作原理

類似FAST TCP英語FAST TCPTCP Vegas英語TCP Vegas,複合TCP採用估算排隊延遲來度量擁塞;如果排隊延遲小,則假設鏈路上沒有擁塞,並迅速增加其速率。但不同於FAST和Vegas,它不追求維護恆定數量的封包佇列。

複合TCP維護兩個擁塞窗口:一個常規的AIMD英語Additive increase/multiplicative decrease窗口,以及一個基於延遲的窗口。最終實際使用的滑動窗口大小是這兩個窗口的和。AIMD窗口與TCP Reno英語TCP Reno的增加方式相同。如果延遲小,基於延遲的窗口將迅速增加以提高網絡的利用率。一旦經歷了排隊,延遲窗口將逐漸減小以補償增加的AIMD窗口。這樣的目的是保持兩者的總和大致恆定,使演算法估計頻寬時延積的路徑。具體來說,當檢測到排隊時,基於時延的窗口因估計的佇列大小而減少,以避免FAST和Vegas報告的「持續擁塞」。因此,不同於TCP-Illinois英語TCP-Illinois及其前身TCP Africa英語TCP Africa,複合TCP可以減少其窗口以避免響應延遲。這增加了它對於Reno的公平性。[來源請求]

支援平台

Windows 2003和XP x64

有一個熱修復修補程式可以為64位元Windows XP和Windows Server 2003添加CTCP支援。[2]

將下列登錄檔鍵設為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 

下列命令禁用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)修改擁塞控制演算法。

Linux

除了Windows支援,CTCP還被Angelo P. Castellani移植到了Linux。Caltech開發的一個修補程式包含了CTCP's TUning By Emulation (TUBE)。此修補程式由於軟件專利而僅供研究人員使用。該模組已不相容內核2.6.17及以上版本,將由於內核API變更而編譯失敗。[3]

參見

參考資料

外部連結