本發(fā)明涉及一種應(yīng)用于網(wǎng)絡(luò)入侵檢測系統(tǒng)的軟硬件結(jié)合的實時自適應(yīng)gzip數(shù)據(jù)解壓縮方法及系統(tǒng),屬于網(wǎng)絡(luò)安全領(lǐng)域。
背景技術(shù):
網(wǎng)絡(luò)流量中存在著大量的gzip格式的壓縮數(shù)據(jù),包括大量的gzip壓縮的網(wǎng)頁流量、郵件傳輸?shù)拇笪募⑻摂M專用網(wǎng)的網(wǎng)絡(luò)層和應(yīng)用層流量。然而,大多數(shù)網(wǎng)絡(luò)安全設(shè)備在對壓縮流量的處理上做出不同的選擇:1)修改數(shù)據(jù)報文頭部字段,通知服務(wù)端本地不接受gzip格式的壓縮數(shù)據(jù),從而避免http流量中出現(xiàn)gzip數(shù)據(jù)而不能進(jìn)行檢測的情況。但是這種做法將會降低傳輸效率;2)將接收到的gzip格式壓縮數(shù)據(jù)轉(zhuǎn)為離線處理。這種方法對實時性要求較高的安全審查有著很大的弊端;3)忽略壓縮數(shù)據(jù)。當(dāng)壓縮數(shù)據(jù)中包含了木馬、惡意代碼等威脅信息時,這種做法會給系統(tǒng)帶來很大危害。為此,考慮設(shè)計一種高速實時gzip數(shù)據(jù)解壓縮方法來將壓縮數(shù)據(jù)還原為正常流量以供安全設(shè)備進(jìn)行檢測。
目前,針對于gzip數(shù)據(jù)的解壓縮方法主要分兩類,即完全利用軟件進(jìn)行解壓和借助專用硬件實現(xiàn)解壓縮。軟件解壓具有對小數(shù)據(jù)包解壓速度快的優(yōu)勢,卻伴隨著維持所有流狀態(tài)的開銷和進(jìn)行狀態(tài)切換的開銷大的缺點(diǎn)。硬件解壓占用CPU低,由于需要通過總線進(jìn)行數(shù)據(jù)的傳輸,因此對小數(shù)據(jù)包的解壓速度較慢,但對大數(shù)據(jù)包的解壓效率高。網(wǎng)絡(luò)中的壓縮數(shù)據(jù)長度往往是不定的,比如靜態(tài)網(wǎng)頁文本的壓縮往往得到的是比較短的壓縮數(shù)據(jù),而對于郵件附件來說,壓縮數(shù)據(jù)可能具有比較大的數(shù)據(jù)長度。當(dāng)固定使用純軟件或純硬件某一種方式進(jìn)行解壓處理時,會降低整體處理速率。
技術(shù)實現(xiàn)要素:
為了解決gzip數(shù)據(jù)解壓代價大的問題,本發(fā)明提供了一種軟硬件結(jié)合的自適應(yīng)實時gzip數(shù)據(jù)解壓縮的方法及系統(tǒng),主要適用于部署在高速網(wǎng)絡(luò)中的入侵檢測系統(tǒng)中。
本發(fā)明的技術(shù)方案為:
一種軟硬件結(jié)合的自適應(yīng)實時gzip數(shù)據(jù)解壓縮方法,其步驟為:
1)自適應(yīng)選擇器從壓縮流量中獲取待解壓的壓縮數(shù)據(jù)長度,并獲取系統(tǒng)當(dāng)前的CPU負(fù)載狀態(tài)信息以及從模塊控制器獲取硬件解壓模塊狀態(tài);
2)自適應(yīng)選擇器根據(jù)獲取的信息和設(shè)定的自適應(yīng)策略確定對當(dāng)前待解壓的壓縮數(shù)據(jù)進(jìn)行軟件解壓或硬件解壓,然后將確定結(jié)果發(fā)送給模塊控制器;
3)模塊控制器根據(jù)該確定結(jié)果將壓縮數(shù)據(jù)送至相應(yīng)解壓模塊;
其中,所述自適應(yīng)策略為:
a)如果CPU負(fù)載大于或等于設(shè)定負(fù)載閾值α,且硬件模塊不忙時,則選擇硬件解壓;
b)如果CPU負(fù)載大于或等于設(shè)定負(fù)載閾值α,且硬件模塊忙時,則選擇軟件解壓;
c)如果CPU負(fù)載小于設(shè)定負(fù)載閾值α、壓縮數(shù)據(jù)長度大于設(shè)定數(shù)據(jù)長度閾值β,且硬件模塊不忙時,則選擇硬件解壓;
d)如果CPU負(fù)載小于設(shè)定負(fù)載閾值α、壓縮數(shù)據(jù)長度大于設(shè)定數(shù)據(jù)長度閾值β,且硬件模塊忙時,則選擇軟件解壓;
e)如果CPU負(fù)載小于設(shè)定負(fù)載閾值α、壓縮數(shù)據(jù)長度等于或小于設(shè)定數(shù)據(jù)長度閾值β,則選擇軟件解壓。
進(jìn)一步的,取軟件解壓和硬件解壓的性能平衡點(diǎn)時的待解壓縮數(shù)據(jù)包長度作為數(shù)據(jù)長度閾值β。
進(jìn)一步的,模塊控制器通過系統(tǒng)函數(shù)獲取硬件模塊狀態(tài),當(dāng)硬件模塊當(dāng)前正在執(zhí)行解壓工作則狀態(tài)為忙,否則為不忙。
進(jìn)一步的,所述負(fù)載閾值α為80%,數(shù)據(jù)長度閾值β為120K。
進(jìn)一步的,所述軟件解壓、硬件解壓均采用流式解壓縮方式。
一種軟硬件結(jié)合的自適應(yīng)實時gzip數(shù)據(jù)解壓縮系統(tǒng),其特征在于,包括自適應(yīng)選擇器、模塊控制器、數(shù)據(jù)解壓模塊;其中,
自適應(yīng)選擇器,用于從壓縮流量中獲取待解壓的壓縮數(shù)據(jù)長度,并獲取系統(tǒng)當(dāng)前的CPU負(fù)載狀態(tài)信息以及從模塊控制器獲取硬件解壓模塊狀態(tài);然后根據(jù)獲取的信息和設(shè)定的自適應(yīng)策略確定對當(dāng)前待解壓的壓縮數(shù)據(jù)進(jìn)行軟件解壓或硬件解壓,然后將確定結(jié)果發(fā)送給模塊控制器;
模塊控制器,用于根據(jù)該確定結(jié)果將壓縮數(shù)據(jù)送至相應(yīng)解壓模塊,以及對硬件模塊狀態(tài)進(jìn)行獲取和反饋;
解壓縮模塊,包括軟件解壓模塊和硬件解壓模塊,用于對當(dāng)前待解壓的壓縮數(shù)據(jù)進(jìn)行相應(yīng)的軟件解壓或硬件解壓;
所述自適應(yīng)策略為:如果CPU負(fù)載大于或等于設(shè)定負(fù)載閾值α,且硬件模塊不忙時,則選擇硬件解壓;如果CPU負(fù)載大于或等于設(shè)定負(fù)載閾值α,且硬件模塊忙時,則選擇軟件解壓;如果CPU負(fù)載小于設(shè)定負(fù)載閾值α、壓縮數(shù)據(jù)長度大于設(shè)定數(shù)據(jù)長度閾值β,且硬件模塊不忙時,則選擇硬件解壓;如果CPU負(fù)載小于設(shè)定負(fù)載閾值α、壓縮數(shù)據(jù)長度大于設(shè)定數(shù)據(jù)長度閾值β,且硬件模塊忙時,則選擇軟件解壓;如果CPU負(fù)載小于設(shè)定負(fù)載閾值α、壓縮數(shù)據(jù)長度等于或小于設(shè)定數(shù)據(jù)長度閾值β時,則選擇軟件解壓。
進(jìn)一步的,取軟件解壓和硬件解壓的性能平衡點(diǎn)時的待解壓縮數(shù)據(jù)包長度作為數(shù)據(jù)長度閾值β。
進(jìn)一步的,模塊控制器通過系統(tǒng)函數(shù)獲取硬件模塊狀態(tài),當(dāng)硬件模塊當(dāng)前正在執(zhí)行解壓工作則狀態(tài)為忙,否則為不忙。
進(jìn)一步的,所述負(fù)載閾值α為80%,數(shù)據(jù)長度閾值β為120K。
進(jìn)一步的,所述軟件解壓、硬件解壓均采用流式解壓縮方式。
本發(fā)明的主要內(nèi)容為1)自適應(yīng)數(shù)據(jù)解壓架構(gòu);2)基于實時狀況的自適應(yīng)解壓方案選擇策略。
軟硬件結(jié)合的自適應(yīng)gzip數(shù)據(jù)解壓縮方法的核心是為網(wǎng)絡(luò)流量中的gzip數(shù)據(jù)選擇快速解壓方案以減小解壓操作的耗時,降低系統(tǒng)在此部分的時間開銷?;诖?,該策略的設(shè)計主要包含以下幾個方面:
1)解壓方式選擇依據(jù)包括:壓縮數(shù)據(jù)的長度、CPU當(dāng)前負(fù)載情況、硬件模塊忙閑狀態(tài)。壓縮數(shù)據(jù)長度直接影響解壓方式,短數(shù)據(jù)適用軟件方式解壓,長數(shù)據(jù)適用硬件方式解壓;CPU負(fù)載大的情況下適用于硬件解壓,不占用過多CPU資源;硬件模塊忙時偏向于使用軟件方式進(jìn)行解壓工作;
2)自適應(yīng)算法的高效性和靈活性。自適應(yīng)算法會引入一定的時間開銷,好的解壓方式的選擇會很大程度上降低解壓數(shù)據(jù)的時間,提高整體系統(tǒng)的工作效率。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
對比僅采用純軟件或純硬件進(jìn)行g(shù)zip數(shù)據(jù)解壓縮,在現(xiàn)網(wǎng)環(huán)境下進(jìn)行測試,提出的自適應(yīng)gzip數(shù)據(jù)解壓方法的平均解壓性能加速比可達(dá)5至7倍。
附圖說明
圖1為本發(fā)明的系統(tǒng)結(jié)構(gòu)圖。
圖2為軟硬件解壓方式在解壓不同長度的數(shù)據(jù)時的表現(xiàn)。
具體實施方式
以下結(jié)合實施例和附圖對本發(fā)明進(jìn)行詳細(xì)說明,但不構(gòu)成對本發(fā)明的限制。
本發(fā)明的系統(tǒng)總體框架如圖1所示,由自適應(yīng)選擇器、模塊控制器、解壓縮模塊三部分組成,運(yùn)行步驟如下:
1)壓縮流量進(jìn)入系統(tǒng)時,自適應(yīng)選擇器獲取壓縮數(shù)據(jù)長度,獲取系統(tǒng)CPU的負(fù)載狀態(tài)信息,并從模塊控制器獲取硬件解壓模塊的模塊狀態(tài);
2)自適應(yīng)選擇器通過自適應(yīng)選擇算法進(jìn)行模塊選擇判定;
3)模塊控制器根據(jù)自適應(yīng)選擇器判定的結(jié)果將壓縮數(shù)據(jù)送至相應(yīng)解壓模塊;
4)解壓縮模塊進(jìn)行快速數(shù)據(jù)解壓。
下面,就運(yùn)行步驟做詳細(xì)地論述。
自適應(yīng)選擇器:
本模塊的核心為自適應(yīng)策略,該策略進(jìn)行自適應(yīng)選擇算法設(shè)計如下:
1)在CPU負(fù)載為α或以上時,硬件模塊不忙時,選擇硬件解壓方案;
2)在CPU負(fù)載為α或以上時,硬件模塊忙時,選擇軟件解壓方案;
3)在CPU負(fù)載為α以下,數(shù)據(jù)長度為β以上,硬件模塊不忙時,選擇硬件解壓方案;
4)在CPU負(fù)載為α以下,數(shù)據(jù)長度為β以上,硬件模塊忙時,選擇軟件解壓方案;
5)在CPU負(fù)載為α以下,數(shù)據(jù)長度為β以下時,選擇軟件解壓方案。
其中,CPU負(fù)載閾值α可根據(jù)用戶需求進(jìn)行設(shè)置,經(jīng)測試,建議CPU負(fù)載閾值取為80%。在預(yù)先測試過軟硬件兩種方式進(jìn)行解壓縮的性能后,取其性能平衡點(diǎn)時的待解壓縮數(shù)據(jù)包長度β作為閾值。圖2為軟硬件解壓方式在解壓不同長度數(shù)據(jù)時的表現(xiàn),可見數(shù)據(jù)長度在60K以下時,采用軟件解壓縮方式較快,數(shù)據(jù)長度在180K以上時,使用硬件解壓方案較快,綜合考慮建議選取的數(shù)據(jù)長度閾值β為120K。硬件模塊狀態(tài)可通過系統(tǒng)函數(shù)直接獲取,當(dāng)其在執(zhí)行解壓工作時則為忙狀態(tài),否則即為不忙狀態(tài)。
模塊在壓縮流量進(jìn)入系統(tǒng)時獲取壓縮數(shù)據(jù)長度,從模塊控制器獲取解壓硬件設(shè)備狀態(tài),同時從系統(tǒng)獲取CPU實時負(fù)載情況,以上三項數(shù)據(jù)作為輸入?yún)?shù)傳入自適應(yīng)選擇算法,輸出選擇方案回傳給模塊控制器。
模塊控制器:
本模塊負(fù)責(zé)對解壓縮模塊的調(diào)度和狀態(tài)監(jiān)控,具體工作內(nèi)容如下:
1)自適應(yīng)選擇器通過本模塊獲取硬件設(shè)備狀態(tài),進(jìn)行評定并將結(jié)果回傳給本模塊;
2)獲取到回傳結(jié)果后,直接調(diào)用相應(yīng)軟硬件解壓模塊進(jìn)行數(shù)據(jù)解壓縮;
3)實時記錄當(dāng)前執(zhí)行解壓工作的模塊,并在解壓工作完成后,將相應(yīng)狀態(tài)進(jìn)行重置。
解壓縮模塊:
解壓縮模塊是本發(fā)明得以實施的基礎(chǔ)。本模塊由硬件解壓模塊和軟件解壓模塊兩部分構(gòu)成。硬件部分可以使用專用解壓縮模塊,如Intel公司的Quick Assist Technology實現(xiàn)數(shù)據(jù)解壓工作,軟件部分可以使用軟件解壓縮庫,如zlib庫提供的軟件算法進(jìn)行數(shù)據(jù)解壓。
通常情況下,對于數(shù)據(jù)的解壓縮工作有兩種方式:流式解壓縮與非流式解壓縮。非流式解壓縮需要全部的壓縮數(shù)據(jù)作為輸入來進(jìn)行解壓縮工作;流式解壓縮支持部分解壓,不需要全部的壓縮數(shù)據(jù)即可進(jìn)行解壓縮工作,但是需要對解壓的中間狀態(tài)進(jìn)行保存和管理。
由于屬于同一段會話的數(shù)據(jù)通常會被封裝在多個數(shù)據(jù)包中進(jìn)行傳輸,本模塊中所選用的軟硬件解壓方式均為流式解壓縮方式。這樣可以對到來的數(shù)據(jù)包立即解壓而不需要進(jìn)行緩存等到會話結(jié)束再進(jìn)行解壓縮工作,但在解壓過程中需要注意對中間狀態(tài)進(jìn)行維護(hù)和管理。