一種基于混合計算硬件的網(wǎng)絡(luò)報文分類系統(tǒng)和方法
【專利摘要】本發(fā)明提出了基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng)和方法。通過中央處理器對多種不同計算硬件資源進行集中調(diào)度,構(gòu)建多級分類處理流水線,將匹配規(guī)則按照不同計算硬件的特性進行合理分割并配置到流水線各級中,對于簡單規(guī)則可以通過專用硬件芯片完成分類處理,對應(yīng)復(fù)雜自定義分類規(guī)則可以由專用硬件芯片、通用并行處理器和通用中央處理器協(xié)同實現(xiàn),增強了處理報文的能力。
【專利說明】一種基于混合計算硬件的網(wǎng)絡(luò)報文分類系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng)和方法,屬于報文分類【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]計算機網(wǎng)絡(luò)設(shè)備從網(wǎng)絡(luò)接口接收到來自外部的網(wǎng)絡(luò)報文,需要根據(jù)其自身任務(wù)對報文進行相關(guān)處理,譬如,路由器和交換機接收到報文后需要往其他網(wǎng)絡(luò)接口進行轉(zhuǎn)發(fā),NAT網(wǎng)關(guān)設(shè)備接收到數(shù)據(jù)報文后需要對報文進行修改,負(fù)載均衡器需要對報文進行重定向。這些設(shè)備在對報文進行操作(轉(zhuǎn)發(fā)或修改)前,均必不可少地需要先對數(shù)據(jù)報文進行分類,針對不同類別的網(wǎng)絡(luò)報文執(zhí)行不同的操作。現(xiàn)有技術(shù)通常采用專用硬件芯片來對報文固定位置的內(nèi)容進行提取并且與各條分類規(guī)則進行逐一對比,若報文與某條規(guī)則匹配,則將數(shù)據(jù)報文歸類到該規(guī)則所指定的分類中。傳統(tǒng)利用專用硬件芯片進行報文分類的方法存在靈活性不足,用戶只能根據(jù)網(wǎng)絡(luò)報文目的IP地址、物理地址等少數(shù)給定的規(guī)則中進行選取,難以根據(jù)用戶自定義的報文字段進行分類。新型網(wǎng)絡(luò)報文分類方法有嘗試采用通用處理器或者圖形處理器實現(xiàn)報文分類,以實現(xiàn)靈活定義的報文分類機制,然而現(xiàn)有方法均局限于采用單一類型的計算硬件(CPU或GPU),其報文分類處理能力非常有限,難以滿足現(xiàn)有計算機網(wǎng)絡(luò)海量網(wǎng)絡(luò)報文分類處理要求。
【發(fā)明內(nèi)容】
[0003]為了解決現(xiàn)有技術(shù)中的技術(shù)問題,本發(fā)明提出了基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng)和方法。通過中央處理器對多種不同計算硬件資源進行集中調(diào)度,構(gòu)建多級分類處理流水線,將匹配規(guī)則按照不同計算硬件的特性進行合理分割并配置到流水線各級中,對于簡單規(guī)則可以通過專用硬件芯片完成分類處理,對應(yīng)復(fù)雜自定義分類規(guī)則可以由專用硬件芯片、通用并行處理器和通用中央處理器協(xié)同實現(xiàn)。
[0004]具體地,本發(fā)明采用如下技術(shù)方案:
[0005]本發(fā)明提供一種基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng),其特征在于:該系統(tǒng)包括網(wǎng)絡(luò)接口、專用硬件芯片、通用并行處理器、通用中央處理器和中央處理器;該網(wǎng)絡(luò)接口用于接收網(wǎng)絡(luò)報文,中央處理器控制專用硬件芯片、通用并行處理器和通用中央處理器三個部分,所述三個部分作為分類處理中的三個分級;中央處理器將各種計算硬件資源配置成多級分類流水線,并且對分類規(guī)則數(shù)據(jù)庫中全部規(guī)則進行逐條分析和拆分;專用硬件芯片用于實現(xiàn)流水線第一級;通用并行處理器用于實現(xiàn)流水線第二級;通用中央處理器用于實現(xiàn)流水線第三級。
[0006]優(yōu)選的是,中央處理器識別網(wǎng)絡(luò)接口,標(biāo)識不同網(wǎng)絡(luò)接口的類型和數(shù)目。
[0007]優(yōu)選的是,中央處理器識別計算硬件,標(biāo)識不同計算硬件的類型、數(shù)目及其相關(guān)資源。
[0008]優(yōu)選的是,中央處理器逐條規(guī)則的拆分具體為:拆分為若干部分,第一部分是能被流水線第一級處理的部分,第二部分是能被流水線第二級處理的部分,如此類推,每一部分均有可能為空。
[0009]優(yōu)選的是,中央處理器為流水線每一級構(gòu)建并維護一個描述表,該描述表記錄對應(yīng)流水線級的級數(shù)、所支持的字段類型、當(dāng)前存儲的全部表項的內(nèi)容、組織方式和存儲位置。
[0010]本發(fā)明還提供一種混合計算硬件的多級網(wǎng)絡(luò)報文分類方法,其特征在于:該方法分為單級流水線內(nèi)容處理和多級流水線分類處理。所述單級流水線內(nèi)容處理方法具體為:第一級和第二級流水線根據(jù)流水線設(shè)置從報文提取字段,合成待匹配值,將所述待匹配值與當(dāng)前表項進行對比,并輸出對應(yīng)對比結(jié)果。第三級流水線根據(jù)當(dāng)前表項自定義字段從報文提取字段,合成待匹配值,將所述待匹配值與當(dāng)前表項進行對比,并輸出對應(yīng)對比結(jié)果。
[0011]所述多級流水線分類處理方法具體為:從網(wǎng)絡(luò)接口取出數(shù)據(jù)報文,加入緩沖隊列,并送入流水線處理;在流水線第一級進行查找,如果命中則根據(jù)命中表項跳轉(zhuǎn)至第二級流水線進行查找;如果命中則根據(jù)命中表項跳轉(zhuǎn)至第三級流水線進行查找,在同樣命中的情況下輸出分類類別,并進行存儲;如果上述任何一級出現(xiàn)不命中的情況,則直接輸出無命中對應(yīng)的分類類別并進行存儲。
[0012]在單級流水線內(nèi)容處理或者多級流水線分類處理之前還包括分類流水線增加新分類規(guī)則的方法,具體為:系統(tǒng)初始化,并增加一條新分類規(guī)則;把新增規(guī)則拆分成三部分;在流水線第一級進行查找,如果命中則根據(jù)命中表項跳轉(zhuǎn)至第二級流水線進行查找;如果命中則根據(jù)命中表項跳轉(zhuǎn)至第三級流水線進行查找,在同樣命中的情況下判斷為新增加的規(guī)則已經(jīng)存在,不需要增加;如果上述第一級或者第二級出現(xiàn)不命中的情況,則在不命中的一級新增表項且在下一級新增搜索域,并跳轉(zhuǎn)至新的搜索域;如果上述第三級出現(xiàn)不命中的情況,則直接在第三級新增表項。
【專利附圖】
【附圖說明】
[0013]圖1是混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng)示意圖。
[0014]圖2是分類流水線增加新分類規(guī)則流程圖。
[0015]圖3是第一第二級流水線分類處理流程圖。
[0016]圖4是第三級流水線分類處理流程圖。
[0017]圖5是多級流水線分類處理流程圖。
【具體實施方式】
[0018]下面結(jié)合附圖和具體實施例對本發(fā)明的技術(shù)方案進行詳細(xì)描述。
[0019]如圖1所示,本發(fā)明的系統(tǒng)包括網(wǎng)絡(luò)接口、專用硬件芯片、通用并行處理器、通用中央處理器和中央處理器(未示出),該網(wǎng)絡(luò)接口用于接收網(wǎng)絡(luò)報文,中央處理器控制專用硬件芯片、通用并行處理器和通用中央處理器三個部分,這三個部分作為分類處理中的三個分級。
[0020]其中,中央處理器可以識別網(wǎng)絡(luò)接口,標(biāo)識不同網(wǎng)絡(luò)接口的類型和數(shù)目。例如系統(tǒng)有十個千兆以太網(wǎng)接口和四個萬兆以太網(wǎng)接口,分別標(biāo)識為eth0,ethl,...,eth9和xgeO,xgel,xge2,xge30中央處理器還可以識別計算硬件,標(biāo)識不同計算硬件的類型、數(shù)目及其相關(guān)資源。例如系統(tǒng)中有兩個八核CPU,兩塊獨立顯卡和一塊專用硬件分類芯片(例如FPGA、商用交換芯片等),分別標(biāo)識為CPUOjCPUI,...,CPU14,CPU15,GPUO,GPUl和HW0,其中所有CPU共享16GB主機內(nèi)存,每個GPU可使用3GB專用顯存,專用硬件分類芯片能夠存儲4K條128比特長度的分類規(guī)則。
[0021]中央處理器將各種計算硬件資源配置成多級分類流水線。流水線第一級Pl由專用硬件芯片實現(xiàn),在表項長度允許情況下覆蓋最常用的分類規(guī)則檢查字段,譬如,目地IP地址、源IP地址、目的MAC地址、源MAC地址等等;流水線第二級P2由通用并行計算硬件(例如GPU和DSP等)實現(xiàn),覆蓋全部次常用分類檢查字段,譬如TTL字段、ACK/SYN標(biāo)識位、IP報文長度字段等等;流水線第三級P3由通用處理器即CPU實現(xiàn),覆蓋用戶配置分類規(guī)則指定的報文任意位置和任意長度,以提供充分的分類靈活性。
[0022]用戶輸入配置的分類規(guī)則統(tǒng)一存儲在規(guī)則數(shù)據(jù)庫中,用戶增加、刪除、修改分類規(guī)則均通過操作數(shù)據(jù)庫內(nèi)容實現(xiàn)。
[0023]中央處理器對分類規(guī)則數(shù)據(jù)庫中全部規(guī)則進行逐條分析,將每條規(guī)則拆分為若干部分,第一部分是能被流水線第一級Pl處理的部分,第二部分是能被流水線第二級P2處理的部分,如此類推,每一部分均有可能為空。譬如,一條分類規(guī)則需要檢查目的IP地址(PD,TCP目的端口號(Pl),IP數(shù)據(jù)報文總長度(P2)和TCP荷載第的10個字節(jié)(用戶自定義,P3)三部分,則該規(guī)則分為如下三部分,第一部分是“目的IP地址,TCP目的端口號”,第二部分是“ IP數(shù)據(jù)報文總長度”,第三部分是“TCP荷載第的10個字節(jié)”。
[0024]中央處理器為流水線每一級構(gòu)建并維護一個描述表,該描述表記錄對應(yīng)流水線級的級數(shù)、所支持的字段類型、當(dāng)前存儲的全部表項的內(nèi)容、組織方式和存儲位置。該描述表與流水線具體表項的存儲方式和組織結(jié)構(gòu)相互獨立,中央處理器依據(jù)該描述表來對流水線各級進行具體表項配置管理,包括表項查詢、增加、刪除、修改等。
[0025]流水線的第一級(Pl)的所有表項處于同一個搜索域中,流水線的第二級(P2)和第三級(P3)可由多個搜索域組成。當(dāng)一個搜索域中的一條表項被命中時,中央處理器根據(jù)該表項的輸出值跳轉(zhuǎn)到下一級流水線的指定搜索域,繼續(xù)查找,直至通過全部流水線。
[0026]如圖2所示,中央處理器將分類規(guī)則逐一添加到多級流水線中的方法具體為:
[0027]a)系統(tǒng)初始化階段,流水線各級存儲表項清空,流水線第一級初始化為一個搜索域,流水線第二級和第三級初始化無搜索域;
[0028]b)中央處理器管理流水線從規(guī)則數(shù)據(jù)庫中提取一條新增的分類規(guī)則,并按照上述方法拆分成三部分,設(shè)置當(dāng)前流水線級為第一級;
[0029]c)中央處理器管理流水線在流水線當(dāng)前級對應(yīng)的描述表的搜索域中進行查找將新分類規(guī)則的相應(yīng)部分;
[0030]d)若流水線當(dāng)前級描述表沒有表項命中,執(zhí)行e),否則執(zhí)行h);
[0031]e)中央處理器管理流水線將新規(guī)則的對應(yīng)部分的內(nèi)容加入到流水線當(dāng)前級(Pi)描述表尾部,若當(dāng)前級不是最后一級,在流水線下一級(Pi+ι)的描述表中增加一個空的搜索域,同時將新加入到Pi描述表的表項的輸出值指向Pi+Ι描述表新增的搜索域;
[0032]f)中央處理器管理流水線將e)中Pi描述表和Pi+Ι描述表的變化更新到流水線的實際表項中,即流水線當(dāng)前級(Pi)增加新表項,若當(dāng)前級不是最后一級,流水線下一級(Pi+1)增加新搜索域,Pi新增表項輸出指向Pi+Ι新增搜索域;[0033]g)若當(dāng)前級不是最后一級,中央處理器管理流水線跳轉(zhuǎn)至流水線下一級Pi + Ι描述表的新增搜索域,執(zhí)行c),否則停止操作;
[0034]h)當(dāng)前級Pi描述表中某表項被命中,若當(dāng)前級不是最后一級,則根據(jù)該表項的輸出值跳轉(zhuǎn)到流水線下一級(Pi+Ι)的描述表的指定搜索域,執(zhí)行C),否則停止操作;
[0035]混合計算硬件的多級網(wǎng)絡(luò)報文分類方法分為以下兩種:
[0036]第一種方法,如圖3所示數(shù)據(jù)報文在流水線單級內(nèi)部處理流程:a)第一級和第二級流水線執(zhí)行b),第三級流水線執(zhí)行d);
[0037]b)流水線根據(jù)當(dāng)前流水線級所覆蓋的字段,從報文的相應(yīng)位置提取內(nèi)容,并且合并成待匹配值;
[0038]c)流水線將待匹配值與當(dāng)前搜索域的全部表項逐一對比,若其中有表項命中,則該級流水線輸出命中表項序號,若無表項命中,則該級流水線輸出無命中。該級流水線處理結(jié)束;
[0039]d)如圖4所示第三級流水線按如下方式將報文與所有表項逐一進行對比:
[0040]1.根據(jù)表項指定的檢查字段,從報文中提取出相應(yīng)的內(nèi)容,并且合并成待匹配值;
[0041]i1.將待匹配值與當(dāng)前表項進行對比,若該表項命中,則該級流水線輸出命中表項序號,該級流水線處理結(jié)束;若表項不命中且當(dāng)前表項不是當(dāng)前搜索域最后一條表項,則轉(zhuǎn)至下一條表項并執(zhí)行i),若表項不命中且當(dāng)前表項是當(dāng)前搜索域最后一條表項,則輸出無命中,該級流水線處理結(jié)束;
[0042]第二種方法,如圖5所示多級流水線分類處理流程:
[0043]a)中央處理器收包流水線輪詢所有網(wǎng)絡(luò)接口取出數(shù)據(jù)報文,并存放在環(huán)形緩沖隊列尾部;
[0044]b)中央處理器分類處理流水線從環(huán)形緩沖隊列首部取出數(shù)據(jù)報文,并將報文送進流水線進行分類處理:
[0045]1.分類處理流水線將報文在流水線第一級(專用硬件芯片)進行查找,若第一級查找結(jié)果顯示某表項被命中,則根據(jù)命中表項的輸出值跳轉(zhuǎn)至流水線下一級的指定搜索域,繼續(xù)執(zhí)行ii);否則若流水線第一級無表項被命中,則根據(jù)流水線第一級預(yù)先配置的無命中情況輸出值指定的分類標(biāo)號作為該數(shù)據(jù)報文最終分類類別,并且終止對該數(shù)據(jù)報文的流水線處理;
[0046]i1.分類處理流水線將報文在流水線第二級(通用并行處理器)的指定搜索域中進行查找,若第二級查找結(jié)果顯示該搜索域中某表項被命中,則根據(jù)命中表項的輸出值跳轉(zhuǎn)至流水線下一級的指定搜索域,繼續(xù)執(zhí)行iv);
[0047]ii1.否則若流水線第二級該搜索域中無表項被命中,則根據(jù)流水線第二級該搜索域中預(yù)先配置的無命中情況輸出值指定的分類標(biāo)號作為該數(shù)據(jù)報文最終分類類別,并且終止對該數(shù)據(jù)報文的流水線處理;
[0048]iv.分類處理流水線將報文在流水線第三級(通用中央處理器)的指定搜索域中進行查找,若第三級查找結(jié)果顯示該搜索域中某表項被命中,則根據(jù)命中表項的輸出值指定的分類標(biāo)號作為該數(shù)據(jù)報文最終分類類別,并且終止對該數(shù)據(jù)報文的流水線處理;
[0049]V.否則若流水線第三級該搜索域中無表項被命中,則根據(jù)流水線第三級該搜索域中預(yù)先配置的無命中情況輸出值指定的分類標(biāo)號作為該數(shù)據(jù)報文最終分類類別,并且終止對該數(shù)據(jù)報文的流水線處理;
[0050]c)中央處理器分類處理流水線記錄并存儲流水線分類處理結(jié)果作為數(shù)據(jù)報文最終分類類別。
[0051]通過本發(fā)明的多級分類處理方法,可以對用戶自定義的報文字段進行分類,提高了報文處理靈活性,采用多類型硬件協(xié)同處理,提高了報文分類處理能力,實現(xiàn)了計算機網(wǎng)絡(luò)海量報文分類處理的要求。
【權(quán)利要求】
1.一種基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng),其特征在于:該系統(tǒng)包括網(wǎng)絡(luò)接口、專用硬件芯片、通用并行處理器、通用中央處理器和中央處理器;該網(wǎng)絡(luò)接口用于接收網(wǎng)絡(luò)報文,中央處理器控制專用硬件芯片、通用并行處理器和通用中央處理器三個部分,所述三個部分作為分類處理中的三個分級; 中央處理器將各種計算硬件資源配置成多級分類流水線,并且對分類規(guī)則數(shù)據(jù)庫中全部規(guī)則進行逐條分析和拆分; 專用硬件芯片用于實現(xiàn)流水線第一級; 通用并行處理器用于實現(xiàn)流水線第二級; 通用中央處理器用于實現(xiàn)流水線第三級。
2.如權(quán)利要求1所述的基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng),其特征在于:中央處理器識別網(wǎng)絡(luò)接口,標(biāo)識不同網(wǎng)絡(luò)接口的類型和數(shù)目。
3.如權(quán)利要求1所述的基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng),其特征在于:中央處理器識別計算硬件,標(biāo)識不同計算硬件的類型、數(shù)目及其相關(guān)資源。
4.如權(quán)利要求1所述的基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng),其特征在于:中央處理器逐條規(guī)則的拆分具體為:拆分為若干部分,第一部分是能被流水線第一級處理的部分,第二部分是能被流水線第二級處理的部分,如此類推,每一部分均有可能為空。
5.如權(quán)利要求1所述的基于混合計算硬件的多級網(wǎng)絡(luò)報文分類系統(tǒng),其特征在于:中央處理器為流水線每一級構(gòu)建并維護一個描述表,該描述表記錄對應(yīng)流水線級的級數(shù)、所支持的字段類型、當(dāng)前存儲的全部表項的內(nèi)容、組織方式和存儲位置。
6.利用權(quán)利要求1所述系統(tǒng)的混合計算硬件的多級網(wǎng)絡(luò)報文分類方法,其特征在于:該方法分為單級流水線內(nèi)容處理和多級流水線分類處理。
7.如權(quán)利要求6所示的方法,其特征在于:所述單級流水線內(nèi)容處理方法具體為: 第一級和第二級流水線根據(jù)流水線設(shè)置從報文提取字段,合成待匹配值,將所述待匹配值與當(dāng)前表項進行對比,并輸出對應(yīng)對比結(jié)果。
8.如權(quán)利要求6所示的方法,其特征在于:所述單級流水線內(nèi)容處理方法還包括為: 第三級流水線根據(jù)當(dāng)前表項自定義字段從報文提取字段,合成待匹配值,將所述待匹配值與當(dāng)前表項進行對比,并輸出對應(yīng)對比結(jié)果。
9.如權(quán)利要求6所示的方法,其特征在于:所述多級流水線分類處理方法具體為: 從網(wǎng)絡(luò)接口取出數(shù)據(jù)報文,加入緩沖隊列,并送入流水線處理; 在流水線第一級進行查找,如果命中則根據(jù)命中表項跳轉(zhuǎn)至第二級流水線進行查找;如果命中則根據(jù)命中表項跳轉(zhuǎn)至第三級流水線進行查找,在同樣命中的情況下輸出分類類別,并進行存儲; 如果上述任何一級出現(xiàn)不命中的情況,則直接輸出無命中對應(yīng)的分類類別并進行存儲。
10.如權(quán)利要求6所述的方法,其特征在于:在單級流水線內(nèi)容處理或者多級流水線分類處理之前還包括分類流水線增加新分類規(guī)則的方法,具體為: 系統(tǒng)初始化,并增加一條新分類規(guī)則; 把新增規(guī)則拆分成三部分; 在流水線第一級進行查找,如果命中則根據(jù)命中表項跳轉(zhuǎn)至第二級流水線進行查找;如果命中則根據(jù)命中表項跳轉(zhuǎn)至第三級流水線進行查找,在同樣命中的情況下判斷為新增加的規(guī)則已經(jīng)存在,不需要增加; 如果上述第一級或者第二級出現(xiàn)不命中的情況,則在不命中的一級新增表項且在下一級新增搜索域,并跳轉(zhuǎn)至新的搜索域;如果 上述第三級出現(xiàn)不命中的情況,則直接在第三級新增表項。
【文檔編號】H04L12/24GK104008130SQ201410173987
【公開日】2014年8月27日 申請日期:2014年4月28日 優(yōu)先權(quán)日:2014年4月28日
【發(fā)明者】李丹, 唐勇 申請人:開網(wǎng)科技(北京)有限公司