專利名稱:實(shí)現(xiàn)報(bào)文保序的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信技術(shù),特別涉及實(shí)現(xiàn)報(bào)文保序的方法和裝置。
背景技術(shù):
隨著物理接口速率的不斷提升,網(wǎng)絡(luò)通信設(shè)備中CPU的轉(zhuǎn)發(fā)核(core)數(shù)也隨之增力口。目前,通常采用并行工作方式使CPU中各個(gè)轉(zhuǎn)發(fā)核并行處理報(bào)文流,以期提高轉(zhuǎn)發(fā)性能,具體可如圖1所示。并行工作方式雖然充分利用了多核并行轉(zhuǎn)發(fā)能力,且在大多數(shù)情況下也的確提高了轉(zhuǎn)發(fā)性能,但是,針對某一個(gè)轉(zhuǎn)發(fā)核而言,當(dāng)一條報(bào)文流(其實(shí)質(zhì)上為具有相同協(xié)議關(guān)鍵字的報(bào)文集合)的流量大于該轉(zhuǎn)發(fā)核當(dāng)前的負(fù)載時(shí),為避免報(bào)文流中的報(bào)文被丟棄,需要將報(bào)文流中的一些報(bào)文分發(fā)到其他轉(zhuǎn)發(fā)核上去處理,即出現(xiàn)了屬于同一條報(bào)文流的報(bào)文被不同轉(zhuǎn)發(fā)核處理的情況。如此,如果不同轉(zhuǎn)發(fā)核處理報(bào)文的時(shí)間不匹配,就會(huì)導(dǎo)致同一條報(bào)文流中的報(bào)文不是按照接收順序發(fā)送的,而數(shù)據(jù)通信系統(tǒng)要求報(bào)文發(fā)送順序與接收順序必須一致,基于此,網(wǎng)絡(luò)通信設(shè)備就需要在報(bào)文發(fā)送之前對同一條報(bào)文流中的報(bào)文進(jìn)行保序操作?,F(xiàn)有技術(shù)中,一旦涉及到報(bào)文保序,就會(huì)相應(yīng)涉及到緩存,定時(shí)老化等問題。由于僅在一條報(bào)文流的流量大于某個(gè)轉(zhuǎn)發(fā)核當(dāng)前的負(fù)載時(shí),才會(huì)將報(bào)文分發(fā)到不同的轉(zhuǎn)發(fā)核, 即不能事先知道同一條報(bào)文流中的報(bào)文在不同轉(zhuǎn)發(fā)核之間的分布,以及在不同轉(zhuǎn)發(fā)核上的處理延遲,因此,報(bào)文保序所需要的緩存容量就無法確定。如果緩存容量大小,會(huì)導(dǎo)致報(bào)文流中的報(bào)文過早丟棄,太大會(huì)導(dǎo)致緩存資源的過度消耗,進(jìn)而引起系統(tǒng)反應(yīng)(如接收端無法獲得報(bào)文緩存)。至于定時(shí)老化問題,其也會(huì)由于不能事先知道同一條報(bào)文流中的報(bào)文在不同轉(zhuǎn)發(fā)核之間的分布,以及在不同轉(zhuǎn)發(fā)核上的處理延遲而導(dǎo)致無法確定所需要的老化時(shí)間,如果老化時(shí)間設(shè)置太小會(huì)導(dǎo)致過早丟棄,太大會(huì)增加緩存負(fù)擔(dān)。綜上可以看出,一種能夠避免緩存以及定時(shí)老化等問題的報(bào)文保序方法是當(dāng)前亟待解決的技術(shù)問題。
發(fā)明內(nèi)容
本發(fā)明提供了實(shí)現(xiàn)報(bào)文保序的方法和裝置,以便在對報(bào)文保序時(shí)避免緩存以及定時(shí)老化等問題?!N實(shí)現(xiàn)報(bào)文保序的方法,包括A,網(wǎng)絡(luò)通信設(shè)備上的隊(duì)列區(qū)控制單元將已接收的報(bào)文依次存入共享隊(duì)列區(qū)輸入隊(duì)列,并將共享隊(duì)列區(qū)輸入隊(duì)列提供給首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核,所述第一轉(zhuǎn)發(fā)核輪詢共享隊(duì)列區(qū)輸入隊(duì)列,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的每個(gè)共享隊(duì)列區(qū)并處理;B,所述第一轉(zhuǎn)發(fā)核處理完當(dāng)前共享隊(duì)列區(qū)中對應(yīng)報(bào)文隊(duì)列的所有報(bào)文后,判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,如果否,提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核處理,并執(zhí)行步驟C,如果是,提供處理后的共享隊(duì)列區(qū)給所述網(wǎng)絡(luò)通信設(shè)備上的保序處理單元,并執(zhí)行步驟D ;C,所述下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行步驟B中所述第一轉(zhuǎn)發(fā)核執(zhí)行的操作;D,所述保序處理單元獲取共享隊(duì)列區(qū)中的報(bào)文,并按照接收順序進(jìn)行串行化處理以供報(bào)文發(fā)送。一種用于實(shí)現(xiàn)報(bào)文保序的裝置,包括至少一個(gè)參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,報(bào)文接收隊(duì)列和報(bào)文發(fā)送隊(duì)列,其關(guān)鍵在于,該裝置還包括隊(duì)列區(qū)控制單元和保序處理單元;其中,所述隊(duì)列區(qū)控制單元用于將已接收的報(bào)文存入共享隊(duì)列區(qū)輸入隊(duì)列,并提供該共享隊(duì)列區(qū)輸入隊(duì)列給所述裝置上首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核;第一轉(zhuǎn)發(fā)核輪詢共享隊(duì)列區(qū)輸入隊(duì)列,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的共享隊(duì)列區(qū)并處理,所述第一轉(zhuǎn)發(fā)核每處理完一個(gè)共享隊(duì)列區(qū)中對應(yīng)報(bào)文隊(duì)列的所有報(bào)文后,判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,如果否,提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,由下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行所述第一轉(zhuǎn)發(fā)核執(zhí)行的操作,如果是,提供處理后的共享隊(duì)列區(qū)給所述保序處理單元;所述保序處理單元用于獲取共享隊(duì)列區(qū),并對獲取的共享隊(duì)列區(qū)中的報(bào)文按照接收順序進(jìn)行串行化處理,以供處理后的報(bào)文發(fā)送。由以上技術(shù)方案可以看出,本發(fā)明中,由首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核先處理共享隊(duì)列區(qū)輸入隊(duì)列中的共享隊(duì)列區(qū),其中,共享隊(duì)列區(qū)包括每一參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,每一個(gè)轉(zhuǎn)發(fā)核將處理后的共享隊(duì)列區(qū)提供給下一個(gè)相鄰的執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核處理,依次類推,直至最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核將處理后的共享隊(duì)列區(qū)提供給保序處理單元,以便保序處理單元對獲取的共享隊(duì)列區(qū)中的報(bào)文按照接收順序進(jìn)行串行化處理,實(shí)現(xiàn)了按照報(bào)文接收順序發(fā)送報(bào)文的目的,即實(shí)現(xiàn)了報(bào)文保序。本發(fā)明提供的報(bào)文保序,對于共享隊(duì)列區(qū)輸入隊(duì)列中的共享隊(duì)列區(qū)按順序分別被各個(gè)轉(zhuǎn)發(fā)核處理,對于同一共享隊(duì)列區(qū)來說轉(zhuǎn)發(fā)核之間串行處理,最后各個(gè)處理后的共享隊(duì)列區(qū)又按照進(jìn)入共享隊(duì)列區(qū)輸入隊(duì)列的順序,進(jìn)入到共享隊(duì)列區(qū)輸出隊(duì)列后進(jìn)行報(bào)序處理,因此不涉及緩存,定時(shí)老化等問題。
圖1為現(xiàn)有技術(shù)中并行工作方式示意圖;圖2為本發(fā)明實(shí)施例提供的基本流程圖;圖3為本發(fā)明實(shí)施例提供的詳細(xì)流程圖;圖4為本發(fā)明實(shí)施例提供的共享隊(duì)列區(qū)的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例提供的步驟312的實(shí)現(xiàn)流程圖;圖6為本發(fā)明實(shí)施例提供的對應(yīng)圖3中流程的示意圖;圖7為本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)圖;圖8為本發(fā)明相鄰的兩個(gè)轉(zhuǎn)發(fā)核之間的訪問通道示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明提供的方法主要是避免現(xiàn)有技術(shù)在進(jìn)行報(bào)文保序時(shí)所涉及的緩存,定時(shí)老化等問題,圖2對本發(fā)明實(shí)施例提供的方法進(jìn)行了描述。參見圖2,圖2為本發(fā)明實(shí)施例提供的基本流程圖。該流程主要應(yīng)用于網(wǎng)絡(luò)通信設(shè)備上,其中,該網(wǎng)絡(luò)通信設(shè)備具體實(shí)現(xiàn)時(shí)可為路由器,也可為其他具有路由功能的設(shè)備,比如交換機(jī)等,本發(fā)明實(shí)施例并不具體限定?;诖耍鐖D2所示,該流程可包括以下步驟步驟201,網(wǎng)絡(luò)通信設(shè)備上的隊(duì)列區(qū)控制單元將已接收的報(bào)文依次存入共享隊(duì)列區(qū)輸入隊(duì)列,并提供該共享隊(duì)列區(qū)輸入隊(duì)列給所述網(wǎng)絡(luò)通信設(shè)備上首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核,第一轉(zhuǎn)發(fā)核輪詢共享隊(duì)列區(qū)輸入隊(duì)列,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的每個(gè)共享隊(duì)列區(qū)并處理。本步驟201中,隊(duì)列區(qū)控制單元將已接收的報(bào)文存入共享隊(duì)列區(qū)輸入隊(duì)列的操作具體可參見圖3中的步驟302至步驟305中的描述。步驟202,第一轉(zhuǎn)發(fā)核處理完當(dāng)前共享隊(duì)列區(qū)中對應(yīng)報(bào)文隊(duì)列的所有報(bào)文后,判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,如果否,提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,并執(zhí)行步驟203,如果是,提供處理后的共享隊(duì)列區(qū)給所述網(wǎng)絡(luò)通信設(shè)備上的保序處理單元,并執(zhí)行步驟204。本步驟202執(zhí)行的操作具體可參見圖3中步驟306至步驟309的操作。另外,本實(shí)施例中,第一轉(zhuǎn)發(fā)核為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核的情況是所述網(wǎng)絡(luò)通信設(shè)備僅包含一個(gè)用于轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核。步驟203,下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核按照步驟202中第一轉(zhuǎn)發(fā)核執(zhí)行的操作執(zhí)行。從步驟202至步驟203可以看出,第一轉(zhuǎn)發(fā)核先處理共享隊(duì)列區(qū),并將處理后的共享隊(duì)列區(qū)提供給下一個(gè)轉(zhuǎn)發(fā)核處理,依次類推,直至最后執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核提供處理后的共享隊(duì)列區(qū)給保序處理單元,以便保序處理單元執(zhí)行步驟204。步驟204,保序處理單元獲取共享隊(duì)列區(qū)中的報(bào)文,并按照接收順序進(jìn)行串行化處理以供報(bào)文發(fā)送。本步驟204的描述可參見圖3中步驟311至步驟312的描述。以上對本發(fā)明實(shí)施例提供的方法進(jìn)行了簡單描述。在上述流程中,可預(yù)先對網(wǎng)絡(luò)通信設(shè)備上所有參與轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)核按照順序編號(hào)。 基于此,本實(shí)施例中的第一轉(zhuǎn)發(fā)核可為編號(hào)最小的轉(zhuǎn)發(fā)核,最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核相應(yīng)為編號(hào)最大的轉(zhuǎn)發(fā)核;或者,第一轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核,最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核相應(yīng)為編號(hào)最小的轉(zhuǎn)發(fā)核。下面以第一轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核,最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核為例,其他情況原理類似,通過圖3對圖2所示的流程進(jìn)行詳細(xì)描述。參見圖3,圖3為本發(fā)明實(shí)施例提供的詳細(xì)流程圖。本實(shí)施例中,網(wǎng)絡(luò)通信設(shè)備上所有參與轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)核功能完全相同,都是用于報(bào)文的轉(zhuǎn)發(fā)處理。如果該網(wǎng)絡(luò)通信設(shè)備上所有參與轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)核按照順序進(jìn)行的編號(hào),分別為core-1,core-2, . . . core-N,其中,首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核即core-Ι,最后執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核即core-N。
基于此,如圖3所示,該流程可包括以下步驟步驟301,網(wǎng)絡(luò)通信設(shè)備上的報(bào)文接收器按照先進(jìn)先出(FIFO :First In First Out)順序存放接收到的報(bào)文至報(bào)文接收隊(duì)列中。步驟302,網(wǎng)絡(luò)通信設(shè)備上的隊(duì)列區(qū)控制單元在設(shè)定時(shí)間到達(dá)時(shí),輪詢所述報(bào)文接收隊(duì)列,如果該報(bào)文接收隊(duì)列為空,則結(jié)束當(dāng)前流程;否則,執(zhí)行步驟303。本步驟302中,隊(duì)列區(qū)控制單元實(shí)時(shí)或者以固定時(shí)間為間隔周期性地執(zhí)行輪詢所述報(bào)文接收隊(duì)列是否為空的操作。步驟303,隊(duì)列區(qū)控制單元從報(bào)文接收隊(duì)列中獲取所有報(bào)文。步驟304,隊(duì)列區(qū)控制單元?jiǎng)?chuàng)建共享隊(duì)列區(qū),并從共享隊(duì)列區(qū)中core-Ι對應(yīng)的報(bào)文隊(duì)列開始,按順序依次向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文。本實(shí)施例中,共享隊(duì)列區(qū)包括每一參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,其中, 每一轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列由為該轉(zhuǎn)發(fā)核創(chuàng)建的隊(duì)列鏈表頭存入,存入方式為FIFO。如此, 執(zhí)行到本步驟304時(shí),網(wǎng)絡(luò)通信設(shè)備上每一參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核即C0re-l,C0re-2,..., core-N都有一個(gè)用于存入自身對應(yīng)的報(bào)文隊(duì)列的隊(duì)列鏈表頭。而本實(shí)施例中的共享隊(duì)列區(qū)具體實(shí)現(xiàn)時(shí)可為將從core-Ι對應(yīng)的報(bào)文隊(duì)列開始按順序依次并行存放的各個(gè)報(bào)文隊(duì)列組成的報(bào)文鏈塊確定為共享隊(duì)列區(qū)。具體可參見圖4 所示。另外,本步驟304中,隊(duì)列區(qū)控制單元可按照各個(gè)轉(zhuǎn)發(fā)核平均分配報(bào)文的原則向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文,具體為隊(duì)列區(qū)控制單元確定需要放入每一個(gè)報(bào)文隊(duì)列的報(bào)文數(shù)量M ;之后以M為單位按順序劃分獲取的所有報(bào)文,從core-Ι對應(yīng)的報(bào)文隊(duì)列開始按順序依次向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列中放入N個(gè)報(bào)文。比如,網(wǎng)絡(luò)通信設(shè)備存在3個(gè)轉(zhuǎn)發(fā)核,即core-Ι至core-3,如果隊(duì)列區(qū)控制單元從報(bào)文接收隊(duì)列獲取的所有報(bào)文的數(shù)量為12,依次為報(bào)文1至報(bào)文12,如此,就需要每個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列中存放4個(gè)報(bào)文,即core-Ι對應(yīng)的報(bào)文隊(duì)列存放報(bào)文1至報(bào)文4,core-2對應(yīng)的報(bào)文隊(duì)列存放報(bào)文5 至報(bào)文8,core-3對應(yīng)的報(bào)文隊(duì)列存放報(bào)文9至報(bào)文12。當(dāng)然,作為本發(fā)明實(shí)施例的另一種實(shí)現(xiàn)方式,本步驟304中,隊(duì)列區(qū)控制單元也可根據(jù)各個(gè)轉(zhuǎn)發(fā)核當(dāng)前的負(fù)載以及獲取的所有報(bào)文的數(shù)量向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列中放入報(bào)文,具體為步驟1,隊(duì)列區(qū)控制單元將core-Ι作為當(dāng)前核。步驟2,隊(duì)列區(qū)控制單元根據(jù)當(dāng)前核的當(dāng)前負(fù)載以及獲取的所有報(bào)文的數(shù)量確定向當(dāng)前核對應(yīng)的報(bào)文隊(duì)列中放入的報(bào)文數(shù)量X。步驟3,隊(duì)列區(qū)控制單元按順序向當(dāng)前核對應(yīng)的報(bào)文隊(duì)列中放入X個(gè)報(bào)文;之后設(shè)置core-Ι的下一個(gè)轉(zhuǎn)發(fā)核為當(dāng)前核,返回步驟2。仍以網(wǎng)絡(luò)通信設(shè)備存在3個(gè)轉(zhuǎn)發(fā)核, 即core-Ι至core-3,隊(duì)列區(qū)控制單元從報(bào)文接收隊(duì)列獲取的所有報(bào)文的數(shù)量為12,即依次為報(bào)文1至報(bào)文12為例,假如core-Ι當(dāng)前負(fù)載比較嚴(yán)重,目前僅能承載2個(gè)報(bào)文,core-2 當(dāng)前負(fù)載僅可以承載4個(gè)報(bào)文,core-3當(dāng)前負(fù)載比較輕松,可以承載至少6個(gè)報(bào)文,則基于上述步驟1至步驟3的描述,可將報(bào)文1至報(bào)文2存放至core-Ι對應(yīng)的報(bào)文隊(duì)列中,報(bào)文 3至報(bào)文6存放至core-2對應(yīng)的報(bào)文隊(duì)列中,報(bào)文7至報(bào)文12存放至core-3對應(yīng)的報(bào)文隊(duì)列中。當(dāng)然,若core-2當(dāng)前負(fù)載比較輕松,可以承載至少10個(gè)報(bào)文,則可以直接將報(bào)文 3至報(bào)文12存放至core-2對應(yīng)的報(bào)文隊(duì)列中,core-3對應(yīng)的報(bào)文隊(duì)列中不存放報(bào)文,具體情況具體分析,本發(fā)明實(shí)施例并不具體限定。
步驟305,隊(duì)列區(qū)控制單元將存放報(bào)文的共享隊(duì)列區(qū)依次放入共享隊(duì)列區(qū)輸入隊(duì)列。本步驟305中的共享隊(duì)列區(qū)輸入隊(duì)列,其實(shí)質(zhì)上為隊(duì)列區(qū)控制單元與core-Ι之間的報(bào)文傳輸通道,用于按照FIFO方式存入放入其中的共享隊(duì)列區(qū)。需要說明的是,本實(shí)施例中,在執(zhí)行本步驟305之前,需要預(yù)先在每一個(gè)共享隊(duì)列區(qū)中為每一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核創(chuàng)建對應(yīng)的報(bào)文隊(duì)列。步驟306,core-Ι輪詢共享隊(duì)列區(qū)輸入隊(duì)列,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的每個(gè)共享隊(duì)列區(qū)。步驟307,COre-l針對獲取的每一個(gè)共享隊(duì)列區(qū)(記為當(dāng)前共享隊(duì)列區(qū)),判斷當(dāng)前共享隊(duì)列區(qū)中自身對應(yīng)的報(bào)文隊(duì)列是否為空,如果是,執(zhí)行步驟308;否則,處理自身對應(yīng)的報(bào)文隊(duì)列中的所有報(bào)文,之后執(zhí)行步驟309。如果步驟304中,隊(duì)列區(qū)控制單元根據(jù)各個(gè)轉(zhuǎn)發(fā)核當(dāng)前的負(fù)載以及獲取的所有報(bào)文的數(shù)量向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列中放入報(bào)文,并且,在形成當(dāng)前共享隊(duì)列區(qū)時(shí) core-Ι的負(fù)載比較嚴(yán)重,不能再承載報(bào)文處理,基于此,執(zhí)行到本步驟307時(shí),該當(dāng)前共享隊(duì)列區(qū)就會(huì)出現(xiàn)core-Ι對應(yīng)的報(bào)文隊(duì)列為空的情況,考慮到本發(fā)明實(shí)施例的廣泛性,需要執(zhí)行本步驟307中的判斷操作。本步驟307中,處理報(bào)文隊(duì)列中的報(bào)文可按照該報(bào)文所需要的處理操作執(zhí)行,這里并不限定。步驟308,core-Ι判斷自身是否為編號(hào)最大的轉(zhuǎn)發(fā)核,如果是,將當(dāng)前共享隊(duì)列區(qū)存放到已創(chuàng)建的共享隊(duì)列區(qū)輸出隊(duì)列中,并執(zhí)行步驟311,否則,執(zhí)行步驟309。本步驟308之所以由core-Ι判斷自身是否為編號(hào)最大的轉(zhuǎn)發(fā)核,是為了確定 core-Ι是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核。其中,core-Ι為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核的情況為core-l為網(wǎng)絡(luò)通信設(shè)備唯一的轉(zhuǎn)發(fā)核。本步驟308中的共享隊(duì)列區(qū)輸出隊(duì)列為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核與保序處理單元之間的報(bào)文傳輸通道,其按照FIFO方式存入存放其中的共享隊(duì)列區(qū)。由于一個(gè)共享隊(duì)列區(qū)中的報(bào)文經(jīng)過最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核后,已經(jīng)全部處理完成,通過將處理后的共享隊(duì)列區(qū)入隊(duì)到共享隊(duì)列區(qū)輸出隊(duì)列后,保序處理單元即可將處理后的報(bào)文進(jìn)行保序。步驟309,core-Ι將處理后的共享隊(duì)列區(qū)存放至下一個(gè)轉(zhuǎn)發(fā)核對應(yīng)的核間訪問通道中,該核間訪問通道可組織成共享隊(duì)列區(qū)輸入隊(duì)列。本實(shí)施例中,下一個(gè)轉(zhuǎn)發(fā)核對應(yīng)的核間訪問通道為該下一個(gè)轉(zhuǎn)發(fā)核順序相鄰的上一個(gè)轉(zhuǎn)發(fā)核和該下一個(gè)轉(zhuǎn)發(fā)核之間的報(bào)文傳輸通道,其可按照FIFO方式存入順序相鄰的上一個(gè)轉(zhuǎn)發(fā)核處理后的共享隊(duì)列區(qū),因此,可組織成共享隊(duì)列區(qū)輸入隊(duì)列,具體可參見圖8 所示。以本步驟309中下一個(gè)轉(zhuǎn)發(fā)核為core-2為例,則本步驟309具體為COre-l將處理后的共享隊(duì)列區(qū)存放至core-2對應(yīng)的核間訪問通道中,其中,core-2對應(yīng)的核間訪問通道為core-Ι與core-2之間的報(bào)文傳輸通道,其可按照FIFO方式存入core-Ι處理后的共享隊(duì)列區(qū),并可組織成共享隊(duì)列區(qū)輸入隊(duì)列。步驟310,下一個(gè)轉(zhuǎn)發(fā)核按照類似步驟306至309中core-Ι執(zhí)行的操作執(zhí)行。需要說明的是,由于每個(gè)共享隊(duì)列區(qū)中各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列的報(bào)文數(shù)會(huì)有不同,所以并非每個(gè)核按照相同的先后順序處理共享隊(duì)列區(qū),因此,優(yōu)選地,在下一個(gè)轉(zhuǎn)發(fā)核執(zhí)行步驟306中core-Ι執(zhí)行的操作之前,可由該下一個(gè)轉(zhuǎn)發(fā)核實(shí)時(shí)判斷自身對應(yīng)的共享隊(duì)列區(qū)輸入隊(duì)列是否為空,如果是,繼續(xù)返回該判斷操作,否則,執(zhí)行步驟306中core-Ι執(zhí)行的操作。步驟311,保序處理單元輪詢共享隊(duì)列區(qū)輸出隊(duì)列,依次獲取共享隊(duì)列區(qū)。需要說明的是,由于保序處理單元和最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行的操作并非按照固定的時(shí)間先后順序,因此,優(yōu)選地,在執(zhí)行步驟311之前,可由保序處理單元實(shí)時(shí)判斷共享隊(duì)列區(qū)輸出隊(duì)列是否為空,是則繼續(xù)返回判斷操作,否則,執(zhí)行步驟311。步驟312,保序處理單元針對獲取的每一個(gè)共享隊(duì)列區(qū),從獲取的共享隊(duì)列區(qū)中按順序依次訪問每個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,并按照順序?qū)⒃摫辉L問的報(bào)文隊(duì)列中的報(bào)文依次存入所述網(wǎng)絡(luò)通信設(shè)備的報(bào)文發(fā)送隊(duì)列中。本步驟312具體實(shí)現(xiàn)時(shí)可有多種實(shí)現(xiàn)形式,圖5示出了其中一種實(shí)現(xiàn)形式。參見圖5,圖5為本發(fā)明實(shí)施例提供的步驟312的實(shí)現(xiàn)流程圖。如圖5所示,該流程可包括以下步驟步驟501,創(chuàng)建初始值為空的報(bào)文鏈L。即執(zhí)行到本步驟501時(shí),報(bào)文鏈L沒有存放任何報(bào)文。步驟502,保序處理單元從獲取的共享隊(duì)列區(qū)中訪問core-S對應(yīng)的報(bào)文隊(duì)列Q。由于本實(shí)施例中,轉(zhuǎn)發(fā)核是從1開始編號(hào)的,因此,初始階段的S為1。本實(shí)施例中,由于每一轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列是由該轉(zhuǎn)發(fā)核的隊(duì)列鏈表頭存入的,因此,本步驟502可根據(jù)core-s的隊(duì)列鏈表頭訪問core-S對應(yīng)的報(bào)文隊(duì)列Q。步驟503,保序處理單元判斷該被訪問的報(bào)文隊(duì)列Q是否為空,如果是,執(zhí)行步驟 504 ;否則,按照順序?qū)?bào)文隊(duì)列Q中的報(bào)文依次放入報(bào)文鏈L。步驟504,保序處理單元判斷core-S是否為編號(hào)最大的轉(zhuǎn)發(fā)核,如果否,執(zhí)行步驟 505,如果是,執(zhí)行步驟506。步驟505,令S = S+1,返回執(zhí)行步驟502。步驟506,將報(bào)文鏈L放入報(bào)文發(fā)送隊(duì)列,由網(wǎng)絡(luò)通信設(shè)備上的報(bào)文發(fā)送器發(fā)送報(bào)文發(fā)送隊(duì)列中的報(bào)文鏈L。至此,通過圖5所示的流程實(shí)現(xiàn)了步驟312的操作。通過步驟301至步驟312的描述,可以看出,本實(shí)施例中,并非是由網(wǎng)絡(luò)通信設(shè)備上的轉(zhuǎn)發(fā)核真正并行處理報(bào)文,而是先由core-Ι處理共享隊(duì)列區(qū)中的報(bào)文,并將處理后的共享隊(duì)列區(qū)提供給core-2處理,依次類推,直至core-N即最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核將處理后的共享隊(duì)列區(qū)提供給保序處理單元,以便保序處理單元對獲取的共享隊(duì)列區(qū)中的報(bào)文按照接收順序進(jìn)行串行化處理,即實(shí)現(xiàn)了按照報(bào)文接收順序發(fā)送報(bào)文的目的。而同一時(shí)間,每一個(gè)轉(zhuǎn)發(fā)核都在處理不同的共享隊(duì)列區(qū),從而某種意義上來說,每個(gè)核都在并行工作。為了使圖3所示的流程更加清楚,本發(fā)明實(shí)施例給出了對應(yīng)圖3流程的具體示意圖,具體如圖6所示。以上對本發(fā)明實(shí)施例提供的方法進(jìn)行了描述,下面對本發(fā)明實(shí)施例提供的設(shè)備進(jìn)行描述。
參見圖7,圖7為本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)圖。其中,該裝置具體實(shí)現(xiàn)時(shí)可為路由器,也可為其他具有路由功能的設(shè)備,比如交換機(jī)等,本發(fā)明實(shí)施例并不具體限定。如圖7所示,該裝置可包括至少一個(gè)參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核701,報(bào)文接收隊(duì)列702和報(bào)文發(fā)送隊(duì)列703,其關(guān)鍵在于,該裝置還包括隊(duì)列區(qū)控制單元704、保序處理單元705和共享隊(duì)列區(qū)輸入隊(duì)列706。其中,隊(duì)列區(qū)控制單元704用于將已接收的報(bào)文存入共享隊(duì)列區(qū)輸入隊(duì)列706,并提供該共享隊(duì)列區(qū)輸入隊(duì)列706給所述裝置上首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核;第一轉(zhuǎn)發(fā)核輪詢共享隊(duì)列區(qū)輸入隊(duì)列706,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的共享隊(duì)列區(qū)并處理,以及每處理完一個(gè)共享隊(duì)列區(qū)中對應(yīng)報(bào)文隊(duì)列的所有報(bào)文后,判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,如果否,提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,由下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行所述第一轉(zhuǎn)發(fā)核執(zhí)行的操作,如果是,提供處理后的共享隊(duì)列區(qū)給保序處理單元705。本實(shí)施例中,第一轉(zhuǎn)發(fā)核在處理共享隊(duì)列區(qū)時(shí),先判斷該獲取的當(dāng)前共享隊(duì)列區(qū)中自身對應(yīng)的報(bào)文隊(duì)列是否為空,如果不為空, 則執(zhí)行處理該當(dāng)前共享隊(duì)列區(qū)的操作;而如果為空,直接判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,是則提供當(dāng)前共享隊(duì)列區(qū)給保序處理單元705,否則提供當(dāng)前共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,由下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行所述第一轉(zhuǎn)發(fā)核執(zhí)行的操作。保序處理單元705用于獲取共享隊(duì)列區(qū),并對獲取的共享隊(duì)列區(qū)中的報(bào)文按照接收順序進(jìn)行串行化處理,以供處理后的報(bào)文發(fā)送。在本實(shí)施例中,所述裝置上所有參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核被按照順序編號(hào);基于此, 所述第一轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核,所述最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核;或者,所述第一轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核,所述最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核。本實(shí)施例中,如果所述裝置上存在至少一個(gè)參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,則如圖7所示,該裝置還包括至少一個(gè)核間訪問通道707。以所述裝置上參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核依次為第一轉(zhuǎn)發(fā)核,第二轉(zhuǎn)發(fā)核,第三轉(zhuǎn)發(fā)
核......第N轉(zhuǎn)發(fā)核為例,則共享隊(duì)列區(qū)輸入隊(duì)列706和核間訪問通道之間的關(guān)系如圖8
所示。其中,每一核間訪問通道用于存放順序相鄰的上一個(gè)轉(zhuǎn)發(fā)核處理后的共享隊(duì)列區(qū),因此,其也可相應(yīng)組織成共享隊(duì)列區(qū)輸入隊(duì)列?;诖?,第一轉(zhuǎn)發(fā)核在判斷出自身不為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核時(shí),提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核比如第二轉(zhuǎn)發(fā)核對應(yīng)的核間訪問通道,由該下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核按照類似第一轉(zhuǎn)發(fā)核執(zhí)行的操作執(zhí)行。優(yōu)選地,如圖7所示,隊(duì)列區(qū)控制單元704可包括獲取子單元7041,用于輪詢報(bào)文接收隊(duì)列,一旦發(fā)現(xiàn)所述報(bào)文接收隊(duì)列中存在報(bào)文,則從所述報(bào)文接收隊(duì)列中獲取所有報(bào)文;創(chuàng)建子單元7042,用于創(chuàng)建共享隊(duì)列區(qū),所述共享隊(duì)列區(qū)包括每一參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列;處理子單元7043,用于從共享隊(duì)列區(qū)中第一轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列開始,按順序依次向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文;
構(gòu)造子單元7044,用于將存放報(bào)文的共享隊(duì)列區(qū)依次放入共享隊(duì)列區(qū)輸入隊(duì)列 706。其中,處理子單元7043在向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文時(shí)可按照各個(gè)轉(zhuǎn)發(fā)核平均分配報(bào)文的原則向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文;或者,根據(jù)各個(gè)轉(zhuǎn)發(fā)核當(dāng)前的負(fù)載以及獲取的所有報(bào)文的數(shù)量向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列中放入報(bào)文。優(yōu)選地,如圖7所示,所述裝置還包括共享隊(duì)列區(qū)輸出隊(duì)列708。其中,共享隊(duì)列區(qū)輸出隊(duì)列708為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核與保序處理單元705之間的報(bào)文傳輸通道,用于存放最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核處理后的共享隊(duì)列區(qū),以供保序處理單元705將共享隊(duì)列區(qū)中處理后的報(bào)文進(jìn)行保序處理?;诖?,最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核提供處理后的共享隊(duì)列區(qū)給保序處理單元包括提供處理后的共享隊(duì)列區(qū)給所述共享隊(duì)列區(qū)輸出隊(duì)列,由保序處理單元705通過輪詢所述共享隊(duì)列區(qū)輸出隊(duì)列獲取共享隊(duì)列區(qū)中處理后的報(bào)文。本發(fā)明實(shí)施例中,如圖7所示,保序處理單元705具體實(shí)現(xiàn)時(shí)可包括輪詢子單元7051,用于輪詢共享隊(duì)列區(qū)輸出隊(duì)列708,并將共享隊(duì)列區(qū)輸出隊(duì)列中的共享隊(duì)列區(qū)交給報(bào)文處理子單元7052 ;報(bào)文處理子單元7052,用于從獲取的共享隊(duì)列區(qū)中按順序依次訪問每個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,并按照順序?qū)⒃摫辉L問的報(bào)文隊(duì)列中的報(bào)文依次存入報(bào)文發(fā)送隊(duì)列中。至此,對本發(fā)明實(shí)施例提供的裝置進(jìn)行了描述。由以上技術(shù)方案可以看出,本發(fā)明中,由首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核先處理共享隊(duì)列區(qū)輸入隊(duì)列中的共享隊(duì)列區(qū),其中,共享隊(duì)列區(qū)包括每一參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,每一個(gè)轉(zhuǎn)發(fā)核將處理后的共享隊(duì)列區(qū)提供給下一個(gè)相鄰的執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核處理,依次類推,直至最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核將處理后的共享隊(duì)列區(qū)提供給保序處理單元,以便保序處理單元對獲取的共享隊(duì)列區(qū)中的報(bào)文按照接收順序進(jìn)行串行化處理,實(shí)現(xiàn)了按照報(bào)文接收順序發(fā)送報(bào)文的目的,即實(shí)現(xiàn)了報(bào)文保序。本發(fā)明提供的報(bào)文保序,對于共享隊(duì)列區(qū)輸入隊(duì)列中的共享隊(duì)列區(qū)按順序分別被各個(gè)轉(zhuǎn)發(fā)核處理,對于同一共享隊(duì)列區(qū)來說轉(zhuǎn)發(fā)核之間串行處理,最后各個(gè)處理后的共享隊(duì)列區(qū)又按照進(jìn)入共享隊(duì)列區(qū)輸入隊(duì)列的順序,進(jìn)入到共享隊(duì)列區(qū)輸出隊(duì)列后進(jìn)行報(bào)序處理,因此不涉及緩存,定時(shí)老化等問題。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種實(shí)現(xiàn)報(bào)文保序的方法,其特征在于,該方法包括A,網(wǎng)絡(luò)通信設(shè)備上的隊(duì)列區(qū)控制單元將已接收的報(bào)文依次存入共享隊(duì)列區(qū)輸入隊(duì)列, 并將共享隊(duì)列區(qū)輸入隊(duì)列提供給首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核,所述第一轉(zhuǎn)發(fā)核輪詢共享隊(duì)列區(qū)輸入隊(duì)列,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的每個(gè)共享隊(duì)列區(qū)并處理; B,所述第一轉(zhuǎn)發(fā)核處理完當(dāng)前共享隊(duì)列區(qū)中對應(yīng)報(bào)文隊(duì)列的所有報(bào)文后,判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,如果否,提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核處理,并執(zhí)行步驟C,如果是,提供處理后的共享隊(duì)列區(qū)給所述網(wǎng)絡(luò)通信設(shè)備上的保序處理單元,并執(zhí)行步驟D ;C,所述下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行步驟B中所述第一轉(zhuǎn)發(fā)核執(zhí)行的操作;D,所述保序處理單元獲取共享隊(duì)列區(qū)中的報(bào)文,并按照接收順序進(jìn)行串行化處理以供報(bào)文發(fā)送。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述方法執(zhí)行之前,進(jìn)一步包括對網(wǎng)絡(luò)通信設(shè)備上所有參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核按照順序編號(hào);所述第一轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核,所述最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核;或者,所述第一轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核,所述最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,步驟A中,隊(duì)列區(qū)控制單元依次將已接收的報(bào)文存入共享隊(duì)列區(qū)輸入隊(duì)列包括Al,隊(duì)列區(qū)控制單元每次輪詢報(bào)文接收隊(duì)列時(shí),從報(bào)文接收隊(duì)列中獲取所有報(bào)文,所述報(bào)文接收隊(duì)列用于存放所述網(wǎng)絡(luò)通信設(shè)備接收的報(bào)文;A2,所述隊(duì)列區(qū)控制單元?jiǎng)?chuàng)建共享隊(duì)列區(qū),所述共享隊(duì)列區(qū)包括每一參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,并從共享隊(duì)列區(qū)中第一轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列開始,按順序依次向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文;A3,所述隊(duì)列區(qū)控制單元將存放報(bào)文的共享隊(duì)列區(qū)依次放入共享隊(duì)列區(qū)輸入隊(duì)列。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟A2中,所述隊(duì)列區(qū)控制單元按照各個(gè)轉(zhuǎn)發(fā)核平均分配報(bào)文的原則向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文;或者,所述隊(duì)列區(qū)控制單元根據(jù)各個(gè)轉(zhuǎn)發(fā)核當(dāng)前的負(fù)載以及獲取的所有報(bào)文的數(shù)量向各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列中放入報(bào)文。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,在執(zhí)行步驟B之前進(jìn)一步包括創(chuàng)建共享隊(duì)列區(qū)輸出隊(duì)列,所述共享隊(duì)列區(qū)輸出隊(duì)列用于存放最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核處理后的共享隊(duì)列區(qū),以供保序處理單元將共享隊(duì)列區(qū)中處理后的報(bào)文進(jìn)行保序處理;步驟B中,提供處理后的共享隊(duì)列區(qū)給保序處理單元包括提供處理后的共享隊(duì)列區(qū)給所述共享隊(duì)列區(qū)輸出隊(duì)列,由所述保序處理單元通過輪詢所述共享隊(duì)列區(qū)輸出隊(duì)列獲取共享隊(duì)列區(qū)中處理后的報(bào)文。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟D包括D1,保序處理單元輪詢共享隊(duì)列區(qū)輸出隊(duì)列,依次獲取共享隊(duì)列區(qū);D2,保序處理單元從獲取的共享隊(duì)列區(qū)中按順序依次訪問每個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,并按照順序?qū)⒈辉L問的報(bào)文隊(duì)列中的報(bào)文依次存入所述網(wǎng)絡(luò)通信設(shè)備的報(bào)文發(fā)送隊(duì)列中。
7.一種用于實(shí)現(xiàn)報(bào)文保序的裝置,包括至少一個(gè)參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,報(bào)文接收隊(duì)列和報(bào)文發(fā)送隊(duì)列,其特征在于,該裝置還包括隊(duì)列區(qū)控制單元和保序處理單元;其中,所述隊(duì)列區(qū)控制單元用于將已接收的報(bào)文存入共享隊(duì)列區(qū)輸入隊(duì)列,并提供該共享隊(duì)列區(qū)輸入隊(duì)列給所述裝置上首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核;第一轉(zhuǎn)發(fā)核輪詢共享隊(duì)列區(qū)輸入隊(duì)列,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的共享隊(duì)列區(qū)并處理,以及每處理完一個(gè)共享隊(duì)列區(qū)中對應(yīng)報(bào)文隊(duì)列的所有報(bào)文后,判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,如果否,提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,由下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行所述第一轉(zhuǎn)發(fā)核執(zhí)行的操作,如果是,提供處理后的共享隊(duì)列區(qū)給所述保序處理單元;所述保序處理單元用于獲取共享隊(duì)列區(qū),并對獲取的共享隊(duì)列區(qū)中的報(bào)文按照接收順序進(jìn)行串行化處理,以供處理后的報(bào)文發(fā)送。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置上所有參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核被按照順序編號(hào);所述第一轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核,所述最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核;或者,所述第一轉(zhuǎn)發(fā)核為編號(hào)最大的轉(zhuǎn)發(fā)核,所述最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核為編號(hào)最小的轉(zhuǎn)發(fā)核。
9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,所述隊(duì)列區(qū)控制單元包括獲取子單元,用于輪詢報(bào)文接收隊(duì)列,一旦發(fā)現(xiàn)所述報(bào)文接收隊(duì)列中存在報(bào)文,則從所述報(bào)文接收隊(duì)列中獲取所有報(bào)文;創(chuàng)建子單元,用于創(chuàng)建共享隊(duì)列區(qū),所述共享隊(duì)列區(qū)包括每一參與轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列;處理子單元,用于按照各個(gè)轉(zhuǎn)發(fā)核平均分配報(bào)文的原則,或者根據(jù)各個(gè)轉(zhuǎn)發(fā)核當(dāng)前的負(fù)載以及獲取的所有報(bào)文的數(shù)量,從第一轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列開始按順序依次向共享隊(duì)列區(qū)中各個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列放入報(bào)文;構(gòu)造子單元,用于將存放報(bào)文的共享隊(duì)列區(qū)依次放入共享隊(duì)列區(qū)輸入隊(duì)列。
10.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,該裝置進(jìn)一步包括共享隊(duì)列區(qū)輸出隊(duì)列,所述共享隊(duì)列區(qū)輸出隊(duì)列用于存放最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核處理后的共享隊(duì)列區(qū),以供保序處理單元將共享隊(duì)列區(qū)中處理后的報(bào)文進(jìn)行保序處理;所述最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核提供處理后的共享隊(duì)列區(qū)給保序處理單元包括 提供處理后的共享隊(duì)列區(qū)給所述共享隊(duì)列區(qū)輸出隊(duì)列,由所述保序處理單元通過輪詢所述共享隊(duì)列區(qū)輸出隊(duì)列獲取共享隊(duì)列區(qū)中處理后的報(bào)文。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述保序處理單元包括輪詢子單元,用于輪詢共享隊(duì)列區(qū)輸出隊(duì)列,并將共享隊(duì)列區(qū)輸出隊(duì)列中的共享隊(duì)列區(qū)交給報(bào)文處理子單元;報(bào)文處理子單元,用于從獲取的共享隊(duì)列區(qū)中按順序依次訪問每個(gè)轉(zhuǎn)發(fā)核對應(yīng)的報(bào)文隊(duì)列,并按照順序?qū)⒈辉L問的報(bào)文隊(duì)列中的報(bào)文依次存入報(bào)文發(fā)送隊(duì)列中。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置進(jìn)一步包括至少一個(gè)核間訪問通道,用于存放順序相鄰的上一個(gè)轉(zhuǎn)發(fā)核處理后的共享隊(duì)列區(qū),可組織成共享隊(duì)列區(qū)輸入隊(duì)列。
全文摘要
本發(fā)明提供了實(shí)現(xiàn)報(bào)文保序的方法和裝置。該方法包括A,網(wǎng)絡(luò)通信設(shè)備上的隊(duì)列區(qū)控制單元將已接收的報(bào)文存入共享隊(duì)列區(qū)輸入隊(duì)列,并將該共享隊(duì)列區(qū)輸入隊(duì)列提供給所述網(wǎng)絡(luò)通信設(shè)備上首先執(zhí)行轉(zhuǎn)發(fā)處理的第一轉(zhuǎn)發(fā)核;所述第一轉(zhuǎn)發(fā)核輪詢共享隊(duì)列區(qū)輸入隊(duì)列,依次獲取共享隊(duì)列區(qū)輸入隊(duì)列中的每個(gè)共享隊(duì)列區(qū)并處理;B,所述第一轉(zhuǎn)發(fā)核處理完當(dāng)前共享隊(duì)列區(qū)中對應(yīng)報(bào)文隊(duì)列的所有報(bào)文后,判斷自身是否為最后一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,如果否,提供處理后的共享隊(duì)列區(qū)給下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核,并執(zhí)行步驟C,如果是,提供處理后的共享隊(duì)列區(qū)給所述網(wǎng)絡(luò)通信設(shè)備上的保序處理單元,并執(zhí)行步驟D;C,所述下一個(gè)執(zhí)行轉(zhuǎn)發(fā)處理的轉(zhuǎn)發(fā)核執(zhí)行步驟B中所述第一轉(zhuǎn)發(fā)核執(zhí)行的操作;D,所述保序處理單元獲取共享隊(duì)列區(qū)中的報(bào)文,并按照接收順序進(jìn)行串行化處理以供報(bào)文發(fā)送。采用本發(fā)明,能夠在對報(bào)文保序時(shí)避免緩存,定時(shí)老化等問題。
文檔編號(hào)H04L12/56GK102480430SQ20101057022
公開日2012年5月30日 申請日期2010年11月24日 優(yōu)先權(quán)日2010年11月24日
發(fā)明者曹淋 申請人:邁普通信技術(shù)股份有限公司