專利名稱:一種用于高丟包率廣域網環境下的擁塞控制方法
技術領域:
本發明涉及一種高丟包率廣域網環境下的擁塞控制方法。
背景技術:
近年來,TCP (Transport Control Protocol,傳輸控制協議)擁塞控制方法一直是 人們所研究的焦點。而自從TCP Reno方法提出以來,它被公認為是一種效果不錯的TCP擁 塞控制方法而沿用至今。雖然TCP Reno在城域網、局域網等短距離傳輸下有較好的效果, 但在一些特定廣域網環境下,比如跨區域、跨網段、甚至跨國環境,由于網絡具有普遍高丟 包率特性,受其影響TCP Reno的保守擁塞控制機制已逐漸突顯出其非適應性,導致它在此 種環境下的傳輸性能急劇降低。TCP Reno方法目前包括慢啟動、擁塞避免、快速重傳、快速恢復四種機制,是現有 的眾多擁塞控制方法的基礎。TCP擁塞控制方法經過數十年的研究發展,出現了大量的改進 和增強版本。然而其中大部分在TCP Reno四種機制基礎上進行的改進和增強版本的焦點 都集中在擁塞避免機制上。然而在高丟包率廣域網環境下,TCP連接的絕大部分時間都將 處于快速恢復機制階段,因而針對高丟包率廣域網環境,如何改進優化TCP快速恢復機制 將成為帶寬利用率提升的關鍵。傳統TCP擁塞控制方法(如TCP Reno)在高丟包率廣域網環境下的低效性主要由 以下兩點問題造成(1)丟包發生時保守的降窗機制傳統TCP在判定丟包發生時,將擁塞窗口減為原來的一半。在具有高丟包的網絡 環境下,丟包現象比較密集,如果每一次丟包都將窗口減半,將使擁塞窗口以2為倍數乘性 減小,擁塞窗口始終遠離目標帶寬值而處在超低速傳輸狀態下。(2)快速恢復時期保守的包守恒機制傳統TCP每收一個重復ACK(ACKn0Wledgment,應答),則發送一新數據包,使網絡 上屬于該流的數據包保持不變,實現網絡包守恒。即當發生丟包事件時,傳統TCP首先將速 率減為原先的一半,然后保持在這個速度發送數據包。這種保守包守恒機制同樣在丟包現 象頻繁時,使占據TCP連接絕大部分時間的快速恢復階段下的速率只一味的減小與持平, 而不會有任何地增長。
發明內容
本發明所要解決的技術問題是提出一種用于高丟包率廣域網環境下的擁塞控制 方法,該方法以包丟失數量的增大作為降窗依據,同時采用積極地窗口增長機制,使數據傳 輸在高丟包率廣域網環境下獲得高吞吐率。本發明的技術解決方案如下一種用于高丟包率廣域網環境下的擁塞控制方法,在數據傳送過程中,發送方收 到重復ACK后所做處理包括以下兩個階段
1)發送方檢測到包丟失數量增大時,判定此時網絡擁塞增強,計算擁塞門限值 congjhreshold以及根據丟包數增量計算出擁塞窗口的減小量ε,將擁塞窗口減少ε以 響應擁塞;2)發送方檢測到包丟失數量不變或者減小時,通過判斷擁塞窗口與階段1)中所 計算擁塞門限值congjhreshold的大小關系來確定擁塞窗口所采取的增長方式。擁塞門限值congjhreshold為當前網絡的預估擁塞點,取為當前擁塞窗口 cwnd 與當前擁塞門限值congjhreshold'的指數加權滑動平均,即cong_threshold = α X cong_threshold' +(1-α ) Xcwnd,其中α為平滑因子。擁塞窗口減小量ε的計算方法為
ε - mmicwnd -1, cwnd χ Iog2^ost-cnt + ^ + //)), LcwndJ其中lost_cnt為丟包數增量,即lost_cnt = Iosti-IostH,其中Iosti為當前丟 包數,IostH為前一時間點i-Ι時刻的丟包數,μ為微調量且μ彡0,μ計算如下
γ π 、lost cnt、μ = β(1--^―)
cwnd其中β為微調因子,取值區間為W,l)。所述階段2)中,當擁塞窗口小于擁塞門限值congjhreshold,則采用每收到一個 重復ACK擁塞窗口加1的乘性窗口調整機制,即以cwnd+Ι作為更新后的窗口 ;否則采用收
到一個窗口的重復ACK后擁塞窗口加1的加性窗口調整機制,即以cw^ +」;作為更新后
cwnd
的窗口。有益效果本發明的技術效果在于本發明在TCP的快速恢復機制階段,發送方每收到一個 重復ACK則判斷包丟失數是否增加,只有當包丟失數增加時才降低擁塞窗口大小,否則根 據擁塞窗口與擁塞門限值大小關系采用相應的窗口增長機制。本發明通過包丟失數增量的 大小來衡量網絡的擁塞程度,依此擁塞窗口相應減小適當的量來響應擁塞,避免了擁塞窗 口直接減半的保守性。此外本方法使用擁塞門限值作為預估擁塞點來估計該高丟包環境下 的大致可用帶寬,在無包丟失數增加的情況下,擁塞門限值作為窗口調整機制的分隔點,當 擁塞窗口小于門限值時,采用乘性窗口增長機制,否則采用加性窗口增長機制。本方法通過 積極地窗口增長機制試探網絡可用帶寬,能夠有效地適應高丟包率廣域網環境,獲得較高 帶寬利用率。具體實驗結果見實施例。
圖1為本發明的流程圖。圖2為本發明實驗床測試環境拓撲圖。圖3為本發明TCP方法與TCP Reno在各種環境下的速率對比示意圖;其中分圖 a-i 分別是 2M,20ms、2M,IOOms、2M,500ms、4M,20ms、4M,IOOms、4M,500ms、10M,20ms、10M, IOOmsUOM, 500ms情況下的對比示意圖。
具體實施例方式以下將結合附圖和具體實施例對本發明做進一步詳細說明實施例1 參見圖1,為本發明的流程圖。它是基于發送方的方法,過程如下在傳輸沒有結 束的情況下,發送方收到ACK,首先判斷是否為重復ACK,如非重復ACK,則按正常擁塞控制 (慢啟動或擁塞避免)處理。其中,當擁塞窗口小于慢啟動門限時,發送方每收到一個ACK將 擁塞窗口加1 ;當擁塞窗口大于慢啟動門限時,發送方每一個RTT時間將擁塞窗口加1。如是 重復ACK,則進入快速恢復機制階段。該階段首先判斷由SACI^SelectiveACKnowledgment, 選擇性確認)統計的丟包數是否增大,如是則重傳丟失的數據包,計算擁塞門限值,并根據 丟包數增量計算擁塞窗口減小量且依此降低擁塞窗口 ;否則比較擁塞窗口與門限值的大 小,如果擁塞窗口小于門限值,則將擁塞窗口加1進行乘性窗口增長,否則將擁塞窗口加
丄騰力口··。首先定義變量congjhreshold用于保存擁塞門限值。當丟包數量增大時,門限值 取為當前擁塞窗口與當前門限值的指數加權滑動平均,即cong_threshold = α X cong_threshold+(1_ α ) Xcwnd, cwnd 為當前擁塞窗口 ;其中α為平滑因子。當丟包發生時,很可能是網絡由非擁塞到擁塞的拐點,將此 時的擁塞窗口作為門限值的調整依據并與之前門限值進行指數加權滑動平均計算,得出新 的擁塞門限值。在具有高丟包率廣域網環境下,數據包丟失數的變化情況一定程度上反映了網絡 的擁塞狀況。當包丟失數增加時本方法根據丟包數增量計算擁塞窗口減小量,進行降窗 操作。假定第i時刻丟包數增加,此時丟包數為Iosti,前一時間點i-Ι時刻的丟包數為 Iosti+可知Iosti > lostH,因而丟包數增量lost_cnt = Iosti-IostH,此時擁塞窗口減 小量ε計算如下
ε - mmicwnd -1, cwnd χ Iog2^ost-cnt + ^ + //)), LcwndJ其中cwnd為當前擁塞窗口,μ為微調量且μ彡O。L·」表示下取整操作。“計算 如下
γ π 、lost cnt、μ = β(\--^―)
cwnd其中β為微調因子,它的取值區間為W,l)。丟包數增量越大,微調量越小;而擁 塞窗口越大,微調量越大。通過擁塞窗口減小量ε計算公式可知,ε隨lost_Cnt遞增,且當lost_Cnt固定
In^f CTli
時,ε隨(^1!(1遞增。 -,為丟包數增量占已發數據包的比例,根據微調量μ的計算公
cwnd
式可知,當該比例值較小時,將得到相對較大的微調量來獲得適當的ε值。計算獲得ε之后,新的擁塞窗口值通過如下公式計算更新cwnd = cwnd- ε
5
隨著lost_Cnt增大,擁塞增強,擁塞窗口減小量ε也相應增大,最終擁塞窗口下 調的幅度增大以響應增強的擁塞。快速恢復機制階段當發送方每收到一個重復ACK且包丟失數并未增加時,本發明 根據當時擁塞窗口 cwnd與擁塞門限值congjhreshold的大小關系分別采用兩種擁塞窗口 增長方式,如下
cwnd +1cwnd < cong threshold cwnd =
cwnd H---- cwnd > cong threshold
cwnd—如果擁塞窗口小于門限值,則采用每收到一個重復ACK擁塞窗口加1的乘性窗口 增長調整機制,否則采用收到一個窗口的重復ACK后擁塞窗口加1的加性窗口增長調整機 制。我們基于TCP Reno實現了本發明方法,并在網絡實驗床環境下進行了測試。方法 中一些參數設置如下α = 0. 875,β = 0. 1。圖2是我們進行測試用的實驗床拓撲環境,其中cl,c2為客戶端,負責接收數 據;sl,s2為服務器端,負責發送數據,si使用TCP Reno, s2使用本發明擁塞控制方法TCP CSU ;中間的WANem(開源工具,可模擬廣域網帶寬、延時、丟包等特性,網址http//wanem. sourceforge. net/)為廣域網模擬器。cl從sl進行傳統下載,c2從s2進行加速下載,通 過WANem設置帶寬、延時與丟包率,測出TCP Reno以及TCP CSU在各種環境下的速率及速 率比如表1所示。表1廣域網環境實驗床測試結果
瓶頸帶寬時延丟包率TCP Reno 速率 (Mbps)TCP CSU速率 (Mbps)速率比2M0.10%1.981.991.0120ms2%1.751.961.125%1.111.941.7510%0.5091.793.520.10%1.951.971.01100ms2%0.6891.912.775%0.3821.854.8410%0.2051.145.56500ms0.10%0.5161.653.20
權利要求
一種用于高丟包率廣域網環境下的擁塞控制方法,其特征在于,在數據傳送過程中,發送方收到重復ACK后所做處理包括以下兩個階段1)發送方檢測到包丟失數量增大時,判定此時網絡擁塞增強,計算擁塞門限值cong_threshold以及根據丟包數增量計算出擁塞窗口的減小量ε,將擁塞窗口減少ε以響應擁塞;2)發送方檢測到包丟失數量不變或者減小時,通過判斷擁塞窗口與階段1)中所計算擁塞門限值cong_threshold的大小關系來確定擁塞窗口所采取的增長方式。
2.根據權利要求1所述的用于高丟包率廣域網環境下的擁塞控制方法,其特征在于, 擁塞門限值congjhreshold為當前網絡的預估擁塞點,取為當前擁塞窗口 cwnd與當前擁 塞門限值congjhreshold'的指數加權滑動平均,即cong_threshold = α X cong_threshold' + (1- α ) X cwnd, 其中α為平滑因子。
3.根據權利要求1所述的用于高丟包率廣域網環境下的擁塞控制方法,其特征在于, 擁塞窗口減小量ε的計算方法為ε - mmicwnd -1, cwnd χ Iog2^ost-cnt + ^ + //)), LcwndJ其中lost_cnt為丟包數增量,即lost_cnt = Iosti-IostH,其中Iosti為當前丟包數, Iostp1為前一時間點i_l時刻的丟包數,μ為微調量且μ彡0,μ計算如下 …lost cnt、μ 二 β(}--cwna其中β為微調因子,取值區間為W,1)。
4.根據權利要求1-3任一項所述的用于高丟包率廣域網環境下的擁塞控制方法,所述 階段2)中,當擁塞窗口小于擁塞門限值congjhreshold,則采用每收到一個重復ACK擁塞 窗口加1的乘性窗口調整機制,即以cwnd+Ι作為更新后的窗口 ;否則采用收到一個窗口的重復ACK后擁塞窗口加1的加性窗口調整機制,即以cw^ +」;作為更新后的窗口。cwna
全文摘要
本發明公開了一種用于高丟包率廣域網環境下的擁塞控制方法,發送方通過檢測包丟失數量是否增大來判斷網絡擁塞狀態,自適應的調節擁塞窗口。如檢測到包丟失數量增大,將根據丟包數增大程度計算出擁塞窗口的減小量,擁塞窗口通過減去該減小量大小的窗口來響應擁塞;否則判斷擁塞窗口與擁塞門限值的大小關系來確定擁塞窗口所采取的增長方式。本發明在網絡出現丟包現象時,并不迅速降低擁塞窗口,而以包丟失數量的變化情況作為降窗依據,同時使用積極地窗口增長機制試探網絡可用帶寬。本方法能有效地適應高丟包率廣域網環境,獲得較高帶寬利用率。
文檔編號H04L1/16GK101977151SQ201010538208
公開日2011年2月16日 申請日期2010年11月9日 優先權日2010年11月9日
發明者曾勇軍, 王偉平, 王建新, 董蘋蘋 申請人:中南大學