085]步驟730:前置預(yù)處理器根據(jù)上述待處理報文的物理端口的標(biāo)識以及接收順序,為上述待處理任務(wù)分配序列碼。
[0086]步驟740:前置預(yù)處理器根據(jù)上述待處理任務(wù)中的報文信息以及序列碼,將該待處理任務(wù)分配至相應(yīng)的待處理隊列中。
[0087]步驟750:前置預(yù)處理器將上述待處理任務(wù)調(diào)度至多核CPU中與上述待處理隊列存在映射關(guān)系的處理單元,由該處理單元對上述待處理任務(wù)進(jìn)行處理。
[0088]步驟760:前置預(yù)處理器接收多核CPU發(fā)送的已處理任務(wù)。
[0089]步驟770:當(dāng)已處理任務(wù)的處理類型為發(fā)送處理類型時,前置預(yù)處理器根據(jù)已處理任務(wù)中的已處理隊列標(biāo)識,將該已處理任務(wù)重新添加至已處理隊列標(biāo)識對應(yīng)的已處理隊列中的相應(yīng)位置;若已處理任務(wù)的序列碼為隊列中的最小序列碼,則前置預(yù)處理器獲取已處理任務(wù)中的存儲地址,并根據(jù)存儲地址獲取已處理報文,以及將該已處理報文發(fā)送至相應(yīng)的物理端口。
[0090]步驟780:當(dāng)已處理任務(wù)的處理類型為刪除處理類型時,前置預(yù)處理器從已處理任務(wù)對應(yīng)的待處理任務(wù)隊列中刪除相應(yīng)待處理任務(wù),并指示多核CPU釋放該已處理任務(wù)對應(yīng)的已處理報文的存儲空間。
[0091]步驟790:當(dāng)已處理任務(wù)的處理類型為重新加入隊列處理類型時,前置預(yù)處理器根據(jù)該已處理任務(wù)的序列碼以及已處理任務(wù)中的已處理隊列標(biāo)識,將該已處理任務(wù)重新添加至已處理隊列標(biāo)識對應(yīng)的已處理隊列中的相應(yīng)位置。
[0092]本發(fā)明實施例中,當(dāng)多核CPU根據(jù)待處理任務(wù)中的報文信息確定無須對報文進(jìn)行處理時,如僅需要將原待處理報文轉(zhuǎn)發(fā)至其他設(shè)備時,即可不必對該報文進(jìn)行處理,直接由前置預(yù)處理器將上述待處理任務(wù)進(jìn)行處理后,加入待處理隊列,以及將待處理報文進(jìn)行轉(zhuǎn)發(fā)處理即可。
[0093]基于上述技術(shù)方案,參閱圖8所示,本發(fā)明實施例還提供一種報文處理裝置,包括接收單元80、生成單元81、分配單元82、調(diào)度單元83,以及任務(wù)處理單元84,其中:
[0094]接收單元80,用于從物理端口接收待處理報文;
[0095]生成單元81,用于根據(jù)所述接收單元80接收的待處理報文的報文信息生成待處理任務(wù),所述待處理任務(wù)中包括所述報文信息和序列碼;所述序列碼為根據(jù)所述物理端口的標(biāo)識以及接收所述待處理報文的順序,為所述待處理任務(wù)分配的唯一標(biāo)識;
[0096]分配單元82,用于根據(jù)所述生成單元81生成的待處理任務(wù)中的報文信息以及序列碼,將所述待處理任務(wù)分配至相應(yīng)的待處理隊列中;
[0097]調(diào)度單元83,用于將所述分配單元82分配完成的待處理隊列中的所述待處理任務(wù)調(diào)度至多核CPU中與所述待處理隊列存在映射關(guān)系的處理單元,由所述處理單元對所述待處理任務(wù)進(jìn)行處理;
[0098]所述接收單元80,還用于接收所述多核CPU發(fā)送的已處理任務(wù),所述已處理任務(wù)中包括處理類型、已處理隊列標(biāo)識以及所述序列碼;
[0099]任務(wù)處理單元84,用于根據(jù)所述序列碼對所述接收單元80接收到的已處理任務(wù)進(jìn)行保序處理,并在保序處理后根據(jù)所述已處理任務(wù)中的處理類型,對所述已處理任務(wù)完成所述處理類型對應(yīng)的處理動作。
[0100]其中,上述裝置還包括獲取單元85,用于:采用PCIE協(xié)議,通過直接存儲器存儲DMA方式,將所述待處理報文寫入多核CPU的內(nèi)存中,并獲取所述待處理報文在所述內(nèi)存中的存儲地址;所述待處理任務(wù)中還包括所述存儲地址;
[0101]所述任務(wù)處理單元84在保序處理后根據(jù)所述已處理任務(wù)中的處理類型,對所述已處理任務(wù)完成所述處理類型對應(yīng)的處理動作時,具體包括:采用DMA方式,將所述待處理任務(wù)發(fā)送至多核CPU中與所述待處理隊列存在映射關(guān)系的處理單元;所述處理單元根據(jù)所述待處理任務(wù)中所述待處理報文的存儲地址獲取所述待處理報文,根據(jù)所述待處理任務(wù)中的報文信息對所述待處理報文進(jìn)行處理,得到已處理報文;將所述已處理報文存儲在所述待處理報文的存儲地址對應(yīng)的所述內(nèi)存中。
[0102]所述任務(wù)處理單元84,具體用于:當(dāng)所述已處理任務(wù)中的處理類型為發(fā)送時,根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中;若所述已處理任務(wù)的序列碼為所述已處理隊列中的最小序列碼,獲取所述已處理報文的存儲地址,并根據(jù)所述存儲地址獲取所述已處理報文,將所述已處理報文發(fā)送至所述物理端口。
[0103]所述任務(wù)處理單元84,具體用于:當(dāng)所述已處理任務(wù)中的處理類型為重新加入隊列時,根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中。
[0104]所述任務(wù)處理單元84獲取的已處理隊列按照序列碼從小到大的順序存儲任務(wù),或者按照序列碼從大到小的序列存儲任務(wù)。
[0105]所述任務(wù)處理單元84,具體用于:當(dāng)所述已處理任務(wù)中的處理類型為刪除時,從待處理隊列中刪除所述待處理任務(wù),并指示所述多核CPU釋放所述已處理報文的存儲空間。
[0106]基于上述技術(shù)方案,參閱圖9所示,本發(fā)明實施例還提供一種報文處理設(shè)備,包括處理器91,物理端口 92以及總線93,其中:
[0107]處理器91、物理端口 92通過總線93相互連接;總線93可以是外設(shè)部件互連標(biāo)準(zhǔn)(peripheral component interconnect,簡稱 PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(extendedindustry standard architecture,簡稱EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖9中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0108]物理端口 92用于收發(fā)報文。
[0109]處理器91可以是網(wǎng)絡(luò)處理器NP,處理器91還可以是數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或者其他可編程邏輯器件,用于實現(xiàn)本發(fā)明圖2所示的報文處理方法,包括:從物理端口 92接收待處理報文;根據(jù)所述待處理報文的報文信息生成待處理任務(wù),所述待處理任務(wù)中包括所述報文信息和序列碼;所述序列碼為根據(jù)所述物理端口的標(biāo)識以及接收所述待處理報文的順序,為所述待處理任務(wù)分配的唯一標(biāo)識;
[0110]根據(jù)生成的待處理任務(wù)中的報文信息以及序列碼,將所述待處理任務(wù)分配至相應(yīng)的待處理隊列中;
[0111]將分配完成的待處理隊列中的所述待處理任務(wù)調(diào)度至多核CPU中與所述待處理隊列存在映射關(guān)系的處理單元,由所述處理單元對所述待處理任務(wù)進(jìn)行處理;
[0112]接收所述多核CPU發(fā)送的已處理任務(wù),所述已處理任務(wù)中包括處理類型、已處理隊列標(biāo)識以及所述序列碼;
[0113]根據(jù)所述序列碼對已處理任務(wù)進(jìn)行保序處理,并在保序處理后根據(jù)所述已處理任務(wù)中的處理類型,對所述已處理任務(wù)完成所述處理類型對應(yīng)的處理動作。
[0114]當(dāng)所述處理器91為網(wǎng)絡(luò)處理器NP時,所述報文處理裝置還包括存儲器(圖中未示出),用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計算機(jī)操作指令。存儲器可能包含隨機(jī)存取存儲器(random access memory,簡稱RAM),也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。處理器91執(zhí)行存儲器所存放的應(yīng)用程序,實現(xiàn)如上所述本發(fā)明圖2所示的報文處理方法。
[0115]所述處理器91具體采用PCIE協(xié)議,通過直接存儲器存儲DMA方式,將所述待處理報文寫入多核CPU的內(nèi)存中,并獲取所述待處理報文在所述內(nèi)存中的存儲地址;所述待處理任務(wù)中還包括所述存儲地址。
[0116]處理器91具體采用DMA方式,將所述待處理任務(wù)發(fā)送至多核CPU中與所述待處理隊列存在映射關(guān)系的處理單元。所述處理單元根據(jù)所述待處理任務(wù)中所述待處理報文的存儲地址獲取所述待處理報文,根據(jù)所述待處理任務(wù)中的報文信息對所述待處理報文進(jìn)行處理,得到已處理報文;將所述已處理報文存儲在所述待處理報文的存儲地址對應(yīng)的所述內(nèi)存中。
[0117]進(jìn)一步地,當(dāng)所述已處理任務(wù)中的處理類型為發(fā)送時,處理器91根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中;若所述已處理任務(wù)的序列碼為所述已處理隊列中的最小序列碼,獲取所述已處理報文的存儲地址,并根據(jù)所述存儲地址獲取所述已處理報文,將所述已處理報文發(fā)送至所述物理端口。
[0118]當(dāng)所述已處理任務(wù)中的處理類型為重新加入隊列時,處理器91根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中。
[0119]所述已處理隊列按照序列碼從小到大的順序存儲任務(wù),或者按照序列碼從大到小的序列存儲任務(wù)。
[0120]當(dāng)所述已處理任務(wù)中的處理類型為刪除時,處理器91從待處理隊列中刪除所述待處理任務(wù),并指示所述多核CPU釋放所述已處理報文的存儲空間。
[0121]所示報文處理設(shè)備還包括通信接口 94 ;所述通信接口 94用于與所述多核CPU通信。
[0122]綜上所述,本發(fā)明實施例中,前置預(yù)處理器從物理端口接收待處理報文,根據(jù)該待處理報文的報文信息生成待處理任務(wù);前置預(yù)處理器根據(jù)上述待處理任務(wù)中的報文信息以及序列碼,將該待處理任務(wù)分配至相應(yīng)的待處理隊列中;前置預(yù)處理器將上述待處理任務(wù)調(diào)度至多核CPU中與上述待處理隊列