一種深度報(bào)文檢測(cè)方法、設(shè)備及協(xié)處理器的制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種深度報(bào)文檢測(cè)方法、設(shè)備及協(xié)處理器,該深度報(bào)文檢測(cè)方法包括:協(xié)處理器的收發(fā)模塊接收通用處理器發(fā)送的原始數(shù)據(jù)包,將原始數(shù)據(jù)包發(fā)送給協(xié)處理器的處理器核;處理器核調(diào)用協(xié)處理器的子協(xié)處理器對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到應(yīng)用層解析結(jié)果;處理器核將解析結(jié)果發(fā)送給通用處理器,以使通用處理器根據(jù)解析結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理。本發(fā)明實(shí)施例提供的深度報(bào)文檢測(cè)方法及裝置,降低了通用處理器資源的占用,提高運(yùn)行速度。
【專利說明】一種深度報(bào)文檢測(cè)方法、設(shè)備及協(xié)處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù),尤其涉及一種深度報(bào)文檢測(cè)方法、設(shè)備及協(xié)處理器。
【背景技術(shù)】
[0002]深度報(bào)文檢測(cè)(Deep Packet Inspect1n,簡(jiǎn)稱DPI)技術(shù)作為網(wǎng)絡(luò)入侵檢測(cè)及應(yīng)用層協(xié)議識(shí)別的核心技術(shù),在網(wǎng)絡(luò)與信息安全領(lǐng)域中發(fā)揮著日益重要的作用。DPI技術(shù)通過特征匹配算法實(shí)現(xiàn)對(duì)數(shù)據(jù)包的深入分析,以獲得數(shù)據(jù)包的應(yīng)用信息,從而實(shí)現(xiàn)網(wǎng)絡(luò)優(yōu)化、應(yīng)用流量控制和安全檢測(cè)等業(yè)務(wù)。
[0003]現(xiàn)有技術(shù)中,通常通過通用處理器來實(shí)現(xiàn)DPI業(yè)務(wù),通用處理器中集成有匹配器,通用處理器由軟件邏輯驅(qū)動(dòng)匹配器來實(shí)現(xiàn)特征匹配。由于通用處理器往往不是專門為DPI業(yè)務(wù)而設(shè)計(jì)的,因此,為了保證通用性要求,其集成的匹配器一般也只支持通用的匹配算法,比如正則表達(dá)式匹配算法,而不能支持專門為DPI業(yè)務(wù)所設(shè)計(jì)的匹配算法,從而導(dǎo)致匹配性能不佳,成為業(yè)務(wù)處理的瓶頸。而且,所有的DPI業(yè)務(wù)都在通用處理器中實(shí)現(xiàn),由于通用處理器資源有限,限制了 DPI業(yè)務(wù)的性能。如圖1所示,現(xiàn)有技術(shù)中DPI業(yè)務(wù)的另一種實(shí)現(xiàn)方式是是把DPI業(yè)務(wù)邏輯固化到硬件中去,此硬件實(shí)體可以是FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列),或者ASIC(Applicat1n SpecificIntegrated Circuit,專用集成電路)。例如,某設(shè)備的DPI業(yè)務(wù)邏輯分三個(gè)步驟:一、端點(diǎn)表匹配;二、IP端口識(shí)別;三、應(yīng)用層報(bào)文文本特征匹配;四、復(fù)雜的解碼后識(shí)別??梢园亚叭齻€(gè)步驟都固化到硬件邏輯中去實(shí)現(xiàn),而步驟四邏輯很復(fù)雜,無法通過硬件邏輯來實(shí)現(xiàn),則遺留給通用處理器來完成??梢钥闯觯ㄟ^硬件實(shí)現(xiàn)邏輯固化,擴(kuò)展性差:DPI業(yè)務(wù)邏輯(如上例的三個(gè)步驟變成四個(gè)步驟或者調(diào)整順序)發(fā)生變化時(shí),都需要重新編寫硬件代碼、仿真再發(fā)布到現(xiàn)網(wǎng)設(shè)備中。難以快速適應(yīng)網(wǎng)絡(luò)流量變化;而且,由于DPI業(yè)務(wù)邏輯的多個(gè)步驟分別由通用處理器用軟件實(shí)現(xiàn)和硬件加速芯片邏輯實(shí)現(xiàn),不可避免的多次通用處理器與硬件加速芯片之間的交互,導(dǎo)致DPI處理的時(shí)延很大。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種深度報(bào)文檢測(cè)方法、設(shè)備及協(xié)處理器,以提高DPI的性能和擴(kuò)展性。
[0005]第一方面,本發(fā)明實(shí)施例提供一種深度報(bào)文檢測(cè)方法,包括:
[0006]協(xié)處理器的收發(fā)模塊接收通用處理器發(fā)送的原始數(shù)據(jù)包,將所述原始數(shù)據(jù)包發(fā)送給所述協(xié)處理器的處理器核;所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息;所述處理器核將所述應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器,以使所述通用處理器根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
[0007]在第一種可能的實(shí)現(xiàn)方式中,在所述協(xié)處理器的收發(fā)模塊接收所述通用處理器發(fā)送的原始數(shù)據(jù)包之后,在將所述原始數(shù)據(jù)包發(fā)送給所述協(xié)處理器的處理器核之前,所述方法還包括:對(duì)所述原始數(shù)據(jù)包進(jìn)行流處理;所述將所述原始數(shù)據(jù)包發(fā)送給所述處理器核,包括:將流處理后的數(shù)據(jù)包發(fā)送給所述處理器核;所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括:所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述流處理后的數(shù)據(jù)包應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0008]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述收發(fā)模塊的流處理子模塊對(duì)所述原始數(shù)據(jù)包進(jìn)行流處理,包括:所述流處理子模塊對(duì)所述原始數(shù)據(jù)包進(jìn)行IP分片報(bào)文重組處理和TCP亂序報(bào)文重排處理。
[0009]結(jié)合第一方面,在第三種可能的實(shí)現(xiàn)方式中,所述協(xié)處理器中設(shè)置有至少兩個(gè)處理器核;所述將所述原始數(shù)據(jù)包發(fā)送給所述協(xié)處理器的處理器核,包括:
[0010]根據(jù)每個(gè)所述處理器核的負(fù)荷情況從所述至少兩個(gè)處理器核中選擇一個(gè)處理器核,將所述原始數(shù)據(jù)包發(fā)送給被選擇的處理器核。
[0011]結(jié)合第一方面,在第四種可能的實(shí)現(xiàn)方式中,所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,具體包括:
[0012]所述處理器核通過所述協(xié)處理器的交換總線模塊調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析。
[0013]結(jié)合第一方面,在第五種可能的實(shí)現(xiàn)方式中,所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括:
[0014]所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議識(shí)別子協(xié)處理器,所述協(xié)議識(shí)別子協(xié)處理器在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行端點(diǎn)查找,得到端點(diǎn)查找結(jié)果,將所述端點(diǎn)查找結(jié)果返回所述處理器核,所述處理器核至少根據(jù)所述端點(diǎn)查找結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將得到的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0015]結(jié)合第一方面,在第六種可能的實(shí)現(xiàn)方式中,所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括:所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議識(shí)別子協(xié)處理器,所述協(xié)議識(shí)別子協(xié)處理器在所述處理器核的調(diào)用下,調(diào)用所述協(xié)處理器包括的字符串匹配引擎,所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核,所述處理器核至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,,并將所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0016]結(jié)合第一方面,在第七種可能的實(shí)現(xiàn)方式中,所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括:
[0017]所述處理器核調(diào)用所述協(xié)處理器包括的正則表達(dá)式匹配引擎,所述正則表達(dá)式匹配引擎在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行正則匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核,所述處理器核至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將得到的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0018]結(jié)合第一方面,在第八種可能的實(shí)現(xiàn)方式中,所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括:
[0019]所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議進(jìn)行識(shí)別,得到所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型;
[0020]所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議解析子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行協(xié)議解析,得到解析結(jié)果,并將所述解析結(jié)果和所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0021]結(jié)合第一方面的第六種可能的實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,包括:
[0022]所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下,從第一內(nèi)存中讀取字符串匹配算法狀態(tài)表,根據(jù)所述字符串匹配算法狀態(tài)表對(duì)所述流處理后的數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果。
[0023]結(jié)合第一方面或第一方面的第一至第九任一種可能的實(shí)現(xiàn)方式,在第十一種可能的實(shí)現(xiàn)方式中,所述處理器核將所述應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器,包括:所述處理器核將所述應(yīng)用層解析結(jié)果發(fā)送給所述協(xié)處理器包括的結(jié)果上報(bào)處理模塊;所述結(jié)果上報(bào)處理模塊將所述應(yīng)用層解析結(jié)果按照預(yù)設(shè)格式進(jìn)行封裝,將封裝后的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
[0024]第二方面,本發(fā)明實(shí)施例提供一種深度報(bào)文檢測(cè)方法,包括:
[0025]通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器;所述通用處理器接收所述協(xié)處理器發(fā)送的所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,其中,所述應(yīng)用層解析結(jié)果是由所述協(xié)處理器的處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析得到的;所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息;所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
[0026]在第一種可能的實(shí)現(xiàn)方式中,所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,包括:所述通用處理器若根據(jù)所述應(yīng)用層解析結(jié)果確定所述原始數(shù)據(jù)包是否為加密數(shù)據(jù)包,若是,則對(duì)所述原始數(shù)據(jù)包進(jìn)行解密處理。
[0027]在第二種可能的實(shí)現(xiàn)方式中,所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,包括:
[0028]所述通用處理器根據(jù)所述應(yīng)用層解析結(jié)果確定所述原始數(shù)據(jù)包所屬的流的業(yè)務(wù)類型,根據(jù)所述業(yè)務(wù)類型對(duì)所述流進(jìn)行流量統(tǒng)計(jì)、計(jì)費(fèi)或傳輸加速。
[0029]在第三種可能的實(shí)現(xiàn)方式中,所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果包括:所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和URL匹配結(jié)果;其中,所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型是由所述協(xié)處理的處理器核調(diào)用所述協(xié)處理器的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行識(shí)別后得到的;所述URL匹配結(jié)果是由所述協(xié)處理器的處理器核在確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議之后,調(diào)用所述協(xié)處理器的統(tǒng)一資源定位符URL匹配引擎對(duì)所述原始數(shù)據(jù)包進(jìn)行URL的匹配得到的;所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,包括:所述通用處理器根據(jù)所述應(yīng)用層解析結(jié)果和所述URL匹配結(jié)果判斷所述原始數(shù)據(jù)包所屬的流是否用于訪問被限網(wǎng)站,若是,則對(duì)所述流進(jìn)行阻斷處理。
[0030]第三方面,本發(fā)明實(shí)施例提供一種協(xié)處理器,包括:收發(fā)模塊、子協(xié)處理器和處理器核;
[0031]所述收發(fā)模塊,用于接收通用處理器發(fā)送的原始數(shù)據(jù)包,將所述原始數(shù)據(jù)包發(fā)送給所述處理器核;
[0032]所述處理器核,用于調(diào)用所述子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息;以及將所述應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器,以使所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理;
[0033]所述子協(xié)處理器,用于在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層信息。
[0034]在第一種可能的實(shí)現(xiàn)方式中,所述收發(fā)模塊包括:
[0035]接收單元,用于接收所述通用處理器發(fā)送的原始數(shù)據(jù)包;
[0036]流處理單元,用于在所述接收單元接收到所述通用處理器發(fā)送的原始數(shù)據(jù)包之后,對(duì)所述原始數(shù)據(jù)包進(jìn)行流處理;
[0037]分發(fā)單元,用于將流處理后的數(shù)據(jù)包發(fā)送給所述處理器核;
[0038]所述處理器核具體用于調(diào)用所述子協(xié)處理器對(duì)所述流處理后的數(shù)據(jù)包進(jìn)行應(yīng)用層解析。
[0039]結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述流處理單元具體用于對(duì)所述原始數(shù)據(jù)包進(jìn)行IP分片報(bào)文重組處理和TCP亂序報(bào)文重排處理。
[0040]結(jié)合第三方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述處理器核的數(shù)量為至少兩個(gè);
[0041]所述分發(fā)單元具體用于,確定所述至少兩個(gè)處理器核中每個(gè)處理器核的負(fù)荷情況,根據(jù)每個(gè)所述處理器核的負(fù)荷情況從所述至少兩個(gè)處理器核中選擇一個(gè)處理器核,將所述流處理后的數(shù)據(jù)包發(fā)送給被選擇的處理器核。
[0042]結(jié)合第三方面的,或第三方面的第一、第二或第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述協(xié)處理器還包括:交換總線模塊;
[0043]所述處理器核具體用于通過所述協(xié)處理器的交換總線模塊調(diào)用所述子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析。
[0044]結(jié)合第三方面,在第五種可能的實(shí)現(xiàn)方式中,所述子協(xié)處理器具體用于,在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行端點(diǎn)查找,得到端點(diǎn)查找結(jié)果,將所述端點(diǎn)查找結(jié)果返回所述處理器核;所述處理器核具體用于,至少根據(jù)所述端點(diǎn)查找結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
[0045]結(jié)合第三方面,在第六種可能的實(shí)現(xiàn)方式中,所述子協(xié)處理器包括:協(xié)議識(shí)別子協(xié)處理器和字符串匹配引擎;所述協(xié)議識(shí)別子協(xié)處理器具體用于:在所述處理器核的調(diào)用下,調(diào)用所述字符串匹配引擎,所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核;所述處理器核具體用于至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
[0046]結(jié)合第三方面,在第七種可能的實(shí)現(xiàn)方式中,所述子協(xié)處理器具體為:正則表達(dá)式匹配引擎;所述正則表達(dá)式匹配引擎用于在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行正則匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核;所述處理器核具體用于至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
[0047]結(jié)合第三方面的第六種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述子協(xié)處理器還包括:協(xié)議解析子協(xié)處理器;所述協(xié)議解析子協(xié)處理器用于對(duì)所述原始數(shù)據(jù)包進(jìn)行協(xié)議解析,得到解析結(jié)果,將所述解析結(jié)果返回給所述處理器核;所述處理器核還用于將所述解析結(jié)果發(fā)送給所述通用處理器,以使所述通用處理器根據(jù)所述應(yīng)用層協(xié)議類型和所述解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
[0048]結(jié)合第三方面的第六種可能的實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,所述字符串匹配引擎具體用于在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下,從第一內(nèi)存中讀取字符串匹配算法狀態(tài)表,根據(jù)所述字符串匹配算法狀態(tài)表對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核其中,所述第一內(nèi)存用于存儲(chǔ)字符串匹配算法狀態(tài)表。
[0049]結(jié)合第三方面的第九種可能的實(shí)現(xiàn)方式,在第十種可能的實(shí)現(xiàn)方式中,所述處理器核具體用于從第二內(nèi)存中讀取規(guī)則條件數(shù)據(jù)結(jié)構(gòu),根據(jù)所述特征匹配結(jié)果和所述規(guī)則條件數(shù)據(jù)結(jié)構(gòu)確定所述應(yīng)用層協(xié)議類型,其中,所述第二內(nèi)存用于規(guī)則條件數(shù)據(jù)結(jié)構(gòu)。
[0050]第四方面,本發(fā)明實(shí)施例提供一種通用處理器,包括:
[0051]發(fā)送模塊,用于將原始數(shù)據(jù)包發(fā)送給協(xié)處理器;接收模塊,用于接收所述協(xié)處理器發(fā)送的所述原始數(shù)據(jù)包的的應(yīng)用層解析結(jié)果,其中,所述應(yīng)用層解析結(jié)果是由所述協(xié)處理器的處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析得到的;所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息;處理模塊,用于至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
[0052]在第一種可能的實(shí)現(xiàn)方式中,所述處理模塊,具體用于若根據(jù)所述應(yīng)用層解析結(jié)果識(shí)別所述原始數(shù)據(jù)包為加密數(shù)據(jù)包,則對(duì)所述原始數(shù)據(jù)包進(jìn)行解密處理。
[0053]在第二種可能的實(shí)現(xiàn)方式中,其特征在于,
[0054]所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果包括:所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和URL匹配結(jié)果,其中,所述URL匹配結(jié)果是由所述協(xié)處理器的處理器核在確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議時(shí),調(diào)用所述協(xié)處理器的統(tǒng)一資源定位符URL匹配引擎對(duì)所述原始數(shù)據(jù)包進(jìn)行URL的匹配后得到的;
[0055]所述處理模塊具體用于根據(jù)所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和所述URL匹配結(jié)果判斷所述原始數(shù)據(jù)包所屬的流是否用于訪問被限網(wǎng)站,若是,則對(duì)所述流進(jìn)行阻斷處理。
[0056]第五方面,本發(fā)明實(shí)施例提供一種深度報(bào)文檢測(cè)設(shè)備,包括:本發(fā)明任意實(shí)施例提供的協(xié)處理器和本發(fā)明任意實(shí)施例提供的通用處理器。
[0057]在第一種可能的實(shí)現(xiàn)方式中,所述通用處理器的數(shù)量為一個(gè)。
[0058]在第二種可能的實(shí)現(xiàn)方式中,所述通用處理器的數(shù)量為至少兩個(gè);所述深度報(bào)文檢測(cè)裝置還包括網(wǎng)卡和負(fù)載均衡裝置;所述網(wǎng)卡用于從網(wǎng)絡(luò)接收數(shù)據(jù)包,將所述數(shù)據(jù)包發(fā)送給所述負(fù)載均衡裝置;所述負(fù)載均衡裝置用于獲取所述至少兩個(gè)通用處理器中每個(gè)所述通用處理器的負(fù)載情況,根據(jù)每個(gè)所述通用處理器的負(fù)載情況選在一個(gè)通用處理器,將所述數(shù)據(jù)包發(fā)送給選擇的通用處理器。
[0059]由上述技術(shù)方案可知,本發(fā)明實(shí)施例提供的深度報(bào)文檢測(cè)方法、設(shè)備及協(xié)處理器,通過通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI,協(xié)處理器中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù)。而且協(xié)處理器中設(shè)置有處理器核,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,可以保留中間狀態(tài)信息,處理器核與子協(xié)處理器的交互也都是芯片內(nèi)交互,避免了協(xié)處理器與通用處理器之間的頻繁交互,可以降低處理時(shí)延。
【專利附圖】
【附圖說明】
[0060]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0061]圖1為本發(fā)明實(shí)施例提供的現(xiàn)有技術(shù)的深度報(bào)文檢測(cè)方法示意圖;
[0062]圖2為本發(fā)明實(shí)施例提供的一種深度報(bào)文檢測(cè)架構(gòu)示意圖;
[0063]圖3為本發(fā)明實(shí)施例提供的一種深度報(bào)文檢測(cè)應(yīng)用場(chǎng)景示意圖;
[0064]圖4為本發(fā)明實(shí)施例提供的第一種深度報(bào)文檢測(cè)方法流程圖;
[0065]圖5為本發(fā)明實(shí)施例提供的第二種深度報(bào)文檢測(cè)方法流程圖;
[0066]圖6為本發(fā)明實(shí)施例提供的一種深度報(bào)文檢測(cè)方法流程圖;
[0067]圖7為本發(fā)明實(shí)施例提供的另一種深度報(bào)文檢測(cè)方法流程圖;
[0068]圖8為本發(fā)明實(shí)施例提供的另一種深度報(bào)文檢測(cè)方法流程圖;
[0069]圖9為本發(fā)明實(shí)施例提供的第一種協(xié)處理器結(jié)構(gòu)示意圖;
[0070]圖10為本發(fā)明實(shí)施例提供的第二種協(xié)處理器結(jié)構(gòu)示意圖;
[0071]圖11為本發(fā)明實(shí)施例提供的通用處理器結(jié)構(gòu)示意圖;
[0072]圖12為本發(fā)明實(shí)施例提供的第一種深度報(bào)文檢測(cè)設(shè)備的結(jié)構(gòu)示意圖;
[0073]圖13為本發(fā)明實(shí)施例提供的第二種深度報(bào)文檢測(cè)設(shè)備的結(jié)構(gòu)示意圖;
[0074]圖14為本發(fā)明實(shí)施例提供的第三種深度報(bào)文檢測(cè)設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0075]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0076]為了便于本領(lǐng)域技術(shù)更好地理解本發(fā)明技術(shù)方案,先對(duì)本發(fā)明實(shí)施例的深度報(bào)文檢測(cè)(Deep Packet Inspect1n,簡(jiǎn)稱DPI)架構(gòu)做一個(gè)總體介紹,如圖2所示:
[0077]本發(fā)明實(shí)施例將DPI處理任務(wù)的功能模塊劃分為多個(gè)層次(典型的是四個(gè)層次),層次越高,處理的業(yè)務(wù)越復(fù)雜、通用;層次越低,算法越簡(jiǎn)單、專用。
[0078]這些層次由兩個(gè)芯片來實(shí)現(xiàn),分別是通用處理器和DPI協(xié)處理器。為了提高硬件加速性能,可以盡可能多的把DPI相關(guān)任務(wù)交由DPI協(xié)處理器來完成。這樣通用處理器可以完成更多的運(yùn)算密集型任務(wù),因?yàn)橥ㄓ锰幚砥鲗?duì)這類任務(wù)的性能優(yōu)化做得更好,重點(diǎn)放在增值業(yè)務(wù)的處理上面。DPI協(xié)處理器則負(fù)責(zé)實(shí)現(xiàn)DPI業(yè)務(wù)控制層、DPI子業(yè)務(wù)邏輯層、算法引擎層的邏輯。其中,DPI協(xié)處理內(nèi)部又包含有多個(gè)子協(xié)處理器,每個(gè)子協(xié)處理器用于完成特定的DPI子業(yè)務(wù),根據(jù)DPI子業(yè)務(wù)復(fù)雜度的不同,子協(xié)處理器具體可以分為高層級(jí)的子協(xié)處理器(如圖2中的子協(xié)處理器A),以及低層級(jí)的子協(xié)處理器(如圖2中的子協(xié)處理器B、C、D),其中,低層級(jí)的子協(xié)處理器具體可以為軟件或硬件實(shí)現(xiàn)的算法引擎,用于采用特定算法實(shí)現(xiàn)一個(gè)專用功能,比如字符串匹配引擎、正則表達(dá)式匹配引擎等,而與低層級(jí)的子協(xié)處理器相比,高層級(jí)的子協(xié)處理器用于執(zhí)行更為通用的DPI子業(yè)務(wù),比如協(xié)議識(shí)別、解析等。例如,高層級(jí)的子協(xié)處理器可以為集成了多個(gè)子協(xié)處理器和/或算法引擎功能的邏輯或物理實(shí)體,用于實(shí)現(xiàn)更為高級(jí)、通用的DPI子功能,且高層級(jí)的子協(xié)處理器可以調(diào)用低層次模塊來實(shí)現(xiàn)需要的功能,同時(shí),同一層次的子協(xié)處理器也可以互相調(diào)用來協(xié)同完成功能。
[0079]具體地,在一種應(yīng)用場(chǎng)景中,如圖3所示,可以對(duì)任務(wù)劃分成如下層次:
[0080]層次一:運(yùn)算密集層。負(fù)責(zé)需要大量運(yùn)算處理的任務(wù),包括:DPI業(yè)務(wù)邏輯中的加解密、編解碼、復(fù)雜邏輯處理;以及其他非DPI業(yè)務(wù),如增值業(yè)務(wù);策略匹配;報(bào)文動(dòng)作執(zhí)行等,在本發(fā)明實(shí)施例中,這一層次的任務(wù)由通用處理器來完成。
[0081]層次二:DPI業(yè)務(wù)控制層。通過在DPI協(xié)處理器中放置內(nèi)核來執(zhí)行DPI業(yè)務(wù)控制邏輯,包括,DPI引擎各步驟的先后執(zhí)行順序控制、條件規(guī)則匹配、跨包處理、保存中間狀態(tài)等等DPI業(yè)務(wù)相關(guān)的控制邏輯。本發(fā)明實(shí)施例中,這一層次的任務(wù)由DPI協(xié)處理器中的處理器核(core )來完成。
[0082]層次三:DPI子業(yè)務(wù)邏輯層。負(fù)責(zé)可以固化的DPI特定子業(yè)務(wù)。例如:應(yīng)用層協(xié)議識(shí)別、協(xié)議深度解析、數(shù)據(jù)包行為特征分析模塊。本發(fā)明實(shí)施例中,這一層次的任務(wù)由DPI協(xié)處理器中的高層級(jí)的子協(xié)處理器來完成,比如,用于識(shí)別數(shù)據(jù)包的應(yīng)用層協(xié)議類型的協(xié)議識(shí)別子協(xié)處理器,用于對(duì)協(xié)議進(jìn)行深度解析的協(xié)議解析子協(xié)處理器等等。
[0083]層次四:算法引擎層。負(fù)責(zé)特定為DPI優(yōu)化的算法引擎任務(wù)。例如:通用正則表達(dá)式匹配、浮點(diǎn)運(yùn)算、多模字符串匹配、單模字符串匹配、行為參數(shù)運(yùn)算等等。這一層次的任務(wù)由DPI協(xié)處理器中的低層級(jí)的子協(xié)處理器來完成,比如,正則表達(dá)式匹配引擎、浮點(diǎn)運(yùn)算引擎、字符串匹配引擎等等。
[0084]需要特別說明的是,在DPI協(xié)處理器內(nèi)部,即層次二到層次四,需要內(nèi)部總線或者一個(gè)交換總線模塊來負(fù)責(zé)這些層次模塊間的消息、數(shù)據(jù)交互。而層次一與其他層次,即通用處理器與DPI協(xié)處理器之間屬于芯片間交互,需要采用一些業(yè)界已有的標(biāo)準(zhǔn)化總線來進(jìn)行交互,典型的如PCIE (Personal Computer Interface Express,外設(shè)互聯(lián)擴(kuò)展)總線。采用什么類型總線,由通用處理器提供的對(duì)外接口來確定。
[0085]更優(yōu)地,除了層次化設(shè)計(jì)架構(gòu)之外,本發(fā)明實(shí)施例還可以進(jìn)一步為DPI協(xié)處理器配備外部?jī)?nèi)存,以保存DPI中間狀態(tài)而做到更好的擴(kuò)展性和性能,這樣,當(dāng)處理到需要保存現(xiàn)場(chǎng)的任務(wù)時(shí),不必交由通用處理器完成,DPI協(xié)處理器可以卸載更多其處理器資源。另外,配備的外部?jī)?nèi)存還可以保存DPI處理時(shí)需要用到的各種特征字?jǐn)?shù)據(jù)結(jié)構(gòu)、算法特定數(shù)據(jù)結(jié)構(gòu)。這樣,DPI協(xié)處理器可以直接快速的讀取這些數(shù)據(jù)而不必經(jīng)由總線通過通用處理器來讀取,可以達(dá)到更高的處理性能。
[0086]例如,外部?jī)?nèi)存A保存軟核專用的數(shù)據(jù)結(jié)構(gòu),包括流表、規(guī)則條件,使DPI協(xié)處理器能感知流的狀態(tài),而不是基于包的處理。外部?jī)?nèi)存B保存各匹配引擎和子協(xié)處理器的數(shù)據(jù)結(jié)構(gòu),如DFA (Deterministic Finite Automaton,確定型有限自動(dòng)機(jī))狀態(tài)表、單模匹配算法輔助數(shù)據(jù)、子協(xié)處理器的算法數(shù)據(jù)結(jié)構(gòu)等等。需要說明的是,外部?jī)?nèi)存A和外部?jī)?nèi)存B只是是邏輯上的劃分,兩者可以位于同一片物理內(nèi)存上。
[0087]基于以上描述的DPI架構(gòu),本發(fā)明實(shí)施例提供一種深度報(bào)文檢測(cè)方法,圖4為本發(fā)明實(shí)施例提供的第一種深度報(bào)文檢測(cè)方法流程圖。如圖4所示,本實(shí)施例提供的深度報(bào)文檢測(cè)方法具體可以應(yīng)用于網(wǎng)絡(luò)設(shè)備的深度報(bào)文檢測(cè)DPI過程,網(wǎng)絡(luò)設(shè)備可以為如路由器和網(wǎng)關(guān)等。網(wǎng)絡(luò)設(shè)備中可以設(shè)置有深度報(bào)文檢測(cè)裝置,深度報(bào)文檢測(cè)裝置包括通用處理器和協(xié)處理器,本實(shí)施例提供的深度報(bào)文檢測(cè)方法通過協(xié)處理器來執(zhí)行。
[0088]本實(shí)施例提供的深度報(bào)文檢測(cè)方法,具體包括:
[0089]步驟A10、協(xié)處理器的收發(fā)模塊接收通用處理器發(fā)送的原始數(shù)據(jù)包,將該原始數(shù)據(jù)包發(fā)送給該協(xié)處理器的處理器核;
[0090]步驟A20、該處理器核調(diào)用該協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果;其中,原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果用于表示該數(shù)據(jù)包的應(yīng)用層信息,比如應(yīng)用層協(xié)議類型、數(shù)據(jù)包所屬的業(yè)務(wù)等等,此處不一一列舉;
[0091]步驟A30、該處理器核將原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給通用處理器,以使通用處理器根據(jù)該應(yīng)用層解析結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理。
[0092]具體地,網(wǎng)絡(luò)設(shè)備需要通過對(duì)接收到的流中的數(shù)據(jù)包進(jìn)行深入分析以實(shí)現(xiàn)網(wǎng)絡(luò)優(yōu)化和應(yīng)用流量控制,網(wǎng)絡(luò)設(shè)備通過網(wǎng)卡將數(shù)據(jù)包發(fā)送給通用處理器,通用處理器把DPI相關(guān)任務(wù)交由DPI協(xié)處理器來完成。
[0093]在本發(fā)明實(shí)施例中,協(xié)處理器可以通過FPGA (Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)或 ASIC (Applicat1n Specific Integrated Circuit,專用集成電路)來實(shí)現(xiàn),協(xié)處理器中部署有一個(gè)或多個(gè)處理器核,協(xié)處理器中還設(shè)置有收發(fā)模塊和多個(gè)子協(xié)處理器,子協(xié)處理器通過硬件描述語言實(shí)現(xiàn),硬件描述語言可以為VHDL(Very-High-Speed Integrated Circuit Hardware Descript1n Language,超高速集成電路硬件描述語言)或Verilog HDL0子協(xié)處理器可用于對(duì)數(shù)據(jù)包進(jìn)行應(yīng)用協(xié)議識(shí)別,協(xié)議解析等,以提聞業(yè)務(wù)的處理性能。
[0094]通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器的收發(fā)模塊,收發(fā)模塊再將原始數(shù)據(jù)包分發(fā)給協(xié)處理器中的處理器核,協(xié)處理器的處理器核調(diào)用子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到解析結(jié)果,處理器核將該解析結(jié)果返回給通用處理器,通用處理器再根據(jù)解析結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理,例如流量統(tǒng)計(jì)、加速、限流、阻斷和過濾等。通用處理器可以根據(jù)解析結(jié)果建立流表,流表中記錄有多個(gè)流表項(xiàng)和處理指令,通用處理器通過流表項(xiàng)對(duì)接收到的數(shù)據(jù)包進(jìn)行匹配,以確定該數(shù)據(jù)包所屬的流,并進(jìn)行相應(yīng)地處理。
[0095]本實(shí)施例提供的深度報(bào)文檢測(cè)方法,通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI,通過對(duì)協(xié)處理器進(jìn)行更細(xì)粒度的劃分,協(xié)處理器中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),這樣就將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù);同時(shí),協(xié)處理器中設(shè)置有處理器核來進(jìn)行DPI業(yè)務(wù)控制,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,大大提高了業(yè)務(wù)處理的靈活性,而且處理器核與子協(xié)處理器的交互也都是芯片內(nèi)交互,避免了協(xié)處理器與通用處理器之間的頻繁交互,可以提DPI性倉(cāng)泛。
[0096]圖5為本發(fā)明實(shí)施例提供的第二種深度報(bào)文檢測(cè)方法流程圖。如圖5所示,在本實(shí)施例的深度報(bào)文檢測(cè)方法,包括:
[0097]步驟A101,協(xié)處理器的收發(fā)模塊接收通用處理器發(fā)送的原始數(shù)據(jù)包;
[0098]步驟A102,對(duì)該原始數(shù)據(jù)包進(jìn)行流處理;
[0099]具體地,對(duì)原始數(shù)據(jù)包進(jìn)行流處理,可以包括:對(duì)原始數(shù)據(jù)包進(jìn)行IP分片報(bào)文重組處理和TCP亂序報(bào)文重排處理;進(jìn)一步的,對(duì)原始數(shù)據(jù)包進(jìn)行流處理還可以包括:對(duì)原始數(shù)據(jù)包進(jìn)行流報(bào)文保證順序處理。
[0100]步驟A103,將流處理后的數(shù)據(jù)包發(fā)送給協(xié)處理器的處理器核;
[0101]在實(shí)際應(yīng)用過程中,可以根據(jù)DPI業(yè)務(wù)的需要設(shè)置協(xié)處理器中處理器核的數(shù)量,即處理器核的數(shù)量可以為一個(gè)或多個(gè)。當(dāng)協(xié)處理器中設(shè)置有至少兩個(gè)處理器核時(shí),所述將原始數(shù)據(jù)包發(fā)送給協(xié)處理器的處理器核,具體包括:
[0102]確定協(xié)處理的多個(gè)處理器核中的每個(gè)處理器核的負(fù)荷情況,根據(jù)負(fù)載均衡策略從多個(gè)處理器核中選擇一個(gè)處理器核,將所述原始數(shù)據(jù)包發(fā)送給選擇的處理器核。
[0103]具體地,可以對(duì)所有處理器核的負(fù)荷情況進(jìn)行監(jiān)測(cè),并且在數(shù)據(jù)包的分發(fā)過程中根據(jù)各個(gè)處理器核的負(fù)荷情況選擇處理器核,將數(shù)據(jù)包發(fā)給處理資源相對(duì)空閑的處理器核進(jìn)行處理。
[0104]步驟A104,處理器核調(diào)用協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果;
[0105]在本實(shí)施例中,處理器核具體可以而通過協(xié)處理器的交換總線模塊來調(diào)用至少一個(gè)子協(xié)處理器對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析。
[0106]具體地,交換總線模塊可以為Switch-Arbiter交換模塊,處理器核與其包括的各個(gè)子協(xié)處理器之間的通信通過該交換總線模塊來實(shí)現(xiàn)。
[0107]步驟A105,處理器核將原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給通用處理器,以使通用處理器根據(jù)該應(yīng)用層解析結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理。
[0108]具體地,在一個(gè)實(shí)施例中,協(xié)處理器中還可以設(shè)置有結(jié)果上報(bào)處理模塊,處理器核可以將原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊,結(jié)果上報(bào)處理模塊將該應(yīng)用層解析結(jié)果按照預(yù)設(shè)格式進(jìn)行封裝,將封裝后的結(jié)果發(fā)送給通用處理器,其中,該預(yù)設(shè)格式例如可以為TLV (Type Length Value)結(jié)構(gòu),TLV結(jié)構(gòu)是一種帶類型、長(zhǎng)度和值的通用數(shù)據(jù)描述格式。
[0109]在本實(shí)施例中,可以設(shè)置外部?jī)?nèi)存以供協(xié)處理器使用,內(nèi)存可以包括第一內(nèi)存和第二內(nèi)存,第一內(nèi)存和第二內(nèi)存可以物理上獨(dú)立的兩個(gè)內(nèi)存,或者第一內(nèi)存和第二內(nèi)存也可以為物理上在同一內(nèi)存上,邏輯上分離。第一內(nèi)存用于保存子協(xié)處理器所需要的數(shù)據(jù)結(jié)構(gòu),第二內(nèi)存用于保存流中間狀態(tài)數(shù)據(jù)、端點(diǎn)表數(shù)據(jù)、端口特征表和規(guī)則條件表等DPI業(yè)務(wù)控制層使用的數(shù)據(jù)。
[0110]通常采用規(guī)則來描述用于防御網(wǎng)絡(luò)攻擊行為的特征或者用于應(yīng)用協(xié)議識(shí)別的協(xié)議特征,第二內(nèi)存中的規(guī)則條件表用以記錄一條或多條規(guī)則。規(guī)則中通常包含一組特征,這些特征用于描述數(shù)據(jù)包的細(xì)節(jié),如數(shù)據(jù)包的源/目的地址、源/目的端口、傳輸協(xié)議類型、數(shù)據(jù)包的負(fù)載中包含的某些特殊字符串和數(shù)據(jù)包是否分片等等。子協(xié)處理器對(duì)數(shù)據(jù)包進(jìn)行分析獲得特征匹配結(jié)果,處理器核在確定應(yīng)用層協(xié)議類型時(shí),根據(jù)特征匹配結(jié)果去對(duì)應(yīng)每個(gè)規(guī)則中的特征,若某個(gè)數(shù)據(jù)包符合某個(gè)規(guī)則,則該規(guī)則對(duì)應(yīng)的應(yīng)用層協(xié)議類型即為該數(shù)據(jù)包的應(yīng)用層協(xié)議類型。特征的描述可以有多種,例如字符串、正則表達(dá)式和行為特征等,針對(duì)不同的特征可以通過不同的方式得到特征匹配結(jié)果。
[0111]在本實(shí)施例中,根據(jù)DPI子業(yè)務(wù)復(fù)雜度的不同,協(xié)處理內(nèi)部包含的子協(xié)處理器具體可以分為用于執(zhí)行通用DPI子業(yè)務(wù)的高層級(jí)的子協(xié)處理器(如協(xié)議識(shí)別子協(xié)處理器,協(xié)議解析子協(xié)處理器),以及用于實(shí)現(xiàn)專用功能的低層級(jí)的子協(xié)處理器,比如軟件或硬件實(shí)現(xiàn)的算法引擎(字符串匹配引擎、正則表達(dá)式匹配引擎等),其中,高層級(jí)的子協(xié)處理器可以調(diào)用低層次模塊來實(shí)現(xiàn)需要的功能,同時(shí),同一層次的子協(xié)處理器也可以互相調(diào)用來協(xié)同完成功能。基于此,根據(jù)子協(xié)處理器的類型不同,步驟A104的具體實(shí)現(xiàn)方式也有所不同:
[0112](I)如果處理器核調(diào)用的是高層級(jí)的子協(xié)處理器,比如用于識(shí)別數(shù)據(jù)包應(yīng)用層協(xié)議類型的協(xié)議識(shí)別子協(xié)處理器,則在一種可能的實(shí)施方式中,協(xié)議識(shí)別子協(xié)處理器可以在處理器核的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行端點(diǎn)查找,得到端點(diǎn)查找結(jié)果,將該端點(diǎn)查找結(jié)果返回處理器核,述處理器核至少根據(jù)該端點(diǎn)查找結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將得到的應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果;
[0113]具體地,協(xié)議識(shí)別子協(xié)處理器中設(shè)置有狀態(tài)機(jī)。如果某一個(gè)數(shù)據(jù)包所在的流的目的IP地址、源IP地址、目的端口和源端口中的某幾項(xiàng)能在端點(diǎn)表中成功查找一條或多條記錄,則該數(shù)據(jù)包的應(yīng)用層協(xié)議類型可以直接從端點(diǎn)表中獲取,不必需要更多的步驟。例如,某一條端點(diǎn)表記錄為:目的IP地址:103.224.1.9,目的端口:443,應(yīng)用層協(xié)議類型:gmail_webmail。如果某一條流的數(shù)據(jù)包發(fā)往該目的IP地址的443端口,貝U可以直接明確DPI處理結(jié)果,表明此條流的數(shù)據(jù)包的應(yīng)用層協(xié)議類型是gmail_webmail。
[0114]在另一種可能的實(shí)施方式中,協(xié)議識(shí)別子協(xié)處理器在處理器核的調(diào)用下,可以調(diào)用低層次的子協(xié)處理器,比如字符串匹配引擎來幫助其完成相應(yīng)的功能,字符串匹配引擎在協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將該特征匹配結(jié)果返回處理器核,處理器核至少根據(jù)該特征匹配結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,,并將該應(yīng)用層協(xié)議類型作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0115]具體地,字符串匹配引擎可以為單模字符串匹配引擎,也可以為多模字符串匹配引擎。單模字符串匹配引擎可以采用單模字符串匹配算法,單模字符串匹配算法可以為BM(Boyer Moore)算法。多模字符串匹配引擎可以采用多模字符串匹配算法,多模字符串匹配算法可以為AC (Aho-Corasick)算法、Wu-Manber算法或ExB算法等。多模字符串匹配過程中,對(duì)目標(biāo)字符串掃描一遍即可查找到一個(gè)或多個(gè)字符串特征。
[0116]當(dāng)需要對(duì)數(shù)據(jù)包進(jìn)行多模字符串匹配時(shí),協(xié)議識(shí)別子協(xié)處理器調(diào)用多模字符串匹配引擎,多模字符串匹配引擎對(duì)數(shù)據(jù)包進(jìn)行掃描,在數(shù)據(jù)包中查找到一個(gè)或多個(gè)字符串特征,得到特征匹配結(jié)果,將特征匹配結(jié)果返回給處理器核,處理器核再根據(jù)該特征匹配結(jié)果確定該原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型。
[0117]在本實(shí)施例中,字符串匹配引擎在協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)所述流處理后的數(shù)據(jù)包進(jìn)行字符串匹配,包括:
[0118]字符串匹配引擎在協(xié)議識(shí)別子協(xié)處理器的調(diào)用下,從第一內(nèi)存中讀取字符串匹配算法狀態(tài)表,根據(jù)該字符串匹配算法狀態(tài)表對(duì)原始數(shù)據(jù)包進(jìn)行字符串匹配。
[0119]具體地,第一內(nèi)存中存儲(chǔ)有字符串匹配算法狀態(tài)表,當(dāng)字符串匹配引擎為多模字符串匹配引擎時(shí),字符串匹配算法狀態(tài)表為多模字符串匹配算法狀態(tài)表,當(dāng)字符串匹配引擎為單模字符串匹配引擎時(shí),字符串匹配算法狀態(tài)表為單模字符串匹配算法狀態(tài)表。例如,多模字符串匹配算法為AC算法,該多模字符串匹配算法狀態(tài)表為AC狀態(tài)表,多模字符串匹配引擎在對(duì)數(shù)據(jù)包進(jìn)行多模字符串匹配時(shí)可以根據(jù)該多模字符串匹配算法狀態(tài)表實(shí)現(xiàn)。字符串匹配引擎并不直接對(duì)第一內(nèi)存進(jìn)行讀寫操作,協(xié)處理器中設(shè)置有緩存(Cache),緩存與第一內(nèi)存之前可以通過DMA (Direct Memory Access,直接內(nèi)存存取)方式來實(shí)現(xiàn)數(shù)據(jù)交互。通過緩存的設(shè)置,可以大大減少訪問外部?jī)?nèi)存的次數(shù),大部分訪問內(nèi)存請(qǐng)求都可以通過緩存來完成,大幅提升了系統(tǒng)的性能。
[0120](2)如果處理器核調(diào)用的是低層級(jí)的子協(xié)處理器,比如專門用于進(jìn)行正則表達(dá)式匹配的正則表達(dá)式匹配引擎,則正則表達(dá)式匹配引擎在處理器核的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行正則匹配,得到特征匹配結(jié)果,將該特征匹配結(jié)果返回處理器核,處理器核至少根據(jù)該特征匹配結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將得到的應(yīng)用層協(xié)議類型作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0121]具體地,正則表達(dá)式匹配引擎可以采用正則表達(dá)式匹配算法,正則表達(dá)式匹配算法可以為NFA (Nondeterministic Finite Automaton,非確定型有限自動(dòng)機(jī))算法或DFA(Deterministic Finite Automaton,確定型有限自動(dòng)機(jī))算法等,正則表達(dá)式匹配過程中,特征不是通過字符串來描述的,而是通過正則表達(dá)式來描述的。
[0122]當(dāng)需要對(duì)數(shù)據(jù)包進(jìn)行正則表達(dá)式匹配時(shí),處理器核可以直接調(diào)用正則表達(dá)式匹配引擎,正則表達(dá)式匹配引擎在數(shù)據(jù)包中查找,得到特征匹配結(jié)果,將特征匹配結(jié)果返回給處理器核,處理器核再根據(jù)該特征匹配結(jié)果確定該原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型。
[0123]在本實(shí)施例中,正則表達(dá)式匹配引擎在處理器核的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行正則匹配,包括:
[0124]正則表達(dá)式匹配引擎在處理器核的調(diào)用下,從第一內(nèi)存中讀取正則表達(dá)式匹配算法狀態(tài)表,根據(jù)該正則表達(dá)式匹配算法狀態(tài)表對(duì)原始數(shù)據(jù)包進(jìn)行正則匹配。
[0125]具體地,第一內(nèi)存中存儲(chǔ)有正則表達(dá)式匹配算法狀態(tài)表,例如,正則表達(dá)式匹配算法為DFA算法時(shí),該正則表達(dá)式匹配算法狀態(tài)表為DFA狀態(tài)表,正則表達(dá)式匹配引擎在對(duì)數(shù)據(jù)包進(jìn)行正則匹配時(shí)可以根據(jù)該正則表達(dá)式匹配算法狀態(tài)表實(shí)現(xiàn)。
[0126]在本發(fā)明的另一個(gè)實(shí)施例中,處理器核還可以通過調(diào)用行為特征統(tǒng)計(jì)子協(xié)處理器來得到原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,具體地,行為特征統(tǒng)計(jì)子協(xié)處理器在處理器核的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行行為特征匹配,得到特征匹配結(jié)果,將該特征匹配結(jié)果返回給處理器核,處理器核根據(jù)該特征匹配結(jié)果確定應(yīng)用層協(xié)議類型。
[0127]具體地,對(duì)于不同的應(yīng)用協(xié)議可以預(yù)先建立行為特征模型,當(dāng)需要對(duì)數(shù)據(jù)包進(jìn)行行為特征匹配時(shí),行為特征統(tǒng)計(jì)子協(xié)處理器對(duì)數(shù)據(jù)包中的行為特征進(jìn)行匹配,得到特征匹配結(jié)果,將特征匹配結(jié)果返回給處理器核,處理器核再根據(jù)該特征匹配結(jié)果確定該原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型。在本實(shí)施例中,處理器核根據(jù)特征匹配結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,包括:
[0128]處理器核通過緩存從第二內(nèi)存中讀取規(guī)則條件表,根據(jù)特征匹配結(jié)果和該規(guī)則條件表確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型。
[0129]具體地,第二內(nèi)存中存儲(chǔ)有規(guī)則條件表,該規(guī)則條件表中存儲(chǔ)有規(guī)則與應(yīng)用層協(xié)議類型的對(duì)應(yīng)關(guān)系,處理器核將特征匹配結(jié)果與規(guī)則中的特征相對(duì)應(yīng),以判斷該特征匹配結(jié)果是否符合該規(guī)則,若符合,則可以確定數(shù)據(jù)包的應(yīng)用層協(xié)議類型。處理器核并不直接對(duì)第二內(nèi)存進(jìn)行讀寫操作,協(xié)處理器中設(shè)置有緩存(Cache),緩存與第二內(nèi)存之前可以通過DMA方式來實(shí)現(xiàn)數(shù)據(jù)交互。
[0130]在另一個(gè)實(shí)施例中,協(xié)處理器中還設(shè)置有協(xié)議解析子協(xié)處理器,協(xié)議解析子協(xié)處理器中可以設(shè)置狀態(tài)機(jī)。在對(duì)數(shù)據(jù)包的應(yīng)用協(xié)議識(shí)別,獲知該數(shù)據(jù)包所承載的應(yīng)用層協(xié)議類型后,若需要進(jìn)一步獲知其中的信息以協(xié)助進(jìn)行各種增值業(yè)務(wù)處理或規(guī)則匹配時(shí),還可以根據(jù)應(yīng)用協(xié)議格式對(duì)數(shù)據(jù)包進(jìn)行深入解析,提取相關(guān)信息,以得到解析結(jié)果。
[0131]具體地,處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,具體包括:
[0132]處理器核調(diào)用協(xié)處理器包括的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議進(jìn)行識(shí)別,得到所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型;
[0133]所述處理器核調(diào)用協(xié)處理器包括的協(xié)議解析子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行協(xié)議解析,得到解析結(jié)果,并將所述解析結(jié)果和所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
[0134]在本實(shí)施例中,協(xié)處理器中還可以設(shè)置URL匹配引擎,處理器核調(diào)用協(xié)處理器的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包的應(yīng)用協(xié)議進(jìn)行識(shí)別之后,若處理器核判斷獲知所述應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議,則調(diào)用協(xié)處理器的統(tǒng)一資源定位符URL匹配引擎,該URL匹配引擎在處理器核的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行URL的匹配,得到URL匹配結(jié)果,將所述URL匹配結(jié)果返回給所述處理器核,其中,所述處理結(jié)果還包括所述URL匹配結(jié)果。
[0135]例如,若處理器核識(shí)別到某個(gè)數(shù)據(jù)包對(duì)應(yīng)的流的應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議(HTTP),則可以調(diào)用URL匹配引擎對(duì)該數(shù)據(jù)包進(jìn)行進(jìn)一步的分析。URL匹配引擎可以分析出該數(shù)據(jù)包的URL的值,以得到URL匹配結(jié)果。協(xié)處理器將該URL匹配結(jié)果作為處理結(jié)果發(fā)送給通用處理器,通用處理器可以根據(jù)該URL匹配結(jié)果進(jìn)行與URL有關(guān)的網(wǎng)絡(luò)管理工作。
[0136]在實(shí)際應(yīng)用中,深度報(bào)文檢測(cè)裝置的通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI業(yè)務(wù),協(xié)處理器中的功能模塊可以根據(jù)實(shí)際的DPI業(yè)務(wù)需要來設(shè)置,上述實(shí)施例提供了幾種功能模塊的實(shí)現(xiàn)形式,但本發(fā)明并不以此為限。而且不同的DPI業(yè)務(wù),處理流程也可以不同。特征匹配的工作也可以通過協(xié)處理器的處理器核來完成,得到特征匹配結(jié)果,處理器核再根據(jù)特征匹配結(jié)果確定應(yīng)用層協(xié)議類型。例如,HTTP協(xié)議的特征之一可以是TCP端口為80,由于此端口匹配的過程并不需要太多計(jì)算資源,可以由協(xié)處理器的處理器核來完成。
[0137]本實(shí)施例提供的深度報(bào)文檢測(cè)方法,通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI,通過對(duì)協(xié)處理器進(jìn)行更細(xì)粒度的劃分,協(xié)處理器中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),這樣就將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù);同時(shí),協(xié)處理器中設(shè)置有處理器核來進(jìn)行DPI業(yè)務(wù)控制,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,大大提高了業(yè)務(wù)處理的靈活性,為DPI協(xié)處理器配備外部?jī)?nèi)存,以保存DPI中間狀態(tài)而做到更好的擴(kuò)展性和性能。因?yàn)?,?dāng)處理到需要保存現(xiàn)場(chǎng)的任務(wù)時(shí),不必交由通用處理器完成,DPI協(xié)處理器可以卸載更多其處理器資源。另外,通過為DPI協(xié)處理器配備外部?jī)?nèi)存,以保存DPI處理時(shí)需要用到的各種特征字?jǐn)?shù)據(jù)結(jié)構(gòu)、算法特定數(shù)據(jù)結(jié)構(gòu)。這樣,DPI協(xié)處理器可以直接快速的讀取這些數(shù)據(jù)而不必經(jīng)由總線通過通用處理器來讀取,可以進(jìn)一步提高處理性能。
[0138]下面通過具體的實(shí)例來說明基于本發(fā)明實(shí)施例的DPI架構(gòu)進(jìn)行深度報(bào)文檢測(cè)的具體過程,圖6為本發(fā)明實(shí)施例提供的一種深度報(bào)文檢測(cè)方法流程圖。以下結(jié)合圖6對(duì)本實(shí)施例提供的深度報(bào)文檢測(cè)方法進(jìn)行說明。
[0139]步驟la、通用處理器將數(shù)據(jù)包發(fā)送給協(xié)處理器的收發(fā)模塊;
[0140]步驟2a、收發(fā)模塊將數(shù)據(jù)包發(fā)送給處理器核;
[0141]步驟3a、處理器核調(diào)用協(xié)議識(shí)別子協(xié)處理器,將數(shù)據(jù)包通過交換總線模塊發(fā)送給協(xié)議識(shí)別子協(xié)處理器,協(xié)議識(shí)別子協(xié)處理器對(duì)數(shù)據(jù)包進(jìn)行端點(diǎn)查找;
[0142]步驟4a、協(xié)議識(shí)別子協(xié)處理器判斷是否查找成功,若是,則執(zhí)行步驟5a,若否,則執(zhí)行步驟6a ;
[0143]步驟5a、協(xié)議識(shí)別子協(xié)處理器將得到的端點(diǎn)查找結(jié)果通過交換總線模塊發(fā)送給處理器核,執(zhí)行步驟15a;
[0144]步驟6a、協(xié)議識(shí)別子協(xié)處理器通過交換總線模塊向處理器核反饋查找失敗結(jié)果;
[0145]步驟7a、協(xié)議識(shí)別子協(xié)處理器調(diào)用多模字符串匹配引擎,將數(shù)據(jù)包通過交換總線模塊發(fā)送給多模字符串匹配引擎,多模字符串匹配引擎對(duì)數(shù)據(jù)包進(jìn)行多模字符串匹配;
[0146]步驟8a、多模字符串匹配引擎判斷是否匹配成功,若是,則執(zhí)行步驟9a,若否,則執(zhí)行步驟1a ;
[0147]步驟9a、多模字符串匹配引擎將得到的特征匹配結(jié)果通過交換總線模塊發(fā)送給處理器核,執(zhí)行步驟15a;
[0148]步驟10a、多模字符串匹配引擎通過交換總線模塊向處理器核反饋匹配失敗結(jié)果;
[0149]步驟11a、處理器核調(diào)用正則表達(dá)式匹配引擎,將數(shù)據(jù)包通過交換總線模塊發(fā)送給正則表達(dá)式匹配引擎,正則表達(dá)式匹配引擎對(duì)數(shù)據(jù)包進(jìn)行正則匹配;
[0150]步驟12a、正則表達(dá)式匹配引擎判斷是否匹配成功,若是,則執(zhí)行步驟13a,若否,則執(zhí)行步驟14a ;
[0151]步驟13a、正則表達(dá)式匹配引擎將得到的特征匹配結(jié)果通過交換總線模塊發(fā)送給處理器核,執(zhí)行步驟15a;
[0152]步驟14a、正則表達(dá)式匹配引擎通過交換總線模塊向處理器核反饋匹配失敗結(jié)果,處理器核將匹配失敗結(jié)果作為處理結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊,執(zhí)行步驟20a ;
[0153]步驟15a、處理器核根據(jù)特征匹配結(jié)果確定應(yīng)用層協(xié)議類型;
[0154]步驟16a、處理器核判斷是否需要對(duì)數(shù)據(jù)包進(jìn)行深度解析,若是,則執(zhí)行步驟17a,若否,則執(zhí)行步驟19a;
[0155]步驟17a、處理器核調(diào)用協(xié)議解析子協(xié)處理器,將數(shù)據(jù)包通過交換總線模塊發(fā)送給協(xié)議解析子協(xié)處理器,協(xié)議解析子協(xié)處理器對(duì)數(shù)據(jù)包進(jìn)行協(xié)議解析,得到解析結(jié)果,將解析結(jié)果通過交換總線模塊發(fā)送給處理器核;
[0156]步驟18a、處理器核將應(yīng)用層協(xié)議類型和解析結(jié)果作為處理結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊,執(zhí)行步驟20a;
[0157]步驟19a、處理器核將應(yīng)用層協(xié)議類型作為處理結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊;
[0158]步驟20a、結(jié)果上報(bào)處理模塊將處理結(jié)果封裝后發(fā)送給通用處理器。
[0159]下面通過另一個(gè)具體的實(shí)例來說明基于本發(fā)明實(shí)施例的DPI架構(gòu)進(jìn)行深度報(bào)文檢測(cè)的具體過程,圖7為本發(fā)明實(shí)施例提供的另一種深度報(bào)文檢測(cè)方法流程圖,以下結(jié)合圖7對(duì)本實(shí)施例提供的深度報(bào)文檢測(cè)方法進(jìn)行說明。
[0160]步驟lb、通用處理器將數(shù)據(jù)包發(fā)送給協(xié)處理器的收發(fā)模塊;
[0161]步驟2b、收發(fā)模塊將數(shù)據(jù)包發(fā)送給處理器核;
[0162]步驟3b、處理器核調(diào)用多模字符串匹配引擎,將數(shù)據(jù)包通過交換總線模塊發(fā)送給多模字符串匹配引擎,多模字符串匹配引擎對(duì)數(shù)據(jù)包進(jìn)行多模字符串匹配;
[0163]步驟4b、多模字符串匹配引擎判斷是否匹配成功,若是,則執(zhí)行步驟5b,若否,則執(zhí)行步驟6b ;
[0164]步驟5b、多模字符串匹配引擎將得到的特征匹配結(jié)果通過交換總線模塊發(fā)送給處理器核,執(zhí)行步驟15b;
[0165]步驟6b、多模字符串匹配引擎通過交換總線模塊向處理器核反饋匹配失敗結(jié)果;
[0166]步驟7b、處理器核調(diào)用正則表達(dá)式匹配引擎,將數(shù)據(jù)包通過交換總線模塊發(fā)送給正則表達(dá)式匹配引擎,正則表達(dá)式匹配引擎對(duì)數(shù)據(jù)包進(jìn)行正則匹配;
[0167]步驟Sb、正則表達(dá)式匹配引擎判斷是否匹配成功,若是,則執(zhí)行步驟9b,若否,則執(zhí)行步驟1b ;
[0168]步驟%、正則表達(dá)式匹配引擎將得到的特征匹配結(jié)果通過交換總線模塊發(fā)送給處理器核,執(zhí)行步驟15b;
[0169]步驟10b、正則表達(dá)式匹配引擎通過交換總線模塊向處理器核反饋匹配失敗結(jié)果;
[0170]步驟lib、處理器核調(diào)用行為特征統(tǒng)計(jì)子協(xié)處理器,將數(shù)據(jù)包通過交換總線模塊發(fā)送給行為特征統(tǒng)計(jì)子協(xié)處理器,行為特征統(tǒng)計(jì)子協(xié)處理器對(duì)數(shù)據(jù)包進(jìn)行行為特征匹配;
[0171]步驟12b、行為特征統(tǒng)計(jì)子協(xié)處理器判斷是否匹配成功,若是,則執(zhí)行步驟13b,若否,則執(zhí)行步驟14b;
[0172]步驟13b、行為特征統(tǒng)計(jì)子協(xié)處理器將得到的特征匹配結(jié)果通過交換總線模塊發(fā)送給處理器核,執(zhí)行步驟15b ;
[0173]步驟14b、行為特征統(tǒng)計(jì)子協(xié)處理器通過交換總線模塊向處理器核反饋匹配失敗結(jié)果,處理器核將匹配失敗結(jié)果作為處理結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊,執(zhí)行步驟20b ;
[0174]步驟15b、處理器核根據(jù)特征匹配結(jié)果確定應(yīng)用層協(xié)議類型;
[0175]步驟16b、若應(yīng)用層協(xié)議類型為HTTP,處理器核判斷是否需要獲取數(shù)據(jù)包的URL的值,若是,則執(zhí)行步驟17b,若否,則執(zhí)行步驟19b ;
[0176]步驟17b、處理器核調(diào)用URL匹配引擎,將數(shù)據(jù)包通過交換總線模塊發(fā)送給URL匹配引擎,URL匹配引擎分析出數(shù)據(jù)包的URL的值,得到URL匹配結(jié)果,將URL匹配結(jié)果通過交換總線模塊發(fā)送給處理器核;
[0177]步驟18b、處理器核將應(yīng)用層協(xié)議類型和URL匹配結(jié)果作為處理結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊;
[0178]步驟1%、處理器核將應(yīng)用層協(xié)議類型作為處理結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊;
[0179]步驟20b、結(jié)果上報(bào)處理模塊將處理結(jié)果封裝后發(fā)送給通用處理器。
[0180]圖8為本發(fā)明實(shí)施例提供的另一種深度報(bào)文檢測(cè)方法流程圖。如圖8所示,本實(shí)施例提供的深度報(bào)文檢測(cè)方法可以與圖4所示實(shí)施例提供的方法配合實(shí)現(xiàn),具體實(shí)現(xiàn)過程在此不再贅述。本實(shí)施例提供的深度報(bào)文檢測(cè)方法通過通用處理器來執(zhí)行,該方法具體包括:
[0181]步驟B10、通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器;
[0182]步驟B20、通用處理器接收協(xié)處理器發(fā)送的原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果;其中,應(yīng)用層解析結(jié)果是由協(xié)處理器的處理器核調(diào)用協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析后得到的;應(yīng)用層解析結(jié)果用于表示原始數(shù)據(jù)包的應(yīng)用層信息,比如應(yīng)用層協(xié)議類型、原始數(shù)據(jù)包所屬的業(yè)務(wù)等等,此處不再贅述;
[0183]步驟B30、通用處理器至少根據(jù)上述應(yīng)用層解析結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理。
[0184]具體地,網(wǎng)絡(luò)設(shè)備需要通過對(duì)接收到的流中的數(shù)據(jù)包進(jìn)行深入分析以實(shí)現(xiàn)網(wǎng)絡(luò)優(yōu)化和應(yīng)用流量控制等業(yè)務(wù)時(shí),網(wǎng)絡(luò)設(shè)備的網(wǎng)卡將流發(fā)送給通用處理器。通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器,協(xié)處理器對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析得到應(yīng)用層解析結(jié)果,應(yīng)用層解析結(jié)果可以包括應(yīng)用層協(xié)議類型、協(xié)議深度解析結(jié)果和URL匹配結(jié)果等。將應(yīng)用層解析結(jié)果返回通用處理器,通用處理器根據(jù)應(yīng)用層解析結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理,例如流量統(tǒng)計(jì)、加速、限流、阻斷和過濾等。
[0185]本實(shí)施例提供的深度報(bào)文檢測(cè)方法,通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器,接收所述協(xié)處理器發(fā)送的處理結(jié)果,根據(jù)所述處理結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI,協(xié)處理器中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù)。而且協(xié)處理器中設(shè)置有處理器核,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,處理器核與子協(xié)處理器的交互也都是芯片內(nèi)交互,避免了協(xié)處理器與通用處理器之間的頻繁交互,可以提高運(yùn)行速度。
[0186]在一個(gè)實(shí)施例中,通用處理器根據(jù)應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,具體包括:
[0187]若通用處理器若根據(jù)原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果確定出原始數(shù)據(jù)包為加密數(shù)據(jù)包,則對(duì)原始數(shù)據(jù)包進(jìn)行解密處理。
[0188]具體地,通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器,當(dāng)協(xié)處理器識(shí)別出該原始數(shù)據(jù)包是加密的,則向通用處理器返回用以指示該原始數(shù)據(jù)包為加密數(shù)據(jù)包的處理結(jié)果,則通用處理器可以對(duì)該原始數(shù)據(jù)包進(jìn)行解密處理,再將解密處理后的原始數(shù)據(jù)包發(fā)送給協(xié)處理器,協(xié)處理器對(duì)原始數(shù)據(jù)包的處理過程可以參照上述實(shí)施例的描述。
[0189]在實(shí)際應(yīng)用中,例如解密處理等操作實(shí)現(xiàn)比較復(fù)雜,協(xié)處理器無法執(zhí)行的任務(wù)可以交由通用處理器來實(shí)現(xiàn)。當(dāng)然,若協(xié)處理器中設(shè)置有解密模塊時(shí),協(xié)處理器可以自行對(duì)原始數(shù)據(jù)包進(jìn)行解密處理。
[0190]在另一個(gè)實(shí)施例中,通用處理器根據(jù)應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,可以包括:
[0191]若通用處理器根據(jù)原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果確定原始數(shù)據(jù)包所屬的流的業(yè)務(wù)類型,根據(jù)該業(yè)務(wù)類型對(duì)流進(jìn)行流量統(tǒng)計(jì)、計(jì)費(fèi)或傳輸加速。
[0192]具體地,運(yùn)營(yíng)商希望對(duì)VoIP (Voice over Internet Protocol)流量進(jìn)行計(jì)費(fèi),當(dāng)通用處理器原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果判斷出原始數(shù)據(jù)包所在數(shù)據(jù)流是采用Skype協(xié)議做VoIP電話的數(shù)據(jù)流時(shí),可對(duì)該流進(jìn)行流量統(tǒng)計(jì),以實(shí)現(xiàn)VoIP電話業(yè)務(wù)的計(jì)費(fèi)。
[0193]當(dāng)用戶希望對(duì)某些應(yīng)用流量加速時(shí),例如網(wǎng)絡(luò)游戲,當(dāng)通用處理器根據(jù)應(yīng)用層解析結(jié)果判斷出原始數(shù)據(jù)包所屬的流用于網(wǎng)絡(luò)游戲業(yè)務(wù),則對(duì)該條流加速,以保證該條流的傳輸速度。
[0194]當(dāng)用戶希望對(duì)某些應(yīng)用進(jìn)行阻斷時(shí),當(dāng)通用處理器根據(jù)根據(jù)應(yīng)用層解析結(jié)果判斷出原始數(shù)據(jù)包所屬的流是用于某一特定的應(yīng)用程序時(shí),可以對(duì)該流進(jìn)行阻斷處理。
[0195]優(yōu)選地,在另一個(gè)實(shí)施例中,原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果包括:原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和URL匹配結(jié)果;其中,原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型可以由協(xié)處理器的處理器核調(diào)用協(xié)處理器的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行識(shí)別后得到,進(jìn)一步地,協(xié)處理器的處理器核在確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議HTTP之后,還可以調(diào)用協(xié)處理器的統(tǒng)一資源定位符URL匹配引擎對(duì)原始數(shù)據(jù)包進(jìn)行URL進(jìn)行匹配,以得到URL匹配結(jié)果并發(fā)送給通用處理器;相應(yīng)地,通用處理器接收到協(xié)處理器發(fā)送的URL匹配結(jié)果后,根據(jù)的應(yīng)用層協(xié)議類型和URL匹配結(jié)果判斷所述原始數(shù)據(jù)包所屬的流是否用于訪問被限網(wǎng)站,若是,則對(duì)所述流進(jìn)行阻斷處理。
[0196]具體地,用戶希望開啟綠色上網(wǎng)業(yè)務(wù),防止未成年人訪問不健康網(wǎng)站,當(dāng)通用處理器根據(jù)處理結(jié)果中的應(yīng)用層協(xié)議類型時(shí)HTTP,且根據(jù)URL匹配結(jié)果判斷出該URL指向的網(wǎng)站是訪問被限的,則對(duì)該流進(jìn)行阻斷,以防止未成年人對(duì)不健康網(wǎng)站的訪問。
[0197]圖9為本發(fā)明實(shí)施例提供的一種協(xié)處理器結(jié)構(gòu)示意圖。如圖9所示,本實(shí)施例提供的協(xié)處理器91具體可以實(shí)現(xiàn)本發(fā)明任意實(shí)施例提供的應(yīng)用于協(xié)處理器的深度報(bào)文識(shí)別方法的各個(gè)步驟,具體實(shí)現(xiàn)過程在此不再贅述。本實(shí)施例提供的協(xié)處理器91具體包括:收發(fā)模塊11、處理器核12和子協(xié)處理器13。
[0198]收發(fā)模塊11,用于接收通用處理器發(fā)送的原始數(shù)據(jù)包,將所原始數(shù)據(jù)包發(fā)送給處理器核12 ;
[0199]處理器核12,用于調(diào)用協(xié)處理器91的子協(xié)處理器13對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用協(xié)議的識(shí)別,生成處理結(jié)果,以及將所述處理結(jié)果發(fā)送給所述通用處理器;
[0200]子協(xié)處理器13,用于在處理器核12的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用協(xié)議的識(shí)別。
[0201]協(xié)處理器91可以通過FPGA或ASIC來實(shí)現(xiàn),協(xié)處理器91中部署有一個(gè)或多個(gè)處理器核12,協(xié)處理器91中還設(shè)置有收發(fā)模塊11和子協(xié)處理器13,子協(xié)處理器13通過硬件描述語言實(shí)現(xiàn),硬件描述語言可以為VHDL或Verilog HDL0子協(xié)處理器13專門用于對(duì)數(shù)據(jù)包進(jìn)行應(yīng)用協(xié)議識(shí)別,可以提高業(yè)務(wù)的處理效果。
[0202]在本實(shí)施例中,所述的協(xié)處理器91還可以包括交換總線模塊14。相應(yīng)地,所述處理器核12可以通過所述協(xié)處理器91的交換總線模塊14調(diào)用所述子協(xié)處理器13。
[0203]進(jìn)一步地,可以而為協(xié)處理器91的功能模塊配備第一內(nèi)存15,第二內(nèi)存16,第一內(nèi)存保存軟核專用的數(shù)據(jù)結(jié)構(gòu),包括流表、規(guī)則條件,使DPI協(xié)處理器能感知流的狀態(tài),而不是基于包的處理。第二內(nèi)存保存各匹配引擎和子協(xié)處理器的數(shù)據(jù)結(jié)構(gòu),如DFA狀態(tài)表、單模匹配算法輔助數(shù)據(jù)、子協(xié)處理器的算法數(shù)據(jù)結(jié)構(gòu)等等。需要說明的是,第一內(nèi)存和第二內(nèi)存只是是邏輯上的劃分,兩者可以位于同一片物理內(nèi)存上。
[0204]本實(shí)施例提供的協(xié)處理器91,收發(fā)模塊11接收通用處理器發(fā)送的原始數(shù)據(jù)包,將原始數(shù)據(jù)包發(fā)送給協(xié)處理器91的處理器核12,處理器核12調(diào)用協(xié)處理器91的子協(xié)處理器13對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用協(xié)議的識(shí)別,生成處理結(jié)果,處理器核12將處理結(jié)果發(fā)送給通用處理器,以使通用處理器根據(jù)處理結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理。通用處理器和協(xié)處理器91配合實(shí)現(xiàn)DPI,協(xié)處理器91中的子協(xié)處理器13可以專門為DPI業(yè)務(wù)而設(shè)計(jì),將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù)。而且協(xié)處理器91中設(shè)置有處理器核12,子協(xié)處理器13在處理器核12的調(diào)用下運(yùn)行,可以保留中間狀態(tài)信息,處理器核12與子協(xié)處理器13的交互也都是芯片內(nèi)交互,避免了協(xié)處理器91與通用處理器之間的頻繁交互,可以提高運(yùn)行速度。
[0205]圖10為本發(fā)明實(shí)施例提供的另一種協(xié)處理器10結(jié)構(gòu)示意圖。如圖10所示,在本實(shí)施例中,所述收發(fā)模塊11可以包括接收單元111、流處理單元112和分發(fā)單元113。接收單元111用于接收所述通用處理器發(fā)送的原始數(shù)據(jù)包;流處理單元112用于對(duì)所述原始數(shù)據(jù)包進(jìn)行流處理;分發(fā)單元113用于將流處理之后的數(shù)據(jù)包發(fā)送給所述處理器核12,具體地,流處理單元112具體用于對(duì)所述原始數(shù)據(jù)包進(jìn)行IP分片報(bào)文重組處理和TCP亂序報(bào)文重排處理;當(dāng)協(xié)處理器10包含多個(gè)處理器核時(shí),分發(fā)單元113具體用于,確定所述至少兩個(gè)處理器核中每個(gè)處理器核的負(fù)荷情況,根據(jù)每個(gè)所述處理器核的負(fù)荷情況從所述至少兩個(gè)處理器核中選擇一個(gè)處理器核,將所述流處理后的數(shù)據(jù)包發(fā)送給被選擇的處理器核,相應(yīng)地,被選擇的處理器核用于調(diào)用子協(xié)處理器13對(duì)流處理后的數(shù)據(jù)包進(jìn)行應(yīng)用層解析,比如應(yīng)用層協(xié)議識(shí)別。
[0206]在本實(shí)施例中,協(xié)處理器10還可以包括交換總線模塊14。相應(yīng)地,處理器核12具體通過協(xié)處理器10的交換總線模塊14調(diào)用子協(xié)處理器13。
[0207]在一個(gè)實(shí)施例中,子協(xié)處理器13可以為端點(diǎn)查找子協(xié)處理器,在這種情形下,子協(xié)處理器13具體用于在處理器核12的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行端點(diǎn)查找,得到端點(diǎn)查找結(jié)果,將該端點(diǎn)查找結(jié)果返回處理器核12。處理器核12具體用于根據(jù)該特征匹配結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的應(yīng)用層協(xié)議類型作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給通用處理器。
[0208]在另一個(gè)實(shí)施例中,如圖10所示,子協(xié)處理器13包括協(xié)議識(shí)別子協(xié)處理器131和字符串匹配引擎132。協(xié)議識(shí)別子協(xié)處理器131用于:在所述處理器核調(diào)用子協(xié)處理器13后,調(diào)用字符串匹配引擎132 ;字符串匹配引擎132用于在協(xié)議識(shí)別子協(xié)處理器131的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將該特征匹配結(jié)果返回所述處理器核;
[0209]相應(yīng)地,處理器核12具體用于至少根據(jù)該特征匹配結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的應(yīng)用層協(xié)議類型作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
[0210]在另一個(gè)實(shí)施例中,子協(xié)處理器13也可以為正則表達(dá)式匹配引擎。該正則表達(dá)式匹配引擎用于在處理器核12的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行正則匹配,得到特征匹配結(jié)果,將該特征匹配結(jié)果返回處理器核12。處理器核12具體用于根據(jù)該特征匹配結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的應(yīng)用層協(xié)議類型作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給通用處理器。
[0211]優(yōu)選地,子協(xié)處理器13還可以而包括:行為特征統(tǒng)計(jì)子協(xié)處理器133,用于在處理器核12的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行行為特征匹配,得到特征匹配結(jié)果,將該特征匹配結(jié)果返回處理器核12。處理器核12具體用于根據(jù)該特征匹配結(jié)果確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的應(yīng)用層協(xié)議類型作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給通用處理器。
[0212]優(yōu)選地,在本實(shí)施例中,協(xié)處理器10還可以包括:協(xié)議解析子協(xié)處理器15,用于在處理器核12的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行協(xié)議解析,得到解析結(jié)果,將該解析結(jié)果返回給處理器核12 ;相應(yīng)地,處理器核12具體用于將原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,以及協(xié)議解析子協(xié)處理器15得到的解析結(jié)果作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給通用處理器。
[0213]優(yōu)選地,在本實(shí)施例中,協(xié)處理器10還可以包括:統(tǒng)一資源定位符URL匹配引擎16,用于在處理器核12的調(diào)用下對(duì)原始數(shù)據(jù)包進(jìn)行URL的匹配,得到URL匹配結(jié)果,并將該URL匹配結(jié)果返回給所述處理器核12 ;相應(yīng)地,處理器核12具體用于將原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,以及該URL匹配結(jié)果作為原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給通用處理器。
[0214]優(yōu)選地,在本實(shí)施例中,協(xié)處理器10還包括:結(jié)果上報(bào)處理模塊17。處理器核12具體用于將原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給結(jié)果上報(bào)處理模塊17,結(jié)果上報(bào)處理模塊17用于將該應(yīng)用層解析結(jié)果按照預(yù)設(shè)格式進(jìn)行封裝,將封裝后的應(yīng)用層解析結(jié)果發(fā)送給通用處理器。
[0215]在實(shí)際應(yīng)用中,DPI設(shè)備的通用處理器和協(xié)處理器91配合實(shí)現(xiàn)DPI業(yè)務(wù),協(xié)處理器91中的功能模塊可以根據(jù)實(shí)際的DPI業(yè)務(wù)需要來設(shè)置,處理器核12的邏輯也可以根據(jù)實(shí)際的DPI業(yè)務(wù)需要來編程,上述實(shí)施例提供了幾種功能模塊的實(shí)現(xiàn)形式,但本發(fā)明并不以此為限。
[0216]可以將DPI設(shè)備劃分為多個(gè)層次,例如,自上而下劃分為四個(gè)層次:運(yùn)算密集層、DPI業(yè)務(wù)控制層、DPI子業(yè)務(wù)邏輯層和算法引擎層。層次越高,處理的業(yè)務(wù)越復(fù)雜通用,層次越低,算法越簡(jiǎn)單專用。為了提高硬件加速性能,應(yīng)盡可能多的把DPI相關(guān)任務(wù)交由協(xié)處理器來完成。這樣通用處理器可以完成更多的運(yùn)算密集型任務(wù)。協(xié)處理器則負(fù)責(zé)實(shí)現(xiàn)DPI業(yè)務(wù)控制層、DPI子業(yè)務(wù)邏輯層、算法引擎層的邏輯。
[0217]原則上,高層次的模塊調(diào)用低層次的模塊來實(shí)現(xiàn)需要的功能。當(dāng)然,同一層次的模塊也可以互相調(diào)用來協(xié)同完成功能。以下對(duì)各層次進(jìn)行詳細(xì)說明。
[0218]層次一:運(yùn)算密集層。負(fù)責(zé)需要大量運(yùn)算處理的任務(wù),包括:DPI業(yè)務(wù)邏輯中的加解密和編解碼等復(fù)雜邏輯處理;以及其他非DPI業(yè)務(wù),如增值業(yè)務(wù)、策略匹配和報(bào)文動(dòng)作執(zhí)行等。
[0219]層次二:DPI業(yè)務(wù)控制層。通過在協(xié)處理器中放置處理器核來執(zhí)行DPI業(yè)務(wù)控制邏輯,包括,DPI引擎各步驟的先后執(zhí)行順序控制、條件規(guī)則匹配、跨包處理、保存中間狀態(tài)等等DPI業(yè)務(wù)相關(guān)的控制邏輯。
[0220]層次三:DPI子業(yè)務(wù)邏輯層。負(fù)責(zé)可以固化的DPI特定子業(yè)務(wù)。例如:協(xié)議識(shí)別子協(xié)處理器,協(xié)議解析子協(xié)處理器和行為特征統(tǒng)計(jì)子協(xié)處理器。
[0221]層次四:算法引擎層。負(fù)責(zé)特定為DPI優(yōu)化的算法引擎任務(wù)。例如:正則表達(dá)式匹配引擎、浮定表達(dá)式引擎、多模字符串匹配算法引擎、單模字符串匹配算法引擎和行為參數(shù)運(yùn)算引擎等等。
[0222]需要特別說明的是,在協(xié)處理器內(nèi)部,即層次二到層次四通過交換總線模塊來負(fù)責(zé)這些層次模塊間的消息和數(shù)據(jù)交互。而層次一與其他層次,即通用處理器與協(xié)處理器之間屬于芯片間交互,可以采用標(biāo)準(zhǔn)化總線,例如PCIE,實(shí)現(xiàn),總線的類型可以根據(jù)通用處理器提供的對(duì)外接口來設(shè)置。
[0223]除了可以劃分到對(duì)應(yīng)層次的各模塊之外,還有一些用于輔助處理的模塊,他們是獨(dú)立于各層次的,使用固化的邏輯來實(shí)現(xiàn)。例如,協(xié)處理器91內(nèi)部的收發(fā)模塊、結(jié)果上報(bào)處理模塊、內(nèi)存讀寫模塊和緩存等等。
[0224]在實(shí)際實(shí)現(xiàn)過程中,通用處理器還可以預(yù)先根據(jù)業(yè)務(wù)類型判斷是由自己進(jìn)行處理還是交由協(xié)處理器來處理,如果業(yè)務(wù)類型對(duì)應(yīng)的處理算法層次較高,較為復(fù)雜,則由該通用處理器進(jìn)行處理,若該業(yè)務(wù)類型即為DPI相關(guān)業(yè)務(wù),則通過協(xié)處理器來處理。
[0225]除了層次化設(shè)計(jì)架構(gòu)之外,本發(fā)明實(shí)施例還提出為協(xié)處理器配備外部?jī)?nèi)存,以保存DPI中間狀態(tài)而做到更好的擴(kuò)展性和性能,如圖10中的第一內(nèi)存83和第二內(nèi)存84。這樣,當(dāng)處理到需要保存現(xiàn)場(chǎng)的任務(wù)時(shí),不必交由通用處理器完成,協(xié)處理器可以卸載更多其處理器資源。另外,配備的外部?jī)?nèi)存還可以保存DPI處理時(shí)需要用到的各種特征字?jǐn)?shù)據(jù)結(jié)構(gòu)、算法特定數(shù)據(jù)結(jié)構(gòu)。這樣,協(xié)處理器可以直接快速的讀取這些數(shù)據(jù)而不必經(jīng)由總線通過通用處理器來讀取,可以達(dá)到更高的處理性能。
[0226]在本實(shí)施例中,字符串匹配引擎132具體用于在處理器核12的調(diào)用下,從第一內(nèi)存83中讀取字符串匹配算法狀態(tài)表,根據(jù)該字符串匹配算法狀態(tài)表對(duì)原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,其中,第一內(nèi)存83用于存儲(chǔ)字符串匹配算法狀態(tài)表。
[0227]具體地,為協(xié)處理器10的功能模塊配備第一內(nèi)存83,第一內(nèi)存83中存儲(chǔ)有字符串匹配算法狀態(tài)表,當(dāng)字符串匹配引擎132為多模字符串匹配引擎時(shí),字符串匹配算法狀態(tài)表為多模字符串匹配算法狀態(tài)表,當(dāng)字符串匹配引擎132為單模字符串匹配引擎時(shí),字符串匹配算法狀態(tài)表為單模字符串匹配算法狀態(tài)表。例如,多模字符串匹配算法為AC算法,該多模字符串匹配算法狀態(tài)表為AC狀態(tài)表,多模字符串匹配引擎在對(duì)數(shù)據(jù)包進(jìn)行多模字符串匹配時(shí)可以根據(jù)該多模字符串匹配算法狀態(tài)表實(shí)現(xiàn)。多模字符串匹配引擎并不直接對(duì)第一內(nèi)存83進(jìn)行讀寫操作,協(xié)處理器10中設(shè)置有緩存,可以通過緩存來訪問第一內(nèi)存83。
[0228]在本實(shí)施例中,正則表達(dá)式匹配引擎具體用于在處理器核12的調(diào)用下,從第一內(nèi)存83中讀取正則表達(dá)式匹配算法狀態(tài)表,根據(jù)該正則表達(dá)式匹配算法狀態(tài)表對(duì)原始數(shù)據(jù)包進(jìn)行正則匹配,其中,第一內(nèi)存83用于存儲(chǔ)正則表達(dá)式匹配算法狀態(tài)表。
[0229]具體地,第一內(nèi)存83中存儲(chǔ)有正則表達(dá)式匹配算法狀態(tài)表,例如,正則表達(dá)式匹配算法為DFA算法時(shí),該正則表達(dá)式匹配算法狀態(tài)表為DFA狀態(tài)表,正則表達(dá)式匹配引擎在對(duì)數(shù)據(jù)包進(jìn)行正則匹配時(shí)可以根據(jù)該正則表達(dá)式匹配算法狀態(tài)表實(shí)現(xiàn)。正則表達(dá)式匹配引擎并不直接對(duì)第一內(nèi)存83進(jìn)行讀寫操作,協(xié)處理器10中設(shè)置有緩存,通過緩存來訪問第一內(nèi)存83。
[0230]在本實(shí)施例中,字符串匹配引擎132根據(jù)第一內(nèi)存83中的字符串匹配算法狀態(tài)表對(duì)原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果之后,處理器核12具體用于從第二內(nèi)存84中讀取規(guī)則條件數(shù)據(jù)結(jié)構(gòu),根據(jù)該特征匹配結(jié)果和該規(guī)則條件數(shù)據(jù)結(jié)構(gòu)確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,其中,所述第二內(nèi)存84用于規(guī)則條件數(shù)據(jù)結(jié)構(gòu)。
[0231]具體地,為協(xié)處理器10的處理器核12配備第二內(nèi)存84,第二內(nèi)存84中存儲(chǔ)有規(guī)則條件數(shù)據(jù)結(jié)構(gòu),該規(guī)則條件數(shù)據(jù)結(jié)構(gòu)用于存儲(chǔ)業(yè)務(wù)規(guī)則與應(yīng)用層協(xié)議類型的對(duì)應(yīng)關(guān)系,處理器核12根據(jù)字符串匹配引擎得到的特征匹配結(jié)果從第二內(nèi)存中的規(guī)則條件數(shù)據(jù)結(jié)構(gòu)中查詢得到原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型。處理器核12可以不直接對(duì)第二內(nèi)存84進(jìn)行讀寫操作,協(xié)處理器10中設(shè)置有緩存,通過緩存來訪問第二內(nèi)存84。
[0232]在本實(shí)施例中,第一內(nèi)存83、第二內(nèi)存84可以為雙槽模式。
[0233]具體地,可以將第一內(nèi)存83和第二內(nèi)存84設(shè)計(jì)成雙槽(Double Bank)模式,第一槽用來保存當(dāng)前使用的數(shù)據(jù)結(jié)構(gòu),稱為當(dāng)前槽,第二槽用于保存升級(jí)的數(shù)據(jù)結(jié)構(gòu),稱為升級(jí)槽。在系統(tǒng)運(yùn)行過程中,協(xié)處理器10訪問當(dāng)前槽中的數(shù)據(jù)以實(shí)現(xiàn)業(yè)務(wù)處理。在該過程中,若需要對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行升級(jí)的時(shí)候,可以將升級(jí)的數(shù)據(jù)加載到升級(jí)槽中,該升級(jí)過程并不影響協(xié)處理器10對(duì)內(nèi)存的當(dāng)前槽的訪問,當(dāng)新數(shù)據(jù)加載完畢,就切換到系統(tǒng)槽,此時(shí),第一槽作為系統(tǒng)槽,第二槽作為當(dāng)前槽,以此類推,第一槽和第二槽交替用于保存升級(jí)數(shù)據(jù),保證了升級(jí)生效而不中斷當(dāng)前業(yè)務(wù)。值得注意的是,在實(shí)際應(yīng)用中,切換成系統(tǒng)槽后,由于一些業(yè)務(wù)流量還處于處理過程中,對(duì)于該還在處理過程中的業(yè)務(wù)流量不能強(qiáng)行切換到新的系統(tǒng)槽。在這種情況下,新的業(yè)務(wù)流量就采用新的系統(tǒng)槽的數(shù)據(jù)來處理,舊的業(yè)務(wù)流量繼續(xù)采用原系統(tǒng)槽來處理。直到所有舊的業(yè)務(wù)流量處理完畢,才將原系統(tǒng)槽設(shè)置為不工作狀態(tài)。這樣就做到不中斷當(dāng)前業(yè)務(wù)而升級(jí)系統(tǒng)。
[0234]例如,BitTorrent協(xié)議的原識(shí)別特征是“Bttorrent”,而由于BitTorrent軟件升級(jí),新的特征是“XBttorrent”,因此,需要更新DPI識(shí)別的知識(shí)庫(kù),對(duì)應(yīng)到本發(fā)明的協(xié)處理器10的數(shù)據(jù)結(jié)構(gòu)就是存放在AC狀態(tài)表中的某一個(gè)字符串特征。因此,需要把新編譯后的特征數(shù)據(jù)結(jié)構(gòu)加載到升級(jí)槽中。加載過程中,多模字符串匹配引擎依然使用當(dāng)前槽。待加載完畢,當(dāng)前槽與升級(jí)槽調(diào)換。多模字符串匹配引擎就可以讀取新的AC狀態(tài)表了。
[0235]在實(shí)際應(yīng)用過程中,主要包含編譯部分和運(yùn)行部分。
[0236]編譯部分:特征編譯器,解析子處理器編譯器,結(jié)果模板編譯器,策略編譯器。
[0237]在實(shí)際應(yīng)用中,編譯器主要包括:
[0238]a.前臺(tái)編譯器:特征編譯器、解析子處理器編譯器和匹配規(guī)則譯器等;
[0239]b.后臺(tái)編譯器:正則表達(dá)式編譯器、單模字符串算法編譯器和多模字符串算法編譯器等。
[0240]前臺(tái)編譯器主要作用包括:把用于各種DPI業(yè)務(wù)的規(guī)則(如應(yīng)用層協(xié)議識(shí)別、IPS/IDS、URL過濾)歸類成可以被本發(fā)明的協(xié)處理器使用的規(guī)則,即:正則表達(dá)式、字符串、數(shù)值等;生成所述第二內(nèi)存的數(shù)據(jù)結(jié)構(gòu),即:條件規(guī)則數(shù)據(jù)結(jié)構(gòu)等;編譯協(xié)處理器中的處理器核的軟件邏輯高級(jí)編程語言代碼到可由協(xié)處理器處理器核執(zhí)行的指令;編譯通用處理器用的各種DPI業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu),即:上文提到的用于支撐解密后識(shí)別、算法識(shí)別的數(shù)據(jù)結(jié)構(gòu)。
[0241]后臺(tái)編譯器主要作用包括:編譯可供各種協(xié)處理器中最低層次算法引擎模塊使用的數(shù)據(jù)結(jié)構(gòu),即所述第一內(nèi)存的數(shù)據(jù)結(jié)構(gòu),舉例如上不再贅述。
[0242]除了兩大種類編譯器,編譯部分模塊還包含協(xié)處理器驅(qū)動(dòng)程序。負(fù)責(zé)把編譯好的各種數(shù)據(jù)結(jié)構(gòu)加載到協(xié)處理器的第一內(nèi)存、第二內(nèi)存以及協(xié)處理器片內(nèi)內(nèi)存中(如處理器核的邏輯指令是存放在處理器片內(nèi)內(nèi)存)。
[0243]運(yùn)行部分:配置API,DPI處理API,驅(qū)動(dòng)程序,DPI業(yè)務(wù)控制層處理器核的固件,DPI子業(yè)務(wù)處理層(解析字處理器、URL過濾模塊、策略匹配模塊)和算法引擎層(單模字符串匹配引擎、正則表達(dá)式匹配引擎、多模字符串匹配引擎)的硬件模塊。
[0244]圖11為本發(fā)明實(shí)施例提供的通用處理器結(jié)構(gòu)示意圖。如圖11所示,本實(shí)施例提供的通用處理器82具體可以實(shí)現(xiàn)本發(fā)明任意實(shí)施例提供的應(yīng)用于通用處理器的深度報(bào)文檢測(cè)方法的各個(gè)步驟,具體實(shí)現(xiàn)過程在此不再贅述。本實(shí)施例提供的通用處理器包括:發(fā)送模塊21、收發(fā)模塊22和處理模塊23。
[0245]發(fā)送模塊21,用于將原始數(shù)據(jù)包發(fā)送給協(xié)處理器;
[0246]接收模塊22,用于接收所述協(xié)處理器發(fā)送的原始數(shù)據(jù)包的的應(yīng)用層解析結(jié)果,其中,應(yīng)用層解析結(jié)果是由協(xié)處理器的處理器核調(diào)用協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析后得到的;應(yīng)用層解析結(jié)果用于表示數(shù)據(jù)包的應(yīng)用層信息;
[0247]處理模塊23,用于至少根據(jù)該應(yīng)用層解析結(jié)果對(duì)原始數(shù)據(jù)包進(jìn)行處理。。
[0248]本實(shí)施例提供的通用處理器,通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器,接收所述協(xié)處理器發(fā)送的處理結(jié)果,根據(jù)所述處理結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI,協(xié)處理器中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù)。而且協(xié)處理器中設(shè)置有處理器核,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,可以保留中間狀態(tài)信息,處理器核與子協(xié)處理器的交互也都是芯片內(nèi)交互,避免了協(xié)處理器與通用處理器之間的頻繁交互,可以提高運(yùn)行速度。
[0249]在一個(gè)實(shí)施例中,處理模塊23,具體用于若根據(jù)原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果識(shí)別出原始數(shù)據(jù)為加密數(shù)據(jù)包,則對(duì)原始數(shù)據(jù)包進(jìn)行解密處理。
[0250]在另一個(gè)實(shí)施例中,處理模塊23,具體用于根據(jù)原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果確定原始數(shù)據(jù)包所屬的流的業(yè)務(wù)類型,根據(jù)該業(yè)務(wù)類型對(duì)原始數(shù)據(jù)包所屬的流進(jìn)行流量統(tǒng)計(jì)、計(jì)費(fèi)或傳輸加速。
[0251]在另一個(gè)實(shí)施例中,原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果包括:原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和URL匹配結(jié)果;其中,原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型可以由協(xié)處理器的處理器核調(diào)用協(xié)處理器的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行識(shí)別后得到,進(jìn)一步地,協(xié)處理器的處理器核在確定原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議HTTP之后,還可以調(diào)用協(xié)處理器的統(tǒng)一資源定位符URL匹配引擎對(duì)原始數(shù)據(jù)包進(jìn)行URL進(jìn)行匹配,以得到URL匹配結(jié)果并發(fā)送給通用處理器;相應(yīng)地,通用處理器接收到協(xié)處理器發(fā)送的URL匹配結(jié)果后,根據(jù)的應(yīng)用層協(xié)議類型和URL匹配結(jié)果判斷所述原始數(shù)據(jù)包所屬的流是否用于訪問被限網(wǎng)站,若是,則對(duì)所述流進(jìn)行阻斷處理。
[0252]圖12為本發(fā)明實(shí)施例提供的第一種DPI設(shè)備結(jié)構(gòu)示意圖。如圖12所示,本實(shí)施例提供的DPI設(shè)備包括:本發(fā)明任意實(shí)施例提供的協(xié)處理器81和本發(fā)明任意實(shí)施例提供的通用處理器82。
[0253]本實(shí)施例提供的DPI設(shè)備,通用處理器82和協(xié)處理器81配合實(shí)現(xiàn)DPI,協(xié)處理器81中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),將DPI功能從通用處理器82中卸載,降低了通用處理器82資源的占用,以使得通用處理器82可以處理其他增值業(yè)務(wù)。而且協(xié)處理器81中設(shè)置有處理器核,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,可以保留中間狀態(tài)信息,處理器核與子協(xié)處理器的交互也都是芯片內(nèi)交互,避免了協(xié)處理器81與通用處理器82之間的頻繁交互,可以提高運(yùn)行速度。
[0254]在一個(gè)實(shí)施例中,DPI設(shè)備包含的通用處理器的數(shù)量為一個(gè)。在實(shí)際應(yīng)用中,一個(gè)協(xié)處理器也可以與一個(gè)或多個(gè)通用處理器配合實(shí)現(xiàn)DPI業(yè)務(wù)。
[0255]在另一個(gè)實(shí)施例中,DPI設(shè)備包含的通用處理器的數(shù)量為至少兩個(gè);DPI設(shè)備還包括網(wǎng)卡和負(fù)載均衡裝置;
[0256]網(wǎng)卡用于從網(wǎng)絡(luò)接收數(shù)據(jù)包,將數(shù)據(jù)包發(fā)送給負(fù)載均衡裝置;
[0257]負(fù)載均衡裝置用于獲取所述至少兩個(gè)通用處理器中每個(gè)通用處理器的負(fù)載情況,根據(jù)每個(gè)通用處理器的負(fù)載情況選擇一個(gè)通用處理器,將數(shù)據(jù)包發(fā)送給選擇的通用處理器。
[0258]圖13為本發(fā)明實(shí)施例提供的第二種DPI設(shè)備結(jié)構(gòu)示意圖。如圖13所示,以DPI設(shè)備中設(shè)置兩個(gè)通用CPU (圖13中的33、35)為例,DPI設(shè)備中還設(shè)置有網(wǎng)卡31和負(fù)載均衡裝置32。網(wǎng)卡31接收網(wǎng)絡(luò)中的其他設(shè)備發(fā)送的數(shù)據(jù)包,直接通過一個(gè)負(fù)責(zé)負(fù)荷分擔(dān)的負(fù)載均衡裝置32分發(fā)到合適的通用CPU處理,不是采用DMA(Direct Memory Access,直接內(nèi)存存取)的方式。通用CPU確定需要進(jìn)行DPI處理時(shí),再把數(shù)據(jù)包轉(zhuǎn)發(fā)給協(xié)處理器34。待協(xié)處理器34完成處理后,通過PCIE接口收取DPI處理結(jié)果,根據(jù)DPI處理結(jié)果進(jìn)一步進(jìn)行其他業(yè)務(wù)處理后,將需要轉(zhuǎn)發(fā)的數(shù)據(jù)包通過網(wǎng)卡31轉(zhuǎn)發(fā)出去。
[0259]負(fù)載均衡裝置32可以通過FPGA來實(shí)現(xiàn),負(fù)載均衡裝置32 —方面可以根據(jù)每個(gè)通用CPU的負(fù)載情況選擇合適的通用CPU對(duì)數(shù)據(jù)包進(jìn)行處理,另一方面可以實(shí)現(xiàn)消息收發(fā)邏輯。若DPI設(shè)備中只有一個(gè)通用CPU時(shí),可以不設(shè)置該負(fù)載均衡裝置32,可以通過其他的芯片實(shí)現(xiàn)消息收發(fā)邏輯,本發(fā)明實(shí)施例中的通用CPU具體可以為Cavium通用CPU。
[0260]本發(fā)明實(shí)施例提供的DPI設(shè)備,通過通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI,協(xié)處理器中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù)。而且協(xié)處理器中設(shè)置有處理器核,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,可以保留中間狀態(tài)信息,處理器核與子協(xié)處理器的交互也都是芯片內(nèi)交互,避免了協(xié)處理器與通用處理器之間的頻繁交互,可以降低處理時(shí)延。
[0261]圖14為本發(fā)明實(shí)施例提供的第三種DPI設(shè)備結(jié)構(gòu)示意圖。如圖14所示,在本實(shí)施例中,DPI設(shè)備包括兩個(gè)通用CPU (圖14中的42、45),為通用CPU42配置有DDR3內(nèi)存43,為通用CPU45配置有DDR3內(nèi)存46。DPI設(shè)備中還設(shè)置有網(wǎng)卡41,網(wǎng)卡41接收到網(wǎng)絡(luò)中的其他設(shè)備發(fā)送的數(shù)據(jù)包后,首先通過PCIE接口通過DMA方式觸發(fā)通用CPU42讀取數(shù)據(jù)包,并保存到他使用的DDR3內(nèi)存43中。若通用CPU42進(jìn)行一些處理后發(fā)現(xiàn)需要進(jìn)行DPI處理,則將數(shù)據(jù)包通過DMA方式交由協(xié)處理器44進(jìn)行DPI處理,待協(xié)處理器44完成處理后,將DPI處理結(jié)果返回給通用CPU42進(jìn)一步處理,Sandy-Bridge通用CPU42再將需要轉(zhuǎn)發(fā)的數(shù)據(jù)包通過網(wǎng)卡41發(fā)送給網(wǎng)絡(luò)中的下一個(gè)網(wǎng)絡(luò)設(shè)備。需要說明的是,本發(fā)明實(shí)施例的通用CPU 可以為 Sandy-Bridge 通用 CPU。
[0262]本發(fā)明實(shí)施例提供的DPI設(shè)備,通過通用處理器和協(xié)處理器配合實(shí)現(xiàn)DPI,協(xié)處理器中的子協(xié)處理器可以專門為DPI業(yè)務(wù)而設(shè)計(jì),將DPI功能從通用處理器中卸載,降低了通用處理器資源的占用,以使得通用處理器可以處理其他增值業(yè)務(wù)。而且協(xié)處理器中設(shè)置有處理器核,子協(xié)處理器在處理器核的調(diào)用下運(yùn)行,可以保留中間狀態(tài)信息,處理器核與子協(xié)處理器的交互也都是芯片內(nèi)交互,避免了協(xié)處理器與通用處理器之間的頻繁交互,可以降低處理時(shí)延。
[0263]本發(fā)明實(shí)施例提供的深度報(bào)文檢測(cè)方法和裝置可以應(yīng)用于多種應(yīng)用場(chǎng)景,例如但不限于,在企業(yè)網(wǎng)路由器,使用DPI協(xié)處理器進(jìn)行應(yīng)用協(xié)議識(shí)別、深度協(xié)議解析、IDS(Intrus1n Detect1n Systems)和策略引擎。在 Router 和 BRAS (Broadband RemoteAccess Server),使用DPI協(xié)處理器進(jìn)行應(yīng)用協(xié)議識(shí)別、深度協(xié)議解析和策略引擎。在GGSN(Gateway GPRS Support Node)中,使用DPI協(xié)處理器進(jìn)行應(yīng)用協(xié)議識(shí)別、深度協(xié)議解析、內(nèi)容過濾和策略引擎。在應(yīng)用網(wǎng)關(guān)中,使用DPI協(xié)處理器進(jìn)行應(yīng)用協(xié)議識(shí)別、深度協(xié)議解析、內(nèi)容過濾和策略引擎。在無線接入網(wǎng)元RNC(Rad1 Network Controller)、NodeB,使用DPI協(xié)處理器進(jìn)行應(yīng)用協(xié)議識(shí)別、深度協(xié)議解析、無線資源優(yōu)化和策略引擎。
[0264]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0265]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種深度報(bào)文檢測(cè)DPI方法,其特征在于,包括: 協(xié)處理器的收發(fā)模塊接收通用處理器發(fā)送的原始數(shù)據(jù)包,將所述原始數(shù)據(jù)包發(fā)送給所述協(xié)處理器的處理器核; 所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息; 所述處理器核將所述應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器,以使所述通用處理器根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的深度報(bào)文檢測(cè)方法,其特征在于,在所述協(xié)處理器的收發(fā)模塊接收所述通用處理器發(fā)送的原始數(shù)據(jù)包之后,在將所述原始數(shù)據(jù)包發(fā)送給所述協(xié)處理器的處理器核之前,所述方法還包括: 對(duì)所述原始數(shù)據(jù)包進(jìn)行流處理; 所述將所述原始數(shù)據(jù)包發(fā)送給所述處理器核,包括: 將流處理后的數(shù)據(jù)包發(fā)送給所述處理器核; 所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括: 所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述流處理后的數(shù)據(jù)包應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
3.根據(jù)權(quán)利要求2所述的深度報(bào)文檢測(cè)方法,其特征在于,所述對(duì)所述原始數(shù)據(jù)包進(jìn)行流處理,包括: 對(duì)所述原始數(shù)據(jù)包進(jìn)行IP分片報(bào)文重組處理和TCP亂序報(bào)文重排處理。
4.根據(jù)權(quán)利要求1所述的深度報(bào)文檢測(cè)方法,其特征在于:所述協(xié)處理器中設(shè)置有至少兩個(gè)處理器核;所述將所述原始數(shù)據(jù)包發(fā)送給所述協(xié)處理器的處理器核,包括: 根據(jù)每個(gè)所述處理器核的負(fù)荷情況從所述至少兩個(gè)處理器核中選擇一個(gè)處理器核,將所述原始數(shù)據(jù)包發(fā)送給被選擇的處理器核。
5.根據(jù)權(quán)利要求1所述的深度報(bào)文檢測(cè)方法,其特征在于,所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,具體包括: 所述處理器核通過所述協(xié)處理器的交換總線模塊調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析。
6.根據(jù)權(quán)利要求1所述的深度報(bào)文檢測(cè)方法,其特征在于, 所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括: 所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議識(shí)別子協(xié)處理器,所述協(xié)議識(shí)別子協(xié)處理器在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行端點(diǎn)查找,得到端點(diǎn)查找結(jié)果,將所述端點(diǎn)查找結(jié)果返回所述處理器核,所述處理器核至少根據(jù)所述端點(diǎn)查找結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將得到的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
7.根據(jù)權(quán)利要求1所述的深度報(bào)文檢測(cè)方法,其特征在于, 所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括: 所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議識(shí)別子協(xié)處理器,所述協(xié)議識(shí)別子協(xié)處理器在所述處理器核的調(diào)用下,調(diào)用所述協(xié)處理器包括的字符串匹配引擎,所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核,所述處理器核至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,,并將所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
8.根據(jù)權(quán)利要求1所述的深度報(bào)文檢測(cè)方法,其特征在于, 所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括: 所述處理器核調(diào)用所述協(xié)處理器包括的正則表達(dá)式匹配引擎,所述正則表達(dá)式匹配引擎在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行正則匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核,所述處理器核至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將得到的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
9.根據(jù)權(quán)利要求1所述的深度報(bào)文檢測(cè)方法,其特征在于,所述處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,包括: 所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議進(jìn)行識(shí)別,得到所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型; 所述處理器核調(diào)用所述協(xié)處理器包括的協(xié)議解析子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行協(xié)議解析,得到解析結(jié)果,并將所述解析結(jié)果和所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果。
10.根據(jù)權(quán)利要求1-9任一項(xiàng)所述的深度報(bào)文檢測(cè)方法,其特征在于,所述處理器核將所述應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器,包括: 所述處理器核將所述應(yīng)用層解析結(jié)果發(fā)送給所述協(xié)處理器包括的結(jié)果上報(bào)處理模塊; 所述結(jié)果上報(bào)處理模塊將所述應(yīng)用層解析結(jié)果按照預(yù)設(shè)格式進(jìn)行封裝,將封裝后的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
11.根據(jù)權(quán)利要求7所述的深度報(bào)文檢測(cè)方法,其特征在于,所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,包括: 所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下,從第一內(nèi)存中讀取字符串匹配算法狀態(tài)表,根據(jù)所述字符串匹配算法狀態(tài)表對(duì)所述流處理后的數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果。
12.根據(jù)權(quán)利要求11所述的深度報(bào)文檢測(cè)方法,其特征在于,所述處理器核至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,包括: 所述處理器核從第二內(nèi)存中讀取規(guī)則條件數(shù)據(jù)結(jié)構(gòu),根據(jù)所述特征匹配結(jié)果和所述規(guī)則條件數(shù)據(jù)結(jié)構(gòu)確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型。
13.—種深度報(bào)文檢測(cè)方法,其特征在于,包括: 通用處理器將原始數(shù)據(jù)包發(fā)送給協(xié)處理器; 所述通用處理器接收所述協(xié)處理器發(fā)送的所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,其中,所述應(yīng)用層解析結(jié)果是由所述協(xié)處理器的處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析得到的;所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息; 所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
14.根據(jù)權(quán)利要求13所述的深度報(bào)文檢測(cè)方法,其特征在于,所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,包括: 所述通用處理器若根據(jù)所述應(yīng)用層解析結(jié)果確定所述原始數(shù)據(jù)包是否為加密數(shù)據(jù)包,若是,則對(duì)所述原始數(shù)據(jù)包進(jìn)行解密處理。
15.根據(jù)權(quán)利要求13所述的深度報(bào)文檢測(cè)方法,其特征在于,所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,包括: 所述通用處理器根據(jù)所述應(yīng)用層解析結(jié)果確定所述原始數(shù)據(jù)包所屬的流的業(yè)務(wù)類型,根據(jù)所述業(yè)務(wù)類型對(duì)所述流進(jìn)行流量統(tǒng)計(jì)、計(jì)費(fèi)或傳輸加速。
16.根據(jù)權(quán)利要求13所述的深度報(bào)文檢測(cè)方法,其特征在于,所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果包括:所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和URL匹配結(jié)果;其中,所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型是由所述協(xié)處理的處理器核調(diào)用所述協(xié)處理器的協(xié)議識(shí)別子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行識(shí)別后得到的;所述URL匹配結(jié)果是由所述協(xié)處理器的處理器核在確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議之后,調(diào)用所述協(xié)處理器的統(tǒng)一資源定位符URL匹配引擎對(duì)所述原始數(shù)據(jù)包進(jìn)行URL的匹配得到的; 所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理,包括: 所述通用處理器根據(jù)所述應(yīng)用層解析結(jié)果和所述URL匹配結(jié)果判斷所述原始數(shù)據(jù)包所屬的流是否用于訪問被限網(wǎng)站,若是,則對(duì)所述流進(jìn)行阻斷處理。
17.一種協(xié)處理器,其特征在于,包括:收發(fā)模塊、子協(xié)處理器和處理器核; 所述收發(fā)模塊,用于接收通用處理器發(fā)送的原始數(shù)據(jù)包,將所述原始數(shù)據(jù)包發(fā)送給所述處理器核; 所述處理器核,用于調(diào)用所述子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果,所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息;以及將所述應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器,以使所述通用處理器至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理; 所述子協(xié)處理器,用于在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析,得到所述原始數(shù)據(jù)包的應(yīng)用層信息。
18.根據(jù)權(quán)利要求17所述的協(xié)處理器,其特征在于,所述收發(fā)模塊包括: 接收單元,用于接收所述通用處理器發(fā)送的原始數(shù)據(jù)包; 流處理單元,用于在所述接收單元接收到所述通用處理器發(fā)送的原始數(shù)據(jù)包之后,對(duì)所述原始數(shù)據(jù)包進(jìn)行流處理; 分發(fā)單元,用于將流處理后的數(shù)據(jù)包發(fā)送給所述處理器核; 所述處理器核具體用于調(diào)用所述子協(xié)處理器對(duì)所述流處理后的數(shù)據(jù)包進(jìn)行應(yīng)用層解析。
19.根據(jù)權(quán)利要求18所述的協(xié)處理器,其特征在于:所述流處理單元具體用于對(duì)所述原始數(shù)據(jù)包進(jìn)行IP分片報(bào)文重組處理和TCP亂序報(bào)文重排處理。
20.根據(jù)權(quán)利要求18或19所述的協(xié)處理器,其特征在于:所述處理器核的數(shù)量為至少兩個(gè); 所述分發(fā)單元具體用于,確定所述至少兩個(gè)處理器核中每個(gè)處理器核的負(fù)荷情況,根據(jù)每個(gè)所述處理器核的負(fù)荷情況從所述至少兩個(gè)處理器核中選擇一個(gè)處理器核,將所述流處理后的數(shù)據(jù)包發(fā)送給被選擇的處理器核。
21.根據(jù)權(quán)利要求17-20任一項(xiàng)所述的協(xié)處理器,其特征在于,還包括:交換總線模塊; 所述處理器核具體用于通過所述協(xié)處理器的交換總線模塊調(diào)用所述子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析。
22.根據(jù)權(quán)利要求17所述的協(xié)處理器,其特征在于,所述子協(xié)處理器具體用于,在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行端點(diǎn)查找,得到端點(diǎn)查找結(jié)果,將所述端點(diǎn)查找結(jié)果返回所述處理器核; 所述處理器核具體用于,至少根據(jù)所述端點(diǎn)查找結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
23.根據(jù)權(quán)利要求17所述的協(xié)處理器,其特征在于,所述子協(xié)處理器包括:協(xié)議識(shí)別子協(xié)處理器和字符串匹配引擎; 所述協(xié)議識(shí)別子協(xié)處理器具體用于:在所述處理器核的調(diào)用下,調(diào)用所述字符串匹配引擎,所述字符串匹配引擎在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核; 所述處理器核具體用于至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
24.根據(jù)權(quán)利要求17所述的協(xié)處理器,其特征在于,所述子協(xié)處理器具體為:正則表達(dá)式匹配引擎; 所述正則表達(dá)式匹配引擎用于在所述處理器核的調(diào)用下對(duì)所述原始數(shù)據(jù)包進(jìn)行正則匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核; 所述處理器核具體用于至少根據(jù)所述特征匹配結(jié)果確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型,并將確定的所述應(yīng)用層協(xié)議類型作為所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
25.根據(jù)權(quán)利要求23所述的協(xié)處理器,其特征在于,所述子協(xié)處理器還包括:協(xié)議解析子協(xié)處理器; 所述協(xié)議解析子協(xié)處理器用于對(duì)所述原始數(shù)據(jù)包進(jìn)行協(xié)議解析,得到解析結(jié)果,將所述解析結(jié)果返回給所述處理器核; 所述處理器核還用于將所述解析結(jié)果發(fā)送給所述通用處理器,以使所述通用處理器根據(jù)所述應(yīng)用層協(xié)議類型和所述解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
26.根據(jù)權(quán)利要求17-25任一項(xiàng)所述的協(xié)處理器,其特征在于,還包括:結(jié)果上報(bào)處理模塊; 所述處理器核具體用于將所述應(yīng)用層解析結(jié)果發(fā)送給所述結(jié)果上報(bào)處理模塊; 所述結(jié)果上報(bào)處理模塊用于將所述應(yīng)用層解析結(jié)果按照預(yù)設(shè)格式進(jìn)行封裝,將封裝后的應(yīng)用層解析結(jié)果發(fā)送給所述通用處理器。
27.根據(jù)權(quán)利要求23所述的協(xié)處理器,其特征在于: 所述字符串匹配引擎具體用于在所述協(xié)議識(shí)別子協(xié)處理器的調(diào)用下,從第一內(nèi)存中讀取字符串匹配算法狀態(tài)表,根據(jù)所述字符串匹配算法狀態(tài)表對(duì)所述原始數(shù)據(jù)包進(jìn)行字符串匹配,得到特征匹配結(jié)果,將所述特征匹配結(jié)果返回所述處理器核其中,所述第一內(nèi)存用于存儲(chǔ)字符串匹配算法狀態(tài)表。
28.根據(jù)權(quán)利要求27所述的協(xié)處理器,其特征在于: 所述處理器核具體用于從第二內(nèi)存中讀取規(guī)則條件數(shù)據(jù)結(jié)構(gòu),根據(jù)所述特征匹配結(jié)果和所述規(guī)則條件數(shù)據(jù)結(jié)構(gòu)確定所述應(yīng)用層協(xié)議類型,其中,所述第二內(nèi)存用于規(guī)則條件數(shù)據(jù)結(jié)構(gòu)。
29.根據(jù)權(quán)利要求28所述的協(xié)處理器,其特征在于:所述第一內(nèi)存和第二內(nèi)存為雙槽模式。
30.一種通用處理器,其特征在于,包括: 發(fā)送模塊,用于將原始數(shù)據(jù)包發(fā)送給協(xié)處理器; 接收模塊,用于接收所述協(xié)處理器發(fā)送的所述原始數(shù)據(jù)包的的應(yīng)用層解析結(jié)果,其中,所述應(yīng)用層解析結(jié)果是由所述協(xié)處理器的處理器核調(diào)用所述協(xié)處理器的至少一個(gè)子協(xié)處理器對(duì)所述原始數(shù)據(jù)包進(jìn)行應(yīng)用層解析得到的;所述應(yīng)用層解析結(jié)果用于表示所述原始數(shù)據(jù)包的應(yīng)用層信息; 處理模塊,用于至少根據(jù)所述應(yīng)用層解析結(jié)果對(duì)所述原始數(shù)據(jù)包進(jìn)行處理。
31.根據(jù)權(quán)利要求30所述的通用處理器,其特征在于,所述處理模塊,具體用于若根據(jù)所述應(yīng)用層解析結(jié)果識(shí)別所述原始數(shù)據(jù)包為加密數(shù)據(jù)包,則對(duì)所述原始數(shù)據(jù)包進(jìn)行解密處理。
32.根據(jù)權(quán)利要求30或31所述的通用處理器,其特征在于, 所述原始數(shù)據(jù)包的應(yīng)用層解析結(jié)果包括:所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和URL匹配結(jié)果,其中,所述URL匹配結(jié)果是由所述協(xié)處理器的處理器核在確定所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型為超文本傳輸協(xié)議時(shí),調(diào)用所述協(xié)處理器的統(tǒng)一資源定位符URL匹配引擎對(duì)所述原始數(shù)據(jù)包進(jìn)行URL的匹配后得到的; 所述處理模塊具體用于根據(jù)所述原始數(shù)據(jù)包的應(yīng)用層協(xié)議類型和所述URL匹配結(jié)果判斷所述原始數(shù)據(jù)包所屬的流是否用于訪問被限網(wǎng)站,若是,則對(duì)所述流進(jìn)行阻斷處理。
33.一種深度報(bào)文檢測(cè)DPI設(shè)備,其特征在于,包括:如權(quán)利要求17-29任一項(xiàng)所述的協(xié)處理器和如權(quán)利要求30-32任一項(xiàng)所述的通用處理器。
34.根據(jù)權(quán)利要求33所述的深度報(bào)文檢測(cè)裝置,其特征在于:所述通用處理器的數(shù)量為一個(gè)。
35.根據(jù)權(quán)利要求33所述的深度報(bào)文檢測(cè)裝置,其特征在于:所述通用處理器的數(shù)量為至少兩個(gè);所述DPI設(shè)備還包括網(wǎng)卡和負(fù)載均衡裝置; 所述網(wǎng)卡用于從網(wǎng)絡(luò)接收數(shù)據(jù)包,將所述數(shù)據(jù)包發(fā)送給所述負(fù)載均衡裝置; 所述負(fù)載均衡裝置用于確定所述至少兩個(gè)通用處理器中每個(gè)所述通用處理器的負(fù)載情況,根據(jù)每個(gè)所述通用處理器的負(fù)載情況選擇一個(gè)通用處理器,將所述數(shù)據(jù)包發(fā)送給被選擇的通用處理器。
【文檔編號(hào)】H04L12/26GK104348677SQ201310337064
【公開日】2015年2月11日 申請(qǐng)日期:2013年8月5日 優(yōu)先權(quán)日:2013年8月5日
【發(fā)明者】艾維·菲爾, 丹尼爾·莫斯科維奇, 艾米爾·扎克, 莫默 申請(qǐng)人:華為技術(shù)有限公司