專利名稱:異構(gòu)平臺(tái)間的深度報(bào)文檢測(cè)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更為具體地,涉及一種異構(gòu)平臺(tái)間的深度報(bào)文檢測(cè)方法和裝置。
背景技術(shù):
傳統(tǒng)的網(wǎng)絡(luò)安全設(shè)備通常涉及L3/L4 (網(wǎng)絡(luò)層和傳輸層)級(jí)別的安全防護(hù),并且可以采用異構(gòu)平臺(tái)實(shí)現(xiàn),所述異構(gòu)平臺(tái)通常包括FPGA架構(gòu)下的第一平臺(tái)以及X86架構(gòu)下的第
--I 口 OFPGA (Field-programmable gate array),即現(xiàn)場(chǎng)可編程門陣列,是可重新編程的硅芯片。廣泛采用FPGA芯片是源于FPGA綜合了 ASIC和傳統(tǒng)處理器的最大優(yōu)勢(shì)。FPGA能夠提供硬件定時(shí)的速度和穩(wěn)定性,且無(wú)需比如自定制ASIC設(shè)計(jì)的巨額前期費(fèi)用的大規(guī)模投入??芍匦戮幊痰墓栊酒撵`活性與在基于處理器的系統(tǒng)上運(yùn)行的軟件在某些邏輯實(shí)現(xiàn)上相當(dāng)。與處理器不同的是,F(xiàn)PGA屬于真正的并行實(shí)行,因此不同的處理操作無(wú)需競(jìng)爭(zhēng)相同的資源。每個(gè)獨(dú)立的處理任務(wù)都配有專用的芯片部分,能在不受其它邏輯塊的影響下自主運(yùn)作。因此,添加更多處理任務(wù)時(shí),其它應(yīng)用性能也不會(huì)受到影響。但是FPGA技術(shù)并不能真正代替?zhèn)鹘y(tǒng)處理器,畢竟FPGA使用的預(yù)建邏輯塊和可重新編程布線資源都是有限的,這也就制約FPGA不可能實(shí)現(xiàn)過(guò)于復(fù)雜的邏輯運(yùn)算。作為傳統(tǒng)通用處理器的代表,Χ86平臺(tái)顯然在這方面具有優(yōu)勢(shì),通過(guò)運(yùn)行其上的軟件,可以很好地實(shí)現(xiàn)復(fù)雜業(yè)務(wù)邏輯。由此,結(jié)合FPGA和Χ86的優(yōu)點(diǎn),利用異構(gòu)平臺(tái)來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)安全設(shè)備。通常,異構(gòu)平臺(tái)對(duì)于傳統(tǒng)網(wǎng)絡(luò)安全設(shè)備的需求是有優(yōu)勢(shì)的,這種優(yōu)勢(shì)在架構(gòu)上的主要體現(xiàn)是首先,記錄狀態(tài)檢測(cè)的核心Session數(shù)據(jù)結(jié)構(gòu)可硬件化,并可以提供所有操作的原子操作,基于Session在架構(gòu)層面很容易將系統(tǒng)劃分為快速通路和慢速通路,所有已經(jīng)記錄在Session中得報(bào)文會(huì)話可以通過(guò)硬件直接轉(zhuǎn)發(fā)。其次,對(duì)報(bào)文分類的方式主要是通過(guò)包分類算法實(shí)現(xiàn),在這里需要的包分類主要是依據(jù)L3和L4報(bào)文頭中三層或四層地址信息,邏輯相對(duì)簡(jiǎn)單,可以通過(guò)硬件的專有查表芯片實(shí)現(xiàn),這使大多數(shù)的新建連接操作也是可以通過(guò)硬件來(lái)完成。上述兩點(diǎn)使得在網(wǎng)絡(luò)報(bào)文的處理上能夠很好的符合二八原則,也就是大多數(shù)的報(bào)文都可以通過(guò)硬件直接轉(zhuǎn)發(fā),而少數(shù)邏輯相對(duì)復(fù)雜、處理流程較長(zhǎng)的可以通過(guò)慢速處理實(shí)現(xiàn)。此外,不同平臺(tái)之間的耦合度相對(duì)較小,平臺(tái)之間的交互主要為配置信息以及慢速數(shù)據(jù)報(bào)文等,這使得異構(gòu)平臺(tái)之間的消息交換代價(jià)相對(duì)較小。圖I示出了傳統(tǒng)需求下的異構(gòu)平臺(tái)架構(gòu)的示意圖,在圖I中,主要示出了兩個(gè)數(shù)據(jù)通路在不同平臺(tái)下的流位置和調(diào)用關(guān)系。然而,隨著整個(gè)社會(huì)信息化程度的不斷加深,尤其是越來(lái)越多的業(yè)務(wù)加速轉(zhuǎn)移到云端,針對(duì)報(bào)文進(jìn)行的數(shù)據(jù)處理面臨的安全風(fēng)險(xiǎn)也越來(lái)越復(fù)雜。在這種情況下,L3/L4 (網(wǎng)·絡(luò)層和傳輸層)級(jí)別的傳統(tǒng)安全防護(hù)已經(jīng)無(wú)法滿足復(fù)雜多樣的需求。由此,在下一代網(wǎng)絡(luò)安全產(chǎn)品中,要求對(duì)報(bào)文的處理越來(lái)越深入和復(fù)雜,它不僅僅要求對(duì)傳統(tǒng)報(bào)文頭部進(jìn)行處理,而且要求對(duì)報(bào)文的負(fù)載(L7應(yīng)用層)進(jìn)行處理,包括對(duì)報(bào)文的負(fù)載進(jìn)行深度檢測(cè)。為了對(duì)報(bào)文的負(fù)載進(jìn)行深度檢測(cè),需要引入深度報(bào)文檢測(cè)(DPI,De印Packet Inspector)技術(shù)。DPI是目前識(shí)別和鑒定協(xié)議及應(yīng)用(IP流)的最重要的技術(shù)。所謂“深度報(bào)文檢測(cè)”,“深度”是和標(biāo)準(zhǔn)數(shù)據(jù)包分析層次相比較而言的,“標(biāo)準(zhǔn)數(shù)據(jù)包檢測(cè)”僅僅分析IP包的4層以下的基礎(chǔ)信息,包括源IP地址、目的IP地址、源端口、目的端口以及連接狀態(tài),這些信息保存在數(shù)據(jù)包的4層以下的包頭內(nèi)。而DPI除了對(duì)4層以下的基礎(chǔ)信息進(jìn)行分析外,還增加了應(yīng)用層分析,識(shí)別各種應(yīng)用及其內(nèi)容。這是通過(guò)對(duì)一系列數(shù)據(jù)報(bào)文的報(bào)頭以及負(fù)載中的簽名特征(Signature)進(jìn)行分析,如圖2所示。圖2示出了基于負(fù)載中的多模特征進(jìn)行應(yīng)用層分析的示意圖,所述多模特征是對(duì)應(yīng)用進(jìn)行分析后得出的與應(yīng)用相關(guān)的特征。
由于DPI (深度報(bào)文檢測(cè))的引入,給原有的網(wǎng)絡(luò)安全設(shè)備的架構(gòu)帶來(lái)了新的挑戰(zhàn)。圖3示出了新需求下異構(gòu)平臺(tái)架構(gòu)的示意圖,在圖3中,示出了兩個(gè)數(shù)據(jù)通路在當(dāng)前需求下所遭遇的主要矛盾。在傳統(tǒng)的報(bào)文檢測(cè)中,僅僅分析IP包的4層以下的內(nèi)容,包括源地址、目的地址、源端口、目的端口以及協(xié)議類型。而DPI除了關(guān)注上述層次外,還增加了應(yīng)用層分析。對(duì)于不同應(yīng)用而言,通常都要依賴不同的承載協(xié)議。不同協(xié)議承載不同應(yīng)用時(shí),通過(guò)不同的特征來(lái)進(jìn)行識(shí)別。這些特征的形式千變?nèi)f化,一般來(lái)說(shuō)可以通過(guò)靜態(tài)特征字匹配、動(dòng)態(tài)特征匹配以及狀態(tài)特征匹配三種技術(shù)來(lái)識(shí)別判斷。還有一些特殊的應(yīng)用甚至需要分析協(xié)議本身的行為模式,具體可能是協(xié)議的微觀行為模型,也可能是協(xié)議宏觀的統(tǒng)計(jì)模型。上述這些分析機(jī)制的復(fù)雜性,使得DPI邏輯不適于硬件實(shí)現(xiàn),只能要求更多的深度檢測(cè)工作交給CPU。此外,與傳統(tǒng)連接首包的檢測(cè)機(jī)制不同,DPI要求將連接中的更多負(fù)載流量提交到CPU進(jìn)行分析,這使得異構(gòu)平臺(tái)間的流量違反了二八模型,造成大多數(shù)的報(bào)文走慢速通路,從而增加了 CPU的IO開(kāi)銷和計(jì)算負(fù)擔(dān),由此使得異構(gòu)平臺(tái)的優(yōu)勢(shì)難以發(fā)揮。由于DPI的引入而導(dǎo)致的上述方式轉(zhuǎn)變,造成報(bào)文處理的路徑變長(zhǎng),從而導(dǎo)致網(wǎng)絡(luò)安全設(shè)備的吞吐量和延時(shí)等關(guān)鍵指標(biāo)大幅度下降。此外,硬件和CPU之間的總線成為瓶頸。雖然CPU總線技術(shù)(這是PCIE,已經(jīng)發(fā)展到PCIE3. O)發(fā)展很快,但是難以滿足當(dāng)前異構(gòu)平臺(tái)完成上述需求的要求。由此產(chǎn)生的直接問(wèn)題是一旦出現(xiàn)性能瓶頸,頻繁的丟包亂序?qū)O大的增加最終的應(yīng)用識(shí)別的漏判和誤判。從上面可以看出,DPI的引入改變了原有的報(bào)文轉(zhuǎn)發(fā)路徑,使得絕大多數(shù)的報(bào)文都需要CPU處理,增加了 CPU的處理負(fù)擔(dān),以及凸顯CPU總線的瓶頸。在遭遇上述問(wèn)題時(shí),異構(gòu)平臺(tái)在架構(gòu)最通常的解決手段是Cache機(jī)制的引入,主要思想就是將慢速通路中DPI的匹配識(shí)別結(jié)果作為Cache下發(fā)到硬件中進(jìn)行加速,但是DPI問(wèn)題的復(fù)雜性導(dǎo)致通常的Cache機(jī)制是不適于當(dāng)前問(wèn)題的。主要原因是DPI識(shí)別的結(jié)果一般是通過(guò)協(xié)議中得目的IP和服務(wù)號(hào)來(lái)標(biāo)識(shí),但是相同的IP和服務(wù)號(hào)有可能攜帶有其他的應(yīng)用特征,所以不能反向推證。因此,需要一種新的基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法及裝置
發(fā)明內(nèi)容
鑒于上述,本發(fā)明的目的在于提供一種異構(gòu)平臺(tái)間的深度報(bào)文檢測(cè)方法及裝置,該方法及裝置能夠減少深度報(bào)文檢測(cè)時(shí)X86架構(gòu)下的第二平臺(tái)的計(jì)算負(fù)擔(dān)和計(jì)算復(fù)雜度,并且減少異構(gòu)平臺(tái)間的數(shù)據(jù)流量。根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法,所述異構(gòu)平臺(tái)包括FPGA架構(gòu)下的第一平臺(tái)以及X86架構(gòu)下的第二平臺(tái),所述方法包括當(dāng)在第一平臺(tái)上判斷出第一平臺(tái)所接收?qǐng)?bào)文的會(huì)話表項(xiàng)包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息時(shí),在第一平臺(tái)上,對(duì)所接收?qǐng)?bào)文進(jìn)行協(xié)議分析,以確定該報(bào)文的承載協(xié)議;基于所確定出的承載協(xié)議以及預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配,所述承載協(xié)議-多模匹配映射表表示承載協(xié)議與是否需要對(duì)該承載協(xié)議進(jìn)行多模匹配之間的映射關(guān)系;在確定需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在第一平臺(tái)上,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配,所述多模特征集合中的每個(gè)多模特征是通過(guò)對(duì)應(yīng)用的應(yīng)用簽名特征進(jìn)行分析后歸納出的并且對(duì)應(yīng)于多個(gè)應(yīng)用;以及在多模匹配命中后,將該報(bào)文和多模匹配結(jié)果發(fā)送到第二平臺(tái),并且在第二平臺(tái)中,基于多模匹配結(jié)果,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。
在上述方面的一個(gè)或多個(gè)示例中,在確定不需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在第一平臺(tái)上,基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,所述預(yù)先定義的承載協(xié)議庫(kù)中的每個(gè)承載協(xié)議是需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議;以及在識(shí)別出所述承載協(xié)議屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),將該報(bào)文發(fā)送到第二平臺(tái)中進(jìn)行深度報(bào)文檢測(cè),或者在識(shí)別出所述承載協(xié)議不屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),在所述第一平臺(tái)中對(duì)該報(bào)文進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。在上述方面的一個(gè)或多個(gè)示例中,所述承載協(xié)議和多模特征采用形式化語(yǔ)言描述,并且預(yù)先定義的承載協(xié)議-多模匹配映射表、承載協(xié)議庫(kù)和多模特征集合在所述第一平臺(tái)中被實(shí)現(xiàn)為狀態(tài)機(jī)或狀態(tài)機(jī)集合。在上述方面的一個(gè)或多個(gè)示例中,基于預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配包括將所接收的報(bào)文遍歷基于預(yù)定定義的承載協(xié)議-多模匹配映射表實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行多模匹配確定,以及基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議包括將該報(bào)文遍歷基于預(yù)定定義的承載協(xié)議庫(kù)實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行承載協(xié)議識(shí)別。在上述方面的一個(gè)或多個(gè)示例中,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配包括將該報(bào)文遍歷基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行多模匹配。在上述方面的一個(gè)或多個(gè)示例中,所述預(yù)先定義的承載協(xié)議-多模匹配映射表、預(yù)先定義的承載協(xié)議庫(kù)和多模特征集合根據(jù)用戶需求進(jìn)行更新。在上述方面的一個(gè)或多個(gè)示例中,與應(yīng)用相關(guān)的多模特征集合包括與應(yīng)用相關(guān)的靜態(tài)特征、動(dòng)態(tài)特征和/或狀態(tài)特征。根據(jù)本發(fā)明的另一方面,提供了一種基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)裝置,所述異構(gòu)平臺(tái)包括FPGA架構(gòu)下的第一平臺(tái)以及X86架構(gòu)下的第二平臺(tái),所述深度報(bào)文檢測(cè)裝置包括承載協(xié)議確定單元,位于第一平臺(tái)中,用于當(dāng)在第一平臺(tái)上判斷出第一平臺(tái)所接收?qǐng)?bào)文的會(huì)話表項(xiàng)包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息時(shí),對(duì)所接收?qǐng)?bào)文進(jìn)行協(xié)議分析,以確定該報(bào)文的承載協(xié)議;多模匹配確定單元,位于所述第一平臺(tái)中,用于基于所確定出的承載協(xié)議以及預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配,所述承載協(xié)議-多模匹配映射表表示承載協(xié)議與是否需要對(duì)該承載協(xié)議進(jìn)行多模匹配之間的映射關(guān)系;多模匹配單元,位于所述第一平臺(tái)中,用于在確定需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在第一平臺(tái)上,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配,所述多模特征集合中的每個(gè)多模特征是通過(guò)對(duì)應(yīng)用的應(yīng)用簽名特征進(jìn)行分析后歸納出的并且對(duì)應(yīng)于多個(gè)應(yīng)用;發(fā)送單元,位于所述第一平臺(tái)中,用于在多模匹配命中后,將該報(bào)文和多模匹配結(jié)果發(fā)送到第二平臺(tái);以及深度報(bào)文檢測(cè)單元,位于第二平臺(tái)中,用于基于多模匹配結(jié)果,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。在上述方面的一個(gè)或多個(gè)示例中,所述深度報(bào)文檢測(cè)裝置還可以包括承載協(xié)議識(shí)別單元,位于所述第一平臺(tái)中,用于在確定不需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,所述預(yù)先定義的承載協(xié)議庫(kù)中的每個(gè)承載協(xié)議是需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,以及在識(shí)別出所述承載協(xié)議屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),所述發(fā)送單元將 該報(bào)文發(fā)送到第二平臺(tái)中進(jìn)行深度報(bào)文檢測(cè),或者在識(shí)別出所述承載協(xié)議不屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),在所述第一平臺(tái)中對(duì)該報(bào)文進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。利用上述基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法及裝置,可以通過(guò)對(duì)FPGA架構(gòu)下的第一平臺(tái)所接收的報(bào)文進(jìn)行多模匹配(以及承載協(xié)議識(shí)別),對(duì)原本要上傳到X86架構(gòu)下的第二平臺(tái)進(jìn)行處理的報(bào)文進(jìn)行分流處理,并且得到基于多模匹配進(jìn)行的中間分析結(jié)果,然后在X86架構(gòu)下的第二平臺(tái)中基于多模匹配得到的中間分析結(jié)果繼續(xù)進(jìn)行深度報(bào)文檢測(cè),從而減少上傳到X86架構(gòu)下的第二平臺(tái)中進(jìn)行處理的報(bào)文流量以及第二平臺(tái)中的計(jì)算負(fù)擔(dān)。為了實(shí)現(xiàn)上述以及相關(guān)目的,本發(fā)明的一個(gè)或多個(gè)方面包括后面將詳細(xì)說(shuō)明并在權(quán)利要求中特別指出的特征。下面的說(shuō)明以及附圖詳細(xì)說(shuō)明了本發(fā)明的某些示例性方面。然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。
根據(jù)下述參照附圖進(jìn)行的詳細(xì)描述,本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)將變得更加顯而易見(jiàn)。在附圖中圖I示出了傳統(tǒng)需求下的X86/FPGA架構(gòu)平臺(tái)的示意圖;圖2示出了基于負(fù)載中的多模特征進(jìn)行應(yīng)用層分析的示意圖;圖3示出了新需求下異構(gòu)平臺(tái)架構(gòu)的示意圖;圖4示出了一個(gè)微博應(yīng)用的數(shù)據(jù)包結(jié)構(gòu);圖5示出了通常網(wǎng)絡(luò)協(xié)議和應(yīng)用構(gòu)建成的規(guī)則樹(shù);圖6示出了根據(jù)本發(fā)明的基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法的流程圖;圖7示出了根據(jù)本發(fā)明的承載協(xié)議-多模匹配映射表的一個(gè)示例;圖8示出了根據(jù)本發(fā)明的一個(gè)示例的承載協(xié)議庫(kù)中的數(shù)據(jù)結(jié)構(gòu)的示意圖9示出了基于異構(gòu)平臺(tái)的報(bào)文處理方法的一個(gè)示例的流程圖;和圖10示出了根據(jù)本發(fā)明的基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)裝置的方框示意圖。在所有附圖中相同的標(biāo)號(hào)指示相似或相應(yīng)的特征或功能。
具體實(shí)施方式
下面描述本公開(kāi)的各個(gè)方面。應(yīng)該明白的是,本文的教導(dǎo)可以以多種多樣形式具體體現(xiàn),并且在本文中公開(kāi)的任何具體結(jié)構(gòu)、功能或兩者僅僅是代表性的?;诒疚牡慕虒?dǎo),本領(lǐng)域技術(shù)人員應(yīng)該明白的是,本文所公開(kāi)的一個(gè)方面可以獨(dú)立于任何其它方面實(shí)現(xiàn),并且這些方面中的兩個(gè)或多個(gè)方面可以按照各種方式組合。例如,可以使用本文所闡述的任何數(shù)目的方面,實(shí)現(xiàn)裝置或?qū)嵺`方法。另外,可以使用其它結(jié)構(gòu)、功能、或除了本文所闡述的一個(gè)或多個(gè)方面之外或不是本文所闡述的一個(gè)或多個(gè)方面的結(jié)構(gòu)和功能,實(shí)現(xiàn)這種裝置或?qū)嵺`這種方法。此外,本文所描述的任何方面可以包括權(quán)利要求的至少一個(gè)元素。在對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述之前,首先對(duì)本發(fā)明的發(fā)明構(gòu)思進(jìn)行簡(jiǎn)要說(shuō)明。在涉及應(yīng)用層的網(wǎng)絡(luò)安全設(shè)備中,由于在進(jìn)行深度報(bào)文檢測(cè)時(shí)需要處理大量的網(wǎng)絡(luò)協(xié)議和應(yīng)用,因此在進(jìn)行深度報(bào)文檢測(cè)時(shí)必須采用系統(tǒng)化的鑒別手段。在廣義上,簽名是用來(lái)分析鑒別應(yīng)用及協(xié)議的特征唯一性的手段。當(dāng)一個(gè)新的應(yīng)用及協(xié)議被發(fā)明,同樣會(huì)有相應(yīng)的簽名,這個(gè)簽名會(huì)被識(shí)別和添加到簽名數(shù)據(jù)庫(kù)中。同樣,簽名也會(huì)不斷變化,比如BitTorrent/eMule/Skype每升級(jí)到一個(gè)新的版本,可能就會(huì)有新的簽名。因此,對(duì)簽名的研究是需要持續(xù)不斷的。如果應(yīng)用在升級(jí),而簽名特征庫(kù)不被更新,則應(yīng)用及協(xié)議的識(shí)別會(huì)大打折扣。由于大多數(shù)P2P文件共享應(yīng)用都使用端口跳動(dòng)技術(shù)或者盜用一些常用的協(xié)議端口進(jìn)行傳輸,所以通過(guò)端口對(duì)它們進(jìn)行識(shí)別顯然是遠(yuǎn)遠(yuǎn)不夠的。因此,所有的數(shù)據(jù)包(報(bào)文)都必須在應(yīng)用層面(Application Layer)上進(jìn)行檢查,即對(duì)比如TCP協(xié)議的傳輸協(xié)議的有效載荷(payload)部分進(jìn)行檢查,以判斷它們是否符合代表某些應(yīng)用代碼的樣本簽名特征。在很多情況下,對(duì)于某一種應(yīng)用的識(shí)別需要檢測(cè)它是否匹配多個(gè)代碼樣本的簽名特征。圖4示出了一個(gè)微博應(yīng)用的數(shù)據(jù)包結(jié)構(gòu)(S卩,報(bào)文結(jié)構(gòu))。在進(jìn)行深度報(bào)文檢測(cè)時(shí),首先,通過(guò)對(duì)報(bào)文頭部信息的分析,可以確定這是一個(gè)目的訪問(wèn)端口為80的TCP,并且通過(guò)對(duì)HTTP應(yīng)用簽名特征進(jìn)行判斷,可以判定為這是一個(gè)Web訪問(wèn)的應(yīng)用。然后,通過(guò)對(duì)報(bào)文的有效載荷部分進(jìn)行深入考察,發(fā)現(xiàn)該報(bào)文具有的第二個(gè)代碼樣本簽名特征是weibo. com,由此了解該報(bào)文的真實(shí)身份。有時(shí)候,不同的代碼樣本簽名特征分散在一次協(xié)議會(huì)話的多個(gè)數(shù)據(jù)包之中。為了能夠準(zhǔn)確地對(duì)應(yīng)用進(jìn)行識(shí)別,就必須使用精密的第7層協(xié)議偵測(cè)系統(tǒng)對(duì)同一連接中往來(lái)的報(bào)文進(jìn)行分析,從而實(shí)現(xiàn)與應(yīng)用代碼樣本匹配。通常對(duì)于應(yīng)用結(jié)果采用點(diǎn)分式結(jié)構(gòu)進(jìn)行描述,以圖4為例,最終的識(shí)別結(jié)果是IP. TCP. HTTP. HTTP-GET. Weibo。從這個(gè)結(jié)果可以看出,一個(gè)應(yīng)用的識(shí)別結(jié)果,必須是通過(guò)一系列協(xié)議和應(yīng)用的分析才能得到。通常,將IP、TCP、HTTP等稱作承載協(xié)議,而將微博稱作最終應(yīng)用。從上面的分析過(guò)程可以看到,DPI的分析過(guò)程實(shí)質(zhì)就是一系列模式匹配綜合的結(jié)果。此外,每種網(wǎng)絡(luò)協(xié)議和應(yīng)用的簽名特征通常采用一種形式化語(yǔ)言的方法來(lái)描述。在網(wǎng)絡(luò)和應(yīng)用規(guī)模較少的情況,通過(guò)形式化語(yǔ)言分析之后的結(jié)果,可以采用一個(gè)完整的狀態(tài)機(jī)來(lái)描述。然后,讓網(wǎng)絡(luò)中的多個(gè)報(bào)文遍歷整個(gè)狀態(tài)機(jī)進(jìn)行一系列模式的匹配,以證明該數(shù)據(jù)流是否包含協(xié)議和應(yīng)用簽名。但是,隨著網(wǎng)絡(luò)協(xié)議和應(yīng)用的大量加入,以及網(wǎng)絡(luò)流量的摩爾定律式的增長(zhǎng),原有的分析方式存在功能和性能的瓶頸。通過(guò)對(duì)形式化語(yǔ)言的綜合分析,發(fā)現(xiàn)大多數(shù)的網(wǎng)絡(luò)協(xié)議和應(yīng)用都存在匯集效應(yīng),通常都會(huì)匯集在幾個(gè)點(diǎn)。圖5示出了通常網(wǎng)絡(luò)協(xié)議和應(yīng)用構(gòu)建成的規(guī)則樹(shù)。網(wǎng)絡(luò)的大多數(shù)協(xié)議和應(yīng)用都可以通過(guò)回溯遍歷,掛接在這棵樹(shù)的枝干或是葉子上。規(guī)則樹(shù)的枝干通常被稱作承載協(xié)議,比如說(shuō)典型的應(yīng)用承載協(xié)議HTTP,并且大多數(shù)的應(yīng)用都位于規(guī)則樹(shù)的葉子上。基于上述規(guī)則樹(shù),可以將整個(gè)引擎分成多個(gè)子引擎,從而可以縮減引擎的規(guī)模來(lái)提高效率。
通過(guò)對(duì)DPI機(jī)制進(jìn)行分析,可以發(fā)現(xiàn)雖然將DPI整體邏輯在硬件快速通路中實(shí)現(xiàn)幾乎是不可能的,但是如果將DPI邏輯分解,將滿足流量消減原則和計(jì)算分解量化原則的一部分邏輯放到硬件中實(shí)現(xiàn),是可以有效減少軟件平臺(tái)中的計(jì)算負(fù)載以及異構(gòu)平臺(tái)之間的
數(shù)據(jù)流量。這里,流量消減原則是指將上傳到CPU的慢速通路流量有效消減,而又不影響DPI識(shí)別的結(jié)果。利用該流量消減原則可以非常有效的降低CPU的處理壓力。計(jì)算分解量化原則是指如果關(guān)鍵計(jì)算是可分解成多個(gè)步驟的,每個(gè)步驟沒(méi)有嚴(yán)格的依賴關(guān)系,并且每個(gè)步驟的計(jì)算密度是可度量的,那么可以根據(jù)硬件能提供的計(jì)算能力和空間,挑選合適的部分邏輯放到硬件去實(shí)現(xiàn),最終將硬件計(jì)算的結(jié)果帶回CPU,由CPU綜合多個(gè)步驟的結(jié)果得出結(jié)論。利用該計(jì)算分解量化原則可以極大地增加了 CPU的計(jì)算能力。通過(guò)前面的DPI介紹,可以看到最終各種協(xié)議和應(yīng)用的簽名都是通過(guò)形式化語(yǔ)言,綜合為一個(gè)個(gè)狀態(tài)機(jī)的集合。當(dāng)需要對(duì)報(bào)文進(jìn)行應(yīng)用的識(shí)別時(shí),使得報(bào)文的報(bào)頭和有效載荷部分遍歷整個(gè)狀態(tài)機(jī)集合。狀態(tài)機(jī)集合具有下述特點(diǎn)I.閉包性將正則表達(dá)式分成多個(gè)子集分別得到的狀態(tài)機(jī)集合,與整個(gè)正則表達(dá)式綜合得到的狀態(tài)機(jī)集合是等價(jià)的,也就是遍歷整個(gè)狀態(tài)機(jī)集合得到的結(jié)果,與依次遍歷各子集狀態(tài)機(jī)集合的結(jié)果是一樣的。2.正則表達(dá)式越多,正則引擎綜合得到的狀態(tài)機(jī)的數(shù)量會(huì)呈幾何級(jí)的數(shù)量增加,這是由于需要綜合的狀態(tài)越多由之帶來(lái)的中間狀態(tài)也越多。上述的得到的分析結(jié)果并不是告訴我們,正則集合分得越細(xì)越好,因?yàn)槿绻值眠^(guò)細(xì)也會(huì)導(dǎo)致流程處理時(shí)頻繁的系統(tǒng)調(diào)用,不利于CPU的處理優(yōu)化。只有合理的分割布局,才能保證適當(dāng)狀態(tài)機(jī)的規(guī)模和處理上的高效。通過(guò)分析發(fā)現(xiàn),狀態(tài)機(jī)的上述特點(diǎn)符合上面描述的兩個(gè)原則。狀態(tài)機(jī)的閉包性能夠很好地滿足計(jì)算的分解量化。通過(guò)之前對(duì)規(guī)則樹(shù)的分析可以看出,大多數(shù)的應(yīng)用都是通過(guò)少數(shù)的協(xié)議來(lái)承載的,我們將這樣的協(xié)議稱之為承載協(xié)議。這些承載協(xié)議是可以通過(guò)一個(gè)小的正則表達(dá)式集合來(lái)描述的,而且基于承載協(xié)議很容易將規(guī)則分解成幾個(gè)子集,這樣我們就可以將整體的正則規(guī)則集,分解為有優(yōu)先層次關(guān)系諸多集合。這樣的分割策略,使承載協(xié)議識(shí)別正好處于關(guān)鍵位置,由此可以考慮將之硬件化。由于承載協(xié)議的種類不多,識(shí)別結(jié)果的傳輸代價(jià)也就是能夠承受的。而且,如果承載協(xié)議在快速通路就可以識(shí)別,勢(shì)必可以據(jù)此依據(jù)用戶的規(guī)則定義,將不需要分析的承載協(xié)議報(bào)文消減。此外,大多數(shù)應(yīng)用特征簽名中都含有固定特征,比如上例中的“weibo. com”,如果提取每個(gè)應(yīng)用簽名中的這種固定字符串特征,就可以形成多模集合中的多模特征。由于存在多個(gè)簽名對(duì)應(yīng)相同固定特征的可能性,因此通過(guò)對(duì)多模的匹配,可以得到包含這種特征的可能的應(yīng)用的集合,這個(gè)集合就非常小了,綜合3000多種應(yīng)用的結(jié)果發(fā)現(xiàn),同一特征最后對(duì)應(yīng)的應(yīng)用不超過(guò)8個(gè),也就意味著可以結(jié)合上述多模特征匹配的結(jié)果,有的放矢地進(jìn)行應(yīng)用簽名的比對(duì)來(lái)確定最終的結(jié)果。多模匹配的計(jì)算代價(jià)相對(duì)較小,效率較高。這是因?yàn)樘卣鞯募贤ǔ>褪怯邢薜淖址希哂腥缦绿攸c(diǎn)首先它也是具有閉包特性的,全集的匹配與分割成幾個(gè)子集的匹配在邏輯上是等價(jià)的;其次它不具有狀態(tài)機(jī)的那種膨脹性。此外,多模匹配的結(jié)果代表的是一種可能性,而且這種可能性正好可以與上述承載協(xié)議相結(jié)合。如果一個(gè)承載協(xié)議的所有應(yīng)用都具有上述特征,那么該承載協(xié)議的所有應(yīng) 用都可以通過(guò)多模匹配方式來(lái)判斷可能性。另外,多模匹配運(yùn)算符合硬件并發(fā)流水的設(shè)計(jì)思想,相對(duì)而言適于硬件實(shí)現(xiàn)。而對(duì)CPU來(lái)說(shuō),這部分計(jì)算又是高密集的,因此相關(guān)運(yùn)算通過(guò)硬件的實(shí)現(xiàn),能有效地降低CPU負(fù)荷。通過(guò)上述分析發(fā)現(xiàn),通過(guò)在FPGA架構(gòu)下的硬件平臺(tái)(第一平臺(tái))下對(duì)所接收的報(bào)文進(jìn)行承載協(xié)議識(shí)別和多模匹配,可以滿足上述流量消減原則和計(jì)算分解量化原則,由此減少上傳到X86架構(gòu)下的軟件平臺(tái)(第二平臺(tái))中進(jìn)行處理的報(bào)文流量以及第二平臺(tái)中的計(jì)算負(fù)擔(dān),從而提高網(wǎng)絡(luò)安全設(shè)備的吞吐量并降低延遲。圖6示出了根據(jù)本發(fā)明的基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法的流程圖,所述異構(gòu)平臺(tái)包括FPGA架構(gòu)下的第一平臺(tái)以及X86架構(gòu)下的第二平臺(tái)。如圖6所示,首先,在步驟S610,在第一平臺(tái)接收到報(bào)文并且確定為針對(duì)該報(bào)文已經(jīng)建立會(huì)話表項(xiàng)后,判斷該報(bào)文的會(huì)話表項(xiàng)中是否包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息。所述指示信息通常采用DPI控制標(biāo)志位來(lái)表示。通常,如果該DPI控制標(biāo)志位被置位為I,則表示需要進(jìn)行深度報(bào)文檢測(cè)。如果被置位為0,則表示不需要進(jìn)行深度報(bào)文檢測(cè)。如果不包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息,則進(jìn)行到步驟S615,在步驟S615,在第一平臺(tái)中,將報(bào)文傳送到服務(wù)質(zhì)量(QoS)模塊中進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。如果判斷為包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息,則在步驟S620,在第一平臺(tái)上,對(duì)所接收?qǐng)?bào)文進(jìn)行協(xié)議分析,以確定該報(bào)文的承載協(xié)議。所述承載協(xié)議比如是IP、TCP、HTTP等。如何對(duì)報(bào)文進(jìn)行協(xié)議分析來(lái)確定該報(bào)文的承載協(xié)議在本領(lǐng)域是公知的,在此不再描述。在確定出該報(bào)文的承載協(xié)議后,在步驟S625,基于預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模式特征匹配。所述承載協(xié)議-多模匹配映射表表示承載協(xié)議與是否需要對(duì)該承載協(xié)議進(jìn)行多模匹配之間的映射關(guān)系。圖7示出了根據(jù)本發(fā)明的承載協(xié)議-多模匹配映射表的一個(gè)示例,其中On表示需要進(jìn)行多模匹配,Off表示不需要進(jìn)行多模匹配。這里要說(shuō)明的是,在不同的應(yīng)用場(chǎng)合下,所述承載協(xié)議-多模匹配映射表還可以根據(jù)應(yīng)用場(chǎng)合進(jìn)行修改。 在確定出不需要對(duì)該報(bào)文進(jìn)行多模匹配后,在步驟S650,在第一平臺(tái)中,基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,所述預(yù)先定義的承載協(xié)議庫(kù)中的每個(gè)承載協(xié)議是需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議。在識(shí)別出所述承載協(xié)議屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),在步驟S655,將該報(bào)文上傳到第二平臺(tái),接著,在步驟S660,在第二平臺(tái)中對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。在識(shí)別出所述承載協(xié)議不屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),流程進(jìn)行到步驟S615,在所述第一平臺(tái)中對(duì)該報(bào)文進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。在確定出需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在步驟S630,在第一平臺(tái)上,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配。這里所述多模特征集合,是將每種承載協(xié)議所對(duì)應(yīng)簽名集合中各簽名的多模特征提取,形成的一個(gè)單獨(dú)的特征集合。經(jīng)過(guò)綜合后的多模特征集合中的每個(gè)多模特征對(duì)應(yīng)于多個(gè)應(yīng)用的簽名。這里, 所述多模特征是對(duì)應(yīng)用的應(yīng)用特征簽名進(jìn)行分析后歸納出的特征,并且每個(gè)多模特征對(duì)應(yīng)于多個(gè)應(yīng)用。這里,多模特征所對(duì)應(yīng)的多個(gè)應(yīng)用是有限個(gè)應(yīng)用,通常,不多于8個(gè)應(yīng)用。所述多模匹配可以采用多種形式進(jìn)行。例如,可以采用本領(lǐng)域公知的AC算法進(jìn)行多模匹配。當(dāng)然,也可以采用本領(lǐng)域公知的其它算法來(lái)進(jìn)行多模匹配。標(biāo)準(zhǔn)AC 算法是由 Alfred V. Aho 和 Margaret J. Corasick 于 1974 年提出的一個(gè)經(jīng)典的多模匹配算法。該算法可以保證對(duì)于給定的長(zhǎng)度為η的文本,和模式集合 { 1^2,..^111},在0(11)的時(shí)間復(fù)雜度內(nèi),找到文本中的所有目標(biāo)模式,而與模式集合的規(guī)模m無(wú)關(guān)。AC-STD算法由三部分構(gòu)成,goto表,fail表和output表。該算法實(shí)現(xiàn)步驟主要包括首先,構(gòu)建goto表。接著,構(gòu)建fail和output表。然后,構(gòu)建有限狀態(tài)機(jī)。在構(gòu)建出有限狀態(tài)機(jī)后,利用該有限狀態(tài)機(jī)進(jìn)行多模匹配。該算法在本領(lǐng)域是公知的,在此不再展開(kāi)描述。在多模匹配不成功時(shí),流程進(jìn)行到步驟S615,在所述第一平臺(tái)中對(duì)該報(bào)文進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。在多模匹配成功(S卩,多模匹配命中)后,在步驟S640,將該報(bào)文和多模匹配結(jié)果發(fā)送到第二平臺(tái)。然后,在步驟S645,在第二平臺(tái)中,基于所接收的報(bào)文以及多模匹配結(jié)果,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。換言之,在第二平臺(tái)中,在多模匹配結(jié)果的基礎(chǔ)上,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。例如,如果在多模匹配時(shí)命中的多模特征是微博應(yīng)用,該多模特征可以對(duì)應(yīng)于比如搜索微博、新浪微博和騰訊微博的多個(gè)應(yīng)用,則將微博應(yīng)用的匹配結(jié)果發(fā)送到第二平臺(tái),接著,在第二平臺(tái)上,在確定為是微博應(yīng)用的基礎(chǔ)上,通過(guò)與搜狐微博、新浪微博和騰訊微博等應(yīng)用的應(yīng)用簽名進(jìn)行比對(duì),確定該微博應(yīng)用是搜狐微博、新浪微博還是騰訊微博。換言之,在經(jīng)過(guò)上述多模匹配的報(bào)文到達(dá)第二平臺(tái)(軟件平臺(tái))后,在第二平臺(tái)中不需要重新遍歷整個(gè)規(guī)則樹(shù),只需根據(jù)多模匹配的結(jié)果,找到對(duì)應(yīng)協(xié)議節(jié)點(diǎn),根據(jù)多模匹配結(jié)果,直接找到葉子應(yīng)用節(jié)點(diǎn)規(guī)則進(jìn)行匹配,從而縮減了大量的計(jì)算負(fù)載。此外,在本發(fā)明中,所述承載協(xié)議和多模特征采用形式化語(yǔ)言描述,并且預(yù)先定義的承載協(xié)議-多模匹配映射表、承載協(xié)議庫(kù)和多模特征集合在所述第一平臺(tái)中被實(shí)現(xiàn)為狀態(tài)機(jī)或狀態(tài)機(jī)集合。在本發(fā)明的一個(gè)示例中,基于預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配可以包括將所接收的報(bào)文遍歷基于預(yù)定定義的承載協(xié)議-多模匹配映射表實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行多模匹配確定。此外,基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議可以包括將該報(bào)文遍歷基于預(yù)定定義的承載協(xié)議庫(kù)實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行承載協(xié)議識(shí)另Ij。而且,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配可以包括將該報(bào)文遍歷基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行多模匹配。此外,在本發(fā)明的另一示例中,所述預(yù)先定義的承載協(xié)議-多模匹配映射表、預(yù)先定義的承載協(xié)議庫(kù)和多模特征集合可以根據(jù)用戶需求進(jìn)行更新。此外,與應(yīng)用相關(guān)的多模特征集合包括與應(yīng)用相關(guān)的靜態(tài)特征、動(dòng)態(tài)特征和/或狀態(tài)特征。此外,在本發(fā)明的另一示例中,預(yù)先定義的承載協(xié)議庫(kù)還可以被配置為具有圖8中所示的數(shù)據(jù)結(jié)構(gòu)。如圖8所示,在該數(shù)據(jù)結(jié)構(gòu)中,承載協(xié)議庫(kù)中的每個(gè)承載協(xié)議具有字段協(xié)議名稱、上傳標(biāo)志位、多模標(biāo)志位以及多模特征集合ID。所述協(xié)議名稱字段表示該承載協(xié)議的名稱,用于唯一標(biāo)識(shí)該承載協(xié)議。在本發(fā)明的另一示例中,上述協(xié)議名稱字段也可以 替換為協(xié)議ID字段,該協(xié)議ID字段表示該承載協(xié)議在承載協(xié)議庫(kù)中的ID。上傳標(biāo)志位表示該承載協(xié)議是否屬于需要進(jìn)行深度報(bào)文檢測(cè)的承載協(xié)議。例如,當(dāng)上傳標(biāo)志位被置位為I時(shí),表示需要進(jìn)行深度報(bào)文檢測(cè)。當(dāng)上傳標(biāo)志位被置位為O時(shí),表示不需要進(jìn)行深度報(bào)文檢測(cè)。多模標(biāo)志位表示是否需要進(jìn)行多模匹配。當(dāng)多模標(biāo)志位被置位為I時(shí),表示需要進(jìn)行多模匹配。當(dāng)多模標(biāo)志位被置位為O時(shí),表示不需要進(jìn)行多模匹配。所述多模特征集合ID表示與該承載協(xié)議對(duì)應(yīng)的多模特征集合的ID。該多模特征集合ID字段僅僅在多模標(biāo)志位表示需要進(jìn)行多模匹配時(shí)才被賦值。在這種情況下,在對(duì)根據(jù)本發(fā)明的基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)裝置進(jìn)行初始化時(shí),根據(jù)預(yù)先定義的規(guī)則,對(duì)承載協(xié)議庫(kù)進(jìn)行初始化,并且為該數(shù)據(jù)結(jié)構(gòu)中的每個(gè)字段進(jìn)行賦值。然后,在深度報(bào)文檢測(cè)裝置基于該初始化后的承載協(xié)議庫(kù)進(jìn)行操作。圖9示出了基于異構(gòu)平臺(tái)的報(bào)文處理方法的一個(gè)示例的流程圖,在該圖中,采用具有上述數(shù)據(jù)結(jié)構(gòu)的承載協(xié)議庫(kù)進(jìn)行。如圖9所示,報(bào)文通過(guò)隊(duì)列調(diào)度上傳到會(huì)話表匹配模塊(即,狀態(tài)檢測(cè)模塊),先進(jìn)行會(huì)話表項(xiàng)的匹配。如果會(huì)話表項(xiàng)已經(jīng)建立(即,連接信息已經(jīng)建立),則直接走快速通路。如果會(huì)話表項(xiàng)沒(méi)有建立,則需要經(jīng)由首包路徑,將報(bào)文上傳到軟件。在首包路徑中,主要進(jìn)行安全策略的檢測(cè)和轉(zhuǎn)發(fā)路徑的確定,并進(jìn)行應(yīng)用識(shí)別。如果根據(jù)首包信息不能決定應(yīng)用識(shí)別的結(jié)果,則需要在會(huì)話表項(xiàng)中設(shè)置該連接的DPI控制位,從而保證后續(xù)報(bào)文能夠繼續(xù)進(jìn)入深度報(bào)文檢測(cè)DPI模塊。在后續(xù)報(bào)文經(jīng)過(guò)會(huì)話表項(xiàng)匹配后,從會(huì)話表項(xiàng)中讀取DPI控制位,如果該DPI控制位被置位為0,則報(bào)文將進(jìn)入QoS模塊進(jìn)行處理。如果DPI控制位被置位為1,則說(shuō)明該報(bào)文需要進(jìn)行DPI檢測(cè),并且進(jìn)入到FPGA平臺(tái)中的協(xié)議識(shí)別模塊。FPGA平臺(tái)的協(xié)議識(shí)別模塊主要進(jìn)行承載協(xié)議的匹配,每個(gè)報(bào)文到達(dá)這個(gè)協(xié)議識(shí)別模塊后,由該協(xié)議識(shí)別模塊確定該報(bào)文的承載協(xié)議。然后,根據(jù)所確定出的承載協(xié)議,從預(yù)先定義的承載協(xié)議庫(kù)中找出對(duì)應(yīng)的多模標(biāo)志位,并根據(jù)該多模標(biāo)志位的賦值,確定針對(duì)該承載協(xié)議是否需要進(jìn)行多模匹配(圖9中的MP匹配)。例如,如果該多模匹配控制位被置位為1,則需要進(jìn)行多模匹配。如果該多模匹配控制位被置位為O,則不需要進(jìn)行多模匹配。在確定出需要進(jìn)行多模匹配后,將該報(bào)文傳送到多模匹配模塊中進(jìn)行處理。如果確定不需要進(jìn)行多模匹配,則根據(jù)所確定出的承載協(xié)議,從預(yù)先定義的承載協(xié)議庫(kù)中找出對(duì)應(yīng)的上傳標(biāo)志位,并根據(jù)該上傳標(biāo)志位的賦值,判斷針對(duì)該承載協(xié)議是否需要進(jìn)行深度報(bào)文檢測(cè)(即,圖9中的上傳匹配)。例如,如果該上傳標(biāo)志位被置位為1,則判斷為需要進(jìn)行深度報(bào)文檢測(cè),并將該報(bào)文上傳到第二平臺(tái)進(jìn)行處理。否則,判斷為不需要進(jìn)行深度報(bào)文檢測(cè),然后該報(bào)文直接送到QoS模塊進(jìn)行處理。在多模匹配模塊對(duì)報(bào)文進(jìn)行處理后,如果處理結(jié)果是匹配,則將該報(bào)文以及多模匹配結(jié)果一起上傳到第二平臺(tái)進(jìn)行深度報(bào)文檢測(cè)處理。例如,可以將多模式匹配的結(jié)果記錄到報(bào)文的相應(yīng)結(jié)構(gòu)中,然后將該報(bào)文送到第二平臺(tái)繼續(xù)處理。在第二平臺(tái)中,基于該多模匹配結(jié)果,將該多模匹配結(jié)果對(duì)應(yīng)的多個(gè)應(yīng)用的應(yīng)用特征與該報(bào)文進(jìn)行比對(duì),從而確定該報(bào)文對(duì)應(yīng)的具體應(yīng)用,由此實(shí)現(xiàn)深度報(bào)文檢測(cè)。如果沒(méi)有匹配,則將該報(bào)文送到QoS模塊進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。 經(jīng)過(guò)上述協(xié)議識(shí)別和多模匹配的報(bào)文到達(dá)第二平臺(tái)后,不需要重新遍歷整個(gè)規(guī)則樹(shù),只需根據(jù)協(xié)議識(shí)別和多模匹配的結(jié)果,找到對(duì)應(yīng)協(xié)議節(jié)點(diǎn),根據(jù)多模匹配結(jié)果,直接找到葉子應(yīng)用節(jié)點(diǎn)規(guī)則進(jìn)行匹配,從而縮減了大量的計(jì)算負(fù)載。如上參照?qǐng)D6到圖9描述了根據(jù)本發(fā)明的基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法的流程圖。本發(fā)明的上述基于異構(gòu)平臺(tái)的深度報(bào)文方法,可以采用軟件實(shí)現(xiàn),也可以采用硬件實(shí)現(xiàn),或采用軟件和硬件組合的方式實(shí)現(xiàn)。圖10示出了根據(jù)本發(fā)明的基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)裝置800的方框示意圖,所述異構(gòu)平臺(tái)包括FPGA架構(gòu)下的第一平臺(tái)以及X86架構(gòu)下的第二平臺(tái)。如圖10所示,深度報(bào)文檢測(cè)裝置800包括承載協(xié)議識(shí)別單元810、多模匹配確定模塊820、多模匹配模塊830、發(fā)送模塊840和深度報(bào)文檢測(cè)模塊850。其中,承載協(xié)議識(shí)別單元810、多模匹配確定模塊820、多模匹配模塊830和發(fā)送模塊840位于FPGA架構(gòu)下的第一平臺(tái)中,以及深度報(bào)文檢測(cè)模塊850位于X86架構(gòu)下的第二平臺(tái)中。承載協(xié)議確定單元810用于當(dāng)在第一平臺(tái)上判斷出第一平臺(tái)所接收?qǐng)?bào)文的會(huì)話表項(xiàng)中包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息時(shí),對(duì)所接收?qǐng)?bào)文進(jìn)行協(xié)議分析,以確定該報(bào)文的承載協(xié)議。多模匹配確定單元820用于基于預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配,所述承載協(xié)議-多模匹配映射表表示承載協(xié)議與是否需要對(duì)該承載協(xié)議進(jìn)行多模匹配之間的映射關(guān)系。多模匹配單元830用于在確定需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在第一平臺(tái)上,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配,所述多模特征集合中的每個(gè)多模特征是通過(guò)對(duì)應(yīng)用的應(yīng)用簽名特征進(jìn)行分析后歸納出的并且對(duì)應(yīng)于一個(gè)應(yīng)用。發(fā)送單元840用于在多模匹配命中后,將該報(bào)文和多模匹配結(jié)果發(fā)送到第二平臺(tái)。深度報(bào)文檢測(cè)單元850用于基于所接收的報(bào)文以及多模匹配結(jié)果,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。例如,在第二平臺(tái)中,基于該多模匹配結(jié)果,將該多模匹配結(jié)果對(duì)應(yīng)的多個(gè)應(yīng)用的應(yīng)用特征與該報(bào)文進(jìn)行比對(duì),從而確定該報(bào)文對(duì)應(yīng)的具體應(yīng)用,由此實(shí)現(xiàn)深度報(bào)文檢測(cè)。在本發(fā)明的另一示例中,深度報(bào)文檢測(cè)裝置800還可以包括承載協(xié)議識(shí)別單元(未示出),位于所述第一平臺(tái)中,用于在確定不需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,所述預(yù)先定義的承載協(xié)議庫(kù)中的每個(gè)承載協(xié)議是需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議。在識(shí)別出所述承載協(xié)議屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),所述發(fā)送單元將該報(bào)文發(fā)送到第二平臺(tái)中進(jìn)行深度報(bào)文檢測(cè)?;蛘撸谧R(shí)別出所述承載協(xié)議不屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),在所述第一平臺(tái)中對(duì)該報(bào)文進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。利用上述基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法及裝置,可以通過(guò)對(duì)FPGA架構(gòu)下的第一平臺(tái)所接收的報(bào)文進(jìn)行多模匹配(以及承載協(xié)議識(shí)別),對(duì)原本要上傳到X86架構(gòu)下的第二平臺(tái)進(jìn)行處理的報(bào)文進(jìn)行分流處理,并且得到基于多模匹配進(jìn)行的中間分析結(jié)果,然后在X86架構(gòu)下的第二平臺(tái)中基于多模匹配結(jié)果,通過(guò)與該多模匹配結(jié)果對(duì)應(yīng)的多個(gè)應(yīng)用 的應(yīng)用簽名特征進(jìn)行比對(duì),繼續(xù)進(jìn)行深度報(bào)文檢測(cè),從而減少上傳到X86架構(gòu)下的第二平臺(tái)中進(jìn)行處理的報(bào)文流量以及第二平臺(tái)中的計(jì)算負(fù)擔(dān)。盡管前面公開(kāi)的內(nèi)容示出了本發(fā)明的示例性實(shí)施例,但是應(yīng)當(dāng)注意,在不背離權(quán)利要求限定的本發(fā)明的范圍的前提下,可以進(jìn)行多種改變和修改。根據(jù)這里描述的發(fā)明實(shí)施例的方法權(quán)利要求的功能、步驟和/或動(dòng)作不需以任何特定順序執(zhí)行。此外,盡管本發(fā)明的元素可以以個(gè)體形式描述或要求,但是也可以設(shè)想多個(gè),除非明確限制為單數(shù)。雖然如上參照?qǐng)D描述了根據(jù)本發(fā)明的各個(gè)實(shí)施例進(jìn)行了描述,但是本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,對(duì)上述本發(fā)明所提出的各個(gè)實(shí)施例,還可以在不脫離本發(fā)明內(nèi)容的基礎(chǔ)上做出各種改進(jìn)。因此,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)由所附的權(quán)利要求書的內(nèi)容確定。
權(quán)利要求
1.一種基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法,所述異構(gòu)平臺(tái)包括FPGA架構(gòu)下的第一平臺(tái)以及X86架構(gòu)下的第二平臺(tái),所述方法包括 當(dāng)在第一平臺(tái)上判斷出第一平臺(tái)所接收?qǐng)?bào)文的對(duì)應(yīng)會(huì)話表項(xiàng)中包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息時(shí),在第一平臺(tái)上,對(duì)所接收的報(bào)文進(jìn)行協(xié)議分析,以確定該報(bào)文的承載 協(xié)議; 基于所確定出的承載協(xié)議以及預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配,所述承載協(xié)議-多模匹配映射表表示承載協(xié)議與是否需要對(duì)該承載協(xié)議進(jìn)行多模匹配之間的映射關(guān)系; 在確定需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在第一平臺(tái)上,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配,所述多模特征集合中的每個(gè)多模特征是通過(guò)對(duì)應(yīng)用的應(yīng)用簽名特征進(jìn)行分析后歸納出的并且對(duì)應(yīng)多個(gè)應(yīng)用;以及 在多模匹配命中后,將該報(bào)文和多模匹配結(jié)果發(fā)送到第二平臺(tái),并且在第二平臺(tái)中,基于多模匹配結(jié)果,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。
2.如權(quán)利要求I所述的深度報(bào)文檢測(cè)方法,還包括 在確定不需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在第一平臺(tái)上,基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,所述預(yù)先定義的承載協(xié)議庫(kù)中的每個(gè)承載協(xié)議是需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議;以及 在識(shí)別出所述承載協(xié)議屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),將該報(bào)文發(fā)送到第二平臺(tái)中進(jìn)行深度報(bào)文檢測(cè),或者 在識(shí)別出所述承載協(xié)議不屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),在所述第一平臺(tái)中對(duì)該報(bào)文進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。
3.如權(quán)利要求I所述的深度報(bào)文檢測(cè)方法,其中,所述承載協(xié)議和多模特征采用形式化語(yǔ)言描述,并且預(yù)先定義的承載協(xié)議-多模匹配映射表、承載協(xié)議庫(kù)和多模特征集合在所述第一平臺(tái)中被實(shí)現(xiàn)為狀態(tài)機(jī)或狀態(tài)機(jī)集合。
4.如權(quán)利要求3所述的深度報(bào)文檢測(cè)方法,其中,基于預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配包括 將所接收的報(bào)文遍歷基于預(yù)定定義的承載協(xié)議-多模匹配映射表實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行多模匹配確定,以及 基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議包括 將該報(bào)文遍歷基于預(yù)定定義的承載協(xié)議庫(kù)實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行承載協(xié)議識(shí)別。
5.如權(quán)利要求3所述的深度報(bào)文檢測(cè)方法,其中,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配包括 將該報(bào)文遍歷基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合實(shí)現(xiàn)的狀態(tài)機(jī)或狀態(tài)機(jī)集合來(lái)進(jìn)行多模匹配。
6.如權(quán)利要求I所述的深度報(bào)文檢測(cè)方法,其中,所述預(yù)先定義的承載協(xié)議-多模匹配映射表、預(yù)先定義的承載協(xié)議庫(kù)和多模特征集合根據(jù)用戶需求進(jìn)行更新。
7.如權(quán)利要求I所述的深度報(bào)文檢測(cè)方法,其中,與應(yīng)用相關(guān)的多模特征集合包括與應(yīng)用相關(guān)的靜態(tài)特征、動(dòng)態(tài)特征和/或狀態(tài)特征。
8.一種基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)裝置,所述異構(gòu)平臺(tái)包括FPGA架構(gòu)下的第一平臺(tái)以及X86架構(gòu)下的第二平臺(tái),所述深度報(bào)文檢測(cè)裝置包括 承載協(xié)議確定單元,位于第一平臺(tái)中,用于當(dāng)在第一平臺(tái)上判斷出第一平臺(tái)所接收?qǐng)?bào)文的會(huì)話表項(xiàng)中包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息時(shí),對(duì)所接收?qǐng)?bào)文進(jìn)行協(xié)議分析,以確定該報(bào)文的承載協(xié)議; 多模匹配確定單元,位于所述第一平臺(tái)中,用于基于所確定出的承載協(xié)議以及預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要對(duì)該報(bào)文進(jìn)行多模匹配,所述承載協(xié)議-多模匹配映射表表示承載協(xié)議與是否需要對(duì)該承載協(xié)議進(jìn)行多模匹配之間的映射關(guān)系; 多模匹配單元,位于所述第一平臺(tái)中,用于在確定需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),在第一平臺(tái)上,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配,所述多模特征集合中的每個(gè)多模特征是通過(guò)對(duì)應(yīng)用的應(yīng)用簽名特征進(jìn)行分析后歸納出的并且對(duì)應(yīng)多個(gè)應(yīng)用; 發(fā)送單元,位于所述第一平臺(tái)中,用于在多模匹配命中后,將該報(bào)文和多模匹配結(jié)果發(fā)送到第二平臺(tái);以及 深度報(bào)文檢測(cè)單元,位于第二平臺(tái)中,用于基于多模匹配結(jié)果,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。
9.如權(quán)利要求8所述的深度報(bào)文檢測(cè)裝置,還包括 承載協(xié)議識(shí)別單元,位于所述第一平臺(tái)中,用于在確定不需要對(duì)該報(bào)文進(jìn)行多模匹配時(shí),基于預(yù)先定義的承載協(xié)議庫(kù),識(shí)別所述承載協(xié)議是否屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,所述預(yù)先定義的承載協(xié)議庫(kù)中的每個(gè)承載協(xié)議是需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議,以及 在識(shí)別出所述承載協(xié)議屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),所述發(fā)送單元將該報(bào)文發(fā)送到第二平臺(tái)中進(jìn)行深度報(bào)文檢測(cè),或者 在識(shí)別出所述承載協(xié)議不屬于需要繼續(xù)進(jìn)行深度報(bào)文分析的承載協(xié)議時(shí),在所述第一平臺(tái)中對(duì)該報(bào)文進(jìn)行轉(zhuǎn)發(fā)預(yù)處理。
全文摘要
本發(fā)明提供了一種基于異構(gòu)平臺(tái)的深度報(bào)文檢測(cè)方法,包括當(dāng)在FPGA架構(gòu)下的第一平臺(tái)上判斷出所接收?qǐng)?bào)文的對(duì)應(yīng)會(huì)話表項(xiàng)中包含需要進(jìn)行深度報(bào)文檢測(cè)的指示信息時(shí),在第一平臺(tái)上對(duì)該報(bào)文進(jìn)行協(xié)議分析來(lái)確定承載協(xié)議;基于預(yù)先定義的承載協(xié)議-多模匹配映射表,確定是否需要進(jìn)行多模匹配;在需要時(shí),在第一平臺(tái)上,基于預(yù)先定義的與應(yīng)用相關(guān)的多模特征集合,對(duì)該報(bào)文的有效載荷部分進(jìn)行多模匹配;以及在多模匹配命中后,將該報(bào)文和多模匹配結(jié)果發(fā)送到第二平臺(tái),并在第二平臺(tái)中基于多模匹配結(jié)果,對(duì)該報(bào)文進(jìn)行深度報(bào)文檢測(cè)。利用該方法,可以減少上傳到第二平臺(tái)中進(jìn)行處理的報(bào)文流量以及第二平臺(tái)中的計(jì)算負(fù)擔(dān)。
文檔編號(hào)H04L12/70GK102932203SQ20121042905
公開(kāi)日2013年2月13日 申請(qǐng)日期2012年10月31日 優(yōu)先權(quán)日2012年10月31日
發(fā)明者楊德光, 楊強(qiáng)浩, 張華 , 郝振華 申請(qǐng)人:東軟集團(tuán)股份有限公司