摘要:隨著互聯網規模的增長,互連網上的用戶和應用都在快速的增長,擁塞已經成為一個十分重要的問題。近年來,在擁塞控制領域開展了大量的研究工作。此文介紹了基于TCP協議的擁塞控制算法的研究現狀,分析了對算法改進的研究,并提出一些改進的建議。
關鍵詞:Internet;TCP;擁塞控制
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)22-619-02
Based on TCP Congestion Control Algorithm Research Summary
DIAN Shi-mei
(Yunnan Medical College, Kunming 650031, China)
Abstract: As the number of users and applications of Internet increases very quickly, congestion control become more and more important. A mass of research in the field of congestion control has been done recently. In this paper, the current research of congestion control algorithms based on the TCP protocols that implemented on Internet are summarized, and the improvement of algorithms are analyzed. Finally, the paper make some suggestions for future research.
Key words: Internet; TCP; Congestion control
1 引言
隨著互聯網技術的迅猛發展,網絡用戶和信息傳輸量呈爆炸性增長,用戶提供給網絡的負載大于網絡資源容量和處理能力的時候,網絡將產生擁塞,表現為數據包時延增加、丟棄概率增大、上層應用系統性能下降等。
目前,Internet上廣泛使用的TCP/IP協議中,擁塞控制算法可以分為兩個主要部分:在端系統上使用的源算法和在網絡設備上使用的鏈路算法。其中,TCP擁塞控制算法實現于端到端的主機中。在各種TCP協議實現中一般都包含四種相互交織的擁塞控制算法:慢啟動、擁塞避免、快速重傳以及快速恢復。基于這四個階段的算法,本文總結了一些改進的研究,并就值得改進的環節提出想法和建議。
2 TCP擁塞控制算法
1988年Van Jacobson指出了TCP在控制網絡擁塞方面的不足,并提出了“慢啟動”(slow start)算法、“擁塞避免”(congestion avoidance)算法[1]。1990年出現的TCP Reno版本增加了“快速重傳”(fast retransmit)算法、“快速恢復”(fast recovery)算法,避免了網絡擁塞不夠嚴重時采用“慢啟動”算法而造成過大地減小發送窗口尺寸的現象,這樣TCP的擁塞控制就由這4個核心部分組成,最近幾年又出現TCP 的改進版本如New Reno [2]、SACK[3]等。
2.1 TCP擁塞控制的主要參數
TCP擁塞控制是通過控制一些重要參數的改變實現的,主要的參數有:
1)擁塞窗口(cwnd):是擁塞控制的關鍵參數,它描述源端在擁塞控制情況下一次最多能發送數據包的數量。
2)通告窗口(awin):是接收端給源端預設的發送窗口大小,它只在TCP連接建立的初始階段起作用。
3)發送窗口(win):是源端每次實際發送數據的窗口大小。
4)慢啟動閾值(ssthresh):是擁塞控制中慢啟動階段和擁塞避免階段的分界點。
5)回路響應時間(RTT):一個TCP數據包從源端發送到接收端。源端收到接收端確認的時間間隔。
6)超時重傳計數器(RTO):描述數據包從發送到失效的時間間隔,是判斷數據包丟失與否、網絡是否擁塞的重要參數,通常設為2RTT或5RTT。
7)快速重傳閾值(tcp rexm tthresh):是能觸發快速重傳的源端收到重復確認包ACK的個數。當此個數超過tcp rexm tthresh時,網絡就進入快速重傳階段。tcp rexm tthresh缺省值為3。
2.2 TCP擁塞控制的四個階段
2.2.1 慢啟動階段
慢啟動的實質是通過逐漸增加發送量以找到合適的發送帶寬的過程。舊的TCP在啟動一個連接時會向網絡中發送許多數據包,由于一些路由器必須對數據包排隊,所以這樣就有可能耗盡存儲空間,從而導致TCP連接的吞吐量急劇下降。避免這種情況發生的算法就是慢啟動。當建立新的TCP連接時,擁塞窗口(cwnd)初始化為一個數據包大小(一個數據包缺省為536或512bytes)。源端按cwnd大小發送數據,每收到一個ACK確認,cwnd就增加一個數據包發送量。cwnd的增長將隨RTT呈指數級(exponential)增長:1個、2個、4個、8個、……。源端向網絡中發送的數據量將急劇增加。
2.2.2 擁塞避免
當發現超時或收到3個相同ACK確認幀時,網絡即發生擁塞。TCP這一假定是基于由傳輸引起的數據包損壞和丟失的概率很小(小于1%[1])。此時就進入擁塞避免階段。慢啟動閾值(ssthresh)被設置為當前cwnd的一半,如果是超時,cwnd還要被置1。如果此時cwnd>=ssthresh,TCP就重新進入慢啟動過程;如果cwnd > ssthresh,TCP 就執行擁塞避免算法,cwnd在每次收到一個ACK時只增加1/cwnd個數據包(這里將數據包大小seg size假定為1),所以在擁塞避免算法中cwnd的增長不是指數的,而是線性的(linear)。
2.2.3 快速重傳和恢復階段
當數據包超時時,cwnd要被置為1,重新進入慢啟動,這會導致過大地減小發送窗口尺寸,降低TCP 連接的吞吐量。所以快速重傳和恢復就是在源端收到3個或3個以上重復ACK時,就斷定數據包已經丟失,重傳數據包,同時將ssthresh置為當前cwnd的一半,而不必等到RTO超時。
3 TCP擁塞控制算法的改進研究
3.1 慢啟動的改進
在TCP擁塞控制的4個過程中,慢啟動是基礎,在TCP連接開始時,必須首先執行慢啟動,所以在改善慢啟動階段的性能以減小響應時間方面開展了很多研究工作[4]。慢啟動算法通過逐漸增加的大小來探測可用的網絡容量,然而有時也會浪費可用的網絡容量,因為慢啟動算法總是從cwnd=1開始,每收到一個ACK,cwnd增加1,對RTT時間長的網絡,為使cwnd達到一個合適的值,需要花很長的時間。文獻[5]提出了使用大初始窗口的改進建議, 建立連接后,設初始窗口IW=min(4*MSS,max(2*MSS,4380bytes)),其中,MSS(maximum segment site)指這一連接的最大報文長度,這樣TCP發送端在剛開始就可以發送3個1460字節或4個512字節的分組,從而減少3個RTT時間和一個延遲ACK時間,但是同時它也會導致附加分組的丟失,降低網絡性能,因此這種改進仍處于研究階段,沒有應用實施。
3.2 基于速率的控制策略
在TCP中使用的窗口控制策略本身機制存在一定的缺陷,如容易導致突發報文的出現;速率受到窗口大小的限制;一個窗口內多個報文的丟失不容易恢復等。針對這些問題,一些研究者提出了Rate-Based Pacing(RBP)的概念,將基于窗口的控制和基于速率的控制結合起來。
3.3 ACK過濾(ACK Filter)
該研究的主要目的是保持TCP的“自時鐘”(Self Clocking)機制。TCP的“自時鐘”機制有利于減輕突發報文對網絡的沖擊,而“ACK壓縮”(ACK Compression)破壞了“自時鐘”機制,因而網絡中增加特殊的設備PEP(Performance Enhance Proxy)來確保ACK報文之間的間隔。
3.4 減少不必要的重傳時鐘超時和快速重傳
在重傳時鐘超時和快速重傳發生時,TCP都會減小擁塞窗口,從而降低傳輸的速率。RTT測量的準確性和“亂序報文”(Out-of-Order Packet)的出現都會影響TCP做出正確的判斷。通過在應答報文中增加特殊的信息來解決這個問題。
3.5 顯式擁塞通知(Explicit Congestion Notification)
當擁塞發生時,網關通過在報文中設定標志位通知端系統,而不等待發送方的時鐘超時,這改變了原來TCP依賴報文丟失來判斷擁塞發生的方法。
3.6 “TCP友好”(TCP-Friendly)擁塞控制
“TCP友好”定義為:長時間的吞吐量不超過相同條件下TCP連接的吞吐量。“TCP友好”擁塞控制屬于基于速率的控制,速率的計算建立在TCP吞吐量模型的基礎上。
4 結束語
網絡擁塞問題的解決,將使互聯網在多媒體和實時應用(如網絡視頻會議、遠程監控等)中發揮更大的價值。本文對基于TCP擁塞控制算法的研究現狀進行了總結,在介紹研究現狀的同時,討論了該領域的研究熱點和發展方向。其中慢啟動作為TCP擁塞控制過程的基礎,其性能的提高對于擁塞問題的解決起著極其重要的作用。
需要指出的是,這種在端系統進行的擁塞控制從感知擁塞到采取行動之間有著明顯的時延,而且它無法了解資源的使用情況,目前主要是通過降低發向網絡的流量來減小網絡負載從而解決擁塞,這在一定程度上可以提高效率,但是很難保證公平性,要保證公平性以及進行有效的控制,最好能在對擁塞情況有足夠信息的子網中,即在擁塞發生地進行相應的控制。
參考文獻:
[1] Jacobson V.Congestion Avoidance and Control[J].IEEE/ACM Transaction Networking,1998,6(3):314-329.
[2] Zhang H.Traffic control and QoS management in the Internet[J/OL].http://www.cs.cmu.edu/hzhang/.
[3] Mathis M, Mahdavi J. TCP Selective Acknowledgment Options. RFC 2018, 1996.
[4] Allman M, Floyd S, Partridge C. Increasing TCP’s Initial window RFC 2414[S].Internet Network Working Group,1998.
[5] Jacobson V.Congestion avoidance and control[J].IEEE/ACM Transaction On Networking, 1998,6(3):314-329.