專利名稱:多核報(bào)文轉(zhuǎn)發(fā)方法、多核處理器及網(wǎng)絡(luò)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),尤其涉及一種多核報(bào)文轉(zhuǎn)發(fā)方法、多核處理器及網(wǎng)絡(luò)設(shè)備。
背景技術(shù):
隨著社會信息化程度的加深,人們對互聯(lián)網(wǎng)的依賴性越來越強(qiáng),連接到網(wǎng)絡(luò)上的計(jì)算機(jī)節(jié)點(diǎn)也呈級數(shù)式的增長。網(wǎng)絡(luò)設(shè)備等作為計(jì)算 互聯(lián)的數(shù)據(jù)交換節(jié)點(diǎn),其數(shù)據(jù)轉(zhuǎn)發(fā)性能決定了整個網(wǎng)絡(luò)的質(zhì)量。隨著用戶連接數(shù)的急劇增長和各種高帶寬應(yīng)用的出現(xiàn),主頻提升受限的單核處理器越來越難以滿足高速數(shù)據(jù)轉(zhuǎn)發(fā)的性能需求,而多核處理器憑借其較低成本的可擴(kuò)展能力和并行計(jì)算的特性,逐漸在網(wǎng)絡(luò)通信領(lǐng)域得到廣泛應(yīng)用。所謂多核處理器,是指在一個硬件芯片上集成多個核心處理器(Core-CPU,簡稱為Core)的處理器,通常是共享內(nèi)存式結(jié)構(gòu)。多核處理器具備相對獨(dú)立的多個處理核,可以并行地執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理程序,報(bào)文轉(zhuǎn)發(fā)性能得到較大幅度提高,從而提高了系統(tǒng)整體的吞吐率。但是,并行執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理程序的多個處理核,由于共享許多硬件和軟件資源,在數(shù)據(jù)轉(zhuǎn)發(fā)繁忙時,如何使各個處理核協(xié)同參與轉(zhuǎn)發(fā),減少彼此之間的相互等待,充分發(fā)揮并行處理能力卻有很大挑戰(zhàn)。另外,由于處理器運(yùn)行程序的隨機(jī)性,各個處理核處理報(bào)文的時間不一定相同,造成先進(jìn)入的報(bào)文可能后輸出,產(chǎn)生報(bào)文亂序的問題,而對于一個報(bào)文流來說,經(jīng)網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)后出現(xiàn)亂序是不被允許的。為了發(fā)揮多核處理器的并行處理能,解決上述報(bào)文轉(zhuǎn)發(fā)過程中出現(xiàn)的報(bào)文亂序問題,現(xiàn)有技術(shù)存在以下解決方案流水線模式,即將整個報(bào)文轉(zhuǎn)發(fā)過程劃分為多個處理階段(Stage),每個處理核負(fù)責(zé)一個處理階段,組成一條串行的報(bào)文處理流水線,但該方式的特點(diǎn)是流水線的每個處理階段都與固定的處理核綁定,每個處理核只會參與唯一一條流水線的一個處理階段,如果各條流水線或者同一條流水線中任務(wù)劃分不均衡,可能出現(xiàn)某些處理核很忙,甚至超出其處理能力,但另一些處理核卻很空閑,但是由于每個處理核僅能參與自己綁定的處理階段,所以無法去幫助很忙的處理核,限制了多核處理器的并行能力的提高。報(bào)文流與處理核綁定模式,即使用一個前置報(bào)文流散列單元,將不同報(bào)文流的報(bào)文分散到不同的處理核,保證同一報(bào)文流被分散到某一個處理核,而該報(bào)文流的整個轉(zhuǎn)發(fā)過程均由該處理核完成,但是,該方案的缺陷在于不同報(bào)文流的處理負(fù)擔(dān)差異可能很大,即使報(bào)文流散列單元實(shí)現(xiàn)均衡散列,也會造成某些處理核比較空閑,而另一些處理核比較繁忙,同樣限制了多核處理器的并行能力的提高。
發(fā)明內(nèi)容
本發(fā)明提供一種多核報(bào)文轉(zhuǎn)發(fā)方法、多核處理器及網(wǎng)絡(luò)設(shè)備,用以提高多核處理器的并行處理能力。本發(fā)明提供一種多核報(bào)文轉(zhuǎn)發(fā)方法,包括將接收到的報(bào)文散列存儲到不同改進(jìn)流水線對應(yīng)的報(bào)文組中,以使同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中;其中,每條改進(jìn)流水線由改進(jìn)流水線對象維護(hù),每個改進(jìn)流水線對象包括所維護(hù)的改進(jìn)流水線的標(biāo)識以及由所維護(hù)的改進(jìn)流水線的每個處理階段分別封裝成的虛線程對象,每個虛線程對象包括對應(yīng)的處理階段使用的處理函數(shù)、私有對象指針、虛線程優(yōu)先級、虛線程狀態(tài)和虛線程對象名稱,每個虛線程對象中的虛線程對象名稱用于標(biāo)識每個虛線程對象對應(yīng)的處理階段,每個虛線程對象中的私有對象指針指向每個虛線程對象所屬改進(jìn)流水線的滑動窗口的一個位置,每條改進(jìn)流水線的滑動窗口中的報(bào)文來自于每條改進(jìn)流水線對應(yīng)的報(bào)文組,其中,同一改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同;多核處理器中的處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象,其中所述全局虛線程對象序列存儲有各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到所述全 局虛線程對象序列中;所述處理核執(zhí)行所述獲取的虛線程對象中的處理函數(shù),以完成對所述獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。本發(fā)明提供一種多核處理器,包括多個處理核;每個處理核包括第一處理單元,用于按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象;其中所述全局虛線程對象序列存儲有各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到所述全局虛線程對象序列中;其中,同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中,每條改進(jìn)流水線由改進(jìn)流水線對象維護(hù),每個改進(jìn)流水線對象包括所維護(hù)的改進(jìn)流水線的標(biāo)識以及由所維護(hù)的改進(jìn)流水線的每個處理階段分別封裝成的虛線程對象,每個虛線程對象包括對應(yīng)的處理階段使用的處理函數(shù)、私有對象指針、虛線程優(yōu)先級、虛線程狀態(tài)和虛線程對象名稱,每個虛線程對象中的虛線程對象名稱用于標(biāo)識每個虛線程對象對應(yīng)的處理階段,每個虛線程對象中的私有對象指針指向每個虛線程對象所屬改進(jìn)流水線的滑動窗口的一個位置,每條改進(jìn)流水線的滑動窗口中的報(bào)文來自每條改進(jìn)流水線對應(yīng)的報(bào)文組中,其中,同一改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同;第二處理單元,用于執(zhí)行所述獲取的虛線程對象中的處理函數(shù),以完成對所述獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。本發(fā)明提供一種網(wǎng)絡(luò)設(shè)備,包括本發(fā)明提供的任一多核處理器。本發(fā)明提供的多核報(bào)文轉(zhuǎn)發(fā)方法、多核處理器及網(wǎng)絡(luò)設(shè)備,通過對接收到的報(bào)文進(jìn)行散列存儲處理,將同一報(bào)文流的報(bào)文散列到同一改進(jìn)報(bào)文流水線對應(yīng)的報(bào)文組中,每條改進(jìn)流水線劃分為多個處理階段,每個處理階段封裝成不同的虛線程對象,為每個虛線程對象分配優(yōu)先級,其中,每條改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,而不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同,并通過全局虛線程對象序列存儲各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,并且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到全局虛線程對象序列中,多核處理器中的每個處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取就緒虛線程對象,然后執(zhí)行就緒虛線程對象中的處理函數(shù),以完成對就緒虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理,與現(xiàn)有技術(shù)相比,各處理核并未與特定改進(jìn)流水線的特定處理階段進(jìn)行綁定,只要處理核空閑就可以按照優(yōu)先級從全局虛線程對象中獲取就緒虛線程對象,解決了某些處理核很忙,另外一些處理核很閑的問題,提高了多核處理器的并行處理能力,同時由于同一條報(bào)文流的報(bào)文被散列存儲到同一條改進(jìn)流水線,在提高多核處理器的并行處理能力的同時實(shí)現(xiàn)了報(bào)文保序。
圖I為本發(fā)明一實(shí)施例提供的多核報(bào)文轉(zhuǎn)發(fā)方法的流程圖;圖2為本發(fā)明一實(shí)施例提供的報(bào)文流的轉(zhuǎn)發(fā)處理流程的示意圖;圖3為本發(fā)明一實(shí)施例提供的改進(jìn)流水線中的報(bào)文接收處理階段的流程圖;圖4為本發(fā)明一實(shí)施例提供的改進(jìn)流水線中的報(bào)文入業(yè)務(wù)處理階段的流程圖;圖5為本發(fā)明一實(shí)施例提供的改進(jìn)流水線中的報(bào)文路由業(yè)務(wù)處理階段的流程圖;圖6為本發(fā)明一實(shí)施例提供的改進(jìn)流水線中的報(bào)文出業(yè)務(wù)處理階段的流程圖;圖7為本發(fā)明一實(shí)施例提供的改進(jìn)流水線中的報(bào)文發(fā)送處理階段的流程圖;圖8為本發(fā)明一實(shí)施例提供的多核處理器的結(jié)構(gòu)示意圖;圖9為本發(fā)明另一實(shí)施例提供的多核處理器的結(jié)構(gòu)示意圖。
具體實(shí)施例方式圖I為本發(fā)明一實(shí)施例提供的多核報(bào)文轉(zhuǎn)發(fā)方法的流程圖。如圖I所示,本實(shí)施例的方法包括步驟101、將接收到的報(bào)文散列存儲到不同改進(jìn)流水線對應(yīng)的報(bào)文組中,以使同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中。在本實(shí)施例中,通過散列處理方式將網(wǎng)絡(luò)設(shè)備的一個或多個接口接收到的報(bào)文散列存儲到不同改進(jìn)流水線對應(yīng)的報(bào)文組中,其中屬于同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中,這樣在對報(bào)文進(jìn)行轉(zhuǎn)發(fā)處理后可以達(dá)到報(bào)文保序的目的??蛇x的,可以由網(wǎng)絡(luò)設(shè)備中前置的硬件模塊或軟件模塊將接收到的報(bào)文散列到不同報(bào)文組中,但不限于此??蛇x的,散列處理過程可以采用哈希算法實(shí)現(xiàn)。例如,可以對報(bào)文的網(wǎng)際協(xié)議(Internet Protocol,簡稱為IP)五元組源IP、目的IP、源端口、目的端口和報(bào)文協(xié)議類型進(jìn)行哈希計(jì)算,將哈希計(jì)算的結(jié)果與預(yù)設(shè)的掩碼相與,將該報(bào)文散列存儲到與該與運(yùn)算結(jié)果對應(yīng)的一條改進(jìn)流水線對應(yīng)的報(bào)文組中。例如,如果與運(yùn)算結(jié)果為0,則將該報(bào)文散列存儲到標(biāo)識為0的改進(jìn)流水線對應(yīng)的報(bào)文組中,如果與運(yùn)算結(jié)果為I,則將該報(bào)文散列存儲到標(biāo)識為I的改進(jìn)流水線對應(yīng)的報(bào)文組中,等等。其中,哈希計(jì)算的結(jié)果與預(yù)設(shè)掩碼相與的結(jié)果唯一對應(yīng)一條改進(jìn)流水線。另外,對所有改進(jìn)流水線來說,共用上述預(yù)設(shè)的掩碼。在本實(shí)施例中,每個報(bào)文組與唯--條改進(jìn)流水線對應(yīng)(或者說是綁定),但多個
不同報(bào)文組可被綁定到同一條改進(jìn)流水線。每條改進(jìn)流水線除與之綁定的報(bào)文組不同之外,每條改進(jìn)流水線對報(bào)文的處理過程都是相同的。在本實(shí)施例中,每條改進(jìn)流水線由改進(jìn)流水線對象維護(hù),每個改進(jìn)流水線對象包括所維護(hù)的改進(jìn)流水線的標(biāo)識以及由所維護(hù)的改進(jìn)流水線的每個處理階段分別封裝成的虛線程對象。可選的,每個改進(jìn)流水線對象還可以包括每條改進(jìn)流水線對應(yīng)的掩碼等其他信息。也就是說,改進(jìn)流水線對象負(fù)責(zé)維護(hù)改進(jìn)流水線的所有信息。
可選的,改進(jìn)流水線的標(biāo)識可以是整數(shù)數(shù)值,也就是改進(jìn)流水線的編號。例如,假設(shè)有4條改進(jìn)流水線,則編號可以分別為小于4的整數(shù)值。在本實(shí)施例中,每條改進(jìn)流水線根據(jù)需要劃分成多級,每級對應(yīng)一個處理階段,每個處理階段被封裝成一個虛線程對象。所劃分的處理階段的個數(shù)(或者級數(shù))可以由報(bào)文轉(zhuǎn)發(fā)處理任務(wù)復(fù)雜度、比例關(guān)系和處理核的數(shù)目等參數(shù)共同確定。例如,整個報(bào)文轉(zhuǎn)發(fā)處理過程可劃分為報(bào)文接收、入業(yè)務(wù)、出業(yè)務(wù)和報(bào)文發(fā)送4個處理階段,那么對應(yīng)的改進(jìn)流水線級數(shù)就是4級。其中,每個虛線程對象包括對應(yīng)的處理階段使用的處理函數(shù)、私有對象指針、虛線程優(yōu)先級、虛線程狀態(tài)和虛線程對象名稱。每個虛線程對象中各處理階段使用的處理函數(shù)表明了處理核執(zhí)行該虛線程對象時的具體操作。每個虛線程對象中的私有對象指針指向每個虛線程對象所屬改進(jìn)流水線的滑動窗口的一個位置,每條改進(jìn)流水線的滑動窗口中的報(bào)文來自于每條改進(jìn)流水線對應(yīng)的報(bào)文組?;瑒哟翱谥忻總€位置(即每個窗口 )均可掛載一個報(bào)文鏈,每個報(bào)文鏈中存儲有報(bào)文,報(bào)文鏈中的報(bào)文可以是未經(jīng)任何處理的報(bào)文,也可以是已經(jīng)經(jīng)過一個或多個處理階段處理過的報(bào)文。其中,為了提高指令緩存(Cache)命中率,接口接收報(bào)文時通常一次會接收多個報(bào)文,可以將多個報(bào)文形成報(bào)文鏈掛載到對應(yīng)的滑動窗口下。可選的,本實(shí)施例可以為報(bào)文鏈長度設(shè)定一個閾值,該閾值用于指示每個處理階段一次所能處理的報(bào)文的個數(shù)。該閾值若設(shè)定的太大,則需要接口一次接收的報(bào)文太多,會造成處理核執(zhí)行虛線程對象中的處理函數(shù)時數(shù)據(jù)緩存不命中(Data Cache Miss, D-CacheMiss)率上升,若閾值設(shè)定的太小,則不能發(fā)揮指令緩存命中(Instruction CacheHit, I-CacheHit)的優(yōu)勢,難以提升性能。其中,虛線程優(yōu)先級表明該虛線程對象被調(diào)度運(yùn)行的次序,優(yōu)先級高的虛線程對象將被優(yōu)先調(diào)度運(yùn)行。同一改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同。本實(shí)施例中設(shè)置同一改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,其目的是避免由于硬件資源不足而需要把前面處理階段執(zhí)行完的報(bào)文丟棄所作的無用功,以便于提高報(bào)文處理效率、避免資源浪費(fèi)。在本實(shí)施例中,虛線程對象與現(xiàn)有技術(shù)中的虛線程不同,不像現(xiàn)有虛線程那樣具有運(yùn)行、就緒、暫停、休眠以及阻塞的五種狀態(tài),而是只包括阻塞、就緒和運(yùn)行三種狀態(tài)。當(dāng)該虛線程對象被初始創(chuàng)建時默認(rèn)為處于阻塞狀態(tài),當(dāng)有報(bào)文需要處理時該虛線程對象將會被置為就緒狀態(tài),若該虛線程對象被處理核調(diào)度執(zhí)行則狀態(tài)變?yōu)檫\(yùn)行狀態(tài),若該虛線程對象執(zhí)行完畢且沒有其他報(bào)文需要進(jìn)行該虛線程對象對應(yīng)的處理階段的處理則其狀態(tài)將被重新置為阻塞狀態(tài)。其中,每個虛線程對象中的虛線程對象名稱用于標(biāo)識每個虛線程對象對應(yīng)的處理階段,同時也可以標(biāo)識該虛線程對象,例如虛線程對象名稱可以是對應(yīng)處理階段的名稱,但不限于此。例如,對于改進(jìn)流水線分為4級的情況,虛線程對象名稱可以是報(bào)文接收、入業(yè)務(wù)、出業(yè)務(wù)和報(bào)文發(fā)送等。步驟102、多核處理器中的處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象。在本實(shí)施例中,全局虛線程對象序列存儲有各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到所述全局虛線程對象序列中。本實(shí)施例的全局虛線程對象序列是一個二維結(jié)構(gòu)。在本實(shí)施例的一個可選實(shí)施方式中,步驟102的實(shí)施過程可以為所述處理核按照優(yōu)先級由高到低的順序,依次判斷全局虛線程對象序列中各優(yōu)先級下是否滿足有處于就緒狀態(tài)的虛線程對象且沒有其他處理核正在獲取所述優(yōu)先級下處于就緒狀態(tài)的虛線程對 象,若判斷結(jié)果為滿足,則獲取所述優(yōu)先級下的處于就緒狀態(tài)的虛線程對象。例如,如果另一個處理核按照優(yōu)先級由高到低的順序,正在獲取全局虛線程對象序列中第一優(yōu)先級下處于就緒狀態(tài)的虛線程對象,則該處理核按照優(yōu)先級由高到低的順序,從比第一優(yōu)先級低的優(yōu)先級下獲取處于就緒狀態(tài)的虛線程對象,直到獲取到一個處于就緒狀態(tài)的虛線程對象作為就緒虛線程對象為止,其中,第一優(yōu)先級為當(dāng)前存在處于就緒狀態(tài)的虛線程對象的最高優(yōu)先級。簡單來說,各個處理核按照優(yōu)先級大小從高到低循環(huán)獲取全局虛線程對象隊(duì)列中各個處于就緒狀態(tài)的虛線程對象,并且各個處理核之間以互斥的方式獲取虛線程對象;當(dāng)各個處理核以互斥方式獲取虛線程對象時,若獲取全局虛線程對象隊(duì)列中高優(yōu)先級的鎖獲取失敗,則不進(jìn)行阻塞等待,而是繼續(xù)獲取更低一級優(yōu)先級的鎖,直至鎖成功后,從中摘取一個虛線程對象,然后執(zhí)行步驟103。步驟103、處理核執(zhí)行所獲取的虛線程對象中的處理函數(shù),以完成對所獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。當(dāng)處理核獲取到虛線程對象后,執(zhí)行所獲取的虛線程對象中的處理函數(shù),實(shí)現(xiàn)對所獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。其中,對于同一報(bào)文或報(bào)文流來說,處理核需要執(zhí)行多個所獲取的虛線程對象中的處理函數(shù),以完成對所述報(bào)文或報(bào)文流的整個轉(zhuǎn)發(fā)處理。其中,由于每個處理核并未與固定的改進(jìn)流水線或改進(jìn)流水線的某個或某些處理階段綁定,所以完成同一報(bào)文或報(bào)文流的轉(zhuǎn)發(fā)處理的處理核可能是一個也可能是多個。由上述可見,本實(shí)施例的改進(jìn)流水線與現(xiàn)有標(biāo)準(zhǔn)流水線不同,改進(jìn)流水線中的各處理階段的任務(wù)不再與固定處理核綁定,且改進(jìn)流水線各處理階段的任務(wù)的劃分相對自由,各處理階段的任務(wù)繁重程度不必完全均衡。即改進(jìn)流水線的平臺適應(yīng)能力更強(qiáng),可適應(yīng)于各種核數(shù)目的處理器硬件環(huán)境,同時基于改進(jìn)流水線的網(wǎng)絡(luò)設(shè)備其報(bào)文轉(zhuǎn)發(fā)性能不再嚴(yán)格受限于處理時間最長的處理階段。本實(shí)施例通過對接收到的報(bào)文進(jìn)行散列存儲處理,將同一報(bào)文流的報(bào)文散列到同一改進(jìn)報(bào)文流水線對應(yīng)的報(bào)文組中,每條改進(jìn)流水線劃分為多個處理階段,每個處理階段封裝成不同的虛線程對象,為每個虛線程對象分配優(yōu)先級,并通過全局虛線程對象序列存儲各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到全局虛線程對象序列中,多核處理器中的每個處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象,然后執(zhí)行所獲取的虛線程對象中的處理函數(shù),以完成對所獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理,與現(xiàn)有技術(shù)相比,各處理核并未與特定改進(jìn)流水線的特定處理階段進(jìn)行綁定,只要處理核空閑就可以按照優(yōu)先級從全局虛線程對象中獲取虛線程對象,解決了某些處理核很忙,另外一些處理核很閑的問題,提高了多核處理器的并行處理能力,同時由于同一條報(bào)文流的報(bào)文被散列存儲到同一條改進(jìn)流水線,在提高多核處理器的并行處理能力的同時實(shí)現(xiàn)了報(bào)文保序。在本實(shí)施例的一個可選實(shí)施方式中,若根據(jù)所獲取的虛線程對象中的虛線程對象名稱確定出所獲取的虛線程對象對應(yīng)的處理階段為報(bào)文接收處理階段,則步驟103的一種可選實(shí)施方式包括步驟1031、處理核創(chuàng)建報(bào)文接收鏈表,所述報(bào)文接收鏈表的表頭指針和表尾指針均指向空節(jié)點(diǎn)。步驟1032、處理核判斷所獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中是否有報(bào)文,如果判斷結(jié)果為是,則執(zhí)行步驟1033,如果判斷結(jié)果為否,執(zhí)行步驟1037。
具體的,處理核判斷所獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中是否有新報(bào)文到達(dá),即判斷是否有報(bào)文需要進(jìn)行轉(zhuǎn)發(fā)處理。如果判斷結(jié)果為是,說明有報(bào)文需要進(jìn)行轉(zhuǎn)發(fā)處理,則執(zhí)行步驟1033及其它步驟;如果判斷結(jié)果為否,說明沒有報(bào)文需要進(jìn)行轉(zhuǎn)發(fā)處理,故執(zhí)行步驟1037,結(jié)束此次接收處理。步驟1033、從所獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中獲取指定數(shù)量的報(bào)文作為待處理報(bào)文,對待處理報(bào)文進(jìn)行解析后掛載到報(bào)文接收鏈表的表尾,并更新所述報(bào)文接收鏈表的表尾指針,然后執(zhí)行步驟1034。在實(shí)現(xiàn)時,接收每個報(bào)文的內(nèi)存空間通常會組織一種數(shù)據(jù)結(jié)構(gòu)形式,該數(shù)據(jù)結(jié)構(gòu)含有成員變量,其中部分成員變量是為了存放分析結(jié)果、鏈表指針等,另一些成員變量也存放報(bào)文數(shù)據(jù)本身。而存放每個報(bào)文的數(shù)據(jù)結(jié)構(gòu)最終是作為節(jié)點(diǎn),掛載在報(bào)文接收鏈表中?;诖?,步驟1033的一種可選實(shí)施方式包括處理核在確定有報(bào)文需要進(jìn)行轉(zhuǎn)發(fā)處理后,可以確定報(bào)文接口屬性,對報(bào)文進(jìn)行一層(LI)或二層(L2)的錯誤檢測,然后解析報(bào)文的L2/L3/L4層報(bào)文頭信息,并對存儲報(bào)文的數(shù)據(jù)結(jié)構(gòu)的相關(guān)成員變量賦值,例如源IP、目的IP、協(xié)議類型、源端口、目的端口等;然后把存儲該報(bào)文的數(shù)據(jù)結(jié)構(gòu)掛載到報(bào)文接收鏈表的表尾,并更新報(bào)文接收鏈表的表尾指針,返回繼續(xù)執(zhí)行確定報(bào)文接口屬性,對報(bào)文進(jìn)行一層(LI)或二層(L2)的錯誤檢測,然后解析報(bào)文的L2/L3/L4層報(bào)文頭信息,并對存儲報(bào)文數(shù)據(jù)結(jié)構(gòu)的相關(guān)成員變量賦值,例如源IP、目的IP、協(xié)議類型、源端口、目的端口等;然后把該報(bào)文掛載到報(bào)文接收鏈表的表尾,并更新報(bào)文接收鏈表的表尾指針等操作,直到循環(huán)次數(shù)達(dá)到預(yù)設(shè)的指定數(shù)量,即直到從報(bào)文組中獲取到指定數(shù)量的報(bào)文為止。在該處理階段中,從報(bào)文組中獲取的指定數(shù)量的報(bào)文即為所獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文。上述是通過循環(huán)的方式獲取指定數(shù)量的報(bào)文,也可以一次獲取指定數(shù)量的報(bào)文,然后再對獲取的報(bào)文進(jìn)行L1/L2層錯誤校驗(yàn),L2/L3/L4層解析等處理,最后將處理后的報(bào)文掛載到報(bào)文接收鏈表中,并更新報(bào)文接收鏈表的表尾指針。步驟1034、處理核將報(bào)文接收鏈表掛載到,所獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢茫⑺@取的虛線程對象中的私有對象指針指向滑動窗口中的下一個位置,然后執(zhí)行步驟1035。
在該處理階段中,所獲取的虛線程對象中的私有對象指針指向的滑動窗口是所獲取的虛線程對象所屬改進(jìn)流水線進(jìn)程的滑動窗口。步驟1035、處理核將所獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)所獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將所獲取的虛線程對象的下一個虛線程對象存儲到全局虛線程對象序列中,然后執(zhí)行步驟1036。其中,所獲取的虛線程對象的下一個虛線程對象為對應(yīng)于所獲取的虛線程對象所屬改進(jìn)流水線中所獲取的虛線程對象對應(yīng)的處理階段的下一個處理階段的虛線程對象。在本實(shí)施例中,由上一處理階段封裝成的虛線程對象激活下一處理階段封裝成的虛線程對象,并將激活后的虛線程對象按照其優(yōu)先級存儲到全局虛線程對象序列中相應(yīng)優(yōu)先級下。所謂激活就是將虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài)。 步驟1036、處理核將所述所獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到所述全局虛線程對象序列中,以完成對所述待處理報(bào)文的轉(zhuǎn)發(fā)處理中的接收解析,然后執(zhí)行步驟1037。在本實(shí)施例中,對應(yīng)報(bào)文接收處理階段(也就是改進(jìn)流水線進(jìn)程的第一個處理階段)的虛線程對象是自激活的,即在系統(tǒng)上電或啟動時,該虛線程對象會自動將自己的狀態(tài)設(shè)置為就緒狀態(tài)并將自己加載到全局虛線程對象序列中,等待處理核的調(diào)度執(zhí)行,當(dāng)被處理核調(diào)度執(zhí)行時其狀態(tài)就會變?yōu)閳?zhí)行狀態(tài),當(dāng)被處理核調(diào)度執(zhí)行結(jié)束后,該虛線程對象能夠自動將自己的狀態(tài)由運(yùn)行設(shè)置為就緒狀態(tài),并重新進(jìn)入全局虛線程對象序列中相應(yīng)優(yōu)先級下,以備下一次被調(diào)度執(zhí)行。步驟1037、一次報(bào)文接收處理完成。在本實(shí)施例的另一可選實(shí)施方式中,如果根據(jù)所獲取的虛線程對象中的虛線程對象名稱確定出所獲取的虛線程對象對應(yīng)的處理階段為除報(bào)文接收處理階段之外的其他報(bào)文處理階段,則步驟103的另一種實(shí)施方式包括步驟103a、處理核判斷所述所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為否,即所述滑動窗口為非空,則執(zhí)行步驟103b ;反之,執(zhí)行步驟103f。步驟103b、處理核對所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止。步驟103c、處理核將所獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并返回執(zhí)行步驟103a,即繼續(xù)執(zhí)行判斷所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為非空,則對所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止的操作,直到所獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢门c所獲取的虛線程對象的上一個虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢孟嗟葹橹?。其中,所獲取的虛線程對象的上一個虛線程對象為對應(yīng)于所獲取的虛線程對象所屬改進(jìn)流水線中所獲取的虛線程對象對應(yīng)的處理階段的上一個處理階段的虛線程對象。步驟103d、如果所獲取的虛線程對象對應(yīng)的處理階段不是所述所獲取的虛線程對象所屬改進(jìn)流水線中的最后處理階段,處理核將所獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)所獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將所獲取的虛線程對象的下一個虛線程對象存儲到全局虛線程對象序列中。步驟103e、如果所獲取的虛線程對象所屬改進(jìn)流水線的滑動窗口中還有報(bào)文需要進(jìn)行報(bào)文處理子過程,則處理核將所獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到全局虛線程對象序列中,否則將所獲取的虛線程對象的狀態(tài)重新設(shè)置為阻塞狀態(tài),以完成對待處理報(bào)文的轉(zhuǎn)發(fā)處理中的相應(yīng)報(bào)文處理的處理。
步驟103f、一次相應(yīng)報(bào)文處理完成。根據(jù)改進(jìn)流水線劃分的級數(shù),即劃分的處理階段的個數(shù)的不同,步驟103的具體實(shí)現(xiàn)過程會有所不同,但是從同一報(bào)文或報(bào)文流的轉(zhuǎn)發(fā)處理過程來看最終實(shí)現(xiàn)都是一樣的。其中,報(bào)文流的轉(zhuǎn)發(fā)處理的可選流程如圖2所示,包括報(bào)文輸入;前置報(bào)文散列,被散列到報(bào)文組G_0至報(bào)文組G_n中,其中,報(bào)文組G_0至報(bào)文組G_n分別對應(yīng)改進(jìn)流水線0_n,每條改進(jìn)流水線包括多個虛線程對象;處理核C_1-C_N根據(jù)全局虛線程對象序列對改進(jìn)流水線0-n中的虛線程對象進(jìn)行輪詢調(diào)度并執(zhí)行;最后生成報(bào)文序列Q_l_Q_m并由后置輸出單元輸出。下面本發(fā)明實(shí)施例以每條改進(jìn)流水線包括5個處理階段,分別是報(bào)文接收處理階段、報(bào)文入業(yè)務(wù)處理階段、報(bào)文路由處理階段、報(bào)文出業(yè)務(wù)處理階段和報(bào)文發(fā)送處理階段為例,詳細(xì)說明在每個處理階段時步驟103的具體實(shí)施方式
。改進(jìn)流水線中的報(bào)文接收處理階段,如圖3所示,步驟103包括如下步驟步驟31、創(chuàng)建空的臨時報(bào)文接收鏈表,報(bào)文接收鏈表的表頭指針、表尾指針均指向
空結(jié)點(diǎn)。步驟32、探測所獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中是否有新報(bào)文到達(dá),若沒有,則跳轉(zhuǎn)至步驟39,否則接收報(bào)文,并確定該報(bào)文接口屬性,進(jìn)行報(bào)文L1/L2層錯誤檢測。步驟33、解析報(bào)文的L2/L3/L4層報(bào)文頭信息,并對存儲報(bào)文數(shù)據(jù)結(jié)構(gòu)的相關(guān)成員變量賦值,如源IP地址、目的IP地址、協(xié)議類型、報(bào)文源端口號、報(bào)文目的端口號等。步驟34、解析完之后,把報(bào)文掛載到臨時報(bào)文接收鏈表的表尾,并更新報(bào)文接收鏈表的表尾指針。步驟35、判斷循環(huán)次數(shù)是否超過預(yù)設(shè)的指定數(shù)量,如果是,則跳轉(zhuǎn)到步驟36,如果否,則返回執(zhí)行步驟32 步驟34直至循環(huán)次數(shù)達(dá)到預(yù)設(shè)的指定數(shù)量為止。步驟36、把報(bào)文接收鏈表掛載到所獲取的虛線程對象中私有對象指針?biāo)赶虻幕瑒哟翱诘奈恢茫瑢⑺接袑ο笾羔樦赶蚧瑒哟翱诘南乱粋€位置。步驟37、激活改進(jìn)流水線的下一個處理階段,即報(bào)文入業(yè)務(wù)處理階段對應(yīng)的虛線程對象,即把該條改進(jìn)流水線的報(bào)文入業(yè)務(wù)處理階段所對應(yīng)的虛線程對象的狀態(tài)從阻塞狀態(tài)置為就緒狀態(tài),并把它掛載到全局虛線程對象序列中對應(yīng)優(yōu)先級下。步驟38、把報(bào)文接收處理階段對應(yīng)的所獲取的虛線程對象自身的狀態(tài)從執(zhí)行改為就緒狀態(tài),掛載到全局虛線程對象序列中對應(yīng)的優(yōu)先級下,也稱為重新進(jìn)行自激活。步驟39、一次報(bào)文接收處理完成。改進(jìn)流水線中的報(bào)文入業(yè)務(wù)處理階段,如圖4所示,步驟103包括如下步驟步驟41、判斷所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,若不為空,則跳轉(zhuǎn)至步驟42,否則跳轉(zhuǎn)到步驟46。步驟42、對所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行報(bào)文入業(yè)務(wù)處理,判斷對該報(bào)文接收鏈表中的所有報(bào)文是否都完成報(bào)文入業(yè)務(wù)處理或已完成報(bào)文入業(yè)務(wù)處理的報(bào)文個數(shù)是否已超過預(yù)設(shè)的個數(shù)閾值,如果是,則跳轉(zhuǎn)至步驟44,如果否,執(zhí)行步驟43。其中。入業(yè)務(wù)處理不僅限于訪問控制規(guī)則(Access Control List,簡稱為ACL)過濾、目的網(wǎng)絡(luò)地址轉(zhuǎn)換(Destination Network Address Translation,簡稱為 Dst-NAT)、創(chuàng)建或查詢流表項(xiàng)等;若處理的報(bào)文個數(shù)已超過預(yù)設(shè)閾值。步驟43、把所獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并判斷該指針?biāo)赶虻幕瑒哟翱诘奈恢檬欠衽c報(bào)文接收處理階段對應(yīng)的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱诘奈恢孟嗟?,若相等,則說明該條改進(jìn)流水線當(dāng)前沒有等待需要入業(yè)務(wù)處理的報(bào)文,跳轉(zhuǎn)至步驟44 ;若不相等,則跳轉(zhuǎn)到步驟42對當(dāng)前所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文繼續(xù)進(jìn)行入業(yè)務(wù)處理。步驟44、在完成報(bào)文入業(yè)務(wù)處理的報(bào)文個數(shù)大于0時,激活改進(jìn)流水線的下一處理階段,即把該條改進(jìn)流水線的報(bào)文路由處理階段對應(yīng)的虛線程對象的狀態(tài)從阻塞置為就緒,并把它掛載到全局虛線程對象序列中對應(yīng)優(yōu)先級下。步驟45、若還有剩余等待進(jìn)行報(bào)文入業(yè)務(wù)處理的報(bào)文,則重新把所獲取的虛線程對象的狀態(tài)設(shè)置為就緒狀態(tài),并重新掛載到全局虛線程對象序列中對應(yīng)的優(yōu)先級下;否則, 把所獲取的虛線程對象的狀態(tài)重新設(shè)置為阻塞狀態(tài)等待被重新激活。步驟46、一次報(bào)文入業(yè)務(wù)處理完成。改進(jìn)流水線中的報(bào)文路由業(yè)務(wù)處理階段,如圖5所示,步驟103包括如下步驟步驟51、判斷所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,若不為空,則跳轉(zhuǎn)至步驟52,否則跳轉(zhuǎn)到步驟56。步驟52、對所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行報(bào)文路由業(yè)務(wù)處理,判斷對該報(bào)文接收鏈表中的所有報(bào)文是否都完成報(bào)文路由業(yè)務(wù)處理或已經(jīng)完成報(bào)文路由業(yè)務(wù)處理的報(bào)文個數(shù)是否已超過預(yù)設(shè)的個數(shù)閾值,如果是,則跳轉(zhuǎn)至步驟54,如果否,執(zhí)行步驟53。其中,報(bào)文路由業(yè)務(wù)處理可以利用報(bào)文入業(yè)務(wù)中查詢流表得到的同一條報(bào)文流前面報(bào)文的路由處理緩存結(jié)果。步驟53、把所獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并判斷所獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱诘奈恢檬欠衽c報(bào)文入業(yè)務(wù)處理對應(yīng)的虛線程對象的指針?biāo)赶虻幕瑒哟翱诘奈恢孟嗟?,若相等,則說明該條改進(jìn)流水線當(dāng)前沒有等待需要進(jìn)行報(bào)文路由業(yè)務(wù)處理的報(bào)文,跳轉(zhuǎn)至步驟54 ;若不相等,則跳轉(zhuǎn)到步驟52繼續(xù)對當(dāng)前所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表進(jìn)行報(bào)文路由業(yè)務(wù)處理。步驟54、在完成報(bào)文路由業(yè)務(wù)處理的報(bào)文個數(shù)大于0時,則激活改進(jìn)流水線的下一處理階段,即把該條改進(jìn)流水線的報(bào)文出業(yè)務(wù)處理 階段對應(yīng)的虛線程對象從阻塞狀態(tài)置為就緒狀態(tài),并把它掛載到全局虛線程對象序列中對應(yīng)的優(yōu)先級下。步驟55、若此時還有剩余等待進(jìn)行報(bào)文路由業(yè)務(wù)處理的報(bào)文,則重新把所獲取的虛線程對象自身的狀態(tài)設(shè)置為就緒狀態(tài)并掛載到全局虛線程對象序列中對應(yīng)優(yōu)先級下;否則,把所獲取的虛線程對象自身的狀態(tài)重新設(shè)置為阻塞狀態(tài)等待被重新激活。步驟56、一次報(bào)文路由業(yè)務(wù)處理完成。改進(jìn)流水線中的報(bào)文出業(yè)務(wù)處理階段,如圖6所示,步驟103包括如下步驟步驟61、判斷所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,若不為空,則跳轉(zhuǎn)至步驟62,否則跳轉(zhuǎn)到步驟66。步驟62、對所獲取的虛線程對象中的私有對象指針指向滑動窗口的位置所掛載報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行報(bào)文出業(yè)務(wù)處理,判斷對該報(bào)文接收鏈表中的所有報(bào)文是否都完成報(bào)文出業(yè)務(wù)處理或已經(jīng)完成報(bào)文出業(yè)務(wù)處理的報(bào)文個數(shù)是否已超過預(yù)設(shè)的個數(shù)閾值,如果是,則跳轉(zhuǎn)至步驟64,如果否,則執(zhí)行步驟63。其中,出業(yè)務(wù)處理不僅限于Src-NAT、ACL過濾、流量審計(jì)等業(yè)務(wù),也可以利用入業(yè)務(wù)中查詢流表得到的同一條流前面報(bào)文的出業(yè)務(wù)處理緩存結(jié)果。步驟63、把所獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并判斷該指針?biāo)赶虻幕瑒哟翱诘奈恢檬欠衽c報(bào)文路由業(yè)務(wù)處理階段對應(yīng)的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱诘奈恢孟嗟龋粝嗟?,則說明該條改進(jìn)流水線當(dāng)前沒有等待需要進(jìn)行報(bào)文路由業(yè)務(wù)處理的報(bào)文,跳轉(zhuǎn)至步驟64 ;若不相等,則跳轉(zhuǎn)到步驟62對當(dāng)前所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表進(jìn)行報(bào)文出業(yè)務(wù)處理。步驟64、在完成報(bào)文出業(yè)務(wù)處理的報(bào)文個數(shù)大于0時,激活改進(jìn)流水線的下一處理階段,即把該條改進(jìn)流水線的報(bào)文發(fā)送處理階段對應(yīng)的虛線程對象的狀態(tài)從阻塞狀態(tài)置為就緒狀態(tài),并把它掛載到全局虛線程對象序列中對應(yīng)優(yōu)先級下。步驟65、若此時還有剩余等待出業(yè)務(wù)處理的報(bào)文,則重新把所獲取的虛線程對象的狀態(tài)設(shè)置為就緒狀態(tài),并掛載到全局虛線程對象序列中對應(yīng)的優(yōu)先級下,否則,把所獲取的虛線程對象自身的狀態(tài)重新設(shè)置為阻塞狀態(tài)等待被重新激活。步驟66、一次報(bào)文出業(yè)務(wù)處理完成。改進(jìn)流水線中的報(bào)文發(fā)送處理階段,如圖7所示,步驟103包括如下步驟步驟71、判斷所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,若不為空,則跳轉(zhuǎn)至步驟72,否則跳轉(zhuǎn)到步驟75。步驟72、對所獲取的虛線程對象中的私有對象指針?biāo)赶蚧瑒哟翱诘奈恢盟鶔燧d的報(bào)文接收鏈表中的報(bào)文,逐個把報(bào)文按之前業(yè)務(wù)處理階段確定的出接口發(fā)送出去(也可以是發(fā)送到出接口的輸出隊(duì)列中,等待接口輸出單元處理),判斷對該報(bào)文接收鏈表中的所有報(bào)文是否都完成報(bào)文發(fā)送業(yè)務(wù)處理或已經(jīng)完成報(bào)文發(fā)送業(yè)務(wù)處理的報(bào)文個數(shù)是否已超過預(yù)設(shè)的個數(shù)閾值,如果是,則跳轉(zhuǎn)至步驟74,如果否,則執(zhí)行步驟73。步驟73、把所獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并判斷該指針?biāo)赶虻幕瑒哟翱诘奈恢檬欠衽c報(bào)文出業(yè)務(wù)處理階段對應(yīng)的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱诘奈恢孟嗤?,若相同,則說明該條改進(jìn)流水線當(dāng)前沒有需要進(jìn)行報(bào)文發(fā)送處理的報(bào)文,跳轉(zhuǎn)至步驟74 ;若不相同,則跳轉(zhuǎn)到步驟72對當(dāng)前所獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文進(jìn)行發(fā)送處理。步驟74、若此時還有剩余等待從接口發(fā)送出去的報(bào)文,則重新把所獲取的虛線程對象的狀態(tài)設(shè)置為就緒狀態(tài),并掛載到全局虛線程對象序列中對應(yīng)的優(yōu)先級下;否則,把所獲取的虛線程對象自身的狀態(tài)重新設(shè)置為阻塞狀態(tài)等待被重新激活。步驟75、一次報(bào)文發(fā)送處理完成。由上述可見,本發(fā)明實(shí)施例主要是把報(bào)文處理過程劃分為若干處理階段,每個處 理階段對應(yīng)改進(jìn)流水線中的一級,表現(xiàn)為全局虛線程對象序列中的某個虛線程對象,數(shù)據(jù)轉(zhuǎn)發(fā)面的所有處理核均可對全局虛線程對象隊(duì)列中虛線程對象進(jìn)行并行調(diào)度運(yùn)行,提高了處理核之間的并行執(zhí)行能力。在上述實(shí)施例中,改進(jìn)流水線被劃分為5個處理階段,只是其中的一種劃分方法,例如還可以劃分為報(bào)文從接口接收、業(yè)務(wù)處理、隊(duì)列分發(fā)和從端口發(fā)送等四個階段,把五階段中的業(yè)務(wù)入處理和業(yè)務(wù)出處理合并為業(yè)務(wù)處理。進(jìn)一步,本發(fā)明各實(shí)施例中的改進(jìn)流水線數(shù)目以及劃分的處理階段都可以進(jìn)行適應(yīng)性改變,甚至在中間處理階段還可以劃分出流水子分支,上述虛線程的名稱也可能換成處理函數(shù)的名稱等,凡是不脫離本發(fā)明的原理的變形技術(shù)方案,也應(yīng)視為屬本發(fā)明的保護(hù)范圍。圖8為本發(fā)明一實(shí)施例提供的多核處理器的結(jié)構(gòu)示意圖。如圖8所示,本實(shí)施例的多核處理器包括多個處理核81。每個處理核81包括第一處理單元811和第二處理單元 812。其中,第一處理單元811,用于按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象。其中,全局虛線程對象序列存儲有各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到所述全局虛線程對象序列中。其中,同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中。在本實(shí)施例中,每條改進(jìn)流水線由改進(jìn)流水線對象維護(hù),每個改進(jìn)流水線對象包括所維護(hù)的改進(jìn)流水線的標(biāo)識以及由所維護(hù)的改進(jìn)流水線的每個處理階段分別封裝成的虛線程對象,每個虛線程對象包括對應(yīng)的處理階段使用的處理函數(shù)、私有對象指針、虛線程優(yōu)先級、虛線程狀態(tài)和虛線程對象名稱。每個虛線程對象中的虛線程對象名稱用于標(biāo)識每個虛線程對象對應(yīng)的處理階段,每個虛線程對象中的私有對象指針指向每個虛線程對象所屬改進(jìn)流水線的滑動窗口的一個位置,每條改進(jìn)流水線的滑動窗口中的報(bào)文來自每條改進(jìn)流水線對應(yīng)的報(bào)文組中。其中,同一改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同。第二處理單元812,與第一處理單元811連接,用于執(zhí)行第一處理單元811獲取的虛線程對象中的處理函數(shù),以完成對第一處理單元811獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。本實(shí)施例提供的多核處理器的各功能單元可用于執(zhí)行上述方法實(shí)施例提供的多核報(bào)文轉(zhuǎn)發(fā)方法的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。在本實(shí)施例中,同一報(bào)文流的報(bào)文散列到同一改進(jìn)報(bào)文流水線對應(yīng)的報(bào)文組中,每條改進(jìn)流水線劃分為多個處理階段,每個處理階段封裝成不同的虛線程對象,為每個虛線程對象分配優(yōu)先級,其中,每條改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,而不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同,并通過全局虛線程對象序列存儲各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,并且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到全局虛線程對象序列中,多核處理器中的每個處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取就緒虛線程對象,然后執(zhí)行就緒虛線程對象中的處理函數(shù),以完成對就緒虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理,與現(xiàn)有技術(shù)相比,各處理核并未與特定改進(jìn)流水線的特定處理階段進(jìn)行綁定,只要處理核空閑就可以按照優(yōu)先級從全局虛線程對象中獲取就緒虛線程對象,解決了某些處理核很忙,另外一些處理核很閑的問題,提高了多核處理器的并行 處理能力,同時由于同一條報(bào)文流的報(bào)文被散列存儲到同一條改進(jìn)流水線,在提高多核處理器的并行處理能力的同時實(shí)現(xiàn)了報(bào)文保序。圖9為本發(fā)明另一實(shí)施例提供的多核處理器的結(jié)構(gòu)示意圖。本實(shí)施例基于圖8所示實(shí)施例實(shí)現(xiàn),如圖9所示,本實(shí)施例的每個處理核還包括報(bào)文散列單元813。報(bào)文散列單元813,用于將接收到的報(bào)文散列存儲到不同改進(jìn)流水線對應(yīng)的報(bào)文組中,以使同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中??蛇x的,報(bào)文散列單元813與第二處理單元812連接,用于向第二處理單元812完成所獲取的虛線程對象的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理提供條件。 在本實(shí)施例的一個可選實(shí)施方式中,第一處理單元811具體可用于按照優(yōu)先級由高到低的順序,依次判斷全局虛線程對象序列中各優(yōu)先級下是否滿足有處于就緒狀態(tài)的虛線程對象且沒有其他處理核正在獲取所述優(yōu)先級下處于就緒狀態(tài)的虛線程對象,若判斷結(jié)果為滿足,則獲取所述優(yōu)先級下的處于就緒狀態(tài)的虛線程對象。在本實(shí)施例的一個可選實(shí)施方式中,第二處理單元812包括創(chuàng)建模塊8121、解析處理模塊8122、掛載處理模塊8123、第一狀態(tài)設(shè)置模塊8124和第一狀態(tài)改變模塊8125。創(chuàng)建模塊8121,用于在根據(jù)第一處理單元811獲取的虛線程對象中的虛線程對象名稱確定第一處理單元811獲取的虛線程對象對應(yīng)的處理階段為報(bào)文接收處理階段時,創(chuàng)建報(bào)文接收鏈表,所述報(bào)文接收鏈表的表頭指針和表尾指針均指向空節(jié)點(diǎn)??蛇x的,根據(jù)第一處理單元811獲取的虛線程對象中的虛線程對象名稱確定第一處理單元811獲取的虛線程對象對應(yīng)的處理階段為報(bào)文接收處理階段可由第二處理單元812執(zhí)行,例如,可由創(chuàng)建模塊8121執(zhí)行,或者可由第二處理單元812中的另一模塊來執(zhí)行。解析處理模塊8122,與創(chuàng)建模塊8121連接,用于如果判斷出第一處理單元811獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中有報(bào)文,從第一處理單元811獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中獲取指定數(shù)量的報(bào)文作為所述待處理報(bào)文,對所述待處理報(bào)文進(jìn)行解析后掛載到創(chuàng)建模塊8121所創(chuàng)建的報(bào)文接收鏈表的表尾,并更新所述報(bào)文接收鏈表的表尾指針。可選的,解析處理模塊8122與報(bào)文散列單元813連接。
掛載處理模塊8123,與解析處理模塊8122連接,用于將解析處理模塊8122處理后的報(bào)文接收鏈表掛載到,第一處理單元811獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢?,并將第一處理單?11獲取的虛線程對象中的私有對象指針指向滑動窗口中的下一個位置。第一狀態(tài)設(shè)置模塊8124,與第一處理單元811連接,用于將第一處理單元811獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)第一處理單元811獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將第一處理單元811獲取的虛線程對象的下一個虛線程對象存儲到全局虛線程對象序列中;第一處理單元811獲取的虛線程對象的下一個虛線程對象為對應(yīng)于第一處理單元811獲取的虛線程對象所屬改進(jìn)流水線中第一處理單元811獲取的虛線程對象對應(yīng)的處理階段的下一個處理階段的虛線程對象??蛇x的,第一狀態(tài)設(shè)置模塊8124與掛載處理模塊8123連接。第一狀態(tài)改變模塊8125,與第一處理單元811連接,用于將第一處理單元811獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到全局虛線程對象序列中,以完成對所述待處理報(bào)文的轉(zhuǎn)發(fā)處理中的接收解析。
在本實(shí)施例的另一可選實(shí)施方式中,第二處理單元812還包括第一判斷處理模塊8126、第二判斷處理模塊8127、第二狀態(tài)設(shè)置模塊8128和第二狀態(tài)改變模塊8129。其中,第一判斷處理模塊8126,與第一處理單元811連接,用于在根據(jù)第一處理單元811獲取的虛線程對象中的虛線程對象名稱確定出第一處理單元811獲取的虛線程對象對應(yīng)的處理階段為除所述報(bào)文接收處理階段之外的其他報(bào)文處理階段時,判斷第一處理單元811獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為非空,則對第一處理單元811獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對第一處理單元811獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止。可選的,根據(jù)第一處理單元811獲取的虛線程對象中的虛線程對象名稱確定出第一處理單元811獲取的虛線程對象對應(yīng)的處理階段為除所述報(bào)文接收處理階段之外的其他報(bào)文處理階段可由第二處理單元812執(zhí)行,例如,可由第一判斷處理模塊8126執(zhí)行,或者可由第二處理單元812中的另一模塊來執(zhí)行。第二判斷處理模塊8127,與第一處理單元811和第一判斷處理模塊8126連接,用于將第一處理單元811獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并觸發(fā)第一判斷處理模塊8126執(zhí)行判斷第一處理單元811獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為非空,則對第一處理單元811獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對第一處理單元811獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止的操作,直到第一處理單元811獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢门c第一處理單元811獲取的虛線程對象的上一個虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢孟嗟葹橹埂F渲?,第一處理單?11獲取的虛線程對象的上一個虛線程對象為對應(yīng)于第一處理單元811獲取的虛線程對象所屬改進(jìn)流水線中第一處理單元811獲取的虛線程對象對應(yīng)的處理階段的上一個處理階段的虛線程對象。第二狀態(tài)設(shè)置模塊8128,與第一處理單元811連接,用于如果第一處理單元811獲取的虛線程對象對應(yīng)的處理階段不是第一處理單元811獲取的虛線程對象所屬改進(jìn)流水線中的最后處理階段,將第一處理單元811獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)第一處理單元811獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將第一處理單元811獲取的虛線程對象的下一個虛線程對象存儲到全局虛線程對象序列中;第二狀態(tài)改變模塊8129,與第一處理單元811連接,用于如果第一處理單元811獲取的虛線程對象所屬改進(jìn)流水線的滑動窗口中還有報(bào)文需要進(jìn)行報(bào)文處理子過程,將第一處理單元811獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到全局虛線程對象序列中,否則將第一處理單元811獲取的虛線程對象的狀態(tài)設(shè)置為阻塞狀態(tài),以完成對第一處理單元811待處理報(bào)文的轉(zhuǎn)發(fā)處理中的相應(yīng)報(bào)文處理子過程的處理。 在本實(shí)施例的一個可選實(shí)施方式中,每條改進(jìn)流水線包括4個處理階段,分別為報(bào)文接收處理階段、報(bào)文入業(yè)務(wù)處理階段、報(bào)文出業(yè)務(wù)處理階段和報(bào)文發(fā)送處理階段。在本實(shí)施例的一個可選實(shí)施方式中,每條改進(jìn)流水線包括5個處理階段,分別為報(bào)文接收處理階段、報(bào)文入業(yè)務(wù)處理階段、報(bào)文路由處理階段、報(bào)文出業(yè)務(wù)處理階段和報(bào)文發(fā)送處理階段。在此說明,圖9僅示出一個處理核81的詳細(xì)結(jié)構(gòu),每個處理核的詳細(xì)結(jié)構(gòu)相同,為簡化圖示,其他處理核81用方框代替。上述各單元或模塊可用于執(zhí)行上述多核報(bào)文轉(zhuǎn)發(fā)方法實(shí)施例的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。在本實(shí)施例中,同一報(bào)文流的報(bào)文散列到同一改進(jìn)報(bào)文流水線對應(yīng)的報(bào)文組中,每條改進(jìn)流水線劃分為多個處理階段,每個處理階段封裝成不同的虛線程對象,為每個虛線程對象分配優(yōu)先級,其中,每條改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,而不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同,并通過全局虛線程對象序列存儲各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,并且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到全局虛線程對象序列中,多核處理器中的每個處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取就緒虛線程對象,然后執(zhí)行就緒虛線程對象中的處理函數(shù),以完成對就緒虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理,與現(xiàn)有技術(shù)相比,各處理核并未與特定改進(jìn)流水線的特定處理階段進(jìn)行綁定,只要處理核空閑就可以按照優(yōu)先級從全局虛線程對象中獲取就緒虛線程對象,解決了某些處理核很忙,另外一些處理核很閑的問題,提高了多核處理器的并行處理能力,同時由于同一條報(bào)文流的報(bào)文被散列存儲到同一條改進(jìn)流水線,在提高多核處理器的并行處理能力的同時實(shí)現(xiàn)了報(bào)文保序。本發(fā)明一實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備,包括多核處理器。其中,多核處理器可以為上述實(shí)施例提供的多核處理器,其工作原理和結(jié)構(gòu)可參見上述各實(shí)施例的相應(yīng)描述,在此不再贅述。
在本實(shí)施例中,同一報(bào)文流的報(bào)文散列到同一改進(jìn)報(bào)文流水線對應(yīng)的報(bào)文組中,每條改進(jìn)流水線劃分為多個處理階段,每個處理階段封裝成不同的虛線程對象,為每個虛線程對象分配優(yōu)先級,其中,每條改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,而不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同,并通過全局虛線程對象序列存儲各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,并且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到全局虛線程對象序列中,本實(shí)施例網(wǎng)絡(luò)設(shè)備中的多核處理器中的每個處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取就緒虛線程對象,然后執(zhí)行就緒虛線程對象中的處理函數(shù),以完成對就緒虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理,與現(xiàn)有技術(shù)相比,各處理核并未與特定改進(jìn)流水線的特定處理階段進(jìn)行綁定,只要處理核空閑就可以按照優(yōu)先級從全局虛線程對象中獲取就緒虛線程對象,解決了某些處理核很忙,另外一些處理核很閑的問題,提高了多核處理器的并行處理能力,同時由于同一條報(bào)文流的報(bào)文被散列存儲到同一條改進(jìn)流水線,在提高多核處理器的并行處理能力的同時實(shí)現(xiàn)了報(bào)文保序。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種多核報(bào)文轉(zhuǎn)發(fā)方法,其特征在于,包括 將接收到的報(bào)文散列存儲到不同改進(jìn)流水線對應(yīng)的報(bào)文組中,以使同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中;其中,每條改進(jìn)流水線由改進(jìn)流水線對象維護(hù),每個改進(jìn)流水線對象包括所維護(hù)的改進(jìn)流水線的標(biāo)識以及由所維護(hù)的改進(jìn)流水線的每個處理階段分別封裝成的虛線程對象,每個虛線程對象包括對應(yīng)的處理階段使用的處理函數(shù)、私有對象指針、虛線程優(yōu)先級、虛線程狀態(tài)和虛線程對象名稱,每個虛線程對象中的虛線程對象名稱用于標(biāo)識每個虛線程對象對應(yīng)的處理階段,每個虛線程對象中的私有對象指針指向每個虛線程對象所屬改進(jìn)流水線的滑動窗口的一個位置,每條改進(jìn)流水線的滑動窗口中的報(bào)文來自于每條改進(jìn)流水線對應(yīng)的報(bào)文組,其中,同一改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同; 多核處理器中的處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象,其中所述全局虛線程對象序列存儲有各個優(yōu)先級下處于就緒狀態(tài)的虛線程對 象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到所述全局虛線程對象序列中; 所述處理核執(zhí)行所述獲取的虛線程對象中的處理函數(shù),以完成對所述獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。
2.根據(jù)權(quán)利要求I所述的多核報(bào)文轉(zhuǎn)發(fā)方法,其特征在于,所述多核處理器中的處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取就緒虛線程對象包括 所述處理核按照優(yōu)先級由高到低的順序,依次判斷所述全局虛線程對象序列中各優(yōu)先級下是否滿足有處于就緒狀態(tài)的虛線程對象且沒有其他處理核正在獲取所述優(yōu)先級下處于就緒狀態(tài)的虛線程對象,若判斷結(jié)果為滿足,則獲取所述優(yōu)先級下的處于就緒狀態(tài)的虛線程對象。
3.根據(jù)權(quán)利要求I或2所述的多核報(bào)文轉(zhuǎn)發(fā)方法,其特征在于,若根據(jù)所述獲取的虛線程對象中的虛線程對象名稱確定出所述獲取的虛線程對象對應(yīng)的處理階段為報(bào)文接收處理階段,所述處理核執(zhí)行所述獲取的虛線程對象中的處理函數(shù),以完成對所述獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理包括 所述處理核創(chuàng)建報(bào)文接收鏈表,所述報(bào)文接收鏈表的表頭指針和表尾指針均指向空節(jié)占. 如果所述處理核判斷出所述獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中有報(bào)文,從所述獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中獲取指定數(shù)量的報(bào)文作為所述待處理報(bào)文,對所述待處理報(bào)文進(jìn)行解析后掛載到所述報(bào)文接收鏈表的表尾,并更新所述報(bào)文接收鏈表的表尾指針; 所述處理核將所述報(bào)文接收鏈表掛載到,所述獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢?,并將所述獲取的虛線程對象中的私有對象指針指向滑動窗口中的下一個位置; 所述處理核將所述獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)所述獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將所述獲取的虛線程對象的下一個虛線程對象存儲到所述全局虛線程對象序列中;所述獲取的虛線程對象的下一個虛線程對象為對應(yīng)于所述獲取的虛線程對象所屬改進(jìn)流水線中所述獲取的虛線程對象對應(yīng)的處理階段的下一個處理階段的虛線程對象; 所述處理核將所述獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到所述全局虛線程對象序列中,以完成對所述待處理報(bào)文的轉(zhuǎn)發(fā)處理中的接收解析。
4.根據(jù)權(quán)利要求3所述的多核報(bào)文轉(zhuǎn)發(fā)方法,其特征在于,若根據(jù)所述獲取的虛線程對象中的虛線程對象名稱確定出所述獲取的虛線程對象對應(yīng)的處理階段為除所述報(bào)文接收處理階段之外的其他報(bào)文處理階段; 所述處理核執(zhí)行所述獲取的虛線程對象中的處理函數(shù),以完成對所述獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理包括 所述處理核判斷所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為非空,則對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止; 所述處理核將所述獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并繼續(xù)執(zhí)行判斷所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為非空,則對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止的操作,直到所述獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢门c所述獲取的虛線程對象的上一個虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢孟嗟葹橹梗凰霁@取的虛線程對象的上一個虛線程對象為對應(yīng)于所述獲取的虛線程對象所屬改進(jìn)流水線中所述獲取的虛線程對象對應(yīng)的處理階段的上一個處理階段的虛線程對象; 如果所述獲取的虛線程對象對應(yīng)的處理階段不是所述獲取的虛線程對象所屬改進(jìn)流水線中的最后處理階段,所述處理核將所述獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)所述獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將所述獲取的虛線程對象的下一個虛線程對象存儲到所述全局虛線程對象序列中; 如果所述獲取的虛線程對象所屬改進(jìn)流水線的滑動窗口中還有報(bào)文需要進(jìn)行報(bào)文處理子過程,所述處理核將所述獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到所述全局虛線程對象序列中,否則將所述獲取的虛線程對象的狀態(tài)重新設(shè)置為阻塞狀態(tài),以完成對所述待處理報(bào)文的轉(zhuǎn)發(fā)處理中的相應(yīng)報(bào)文處理。
5.根據(jù)權(quán)利要求I或2所述的多核報(bào)文轉(zhuǎn)發(fā)方法,其特征在于,每條改進(jìn)流水線包括4個處理階段,分別為報(bào)文接收處理階段、報(bào)文入業(yè)務(wù)處理階段、報(bào)文出業(yè)務(wù)處理階段和報(bào)文發(fā)送處理階段;或者 每條改進(jìn)流水線包括5個處理階段,分別為報(bào)文接收處理階段、報(bào)文入業(yè)務(wù)處理階段、報(bào)文路由處理階段、報(bào)文出業(yè)務(wù)處理階段和報(bào)文發(fā)送處理階段。
6.—種多核處理器,其特征在于,包括多個處理核;每個處理核包括 第一處理單元,用于按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象;其中所述全局虛線程對象序列存儲有各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到所述全局虛線程對象序列中;其中,同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中,每條改進(jìn)流水線由改進(jìn)流水線對象維護(hù),每個改進(jìn)流水線對象包括所維護(hù)的改進(jìn)流水線的標(biāo)識以及由所維護(hù)的改進(jìn)流水線的每個處理階段分別封裝成的虛線程對象,每個虛線程對象包括對應(yīng)的處理階段使用的處理函數(shù)、私有對象指針、虛線程優(yōu)先級、虛線程狀態(tài)和虛線程對象名稱,每個虛線程對象中的虛線程對象名稱用于標(biāo)識每個虛線程對象對應(yīng)的處理階段,每個虛線程對象中的私有對象指針指向每個虛線程對象所屬改進(jìn)流水線的滑動窗口的一個位置,每條改進(jìn)流水線的滑動窗口中的報(bào)文來自每條改進(jìn)流水線對應(yīng)的報(bào)文組中,其中,同一改進(jìn)流水線中對應(yīng)的處理階段越往后的虛線程對象的優(yōu)先級越高,不同改進(jìn)流水線中對應(yīng)相同處理階段的虛線程對象的優(yōu)先級相同; 第二處理單元,用于執(zhí)行所述獲取的虛線程對象中的處理函數(shù),以完成對所述獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。
7.根據(jù)權(quán)利要求6所述的多核處理器,其特征在于,每個處理核還包括 報(bào)文散列單元,用于將接收到的報(bào)文散列存儲到不同改進(jìn)流水線對應(yīng)的報(bào)文組中,以使同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中。
8.根據(jù)權(quán)利要求6所述的多核處理器,其特征在于,所述第一處理單元具體用于按照優(yōu)先級由高到低的順序,依次判斷所述全局虛線程對象序列中各優(yōu)先級下是否滿足有處于就緒狀態(tài)的虛線程對象且沒有其他處理核正在獲取所述優(yōu)先級下處于就緒狀態(tài)的虛線程對象,若判斷結(jié)果為滿足,則獲取所述優(yōu)先級下的處于就緒狀態(tài)的虛線程對象。
9.根據(jù)權(quán)利要求6或7或8所述的多核處理器,其特征在于,所述第二處理單元包括創(chuàng)建模塊,用于在根據(jù)所述獲取的虛線程對象中的虛線程對象名稱確定所述獲取的虛線程對象對應(yīng)的處理階段為報(bào)文接收處理階段時,創(chuàng)建報(bào)文接收鏈表,所述報(bào)文接收鏈表的表頭指針和表尾指針均指向空節(jié)點(diǎn); 解析處理模塊,用于如果所述處理核判斷出所述獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中有報(bào)文,從所述獲取的虛線程對象所屬改進(jìn)流水線對應(yīng)的報(bào)文組中獲取指定數(shù)量的報(bào)文作為所述待處理報(bào)文,對所述待處理報(bào)文進(jìn)行解析后掛載到所述報(bào)文接收鏈表的表尾,并更新所述報(bào)文接收鏈表的表尾指針; 掛載處理模塊,用于將所述報(bào)文接收鏈表掛載到,所述獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢?,并將所述獲取的虛線程對象中的私有對象指針指向滑動窗口中的下一個位置; 第一狀態(tài)設(shè)置模塊,用于將所述獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)所述獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將所述獲取的虛線程對象的下一個虛線程對象存儲到所述全局虛線程對象序列中;所述獲取的虛線程對象的下一個虛線程對象為對應(yīng)于所述獲取的虛線程對象所屬改進(jìn)流水線中所述獲取的虛線程對象對應(yīng)的處理階段的下一個處理階段的虛線程對象; 第一狀態(tài)改變模塊,用于將所述獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到所述全局虛線程對象序列中,以完成對所述待處理報(bào)文的轉(zhuǎn)發(fā)處理中的接收解析。
10.根據(jù)權(quán)利要求9所述的多核處理器,其特征在于, 所述第二處理單元還包括 第一判斷處理模塊,用于在根據(jù)所述獲取的虛線程對象中的虛線程對象名稱確定出所述獲取的虛線程對象對應(yīng)的處理階 段為除所述報(bào)文接收處理階段之外的其他報(bào)文處理階段時,判斷所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為非空,則對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止; 第二判斷處理模塊,用于將所述獲取的虛線程對象中的私有對象指針指向滑動窗口的下一個位置,并觸發(fā)所述第一判斷處理模塊執(zhí)行判斷所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置是否為空,如果判斷結(jié)果為非空,則對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的報(bào)文,逐個進(jìn)行相應(yīng)報(bào)文處理,直到對所述獲取的虛線程對象中的私有對象指針指向的滑動窗口的位置所掛載的報(bào)文接收鏈表中的所有報(bào)文都完成相應(yīng)報(bào)文處理,或者已完成相應(yīng)報(bào)文處理的報(bào)文個數(shù)大于預(yù)設(shè)個數(shù)閾值為止的操作,直到所述獲取的虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢门c所述獲取的虛線程對象的上一個虛線程對象中的私有對象指針?biāo)赶虻幕瑒哟翱谥械奈恢孟嗟葹橹?;所述獲取的虛線程對象的上一個虛線程對象為對應(yīng)于所述獲取的虛線程對象所屬改進(jìn)流水線中所述獲取的虛線程對象對應(yīng)的處理階段的上一個處理階段的虛線程對象; 第二狀態(tài)設(shè)置模塊,用于如果所述獲取的虛線程對象對應(yīng)的處理階段不是所述獲取的虛線程對象所屬改進(jìn)流水線中的最后處理階段,將所述獲取的虛線程對象的下一個虛線程對象的狀態(tài)由阻塞狀態(tài)設(shè)置為就緒狀態(tài),并根據(jù)所述獲取的虛線程對象的下一個虛線程對象中的虛線程優(yōu)先級,將所述獲取的虛線程對象的下一個虛線程對象存儲到所述全局虛線程對象序列中; 第二狀態(tài)改變模塊,用于如果所述獲取的虛線程對象所屬改進(jìn)流水線的滑動窗口中還有報(bào)文需要進(jìn)行報(bào)文處理子過程,將所述獲取的虛線程對象的狀態(tài)重新設(shè)置為就緒狀態(tài),并重新存儲到所述全局虛線程對象序列中,否則將所述獲取的虛線程對象的狀態(tài)設(shè)置為阻塞狀態(tài),以完成對所述待處理報(bào)文的轉(zhuǎn)發(fā)處理中的相應(yīng)報(bào)文處理子過程的處理。
11.根據(jù)權(quán)利要求6或7或8所述的多核處理器,其特征在于,每條改進(jìn)流水線包括4個處理階段,分別為報(bào)文接收處理階段、報(bào)文入業(yè)務(wù)處理階段、報(bào)文出業(yè)務(wù)處理階段和報(bào)文發(fā)送處理階段;或者 每條改進(jìn)流水線包括5個處理階段,分別為報(bào)文接收處理階段、報(bào)文入業(yè)務(wù)處理階段、報(bào)文路由處理階段、報(bào)文出業(yè)務(wù)處理階段和報(bào)文發(fā)送處理階段。
12.—種網(wǎng)絡(luò)設(shè)備,其特征在于,包括權(quán)利要求6-11任一項(xiàng)所述的多核處理器。
全文摘要
本發(fā)明提供一種多核報(bào)文轉(zhuǎn)發(fā)方法、多核處理器及網(wǎng)絡(luò)設(shè)備。其中,方法包括將接收到的報(bào)文散列存儲到不同改進(jìn)流水線對應(yīng)的報(bào)文組中,以使同一報(bào)文流的報(bào)文被散列存儲到同一改進(jìn)流水線對應(yīng)的報(bào)文組中;多核處理器中的處理核按照優(yōu)先級由高到低的順序,從全局虛線程對象序列中獲取虛線程對象,其中全局虛線程對象序列存儲有各個優(yōu)先級下處于就緒狀態(tài)的虛線程對象,且同一優(yōu)先級下各個處于就緒狀態(tài)的虛線程對象按照先進(jìn)先出的順序存儲到全局虛線程對象序列中;處理核執(zhí)行獲取的虛線程對象中的處理函數(shù),以完成對獲取的虛線程對象中的私有對象指針對應(yīng)的待處理報(bào)文的轉(zhuǎn)發(fā)處理。本發(fā)明技術(shù)方案提高了多核處理器的并行處理能力。
文檔編號H04L12/46GK102752198SQ20121021193
公開日2012年10月24日 申請日期2012年6月21日 優(yōu)先權(quán)日2012年6月21日
發(fā)明者林鏡華 申請人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司