AMP方式示意圖
SMP方式顧名思義就是將多個內(nèi)核平等看待,每個內(nèi)核運(yùn)行的操作系統(tǒng)相同,且每個內(nèi)核上都運(yùn)行一套IPS系統(tǒng),這樣從數(shù)據(jù)接收、連接建立、數(shù)據(jù)檢測到數(shù)據(jù)發(fā)送都是并發(fā)執(zhí)行的,相當(dāng)于多個IPS系統(tǒng)在同時運(yùn)行。這種架構(gòu)比較簡潔,各個處理器內(nèi)核負(fù)載均衡,可以全方位地提升IPS產(chǎn)品性能,特別是在測試單一性能指標(biāo)時,由于所有內(nèi)核都參與處理工作,往往可以獲得比較好的表現(xiàn)。這種架構(gòu)也有其固有缺陷,因為所有內(nèi)核都運(yùn)行相同的軟件系統(tǒng)(包含操作系統(tǒng)和IPS系統(tǒng)),勢必產(chǎn)生對共享資源(內(nèi)存數(shù)據(jù)、文件描述符、I/O設(shè)備等)的爭用。為處理并發(fā)與同步需要使用大量的鎖機(jī)制,而這些鎖的操作又影響了性能發(fā)揮,更嚴(yán)重的是隨著內(nèi)核數(shù)量的增多,并發(fā)與同步的消耗達(dá)到一定的量級,這時性能就不再增長甚至下降了。
AMP方式就是將多個內(nèi)核區(qū)別看待,可以運(yùn)行不同的操作系統(tǒng)也可以在相同的操作系統(tǒng)上運(yùn)行不同的任務(wù),各個處理器內(nèi)核按照任務(wù)劃分,各負(fù)其責(zé),規(guī)避共享資源的競爭,做到"術(shù)有專攻",從而提升IPS產(chǎn)品的綜合性能。完整的操作系統(tǒng)往往比較龐大,耗費(fèi)資源較多,效率也較低。拿出幾個物理內(nèi)核,在其上建立一種簡易的系統(tǒng)環(huán)境(有時候直接叫做"裸核"環(huán)境),在這個"潔凈的空間"內(nèi)運(yùn)行單一任務(wù)(比如收發(fā)數(shù)據(jù)、模式匹配等)往往可以獲得極高的性能,這是AMP方式的特點(diǎn),也是其優(yōu)勢。另外一種方式,在相同的操作系統(tǒng)上運(yùn)行不同的任務(wù)也是同樣的機(jī)理,只不過更容易實(shí)現(xiàn)一些,相應(yīng)的性能提升的效果也遜色一些。這種架構(gòu)也有其缺陷,在測試單一性能指標(biāo)時,因為特定功能只有有限的內(nèi)核參與處理,往往性能不夠理想。架構(gòu)本身也比較復(fù)雜,需要仔細(xì)權(quán)衡各個內(nèi)核的任務(wù)分擔(dān),否則會造成內(nèi)核負(fù)載不均衡,影響性能發(fā)揮。
選擇哪一種架構(gòu)需要根據(jù)處理器硬件平臺與IPS系統(tǒng)本身的特點(diǎn)來抉擇,通常在硬件處理器內(nèi)核比較少的情況下選擇SMP架構(gòu),在需要將一大堆不可能并行化的"遺產(chǎn)"繼承到產(chǎn)品中時只好選擇AMP架構(gòu),如果已經(jīng)使用了硬件內(nèi)容加速,那么可以選擇SMP架構(gòu),如果是新開發(fā)IPS產(chǎn)品,內(nèi)核分工可以動態(tài)調(diào)整的AMP架構(gòu)是不錯的選擇,但需要保證足夠的技術(shù)儲備和適當(dāng)?shù)娜肆ν度搿?
在確定了工作模式后,就要考慮流量的分擔(dān)與負(fù)載問題了,多個內(nèi)核并行處理,它們共同的輸入就是來自網(wǎng)絡(luò)的數(shù)據(jù)流,如何將這些數(shù)據(jù)流"喂"給處理器內(nèi)核呢?最簡單的就是輪詢方法,即將到達(dá)的數(shù)據(jù)依次交給等待處理的內(nèi)核,各個內(nèi)核平均分配,這對早期的基于單個數(shù)據(jù)包檢測的IPS系統(tǒng)比較適合?,F(xiàn)代的IPS系統(tǒng)功能豐富,不僅可以進(jìn)行TCP流重組,還可以跟蹤應(yīng)用層協(xié)議和控制流量。但是在多個內(nèi)核上并發(fā)地跟蹤TCP狀態(tài)機(jī)是個棘手的問題,實(shí)現(xiàn)難度也較大,所以出現(xiàn)了另外一種按照五元組分流的方法,即將同一個數(shù)據(jù)流分配到同一個內(nèi)核上,保障一個數(shù)據(jù)流始終由一個內(nèi)核處理。這種方式大大降低了IPS內(nèi)部實(shí)現(xiàn)復(fù)雜度,雖然具有流量較小時負(fù)載不均衡的副作用,但從研發(fā)成本考慮還是可以接受的。
接下來就是對提升性能至關(guān)重要的IPS引擎的并行檢測,IPS檢測引擎的并發(fā)是提升性能的關(guān)鍵。這里的引擎主要指應(yīng)用協(xié)議的識別和分析、攻擊特征的匹配、策略的檢查以及后續(xù)的數(shù)據(jù)處理。如果運(yùn)行于應(yīng)用層,可以將每個IPS引擎作為一個單獨(dú)的進(jìn)程對待,它們共用一份公共的攻擊特征庫,對各自的輸入的數(shù)據(jù)流進(jìn)行并行檢測和處理,就好像多個引擎在同時工作。但是數(shù)據(jù)流之間有時候是相關(guān)的,比如一個應(yīng)用層協(xié)議可以動態(tài)協(xié)商出它的一個子連接,當(dāng)這個子連接分配到另外一個IPS進(jìn)程上處理時,要想控制它就需要進(jìn)行進(jìn)程間通訊,這樣引擎的獨(dú)立性就被破壞了。同樣在雙機(jī)熱備份的狀態(tài)同步、應(yīng)用層協(xié)議動態(tài)識別上也會遇到同樣的困難。如果IPS作為一個內(nèi)核模塊運(yùn)行于操作系統(tǒng)核心層,那么需要對所有可能產(chǎn)生競爭的共享資源進(jìn)行并發(fā)訪問控制,使其徹底并行化,除此之外可能沒有什么更好的辦法了。
配置問題是并發(fā)系統(tǒng)中一個棘手的問題,用戶常常在系統(tǒng)運(yùn)行過程中進(jìn)行配置變更,而且總是希望這種變更后的配置能夠即時生效。
在并發(fā)IPS系統(tǒng)中只有一份配置,配置的變化意味著所有的并行工作都要暫停下來,需要根據(jù)新的配置調(diào)整運(yùn)行參數(shù)。運(yùn)行時態(tài)頻繁地調(diào)整配置不可避免地影響并發(fā)IPS系統(tǒng)性能,如果設(shè)計不好還會產(chǎn)生"停頓",導(dǎo)致丟包。同樣的,在IPS系統(tǒng)中各種統(tǒng)計數(shù)據(jù)(流量統(tǒng)計、事件統(tǒng)計、時間統(tǒng)計等)都需要實(shí)時地準(zhǔn)確地顯示到用戶可視層面,多個引擎需要并發(fā)地對單一數(shù)據(jù)結(jié)果操作,如果簡單地用鎖規(guī)避競爭也會很大程度上影響并發(fā)IPS系統(tǒng)性能的提升。
一個系統(tǒng)的成熟和完善離不開調(diào)試,與基于單內(nèi)核的系統(tǒng)相比,并發(fā)IPS系統(tǒng)的調(diào)試工具極度匱乏,調(diào)試手段也很不成熟。那些傳統(tǒng)的強(qiáng)大的單步跟蹤工具已經(jīng)沒有用武之地,就連簡單的打印調(diào)試信息也需要特別小心,因為你需要先知道這個信息是哪個內(nèi)核打印的才好定位問題。如果系統(tǒng)運(yùn)行時死鎖,那么整個系統(tǒng)或者IPS進(jìn)程會被掛起,但留下的供你調(diào)試的線索卻非常有限。總之,有四類問題比較關(guān)鍵:死機(jī)、內(nèi)存泄漏、內(nèi)存篡改和報文調(diào)試。這些問題影響并發(fā)IPS系統(tǒng)的穩(wěn)定,當(dāng)然也影響到性能發(fā)揮。
機(jī)遇與挑戰(zhàn)并存。盡管利用并行處理技術(shù)提升IPS產(chǎn)品性能并非易事,還有很多問題有待解決,很多技術(shù)有待探索和突破,但是相信,在當(dāng)今多核處理器迅速普及并不斷發(fā)展的趨勢下,硬件計算資源的開發(fā)暨并行處理技術(shù)的應(yīng)用將為IPS產(chǎn)品帶來性能的質(zhì)的飛躍。同時伴隨著新技術(shù)新產(chǎn)品的應(yīng)用,也將引發(fā)現(xiàn)有IPS產(chǎn)品市場布局的一場變革。
天融信公司的網(wǎng)絡(luò)衛(wèi)士入侵防御系統(tǒng)(TopIDP)應(yīng)用了先進(jìn)的多核處理器硬件平臺,將并行處理技術(shù)融入天融信自主知識產(chǎn)權(quán)操作系統(tǒng)TOS系統(tǒng),實(shí)現(xiàn)了高效率的并行處理檢測引擎,達(dá)到了千兆級性能,能夠滿足高速網(wǎng)絡(luò)的安全防御要求,同時也打破了國外產(chǎn)品長期壟斷高端IPS產(chǎn)品市場的局面。
(注:作者"吳亞飆"現(xiàn)為天融信總工程師)