本發(fā)明屬于dpi(deeppacketinspection,深度包檢測)技術(shù)領(lǐng)域,具體涉及一種支持網(wǎng)絡(luò)產(chǎn)品信息查詢的眾核dpi裝置及方法。
背景技術(shù):
當(dāng)前的網(wǎng)絡(luò)監(jiān)測系統(tǒng)與網(wǎng)絡(luò)安全系統(tǒng)中普遍使用了dpi,但是傳統(tǒng)的基于網(wǎng)絡(luò)端口的dpi已經(jīng)無法滿足需求,內(nèi)容級別的dpi漸漸受到重視,利用爬蟲建立網(wǎng)絡(luò)產(chǎn)品信息庫有助于實(shí)現(xiàn)內(nèi)容級別的dpi。另外,隨著網(wǎng)絡(luò)流量的爆炸式增長,傳統(tǒng)的使用x86架構(gòu)服務(wù)器的dpi系統(tǒng)在性能方面顯現(xiàn)出了嚴(yán)重的不足。為了提高性能當(dāng)前業(yè)界普遍采用眾核服務(wù)器,眾核服務(wù)器使用的眾核處理器是為了實(shí)現(xiàn)高度的并行運(yùn)算而設(shè)計(jì)的,它包含大量的簡單并獨(dú)立的處理核心,并廣泛用于嵌入式計(jì)算機(jī)和高性能計(jì)算。2016年6月公布的世界超算冠軍“神威太湖之光”就使用了40960個260核心的sw26010眾核芯片。但由于產(chǎn)品信息庫較大,眾核服務(wù)器的內(nèi)存與存儲空間有限,所以在實(shí)時dpi時需要查詢外置產(chǎn)品信息庫。但支持實(shí)時產(chǎn)品信息庫查詢的眾核平臺dpi系統(tǒng)未見報(bào)道。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的缺陷和不足,提供一種高性能的支持網(wǎng)絡(luò)產(chǎn)品信息查詢的眾核dpi裝置,該裝置也可作為內(nèi)容級別的訪問控制系統(tǒng)的重要組成部分;同時還提出一種支持網(wǎng)絡(luò)產(chǎn)品信息查詢的眾核平臺深度包檢測方法。
本發(fā)明之一的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的,一種支持網(wǎng)絡(luò)產(chǎn)品信息查詢的眾核平臺深度包檢測裝置,包括一顆第一眾核處理器、兩顆第二眾核處理器和交換芯片;
所述第一眾核處理器包括第一數(shù)據(jù)包預(yù)處理模塊,所述第二眾核處理器包括第二數(shù)據(jù)包預(yù)處理模塊,所述第二數(shù)據(jù)包預(yù)處理模塊包括眾核dpi模塊、產(chǎn)品信息查詢數(shù)據(jù)整合模塊和輸出模塊;
所述第一數(shù)據(jù)包預(yù)處理模塊用于過濾掉不需要進(jìn)一步匹配查詢的數(shù)據(jù)包,完成http協(xié)議包中g(shù)et數(shù)據(jù)包的提取,并將這些數(shù)據(jù)包(指過濾掉后的數(shù)據(jù)包和get數(shù)據(jù)包)通過mpipe發(fā)出到交換芯片上;進(jìn)入交換芯片的數(shù)據(jù)包被平均分給第二眾核處理器,
所述眾核dpi模塊完成數(shù)據(jù)包的元數(shù)據(jù)提取以及web應(yīng)用識別,并根據(jù)數(shù)據(jù)包對應(yīng)的web應(yīng)用提取出產(chǎn)品id;眾核dpi模塊得到的元數(shù)據(jù)、webid、產(chǎn)品id都存儲在xdr結(jié)構(gòu)體中,并通過ringbuffer傳遞給產(chǎn)品信息查詢和數(shù)據(jù)整合模塊;
產(chǎn)品信息查詢和數(shù)據(jù)整合模塊根據(jù)眾核dpi模塊得到的web應(yīng)用以及產(chǎn)品id通過查詢接口,查詢的結(jié)果、數(shù)據(jù)包的元數(shù)據(jù)、webid一并整合以字符串的形式被存放在緩存中,該緩存用于存儲多條整合數(shù)據(jù),存滿之后傳遞給輸出模塊;
輸出模塊將各產(chǎn)品信息查詢和數(shù)據(jù)整合模塊對應(yīng)的輸出隊(duì)列上取下數(shù)據(jù),發(fā)送給其他主機(jī),完成數(shù)據(jù)的存儲。
進(jìn)一步,所述第二眾核處理器包括m個dpi線程、n個產(chǎn)品信息查詢與數(shù)據(jù)整合線程和一個輸出線程;dpi線程與產(chǎn)品信息查詢與數(shù)據(jù)整合線程之間通過ringbuffer進(jìn)行數(shù)據(jù)傳遞;dpi線程將以輪詢的方式,將眾核dpi模塊處理的中間結(jié)果分發(fā)給n個ringbuffer;每個產(chǎn)品信息查詢與數(shù)據(jù)整合線程對應(yīng)單個ringbuffer,并循環(huán)的從其中提取數(shù)據(jù)處理;最終所有產(chǎn)品信息查詢與數(shù)據(jù)整合線程處理的結(jié)果同樣以ringbuffer的形式傳遞給單個輸出線程輸出。
進(jìn)一步,線程以及線程間數(shù)據(jù)傳遞使用的數(shù)據(jù)結(jié)構(gòu)的分配都在裝置運(yùn)行前的初始化階段完成。
本發(fā)明之二的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的,一種支持網(wǎng)絡(luò)產(chǎn)品信息查詢的眾核平臺深度包檢測方法,包括
步驟s1:數(shù)據(jù)預(yù)處理;利用第一數(shù)據(jù)包預(yù)處理模塊過濾掉不需要進(jìn)一步匹配查詢的數(shù)據(jù)包,完成http協(xié)議包中g(shù)et數(shù)據(jù)包的提取,并將這些數(shù)據(jù)包通過mpipe發(fā)出到交換芯片上;
步驟s2:數(shù)據(jù)調(diào)度;將經(jīng)過預(yù)處理的數(shù)據(jù)包平均分發(fā)到兩個與交換芯片相連接的mpipe上,并由mpipe傳給各自對應(yīng)的第二眾核處理器;
步驟s3:利用眾核dpi模塊完成數(shù)據(jù)包的元數(shù)據(jù)提取以及web應(yīng)用識別,并根據(jù)數(shù)據(jù)包對應(yīng)的web應(yīng)用提取出產(chǎn)品id,
眾核dpi模塊得到的元數(shù)據(jù)、webid、產(chǎn)品id都存儲在xdr結(jié)構(gòu)體中,并通過ringbuffer傳遞給產(chǎn)品信息查詢和數(shù)據(jù)整合線程;
產(chǎn)品信息查詢和數(shù)據(jù)整合模塊根據(jù)眾核dpi模塊得到的web應(yīng)用以及產(chǎn)品id通過查詢接口,查詢的結(jié)果、數(shù)據(jù)包的元數(shù)據(jù)、webid一并整合以字符串的形式被存放在緩存中,該緩存用于存儲多條整合數(shù)據(jù),存滿之后傳遞給輸出模塊;
步驟s4:產(chǎn)品信息查詢和數(shù)據(jù)整合;根據(jù)眾核dpi得到的web應(yīng)用以及產(chǎn)品id通過查詢接口,將查詢的結(jié)果、數(shù)據(jù)包的元數(shù)據(jù)、webid一并整合以字符串的形式存放在緩存中,該緩存用于存儲多條整合數(shù)據(jù),存滿之后傳遞給輸出部分。
步驟s5:數(shù)據(jù)輸出;從各產(chǎn)品信息查詢和數(shù)據(jù)整合線程對應(yīng)的輸出隊(duì)列上取下數(shù)據(jù),發(fā)送給其他主機(jī),完成數(shù)據(jù)的存儲。
進(jìn)一步,所述第二眾核處理器包括m個dpi線程、n個產(chǎn)品信息查詢與數(shù)據(jù)整合線程和一個輸出線程;dpi線程與產(chǎn)品信息查詢與數(shù)據(jù)整合線程之間通過ringbuffer進(jìn)行數(shù)據(jù)傳遞;dpi線程將以輪詢的方式,將眾核dpi模塊處理的中間結(jié)果分發(fā)給n個ringbuffer;每個產(chǎn)品信息查詢與數(shù)據(jù)整合線程對應(yīng)單個ringbuffer,并循環(huán)的從其中提取數(shù)據(jù)處理;最終所有產(chǎn)品信息查詢與數(shù)據(jù)整合線程處理的結(jié)果同樣以ringbuffer的形式傳遞給單個輸出線程輸出。
進(jìn)一步,線程以及線程間數(shù)據(jù)傳遞使用的數(shù)據(jù)結(jié)構(gòu)的分配都在裝置運(yùn)行前的初始化階段完成。
由于采用以上技術(shù)方案,本發(fā)明具有以下優(yōu)點(diǎn):
本發(fā)明通過使用眾核處理器完成數(shù)據(jù)包的預(yù)處理,為對數(shù)據(jù)包的進(jìn)一步匹配查詢節(jié)省時間;為實(shí)現(xiàn)高速數(shù)據(jù)包處理,可以根據(jù)各部分任務(wù)的性能情況,使用不同的核心分配策略以求提高整體性能。采用多級緩存系統(tǒng)緩存產(chǎn)品信息,使得查詢速度大幅提升,能有效提高整個系統(tǒng)的吞吐量。
附圖說明
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述,其中:
圖1是本發(fā)明的結(jié)構(gòu)組成以及工作流程圖;
圖2是眾核數(shù)據(jù)包預(yù)處理流程圖;
圖3是眾核處理預(yù)處理過的數(shù)據(jù)包的流程圖。
具體實(shí)施方式
下面將結(jié)合附圖,對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述。
實(shí)施例1
如圖1所示,一種支持網(wǎng)絡(luò)產(chǎn)品信息查詢的眾核平臺深度包檢測裝置,該裝置也可作為內(nèi)容級別的訪問控制系統(tǒng)的重要組成部分。這里的網(wǎng)絡(luò)產(chǎn)品大致包括以下幾類:視頻網(wǎng)站的各類視頻文件、電商網(wǎng)站銷售的產(chǎn)品、閱讀類網(wǎng)站的圖書等。每個網(wǎng)站的網(wǎng)絡(luò)產(chǎn)品都由一個相應(yīng)的產(chǎn)品id唯一標(biāo)識。
該裝置使用三顆tile-gx36眾核處理器(一顆第一眾核處理器、兩顆第二眾核處理器)和交換芯片,該眾核處理器整合有mpipe(多核可編程智能包引擎,multicoreprogrammableintelligentpacketengine)協(xié)處理器,并包含36個類mips核心。其中mpipe用于完成高速的數(shù)據(jù)包捕獲與分發(fā),36個核心用于并行數(shù)據(jù)包處理。該裝置還利用爬蟲產(chǎn)品信息庫實(shí)現(xiàn)內(nèi)容級別的信息查詢。
其中,第一眾核處理器負(fù)責(zé)完成數(shù)據(jù)預(yù)處理,另外兩顆第二眾核處理器各自獨(dú)立完成眾核dpi、產(chǎn)品信息查詢與數(shù)據(jù)整合、輸出等功能。而且,這兩顆第二眾核處理器將以上三種功能各自交由獨(dú)立的線程實(shí)現(xiàn)。由于眾核cpu核心眾多,為了增加cpu緩存命中率以及防止單個核心線程上下文切換影響處理性能,每個線程都綁定一個cpu核心。
在本發(fā)明中,所述第一眾核處理器包括第一數(shù)據(jù)包預(yù)處理模塊,所述第二眾核處理器包括第二數(shù)據(jù)包預(yù)處理模塊,所述第二數(shù)據(jù)包預(yù)處理模塊包括眾核dpi模塊、產(chǎn)品信息查詢數(shù)據(jù)整合模塊和輸出模塊;
所述第一數(shù)據(jù)預(yù)處理模塊用于過濾掉不需要進(jìn)一步匹配查詢的數(shù)據(jù)包,完成http協(xié)議包中g(shù)et數(shù)據(jù)包的提取,并將這些數(shù)據(jù)包通過mpipe發(fā)出到交換芯片上;進(jìn)入交換芯片的數(shù)據(jù)包被平均分給第二眾核處理器,
所述眾核dpi模塊完成數(shù)據(jù)包的元數(shù)據(jù)提取以及web應(yīng)用識別,并根據(jù)數(shù)據(jù)包對應(yīng)的web應(yīng)用提取出產(chǎn)品id;眾核dpi模塊得到的元數(shù)據(jù)、webid、產(chǎn)品id都存儲在xdr結(jié)構(gòu)體中,并通過ringbuffer傳遞給產(chǎn)品信息查詢和數(shù)據(jù)整合模塊;
產(chǎn)品信息查詢和數(shù)據(jù)整合模塊根據(jù)眾核dpi模塊得到的web應(yīng)用以及產(chǎn)品id通過查詢接口,查詢的結(jié)果、數(shù)據(jù)包的元數(shù)據(jù)、webid一并整合以字符串的形式被存放在緩存中,該緩存用于存儲多條整合數(shù)據(jù),存滿之后傳遞給輸出模塊;
輸出模塊將各產(chǎn)品信息查詢和數(shù)據(jù)整合模塊對應(yīng)的輸出隊(duì)列上取下數(shù)據(jù),發(fā)送給其他主機(jī),完成數(shù)據(jù)的存儲。
在本發(fā)明中,眾核dpi、產(chǎn)品信息查詢與數(shù)據(jù)整合、輸出三種功能所需cpu處理時間的不同實(shí)行以下線程(核心)分配方案:
dpi線程m個,產(chǎn)品信息查詢與數(shù)據(jù)整合線程n個,輸出線程一個。dpi線程與產(chǎn)品信息查詢與數(shù)據(jù)整合線程之間通過ringbuffer實(shí)現(xiàn)的fifo(firstinputfirstoutput)進(jìn)行數(shù)據(jù)傳遞,ringbuffer的個數(shù)也是n個,每個dpi線程通過一個ringbuffer與產(chǎn)品信息查詢與數(shù)據(jù)整合線程之間進(jìn)行數(shù)據(jù)傳遞。dpi線程將以輪詢的方式,將該部分處理的中間結(jié)果分發(fā)給n個ringbuffer。每個產(chǎn)品信息查詢與數(shù)據(jù)整合線程對應(yīng)單個ringbuffer,并循環(huán)的從其中提取數(shù)據(jù)處理。最終所有產(chǎn)品信息查詢與數(shù)據(jù)整合線程處理的結(jié)果同樣以ringbuffer的形式傳遞給單個輸出線程輸出。線程以及線程間數(shù)據(jù)傳遞使用的數(shù)據(jù)結(jié)構(gòu)的分配都在裝置運(yùn)行前的初始化階段完成。
如圖1-3所示,一種支持網(wǎng)絡(luò)產(chǎn)品信息查詢的眾核平臺深度包檢測裝置方法,其運(yùn)行流程包括以下步驟:
步驟一:數(shù)據(jù)預(yù)處理。數(shù)據(jù)預(yù)處理由一顆單獨(dú)的眾核處理器完成。其中,協(xié)處理器mpipe主要負(fù)責(zé)高速的數(shù)據(jù)包收發(fā)工作,將網(wǎng)絡(luò)流量分發(fā)給眾核核心。每個核心上都創(chuàng)建并綁定有一個數(shù)據(jù)包預(yù)處理線程。預(yù)處理線程主要過濾掉不需要進(jìn)一步匹配查詢的數(shù)據(jù)包,完成http協(xié)議包中g(shù)et數(shù)據(jù)包的提取,并將這些數(shù)據(jù)包通過mpipe發(fā)出到交換芯片上。
步驟二:數(shù)據(jù)調(diào)度。經(jīng)過預(yù)處理的數(shù)據(jù)包進(jìn)入交換芯片,被平均分給兩個帶有mpipe的眾核,通過在主cpu上對交換芯片進(jìn)行設(shè)置,將經(jīng)過預(yù)處理的數(shù)據(jù)包平均分發(fā)到兩個與交換芯片相連接的mpipe上,并由mpipe傳給各自對應(yīng)的眾核芯片。
步驟三:眾核dpi。該部分功能完成數(shù)據(jù)包的元數(shù)據(jù)提取以及web應(yīng)用識別,并根據(jù)數(shù)據(jù)包對應(yīng)的web應(yīng)用提取出產(chǎn)品id。這些元數(shù)據(jù)主要包括源目的ip地址、源目的端口、數(shù)據(jù)包捕獲時間、host、uri等。web應(yīng)用識別是用get報(bào)文的url去匹配web應(yīng)用特征庫實(shí)現(xiàn)的。而產(chǎn)品id則是根據(jù)web應(yīng)用的uri特征使用相應(yīng)規(guī)則提取出來的。眾核dpi結(jié)束后得到的元數(shù)據(jù)、webid、產(chǎn)品id都存儲在xdr結(jié)構(gòu)體中,并通過ringbuffer傳遞給產(chǎn)品信息查詢和數(shù)據(jù)整合線程。
步驟四:產(chǎn)品信息查詢和數(shù)據(jù)整合。該部分功能根據(jù)眾核dpi得到的web應(yīng)用以及產(chǎn)品id通過特定的查詢接口(網(wǎng)站,產(chǎn)品id,查詢信息標(biāo)識),首先查詢本地產(chǎn)品信息緩存,如果在本地緩存中未找到對應(yīng)產(chǎn)品信息,則查詢非本地的內(nèi)存對象緩存系統(tǒng)以得到產(chǎn)品信息。而后,將查詢的結(jié)果與數(shù)據(jù)包元數(shù)據(jù),webid一并整合以字符串的形式存放在一個較大的緩存中,該緩存用于存儲多條整合數(shù)據(jù),存滿之后傳遞給輸出部分。該步驟中查詢接口的具體定義如下:
查詢接口(網(wǎng)站,產(chǎn)品id,查詢信息標(biāo)識),其中的查詢信息標(biāo)識用來表示查詢爬蟲產(chǎn)品信息庫的相應(yīng)的信息。該標(biāo)識用一個二進(jìn)制數(shù)表示,每一位對應(yīng)產(chǎn)品信息庫中該產(chǎn)品的一個信息字段,如果需要查詢該信息字段則將對應(yīng)的位置1,否則置0。
步驟五:數(shù)據(jù)輸出。此功能分配一個線程去實(shí)現(xiàn),該線程循環(huán)的從各產(chǎn)品信息查詢和數(shù)據(jù)整合線程對應(yīng)的輸出隊(duì)列上取下數(shù)據(jù),socket發(fā)送給其他主機(jī),完成數(shù)據(jù)的存儲。
本發(fā)明在實(shí)施過程中,使用一顆眾核處理器對數(shù)據(jù)包進(jìn)行預(yù)處理,并將http協(xié)議的get數(shù)據(jù)包通過mpipe發(fā)送給交換芯片。通過在主cpu上對交換芯片進(jìn)行設(shè)置,使得get數(shù)據(jù)包被平均分配給另外兩顆眾核處理器。這兩個眾核處理器獨(dú)立完成眾核dpi、產(chǎn)品信息庫查詢與數(shù)據(jù)整合、日志輸出等功能。眾核數(shù)據(jù)包預(yù)處理流程圖包括以下步驟:步驟一、選擇mpipe的數(shù)據(jù)包分發(fā)規(guī)則。步驟二、創(chuàng)建多個處理線程,并各自綁定一個cpu核心。步驟三、數(shù)據(jù)包處理線程完成預(yù)處理。
本發(fā)明將眾核處理器平臺與爬蟲產(chǎn)品信息庫結(jié)合實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)包解析中內(nèi)容級別的高實(shí)時性解析。利用了mpipe協(xié)處理器的高速數(shù)據(jù)包捕獲以及眾核cpu高并發(fā)、高計(jì)算能力的特點(diǎn),并結(jié)合了多級緩存系統(tǒng)的高速查詢性能。本發(fā)明使用的眾核芯片是tilera公司的tile-gx36,該芯片具有較高的性能功耗比。
最后說明的是,以上優(yōu)選實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管通過上述優(yōu)選實(shí)施例已經(jīng)對本發(fā)明進(jìn)行了詳細(xì)的描述,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在形式上和細(xì)節(jié)上對其作出各種各樣的改變,而不偏離本發(fā)明權(quán)利要求書所限定的范圍。