摘要:隨著計算機網絡的快速發展,人們對網絡資源的要求也越來越高,尤其是近年來如語音,圖像等多媒體流在網絡上大量涌現,網絡擁塞問題也隨之變得嚴重,而網絡擁塞也一直是計算機網絡研究的重點和熱點問題之一。該文將闡述目前基于TCP/IP協議的幾種典型擁塞控制算法,并指出其優缺點,同時給出兩種擁塞控制方法的比較。
關鍵詞:擁塞控制;TCP/IP協議
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)35-2165-02
Based on TCP Port Congestion Control Algorithm
LIANG Feng
(College of Computer, Chongqing University of Posts and Telecommunications, Chongqing 400065, China)
Abstract: With the rapid development of computer networks, network resources on the requirements of increasingly high, especially in recent years, such as voice, video streaming, and other multi-media network in a large number of network congestion has become a serious problem, and Network congestion has been the focus of research computer network and one of the hot spots. This article is currently based on TCP/IP protocol of the typical congestion control algorithms, and pointed out its strengths and weaknesses, both at the same time give congestion control methods.
Key words: congestion control; TCP/IP protocol
1 引言
網絡擁塞是當今計算機網絡中一個比較突出和嚴重的問題,擁塞控制便顯得極為重要。當用戶對網絡資源的需求大于網絡本身所提供的資源時就發生擁塞。其表現為數據包分組延時增加,丟棄數增多,上層應用性能下降等[1]。TCP源端的擁塞控制算法一般都包括四個過程[2-3],即慢啟動階段,擁塞避免,快速重傳和快速恢復。其基礎就是加性增和乘性減(AIMD: additive-increasemultiplicative-decrease)。
慢啟動階段:為了防止在啟動一個連接時向網絡發送過多的數據包而造成不必要的數據丟失和網絡擁塞,所以在剛建立連接時,發送方將擁塞窗口(cwnd)的大小設置為一個TCP段的最大字節數(mss),若發送方獲得一個來自接收方的對已接收的數據應答ACK時,則cwnd增加一個報文段,即cwnd=cwnd+mss。可見cwnd將隨往返時間(RTT)呈指數增長。
擁塞避免: 隨著發送窗口的不斷增大,當發送方收到3個相同的ACK確認或收到的ACK超時時,則網絡將發生擁塞(TCP這一假設是基于:由傳輸引起的數據包破壞和丟失的概率很小,小于1%),此時就進入擁塞避免。慢啟動閾值ssthresh將被設置為當前cwnd的一半。再當數據包發生超時,cwnd被置為1,如果cwnd
快速重傳和快速恢復:當接收方收到3個或以上重復ACK就認為該數據包丟失,馬上重傳該數據包,并將閾值ssthresh設為當前發送窗口(cwnd)的一半進入快速重傳,有利于提高吞吐量。而不需要等到重傳定時器超時才重傳,且重傳時將發送窗口cwnd設置為1,進入慢啟動階段,這樣過大的減小發送窗口,降低了吞吐量。
2 基于窗口的TCP擁塞控制存在的問題和改進
公平性問題:在Internet中存在有連接的TCP和無連接的UDP在發生擁塞時會采用不同的措施。TCP采用了擁塞控制機制,當發送端收到的ACK超時或3個相同的ACK時,就認為網絡發生擁塞,同時采取相應的擁塞控制策略。最直觀的是減少源端發送數據包數,以緩解擁塞。而無連接的UDP沒有采用擁塞控制機制,當發生擁塞時,由于沒有采用擁塞控制,源端不會減少數據包發送,這樣UDP會占用更多的網絡資源,而TCP則相應獲得越來越少的網絡資源,形成網絡資源分配的不公平,資源分配的不公平反過來又進一步加重網絡擁塞,甚至導致擁塞崩潰。
恢復時間長:高帶寬下,源端為獲得較高的單流吞吐量,必須保持一個較大的擁塞窗口。然而產生擁塞時,目前TCP擁塞避免算法中的窗口調節機制,需要較長的恢復時間,不能有效地利用可用帶寬,嚴重降低了網絡資源的利用率。
隨著網絡多媒體流的不斷增加,TCP擁塞控制的公平性問題顯得十分突出,就此有很多網絡研究者提出了一些改進算法,比較著名的TCP Westwood,TCPW協議的關鍵思想在于TCP發送端通過檢測返回的確認幀(ACKS)的速度來持續測量網絡有效帶寬,在發送端自適應修改擁塞窗口的控制算法,與在發生擁塞時根據AIMD的盲目執行擁塞窗口相比,在一個擁塞事件發生時,TCPW具有更快的恢復機制——端到端可用帶寬的計算與估計來自適應地設置一個與發生擁塞時有效帶寬一致的慢啟動閾值和cwnd,并且對隨機抖動不敏感,有利于多媒體流的傳播。
基于公式的擁塞控制,其原理是通過一個丟失事件率等為參數的公式來計算發送速率上限,發送方以此公式的計算結果為依據來對自身的發送速率進行調整,并保證發送速率不會超過這個值——目的是改進TCP數據流的劇烈抖動性。Padhye等人提出的較為合理的公式:
其中s是TCP的報文大小,l是丟失率,t0是超時時間,b為一個應答所接收到的報文的報文數,一般為2,tRtt為往返時間。
TFRC(TCP Friendly Rate Control)算法采用Padhye提出的TCP平均速率計算公式作為擁塞控制公式,其目的是使TFRC流與TCP流在相同環境下強占帶寬的能力相同,從而能使TCP流公平競爭。
3 基于網絡端的擁塞控制
目前,基于網絡端的擁塞控制主要是先進先出(FIFO)的丟尾(Drop Tail)算法,稱為被動隊列管理(Passive queue management,),該算法容易產生全局同步、死鎖、滿隊列問題。所以就有了主動隊列管理策略 (Active queue management):通過主動的丟棄或標記分組來維持一個穩定的隊列目標長度,達到減小排隊時延和保證較高吞吐量的目的。
3.1 隨機早期檢測(RED)
RED算法通過檢測隊列長度來預測網絡可能到來的擁塞,并采用隨機策略對包進行標注或丟棄,在擁塞還沒出現時提示端系統降低發送速率,以達到避免擁塞的目的。且由于RED算法隨機標注到達的包,是不同TCP流的擁塞響應異步化,從而解決了TCP流的全局同步問題。RED算法很重要的是如何檢測隊列長度,具體是:RED采用指數加權平均(EWMA)方法定義動態的平均隊列長度: 當qavg < qmin時p=0,當qavg ≥ qmax是p=1,當qmin ≤ qavg < qmax時 3.2 自適應虛擬隊列算法(AVQ) 基于速率尺度的AVQ[10]維持一個小于實際鏈路容量的虛擬隊列 3.3 隨機指數標記算法(REM) 基于混合尺度的REM算法包括兩部分:一是價格機制,用于擁塞測量,用公式: 用于擁塞回饋,該式描述了網絡連接點根據隊列長度得到的分組丟棄概率。(兩式中q(t)為連接節點的隊列長度;p(t)為連接節點的分組丟棄概率;y(t)為連接節點的輸入速率c為連接節點的發送帶寬;控制增益γ,β為充分小的正數;qref為期望隊列長度)。REM擁塞控制算法,通過解耦網絡性能的平衡值和擁塞率的平衡值,使得網絡達到平衡時,系統具有較低的擁塞率和較短的隊列時延,能更好的保證Internet的服務質量,提高網絡的穩定性。 除上述主要幾個AQM代表算法之外還有如BLUE算法,運用分組丟棄和鏈路空閑事件來控制擁塞。又如顯示通告算法(ECN)是對RED的一種擴展,它為路由器提供一種輕量級機制以顯示方式直接向源端發送擁塞指示。還有PI算法等。 4 TCP端口擁塞控制和IP網絡擁塞控制算法比較 4.1 兩種擁塞控制算法在網絡中位置比較 4.2 性能比較 5 結束語 網上網絡擁塞問題日益突出,將TCP和IP兩種擁塞控制方法結合是當前解決擁塞問題的主要途徑。但現在的控制算法,一般基于經驗與仿真,缺乏一套完整的理論,而目前控制理論和優化理論已相當成熟,將這兩種理論應用與擁塞控制是今后一段時間研究的熱點和重點。 參考文獻: [1] 謝希仁.計算機網絡[M].2版.北京:電子工業出版社,2001. [2] 尹鳳杰.基于控制理論的主動隊列管理算法及其穩定性研究[D].東北大學博士論文,2005. [3] Kunniyur S S, Srikant R. An Adaptive Virtual Queue (AVQ) algorithm for Active Queue Management[J].IEEE-ACM Transactions on Networking,2004,12(2):286-299.