專利名稱:一種實現多引擎并行處理器中數據包排序的方法
技術領域:
本發明涉及多引擎并行處理器技術領域,特別是指一種實現多引擎并行處理器中數據包排序的方法。
背景技術:
多引擎并行處理器為突破單引擎處理能力的局限性提供了解決方案。在理論上,如果不考慮接口的速度、硬件實現的資源量等因素,多引擎并行處理器的處理能力可以是無限的。在實際應用中,多引擎并行處理器通常在結構上劃分為多個負載層次,每個負載層次又分為多個負載通路,最底層的每個負載通路上分別有一個包文處理引擎(PE),這些引擎可以并行工作。假設負載總層次為N,任一個層次用n表示,該n滿足1≤n≤N。每一層共有m個負載通路,則從第一層到第n層的負載通路數依次為m1、m2......mn,則引擎的總數P為P=m1×m2×......×mn。
為方便說明,以下先定義幾個概念的縮寫層n的負載均衡模塊(Layer n Load Balance Unit),縮寫為LnBU;層n的輸入緩存模塊(Layer n Input Cache Unit),縮寫為InCU;層n的負載收集模塊(Layer n Load Pooling Unit),縮寫為LnPU;層n的輸出緩存模塊(Layer n Output Cache Unit),縮寫為OnCU。
下面以n=2,m1=2,m2=4,P=8為例進行說明。
參見圖1,圖1所示為8引擎并行處理器結構示意圖。包文在該多引擎并行處理器中的數據流為1.層1負載均衡模塊(L1BU,Layer 1 Load Balance Unit)根據負載均衡或循環復用(Round Robin)的仲裁策略將輸入的數據包分配到兩個層1輸入緩存模塊(I1CU,Layer 1 Input Cache Unit)。
2.兩個I1CU分別負責各自負載通路的數據輸入緩存。
3.兩個層2負載均衡模塊(L2BU,Layer 2 Load Balance Unit)分別根據負載均衡或循環復用(Round Robin)的仲裁策略將各自負載通路的數據包分配到四個層2輸入緩存模塊(I2CU,Layer 2 Input Cache Unit)中,每個I2CU對應一個包文處理引擎(PE,Packet Engine)。也就是說,每個L2BU將各自負載通路的數據包分配到四個PE中。
4.PE從I2CU中獲取待處理的數據包文,處理完成后將數據包文存放在層2輸出緩存模塊(O2CU,Layer 2 Output Cache Unit)中。
5.每個層2負載收集模塊(L2PU,Layer 2 Load Pooling Unit)分別從各自負載通路上的四個O2CU中收集四個包文處理引擎的輸出數據包,并按照一定的順序依次輸出到層1輸出緩存模塊(O1CU,Layer 1 Output CacheUnit)內。
6.O1CU分別負責各自負載通路的數據輸出緩存。
7.L1PU收集兩個O1CU的輸出數據包,并按一定的順序依次輸出。
從上述處理過程中可以看出,由于L1BU和L2BUi(其中i為0和1)在將數據包文分發到各個引擎時不考慮包文的順序;且由于每個包文處理引擎的負載不可能完全一樣,按順序分配到各個引擎的數據包,其處理完成的順序也無法保證。因此經過多引擎并行處理器處理完成后輸出的數據包,將無法保證邏輯序。
現有的保證多引擎并行處理器中數據包邏輯序的實現方法如下在數據包進入多引擎并行處理器前,使用排隊機(一般用軟件實現)在數據包中插入順序標記,多引擎并行處理器內各個處理模塊必須對該標記進行透傳。當數據包經過多引擎并行處理器處理完畢輸出后,再使用排隊機查詢數據包中的標記,根據標記對數據包進行排序。
由于排隊機的存在,現有的實現方法必然存在以下缺陷1.由于使用單獨的排隊機實現數據包排序,會額外占用系統資源;
2.如果排隊機無法及時完成多引擎并行處理器輸出的數據包的排序,將造成系統的擁塞,影響多引擎并行處理器的計算效率;3.應用排隊機實現數據包排序的過程中,需要將順序靠后,但先處理完成的數據包全部進行緩存,需要占用系統大量的共享內存。
發明內容
有鑒于此,本發明的目的在于提供一種實現多引擎并行處理器中數據包排序的方法,以解決多引擎處理中的數據包排序問題。
為達到上述目的,本發明的技術方案是這樣實現的一種實現多引擎并行處理器中數據包排序的方法,所述多引擎并行處理器包含一層以上的負載均衡模塊LBU,且每個LBU對應一個負載收集模塊LPU,該LPU與所對應的LBU處于同一層次,在多引擎并行處理器中,預設一個以上用于記錄標記信息的序列,且每個序列與一個LBU一一對應;所述LBU執行以下處理步驟A、LBU接收到待處理數據包,根據預設的分發原則將接收到的待處理數據包分發到下一層的處理模塊中,并將所分發的數據包進行標記,以指示該數據包所在負載通路,且將該標記記錄在與該LBU所對應的序列中;B、該LBU判斷其所對應的序列中記錄信息的個數是否達到預設的用于流控數據包個數的閾值,如果是,則停止分發操作,然后重復執行步驟B,否則,重復執行步驟A;所述與每個LBU對應的且與所對應的LBU處于同層的負載收集模塊LPU,執行以下處理步驟a、LPU判斷與其對應的LBU所對應的序列中記錄信息的個數是否為非空,如果是,執行步驟b;否則重復執行步驟a;b、LPU從該序列中順序讀取的一個標記信息,根據該標記信息獲取對應數據包所在位置,打開該位置所對應的輸出通道,等待一個完整的數據包通過,且只允許一個數據包通過,然后重復執行步驟a,直至所有包文輸出完畢。
較佳地,如果所述LBU為非最底層的LBU,則步驟A所述下一層的處理模塊為下一層的LBU;如果所述LBU為最底層的LBU,則步驟A所述下一層的處理模塊為包文處理引擎PE。
較佳地,如果所述負載均衡模塊LBU為最高層的LBU,步驟B所述用于流控數據包個數的閾值為數據輸入端口的數據包個數流控閾值;如果所述負載均衡模塊LBU為非最高層的LBU,則步驟B所述用于流控數據包個數的閾值為負載通路的數據包個數流控閾值。
較佳地,所述序列的寬度Bn為Bn=[log2(mn)],其中,[]表示進1取整運算,mn為LBU對應的下一層的負載通路數;最高層的LBU所對應的序列的深度為數據輸入端口的數據包個數流控閾值;非最高層LBU所對應的序列的深度為該層LBU所對應的上一層負載通路的數據包個數流控閾值。
較佳地,所述數據輸入端口的數據包個數流控閾值的確定方法為首先計算多引擎并行處理器緩存空間的大小,然后應用該緩存空間大小的值除以最小包文的長度值,獲得可容納的最大包文個數,再根據該最大包文個數以及預設的策略確定數據輸入端口的數據包個數流控閾值。
較佳地,所述計算多引擎并行處理器緩存空間的大小的方法為計算該多引擎并行處理器中所有輸入緩存模塊ICU和輸出緩存模塊OCU的緩存空間的總和。
較佳地,所述負載通路的數據包個數流控閾值的確定方法為首先計算該負載通路中所有緩存空間的大小,然后應用該緩存空間大小的值除以最小包文的長度值,獲得可容納的最大包文個數,再根據該最大包文個數以及預設的策略確定負載通路的數據包個數流控閾值。
較佳地,所述計算負載通路中所有緩存空間大小的方法為計算該負載通路中所有輸入緩存模塊ICU和輸出緩存模塊OCU的緩存空間的總和。
較佳地,所述預設的策略為根據資源開銷和/或對緩存效率的影響,確定流控閾值。
較佳地,所述序列由先進先出FIFO緩沖器承載。
較佳地,所述預設的分發原則包括但不限于負載均衡策略或循環復用(Round Robin)仲裁策略。
本發明的關鍵是,在數據流的分發過程中產生標記的編碼,并保存為一個序列,在數據流的收集過程中對保存在序列中的標記依次解碼,選中與該標記相對應的引擎通道或負載通道,依次輸出對應的一個完整的數據包,且只允許一個數據包輸出。從而解決了對輸出數據包的排序。
應用本發明,具有以下優點不需要使用單獨的排隊機實現數據包排序,減小了系統資源開銷;同時,由于排序功能與多引擎并行處理器結合,將排序對并行處理的效率影響降到最小,并降低了系統擁塞的可能性;多引擎并行處理器能夠保證數據包的邏輯序,不需要大量占用系統的共享內存。
圖1所示為8引擎并行處理器結構示意圖;圖2所示為應用本發明的8引擎并行處理器結構的編碼示意圖。
具體實施例方式
下面結合附圖及具體實施例,再對本發明做進一步地詳細說明。
本發明的思路是在數據流的分發過程中產生標記的編碼,并保存為一個序列,在數據流的收集過程中對保存在序列中的標記依次解碼,選中與該標記相對應的引擎通道或負載通道,依次輸出對應的一個完整的數據包,且只允許一個數據包輸出。從而完成對輸入數據包的標記和輸出數據包的排序。
為了保證按照預定的順序依次輸出各引擎處理的數據包,必須對輸入的數據包在各LnBU分發到各個負載通路或PE前進行唯一標記。在LnPU再按照預先做好的標記控制輸出包文的順序。
這里“唯一標記”的含義是指,在極限情況下多引擎并行處理器即芯片中所能同時容納的包文必需具有各自區別的標記,“唯一標記”的個數即為多引擎并行處理器中同時容納的包文的最大個數。該“最大個數”已經是多引擎并行處理器所能容納的極限了。通常,為了減少緩存的長度,需要對數據包個數進行流控,而進行流控就需要設置一個合理的流控閾值,以減少流控對緩存效率的影響。
在本發明中定義了兩類流控閾值一類是數據輸入端口的數據包個數流控閾值,其是用于流控輸入多引擎并行處理器的數據流,因此該類閾值就一個;另一類是負載通路的數據包個數流控閾值,其是用于流控輸入各個負載通路中的數據流,因此該類閾值有多個,其個數與多引擎并行處理器中實際的負載通路的個數相同。下面分別說明兩類閾值的設置過程。
設置數據輸入端口的數據包個數流控閾值的過程為首先計算多引擎并行處理器的緩存空間的大小,然后應用該緩存空間大小的值除以最小包文的長度值,獲得最多可容納的最大包文個數,再根據該最大包文個數以及預設的策略確定數據輸入端口的數據包個數流控閾值。上述計算多引擎并行處理器緩存空間的大小的方法為計算該多引擎并行處理器中所有輸入緩存模塊(ICU)和輸出緩存模塊(OCU)的緩存空間的總和。上述預設的策略為根據資源開銷和/或對緩存效率的影響來確定流控閾值。
仍以n=2,m1=2,m2=4,P=8為例,參見圖1,如果每個I1CU和O1CU的緩存空間大小為8Kbyte和9Kbyte,每個I2CU和O2CU的緩存空間大小為2Kbyte,那么,多引擎并行處理器緩存空間的大小,即整個芯片的緩存空間大小=每個I1CU的緩存空間大小×個數+每個O1CU的緩存空間大小×個數+每個I2CU的緩存空間大小×個數+O2CU的緩存空間大小×個數=8×2+9×2+2×8+2×8=66Kbyte,假設在極限情況下所有的包文長度為64字節的小包,則多引擎并行處理器中同時容納的包文的個數為66Kbyte/64byte,約為1000。在此,根據預定策略設置數據輸入端口的數據包個數流控閾值為256。也就是說,當多引擎并行處理器中同時容納的個數達到256時,必須對輸入的數據包進行流控。
設置負載通路的數據包個數流控閾值的過程為首先計算該負載通路中所有緩存空間的大小,然后應用該緩存空間大小的值除以最小包文的長度值,獲得最多可容納的最大包文個數,再根據該最大包文個數以及預設的策略確定負載通路的數據包個數流控閾值。上述計算負載通路中所有緩存空間大小的方法為計算該負載通路中所有ICU和OCU的緩存空間的總和。上述預設的策略為根據資源開銷和/或對緩存效率的影響來確定流控閾值。
仍以n=2,m1=2,m2=4,P=8為例,參見圖1,如果每個I2CU和O2CU的緩存空間大小為2Kbyte,那么,每個負載通路中所有緩存空間的大小=每個I2CU的緩存空間大小×個數+O2CU的緩存空間大小×個數=2×4+2×4=16Kbyte,假設在極限情況下所有的包文長度為64字節的小包,則該負載通路中同時容納的包文的個數為16Kbyte/64byte=256個包。在此,根據預定策略設置負載通路的數據包個數流控閾值為100。也就是說,當負載通路中同時容納的個數達到100時,必須對輸入該負載通路的數據包進行流控。
眾所周知,多引擎并行處理器通常包含一層以上的負載均衡模塊(LBU),且每個LBU對應一個負載收集模塊(LPU),該LPU與所對應的LBU處于同一層次。為了敘述方便,在本申請中,將用于從引擎并行處理器外部接收數據流的LBU稱為最高層的LBU,將用于給PE分配數據流的LBU稱為最底層的LBU。
最高層的LBU用于流控輸入多引擎并行處理器的數據流,也即用于流控數據包個數的閾值為數據輸入端口的數據包個數流控閾值;非最高層的LBU用于流控輸入各個負載通路中的數據流,也即用于流控數據包個數的閾值為負載通路的數據包個數流控閾值。
每個數據包在多引擎并行處理器中有P種可能的去向,即P個引擎中的一個。負載層次n中m個負載通路按0~mn編號,則負載層次n的編碼位數Bn為Bn=[log2(mn)]其中[]表示進1取整運算,即當小數位不為0時固定進1。將所有負載層次的編碼Bi按次序組合即得到標記的編碼。
下面仍以n=2,m1=2,m2=4,P=8為例,對編碼進行說明。參見圖2,圖2所示為應用本發明的8引擎并行處理器結構的編碼示意圖。本例中,每個數據包在該多引擎并行處理器中只有8種可能的去向,即8個PE中的一個。
L1BU將輸入數據包分發到兩個負載通道時,有兩個選擇,此時,L1BU記錄標記的編碼位數B1=[log2(m1)]=[log22]=1,編碼為1bit數據,由此產生標記的第一比特位。也就是說,用0和1來區分兩個負載通道。參見圖2,如果分發到負載通道0,則標記為1’b0,如果分發到負載通道1,標記為1’b1。并且,依次將對應每個數據包的該標記位保存在一個序列中,并將該序列定義為S_load11。該序列S_load11的寬度為B1,即在本例中該序列的寬度為一,該序列S_load11的最大深度為數據輸入端口的數據包個數流控閾值。
L2BU0將負載通路0的數據包分配到四個包文處理引擎中時,有四個選擇,此時,L2BU0記錄標記的編碼位數B2=[log2(m2)]=[log24]=2,編碼為2bit數據,由此產生標記的第二、三比特位。參見圖2,分發到4個PE的標記分別標記為2’b11、2’b10、2’b01、2’b00。并且,依次將對應每個數據包的該標記位保存在一個序列中,并將該序列定義為S_load21。序列S_PE0的寬度為B2,即在本例中該序列的寬度為二,最大深度為負載通路0中同時容納的包文的最大個數,即負載通路0所對應的負載通路的數據包個數流控閾值。
L2BU1與L2BU0處于同一層次且其所處環境也與L2BU0相同,因此其處理過程與L2BU0也是相同的。即L2BU1將負載通路1的數據包分配到四個包文處理引擎中時,有四個選擇,編碼為2bit數據,由此產生標記的第二、三比特位。依次將對應每個數據包的該標記位保存在一個序列中,并將該序列定義為S_load22。序列S_PE1的寬度為二,最大深度為負載通路1中同時容納的包文的最大個數,即負載通路1所對應的負載通路的數據包個數流控閾值。
由此可以看出,最高層的LBU所對應的序列的深度為數據輸入端口的數據包個數流控閾值;非最高層LBU所對應的序列的深度為該層LBU所對應的上一層負載通路的數據包個數流控閾值。
從上述處理過程中可看出,為了實現排序,在多引擎并行處理器中要預設一個以上用于記錄標記信息的序列,且每個序列與一個LBU一一對應;這樣也就形成了LBU、LPU以及序列三者的一一對應的關系。其中,序列S_load腳標用nk表示n為負載層次,K為本層中LBU的總個數,該層次中的某一個用k表示,該k滿足1≤k≤K。
有了上述準備工作后,下面具體說明對數據包進行排序的過程多引擎并行處理器中的LBU執行以下處理步驟A、LBU接收到待處理數據包,根據預設的分發原則,如負載均衡策略或循環Round Robin仲裁策略等,將接收到的待處理數據包分發到下一層的處理模塊中,并將所分發的數據包進行標記,以指示該數據包所在負載通路,且將該標記記錄在與該LBU所對應的序列中;B、該LBU判斷其所對應的序列中所記錄的個數是否達到預設的用于流控數據包個數的閾值,如果是,則停止分發操作,然后重復執行步驟B,否則,重復執行步驟A;上述LBU如果為非最底層的LBU,則上述步驟A中所述的下一層的處理模塊為下一層的LBU;上述LBU如果為最底層的LBU,則步驟A中所述下一層的處理模塊為PE。
多引擎并行處理器內與每個LBU對應的且與所對應的LBU處于同層的LPU,執行以下處理步驟a、LPU判斷出與其對應的LBU所對應的序列中的記錄信息為非空后,執行步驟b;
b、LPU從該序列中順序讀取的一個標記信息,根據該標記信息獲取對應數據包所在位置,打開該位置所對應的輸出通道,等待一個完整的數據包通過,且只允許一個數據包通過,然后重復執行步驟a,直至所有包文輸出完畢。
下面仍以n=2,m1=2,m2=4,P=8為例進行說明,參見圖1和圖2,。
L1BU將輸入數據包分發到兩個負載通道時對數據包進行第一次標記,同時順序將數據包的標記寫入序列S_load11中。當序列S_load11中所記錄的個數達到預設的數據輸入端口的數據包個數流控閾值,即序列S_load11為滿時,L1BU停止分發數據包,從而實現流控芯片的數據輸入端口。
L2BU0將負載通路0的數據包分配到四個包文處理引擎中時對數據包進行第二次標記,同時順序將數據包的標記寫入序列S_load21中。當序列S_load21為滿即達到負載通路0所對應的負載通路的數據包個數流控閾值時,停止分發數據包,流控負載通路0的數據輸入。
L2BU1將負載通路1的數據包分配到四個包文處理引擎中時對數據包進行第二次標記,同時順序將數據包的標記寫入序列S_load22中。當序列S_load122為滿即達到負載通路1所對應的負載通路的數據包個數流控閾值時,停止分發數據包,流控負載通路1的數據輸入。
當L2PU0判斷出序列S_load21中記錄的信息為非空時,L2PU0按順序從序列S_load21中讀取標記信息,通過對標記的解碼獲取對應該標記的包文的位置信息,比如標記為2’b01,表示最近需要通過的包位于通道1,L2PU0預先打開從引擎1到負載通道0的通道,等待一個完整的數據包通過,且只允許一個數據包通過后,依次打開下一個包文通過的通道,直至負載通道0中的所有包文通過L2PU0輸出。
當L2PU1判斷出序列S_load22中記錄的信息為非空時,L2PU1按順序從序列S_load22中讀取標記信息,通過對標記的解碼獲取對應該標記的包文的位置信息,比如標記為2’b01,表示最近需要通過的包位于通道1,L2PU1預先打開從引擎1到負載通道1的通道,等待一個完整的數據包通過,且只允許一個數據包通過后,依次打開下一個包文通過的通道,直至負載通道1中的所有包文通過L2PU1輸出。
當L1PU判斷出序列S_load11中記錄的信息為非空時,L1PU按順序從序列S_load11中讀取標記信息,通過對標記的解碼獲取對應該標記的包文的位置信息,比如標記為2’b1,表示最近需要通過的包位于負載通道1,L1PU預先打開從負載通道1到芯片輸出端口的通道,等待一個完整的數據包通過,且只允許一個數據包通過后,依次打開下一個包文通過的通道,直至該多引擎并行處理器中的所有包文通過L1PU輸出。
上述序列S_load11、序列S_load21和序列S_load22分別由一個先進先出FIFO緩沖器承載。
以上所述實施例均是以n=2,m1=2,m2=4,P=8為例進行說明,在實際應用中,負載的層次包括n=2、3、4、5......,但不限于上述值;每一層的負載通路數包括m=2、3、4、5......,但也不限于上述值。
再有,本發明所述的實現多引擎并行處理器中數據包排序的方法,并不僅僅適用于圖1所示結構的多引擎并行處理器,對于其他結構的多引擎處理器,只要其存在多層次多通路的結構,就同樣適用。
本發明所述的較佳實施例并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種實現多引擎并行處理器中數據包排序的方法,所述多引擎并行處理器包含一層以上的負載均衡模塊LBU,且每個LBU對應一個負載收集模塊LPU,該LPU與所對應的LBU處于同一層次,其特征在于,在多引擎并行處理器中,預設一個以上用于記錄標記信息的序列,且每個序列與一個LBU一一對應;所述LBU執行以下處理步驟A、LBU接收到待處理數據包,根據預設的分發原則將接收到的待處理數據包分發到下一層的處理模塊中,并將所分發的數據包進行標記,以指示該數據包所在負載通路,且將該標記記錄在與該LBU所對應的序列中;B、該LBU判斷其所對應的序列中記錄信息的個數是否達到預設的用于流控數據包個數的閾值,如果是,則停止分發操作,然后重復執行步驟B,否則,重復執行步驟A;所述與每個LBU對應的且與所對應的LBU處于同層的負載收集模塊LPU,執行以下處理步驟a、LPU判斷與其對應的LBU所對應的序列中記錄信息的個數是否為非空,如果是,執行步驟b;否則重復執行步驟a;b、LPU從該序列中順序讀取的一個標記信息,根據該標記信息獲取對應數據包所在位置,打開該位置所對應的輸出通道,等待一個完整的數據包通過,且只允許一個數據包通過,然后重復執行步驟a,直至所有包文輸出完畢。
2.根據權利要求1所述的方法,其特征在于,如果所述LBU為非最底層的LBU,則步驟A所述下一層的處理模塊為下一層的LBU;如果所述LBU為最底層的LBU,則步驟A所述下一層的處理模塊為包文處理引擎PE。
3.根據權利要求2所述的方法,其特征在于,如果所述負載均衡模塊LBU為最高層的LBU,步驟B所述用于流控數據包個數的閾值為數據輸入端口的數據包個數流控閾值;如果所述負載均衡模塊LBU為非最高層的LBU,則步驟B所述用于流控數據包個數的閾值為負載通路的數據包個數流控閾值。
4.根據權利要求3所述的方法,其特征在于,所述序列的寬度Bn為Bn=[log2(mn)],其中,[]表示進1取整運算,mn為LBU對應的下一層的負載通路數;最高層的LBU所對應的序列的深度為數據輸入端口的數據包個數流控閾值;非最高層LBU所對應的序列的深度為該層LBU所對應的上一層負載通路的數據包個數流控閾值。
5.根據權利要求3所述的方法,其特征在于,所述數據輸入端口的數據包個數流控閾值的確定方法為首先計算多引擎并行處理器緩存空間的大小,然后應用該緩存空間大小的值除以最小包文的長度值,獲得可容納的最大包文個數,再根據該最大包文個數以及預設的策略確定數據輸入端口的數據包個數流控閾值。
6.根據權利要求5所述的方法,其特征在于,所述計算多引擎并行處理器緩存空間的大小的方法為計算該多引擎并行處理器中所有輸入緩存模塊ICU和輸出緩存模塊OCU的緩存空間的總和。
7.根據權利要求3所述的方法,其特征在于,所述負載通路的數據包個數流控閾值的確定方法為首先計算該負載通路中所有緩存空間的大小,然后應用該緩存空間大小的值除以最小包文的長度值,獲得可容納的最大包文個數,再根據該最大包文個數以及預設的策略確定負載通路的數據包個數流控閾值。
8.根據權利要求7所述的方法,其特征在于,所述計算負載通路中所有緩存空間大小的方法為計算該負載通路中所有輸入緩存模塊ICU和輸出緩存模塊OCU的緩存空間的總和。
9.根據權利要求5或7所述的方法,其特征在于,所述預設的策略為根據資源開銷和/或對緩存效率的影響,確定流控閾值。
10.根據權利要求1所述的方法,其特征在于,所述序列由先進先出FIFO緩沖器承載。
11.根據權利要求1所述的方法,其特征在于,所述預設的分發原則包括但不限于負載均衡策略或循環復用仲裁策略。
全文摘要
本發明公開了一種實現多引擎并行處理器中數據包排序的方法,關鍵是,在數據流的分發過程中產生標記的編碼,并保存為一個序列,在數據流的收集過程中對保存在序列中的標記依次解碼,選中與該標記相對應的引擎通道或負載通道,依次輸出對應的一個完整的數據包,且只允許一個數據包輸出。從而解決了對輸出數據包的排序。應用本發明,具有以下優點不需要使用單獨的排隊機實現數據包排序,減小了系統資源開銷;同時,由于排序功能與多引擎并行處理器結合,將排序對并行處理的效率影響降到最小,并降低了系統擁塞的可能性;多引擎并行處理器能夠保證數據包的邏輯序,不需要大量占用系統的共享內存。
文檔編號H04L12/56GK1851649SQ200510093220
公開日2006年10月25日 申請日期2005年8月19日 優先權日2005年8月19日
發明者王海軍, 黃勇 申請人:華為技術有限公司