主動隊列管理方法和設備的制作方法
【專利摘要】本發明提供一種主動隊列管理方法和設備。該方法包括接收數據包;確定所述數據包屬于的流,以及確定所述數據包到達時的當前隊列長度;根據所述當前隊列長度以及預設的隊列閾值和預設的隊列容量,對所述數據包以及所述數據包屬于的流的包計數進行處理。本發明實施例可以實現基于流的主動隊列管理,并且實現復雜度低。
【專利說明】主動隊列管理方法和設備
【技術領域】
[0001]本發明涉及通信技術,尤其涉及一種主動隊列管理方法和設備。
【背景技術】
[0002]在網絡中,由于總會存在數據輸入速率大于數據輸出速率的情況,比如多個端口向一個端口轉發數據,所以無論多快的網絡,擁塞都可能存在。擁塞影響數據的有效傳輸,對網絡性能有不良影響。
[0003]目前主要有兩類方法可以實現網絡擁塞管理。一類是在源節點調整數據發送速率來控制擁塞;比如,傳輸控制協議(Transmit Control Protocol, TCP)擁塞控制機制就是一種源節點根據數據包丟失的情況控制數據發送速率來實現擁塞控制的方法。另一類是在數據的傳輸路徑上對擁塞進行管理,主要是通過檢測擁塞并以某種方式丟棄或標記數據包實現擁塞控制;丟棄或標記數據包可以將網絡擁塞信息隱式或顯式地傳遞到源節點,進而影響源節點的數據發送速率,所以也能實現擁塞控制。對于后一類方法,又可進一步分為兩類。一類是被動的隊列管理策略,以尾部丟包策略為代表。尾部丟包策略僅當隊列滿的時候才丟棄數據包。在這種策略下,隊列平均長度大,通過隊列的數據包會經歷較長的排隊時間,因此端到端延遲高,此外,當隊列滿時,需要進入隊列的數據流會發生大量連續丟包。對于TCP流,這會引起超時重傳,進而導致低吞吐率和全局同步問題。另一類是主動隊列管理策略,以隨機早期偵測(Random Early Detection, RED) O策略為代表。RED的基本思想是,在隊列滿之前,根據網絡擁塞狀況以一定概率丟包。RED的問題是實現復雜度高,并且丟包時不區分流。
【發明內容】
[0004]有鑒于此,本發明實施例提供了一種主動隊列管理方法和設備,用以解決現有技術中存在的復雜度高、不區分流的問題。
[0005]第一方面,提供了一種主動隊列管理方法,包括:
[0006]確定接收的數據包屬于的流;
[0007]根據預設的隊列閾值和預設的隊列容量,確定所述數據包到達時的當前隊列長度所在的閾值區間;
[0008]根據所述閾值區間,對所述數據包以及所述數據包屬于的流的包計數進行處理。
[0009]結合第一方面,在第一方面的第一種可能的實現方式中,所述根據所述閾值區間,對所述數據包以及所述數據包屬于的流的包計數進行處理,包括:
[0010]當所述閾值區間是所述當前隊列長度小于最小的隊列閾值時,將所述數據包放入隊列,并將所述數據包屬于的流的包計數加I;或者,
[0011]當所述閾值區間是所述當前隊列長度大于或等于最小的隊列閾值,且小于隊列容量時,根據預設的閾值區間與丟包間隔的對應關系,確定所述當前隊列長度對應的丟包間隔,根據所述當前隊列長度對應的丟包間隔和所述數據包屬于的流的當前包計數,對所述數據包以及所述數據包屬于的流的包計數進行處理;或者,
[0012]當所述閾值區間是所述當前隊列長度等于所述隊列容量,丟棄所述數據包,并將所述數據包所屬的流的包計數置為O。
[0013]結合第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述根據所述當前隊列長度對應的丟包間隔和所述數據包屬于的流的當前包計數,對所述數據包以及所述數據包屬于的流的包計數進行處理,包括:
[0014]判斷所述當前包計數是否小于所述當前隊列長度對應的丟包間隔;
[0015]當所述當前包計數小于所述當前隊列長度對應的丟包間隔時,將所述數據包放入隊列,并將所述數據包所屬的流的包計數加I;或者,
[0016]當所述當前包計數大于或等于所述當前隊列長度對應的丟包間隔時,丟棄所述數據包,并將所述數據包所屬的流的包計數置為O。
[0017]結合第一方面的第一種可能的實現方式,在第一方面的第三種可能的實現方式中,所述預設的閾值區間與丟包間隔的對應關系表明:所述當前隊列長度的值越大,則所述丟包間隔越小。
[0018]結合第一方面或第一方面的第一種至第三種任一種可能的實現方式,在第一方面的第四種可能的實現方式中,所述確定所述數據包屬于的流,包括:
[0019]對所述數據包的包頭信息進行哈希計算,得到哈希值,將得到的哈希值確定為所述數據包所屬的流的流號。
[0020]第二方面,提供了一種主動隊列管理設備,包括:
[0021]計算模塊,用于確定接收的數據包屬于的流;
[0022]定位模塊,用于根據預設的隊列閾值和預設的隊列容量,確定所述數據包到達時的當前隊列長度所在的閾值區間;
[0023]動作模塊,用于根據所述閾值區間,對所述數據包以及所述數據包屬于的流的包計數進行處理。
[0024]結合第二方面,在第二方面的第一種可能的實現方式中,所述動作模塊包括:
[0025]第一處理單元,用于當所述閾值區間是所述當前隊列長度小于最小的隊列閾值時,將所述數據包放入隊列,并將所述數據包屬于的流的包計數加I ;或者,
[0026]第二處理單元,用于當所述閾值區間是所述當前隊列長度大于或等于最小的隊列閾值,且小于隊列容量時,根據預設的閾值區間與丟包間隔的對應關系,確定所述當前隊列長度對應的丟包間隔,根據所述當前隊列長度對應的丟包間隔和所述數據包屬于的流的當前包計數,對所述數據包以及所述數據包屬于的流的包計數進行處理;或者,
[0027]第三處理單元,用于當所述閾值區間是所述當前隊列長度等于所述隊列容量,丟棄所述數據包,并將所述數據包所屬的流的包計數置為O。
[0028]結合第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,所述第二處理單元包括:
[0029]判斷子單元,用于判斷所述當前包計數是否小于所述當前隊列長度對應的丟包間隔;
[0030]更新子單元,用于當所述當前包計數小于所述當前隊列長度對應的丟包間隔時,將所述數據包所屬的流的包計數加I;或者,當所述當前包計數大于或等于所述當前隊列長度對應的丟包間隔時,將所述數據包所屬的流的包計數置為O ;
[0031]包操作子單元,用于當所述當前包計數小于所述當前隊列長度對應的丟包間隔時,將所述數據包放入隊列;或者,當所述當前包計數大于或等于所述當前隊列長度對應的丟包間隔時,丟棄所述數據包。
[0032]結合第二方面的第一種可能的實現方式,在第二方面的第三種可能的實現方式中,所述第二處理單元采用的所述預設的閾值區間與丟包間隔的對應關系表明:所述當前隊列長度的值越大,則所述丟包間隔越小。
[0033]結合第二方面或第二方面的第一種至第三種任一種可能的實現方式,在第二方面的第四種可能的實現方式中,所述確定模塊具體用于:
[0034]對所述數據包的包頭信息進行哈希計算,得到哈希值,將得到的哈希值確定為所述數據包所屬的流的流號;以及,確定所述數據包到達時的當前隊列長度。
[0035]通過上述技術方案,本發明實施例在進行隊列管理時,會確定數據包屬于的流,會對該流的包進行針對性的處理,因此可以實現基于流的有區別地處理;在處理時可以根據預設的參數進行處理,相對于現有技術參數難以確定以及處理復雜的問題,可以降低處理復雜度。
【專利附圖】
【附圖說明】
[0036]為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0037]圖1為本發明實施例提供的一種主動隊列管理方法的流程示意圖;
[0038]圖2為本發明實施例提供的另一種主動隊列管理方法的流程示意圖;
[0039]圖3為本發明實施例提供的一種主動隊列管理設備的結構示意圖;
[0040]圖4為本發明實施例提供的另一種主動隊列管理設備的結構示意圖。
【具體實施方式】
[0041]為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0042]為了更好的與現有技術作對比,先對現有技術描述如下。
[0043]尾部丟包(Drop Tail,DT)是網絡設備中最為常用的一種隊列管理策略。尾部丟包隊列管理策略僅在隊列滿時才將到達的數據包丟棄。其具體實現描述如下:
[0044]當一個數據包到達時,
[0045]首先,計算數據包進入隊列后的隊列長度L ;
[0046]然后,比較L與隊列容量Lmax,確定是否丟棄當前數據包:
[0047]I)如果L>Lmax,丟棄當前數據包;
[0048]2)否則,將數據包放入隊列。[0049]在上述描述中,隊列長度和隊列容量可以按字節計算也可以按包數目計算,因具體實現而異。
[0050]尾部丟包策略僅當隊列滿時才進行丟包,存在以下缺點:
[0051]第一,高端到端延遲。尾部丟包策略在隊列滿之前都不進行擁塞控制,所以隊列平均長度大。數據包經過該隊列時會經歷較長的排隊時間,從而導致高端到端延遲。
[0052]第二,低吞吐率。當隊列滿時,要進入該隊列的所有數據流的數據包都會被丟棄。這一方面導致大量傳輸數據丟失,另一方面,對于TCP流而言,當它們發生丟包時,TCP擁塞控制會使得它們降低發送速率。大量TCP流同時降低發送速率,會導致網絡吞吐率下降。尤其是當TCP流發生大量連續丟包時,它們往往不能快速重傳,而只能通過超時重傳恢復數據傳輸。由于超時時間長(一般為200ms),其間如果TCP發送窗口已滿,在超時前TCP流將不再能發送數據,從而導致極低的網絡吞吐率極低。
[0053]第三,TCP流全局同步。如上一點所述,TCP流同時丟包,使得它們的擁塞控制機制同時起作用,從而導致TCP流同步地改變發送速率,即TCP流全局同步現象。這種同步會使得低TCP流發送速率時網絡低吞吐率,高TCP流發送速率時網絡擁塞,
[0054]隨機早期偵測(Random Early Detection, RED)是一種根據平均隊列長度按一定概率進行丟包的主動隊列管理策略。RED的基本思想是通過監控隊列的平均長度來探測擁塞,一旦發現擁塞逼近,就隨機地丟包以將網絡擁塞反饋給源節點,使它們在隊列溢出之前降低發送數據速率,以避免網絡擁塞。RED使用了最小隊列閾值(Tmin),最大隊列閾值(Tmax),隊列長度權值(《)和最大丟包概率(Pmax)等參數,它的具體實現如下: [0055]當一個數據包到達時,
[0056]首先,計算平均隊列長度(AvgQ)。RED采用當前和過去隊列長度的指數加權移動平均(Exponential Weighted Moving Average,EWMA)計算平均隊列長度。當隊列非空時,計算方法可表示為=AvgQk=(1-W)AvgQk-JW^Qk,其中AvgQk是當前平均隊列長度,AvgQlrf是上一次平均隊列長度,Qk是當前隊列長度,w是權值。當隊列空時,計算方法為:AvgQk=(l-w)MAvgQlri,其中M是隊列空閑期間可傳輸的數據包數,它由帶寬、隊列空閑時間以及平均包長計算得到。
[0057]其次,計算丟包概率(Pa)。當AvgQ〈Tmin 時,Pa=O ;當 AvgQ>Tmax 時,Pa=I ;否則,Pa=I/(l-count*Pb),其中 Pb=Pmax* (AvgQ-Tmin) / (Tmax-Tmin),count 是自上次丟包以來進入隊列的包數目。
[0058]第三,以丟包概率Pa進行丟包:當Pa為O時不丟包;當Pa為I時丟包;當0〈Pa〈l時,按該概率丟包。
[0059]RED方法能實現較短的平均隊列長度且避免全局同步,但存在以下缺點:
[0060]第一,運算復雜,處理時間長。由于AvgQ和Pa的計算涉及大量乘法運算,所以RED方法運算量大,處理時間長,資源要求高。
[0061]第二,RED性能受隊列長度權值(W)和最大丟包概率(Pmax)等參數影響大,但這些參數的選取與環境相關度大,不容易確定。
[0062]第三,RED丟包時不區分流,這使得丟包在各流之間不公平,同時也不利于避免單個流連續丟包。
[0063]從上述描述可以看出,現有的主動隊列管理策略都存在一定的問題,為此,本發明實施例給出一種新的主動隊列管理策略,可以稱為基于流的間隔丟包的主動隊列管理策略。
[0064]本發明實施例提出的基于流的間隔丟包的主動隊列管理策略,其基本思想是:根據當前隊列的長度,不同的流按其歷史信息以不同間隔丟包。其實現中涉及以下元素:一個哈希函數H(key),—張流記錄表FTable, k個隊列閾值參數Tj (其中,」=0,1^“,1^-1且
k個包間隔參數Ij (其中,j=0,1,…,k-Ι且VIA-Mh)、一個隊列容量Lmax和一套基于流的間隔丟包機制。上述涉及的參數可以由實現者根據實際情況設定。具體實施例可以參見下述實施例。
[0065]參見圖1,為本發明實施例提供的一種主動隊列管理方法的流程示意圖,包括:
[0066]11:確定接收的數據包屬于的流;
[0067]可選的,可以對該數據包的包頭信息進行哈希計算,得到哈希值,將得到的哈希值作為該數據包屬于的流的流號。具有相同哈希值的數據包被認為屬于同一個流。
[0068]用于哈希計算的包頭信息可以由實現者具體指定,以以太網交換機為例,包頭信息可以是以太網幀的源媒體接入控制(Media Access ControI,MAC)地址或目的MAC地址。
[0069]哈希值的取值范圍與流表容量有關,若流表容量為N個流表條目,則哈希值的取值為O到N-1。
[0070]流表用于記錄各流的統計信息。流表的每一行是一個流條目,其行號就是流號,每個流條目存儲該流自最近一次丟包以來成功進入隊列的包數目,稱為包計數(Cv)。流表中包計數的初始值為O,在具體實現中,流表可以是一個容量為N個流條目的大小的表格,如表1所示。為了防止包計數溢出,可以約定一個上限值,當Cv到達上限值后再對Cv自增,Cv值不改變。
[0071]表1
[0072]
【權利要求】
1.一種主動隊列管理方法,其特征在于,包括: 確定接收的數據包屬于的流; 根據預設的隊列閾值和預設的隊列容量,確定所述數據包到達時的當前隊列長度所在的閾值區間; 根據所述閾值區間,對所述數據包以及所述數據包屬于的流的包計數進行處理。
2.根據權利要求1所述的方法,其特征在于,所述根據所述閾值區間,對所述數據包以及所述數據包屬于的流的包計數進行處理,包括: 當所述閾值區間是所述當前隊列長度小于最小的隊列閾值時,將所述數據包放入隊列,并將所述數據包屬于的流的包計數加I ;或者, 當所述閾值區間是所述當前隊列長度大于或等于最小的隊列閾值,且小于隊列容量時,根據預設的閾值區間與丟包間隔的對應關系,確定所述當前隊列長度對應的丟包間隔,根據所述當前隊列長度對應的丟包間隔和所述數據包屬于的流的當前包計數,對所述數據包以及所述數據包屬于的流的包計數進行處理;或者, 當所述閾值區間是所述當前隊列長度等于所述隊列容量,丟棄所述數據包,并將所述數據包所屬的流的包計數置為O。
3.根據權利要求2所述的方法,其特征在于,所述根據所述當前隊列長度對應的丟包間隔和所述數據包屬于的流的當前包計數,對所述數據包以及所述數據包屬于的流的包計數進行處理,包括: 判斷所述當前包計數是否小于所述當前隊列長度對應的丟包間隔; 當所述當前包計數小于所述當前隊列長度對應的丟包間隔時,將所述數據包放入隊列,并將所述數據包所屬的流的包計數加I ;或者, 當所述當前包計數大于或等于所述當前隊列長度對應的丟包間隔時,丟棄所述數據包,并將所述數據包所屬的流的包計數置為O。
4.根據權利要求2所述的方法,其特征在于,所述預設的閾值區間與丟包間隔的對應關系表明:所述當前隊列長度的值越大,則所述丟包間隔越小。
5.根據權利要求1-4任一項所述的方法,其特征在于,所述確定所述數據包屬于的流,包括: 對所述數據包的包頭信息進行哈希計算,得到哈希值,將得到的哈希值確定為所述數據包所屬的流的流號。
6.一種主動隊列管理設備,其特征在于,包括: 計算模塊,用于確定接收的數據包屬于的流; 定位模塊,用于根據預設的隊列閾值和預設的隊列容量,確定所述數據包到達時的當前隊列長度所在的閾值區間; 動作模塊,用于根據所述閾值區間,對所述數據包以及所述數據包屬于的流的包計數進行處理。
7.根據權利要求6所述的設備,其特征在于,所述動作模塊包括: 第一處理單元,用于當所述閾值區間是所述當前隊列長度小于最小的隊列閾值時,將所述數據包放入隊列,并將所述數據包屬于的流的包計數加I ;或者, 第二處理單元,用于當所述閾值區間是所述當前隊列長度大于或等于最小的隊列閾值,且小于隊列容量時,根據預設的閾值區間與丟包間隔的對應關系,確定所述當前隊列長度對應的丟包間隔,根據所述當前隊列長度對應的丟包間隔和所述數據包屬于的流的當前包計數,對所述數據包以及所述數據包屬于的流的包計數進行處理;或者, 第三處理單元,用于當所述閾值區間是所述當前隊列長度等于所述隊列容量,丟棄所述數據包,并將所述數據包所屬的流的包計數置為O。
8.根據權利要求7所述的設備,其特征在于,所述第二處理單元包括: 判斷子單元,用于判斷所述當前包計數是否小于所述當前隊列長度對應的丟包間隔;更新子單元,用于當所述當前包計數小于所述當前隊列長度對應的丟包間隔時,將所述數據包所屬的流的包計數加I ;或者,當所述當前包計數大于或等于所述當前隊列長度對應的丟包間隔時,將所述數據包所屬的流的包計數置為O ; 包操作子單元,用于當所述當前包計數小于所述當前隊列長度對應的丟包間隔時,將所述數據包放入隊列;或者,當所述當前包計數大于或等于所述當前隊列長度對應的丟包間隔時,丟棄所述數據包。
9.根據權利要求7所述的設備,其特征在于,所述第二處理單元采用的所述預設的閾值區間與丟包間隔的對應關系表明:所述當前隊列長度的值越大,則所述丟包間隔越小。
10.根據權利要求6-9任一項 所述的設備,其特征在于,所述確定模塊具體用于: 對所述數據包的包頭信息進行哈希計算,得到哈希值,將得到的哈希值確定為所述數據包所屬的流的流號;以及,確定所述數據包到達時的當前隊列長度。
【文檔編號】H04L12/863GK103929372SQ201310010306
【公開日】2014年7月16日 申請日期:2013年1月11日 優先權日:2013年1月11日
【發明者】胡農達, 包雯韜 申請人:華為技術有限公司, 中國科學院計算技術研究所