複合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]

參見 編輯

參考資料 編輯

外部連結 編輯