【賽迪網-IT技術報道】最近幾年,IPS產品成為安全產品市場新的熱點,不僅保持了每年100%以上的市場增長率,而且應用領域不斷擴大,應用技術也逐步普及。與傳統的IDS旁路接入不同,IPS產品採用inline工作方式,即對接收的資料進行檢測,然後按照其目的轉發,這與安全網關類產品如防火牆、VPN等非常相似。這種工作方式決定了IPS產品除了要有準確的檢測能力,還要有與應用網絡相適應的性能要求。
實際上自IPS產品誕生以來,一直採用協議識別和攻擊特徵模式匹配等成熟技術,困擾其應用範圍的主要是性能要求。目前的防火牆達到千兆線速、4G、甚至10G轉發能力已屬平常,但IPS要實現這一性能絕非易事。在IPS中不僅需要檢查資料報文的頭部,還要針對具體的應用協議檢查資料報文的內容,這就使得在IPS中五元組相同的資料報文也不能「加速處理」,也就是說在IPS處理資料報文的整個路途中沒有「捷徑」,IPS需要對流經自身的每一個報文進行逐一檢測。這樣IPS成為CPU資源的主要耗費者,其性能很大程度上取決於硬體處理器的處理能力。
使用硬體內容加速卡來協助處理類似正則表達式查找的工作,可以起到局部加速作用,但整體效果有限,因為類似對TCP流狀態的跟蹤、各種應用協議的識別、策略的查找以及事件的統計和記錄等等繁重工作還是要依靠CPU來處理。
近年來多核處理器的發展為並行處理技術的應用提供了廣闊的空間,在一個處理器內部集成多個內核(獨立運算單元)已日趨成熟,比較有代表性的商業化產品是RMI公司的XLR系列線程處理器,它集成了多達8個內核。在多核處理器硬體平台上,可以利用並行處理技術來提升IPS產品性能,但是實際性能的提升取決於IPS並行化的方法及其並行化的程度,不幸的是IPS軟體的並行化遠比硬體增加1個或幾個物理內核要複雜得多,這涉及到操作系統並發工作的模式、流量的分擔與負載、IPS引擎的並行檢測、配置的同步與競爭控制、事件統計以及運行態調試等等問題。以下我們將對這些IPS並行化中的問題逐一探尋。
首先需要IPS系統軟體(這裡假定IPS系統是一個運行於應用層的程序,如果將IPS做為內核模塊嵌入到操作系統中則需要考慮的問題會更多一些)的載體-操作系統本身支持並行化,也即操作系統有穩定的SMP版本。操作系統在多核處理器硬體平台上一般有兩種構架,一種是SMP方式,也稱為同構方式(見圖:SMP方式示意圖,以4核為例),另一種為AMP方式,也稱為異構方式(見圖:AMP方式示意圖,以4核為例)。
SMP方式顧名思義就是將多個內核平等看待,每個內核運行的操作系統相同,且每個內核上都運行一套IPS系統,這樣從資料接收、連接建立、資料檢測到資料發送都是並發執行的,相當於多個IPS系統在同時運行。這種架構比較簡潔,各個處理器內核負載均衡,可以全方位地提升IPS產品性能,特別是在測試單一性能指標時,由於所有內核都參與處理工作,往往可以獲得比較好的表現。這種架構也有其固有缺陷,因為所有內核都運行相同的軟體系統(包含操作系統和IPS系統),勢必產生對共享資源(記憶體資料、文件描述符、I/O設備等)的爭用。為處理並發與同步需要使用大量的鎖機制,而這些鎖的操作又影響了性能發揮,更嚴重的是隨著內核數量的增多,並發與同步的消耗達到一定的量級,這時性能就不再增長甚至下降了。
AMP方式就是將多個內核區別看待,可以運行不同的操作系統也可以在相同的操作系統上運行不同的任務,各個處理器內核按照任務劃分,各負其責,規避共享資源的競爭,做到「術有專攻」,從而提升IPS產品的綜合性能。完整的操作系統往往比較龐大,耗費資源較多,效率也較低。拿出幾個物理內核,在其上建立一種簡易的系統環境(有時候直接叫做「裸核」環境),在這個「潔淨的空間」內運行單一任務(比如收發資料、模式匹配等)往往可以獲得極高的性能,這是AMP方式的特點,也是其優勢。另外一種方式,在相同的操作系統上運行不同的任務也是同樣的機理,只不過更容易實現一些,相應的性能提升的效果也遜色一些。這種架構也有其缺陷,在測試單一性能指標時,因為特定功能只有有限的內核參與處理,往往性能不夠理想。架構本身也比較複雜,需要仔細權衡各個內核的任務分擔,否則會造成內核負載不均衡,影響性能發揮。
選擇哪一種架構需要根據處理器硬體平台與IPS系統本身的特點來抉擇,通常在硬體處理器內核比較少的情況下選擇SMP架構,在需要將一大堆不可能並行化的「遺產」繼承到產品中時只好選擇AMP架構,如果已經使用了硬體內容加速,那麼可以選擇SMP架構,如果是新開發IPS產品,內核分工可以動態調整的AMP架構是不錯的選擇,但需要保證足夠的技術儲備和適當的人力投入。
在確定了工作模式後,就要考慮流量的分擔與負載問題了,多個內核並行處理,它們共同的輸入就是來自網絡的資料流,如何將這些資料流「喂」給處理器內核呢?最簡單的就是輪詢方法,即將到達的資料依次交給等待處理的內核,各個內核平均分配,這對早期的基於單個資料包檢測的IPS系統比較適合。現代的IPS系統功能豐富,不僅可以進行TCP流重組,還可以跟蹤應用層協議和控制流量。但是在多個內核上並發地跟蹤TCP狀態機是個棘手的問題,實現難度也較大,所以出現了另外一種按照五元組分流的方法,即將同一個資料流分配到同一個內核上,保障一個資料流始終由一個內核處理。這種方式大大降低了IPS內部實現複雜度,雖然具有流量較小時負載不均衡的副作用,但從研發成本考慮還是可以接受的。
接下來就是對提升性能至關重要的IPS引擎的並行檢測,IPS檢測引擎的並發是提升性能的關鍵。這裡的引擎主要指應用協議的識別和分析、攻擊特徵的匹配、策略的檢查以及後續的資料處理。如果運行於應用層,可以將每個IPS引擎作為一個單獨的進程對待,它們共用一份公共的攻擊特徵庫,對各自的輸入的資料流進行並行檢測和處理,就好像多個引擎在同時工作。但是資料流之間有時候是相關的,比如一個應用層協議可以動態協商出它的一個子連接,當這個子連接分配到另外一個IPS進程上處理時,要想控制它就需要進行進程間通訊,這樣引擎的獨立性就被破壞了。同樣在雙機熱備份的狀態同步、應用層協議動態識別上也會遇到同樣的困難。如果IPS作為一個內核模塊運行於操作系統核心層,那麼需要對所有可能產生競爭的共享資源進行並發訪問控制,使其徹底並行化,除此之外可能沒有什麼更好的辦法了。
配置問題是並發系統中一個棘手的問題,用戶常常在系統運行過程中進行配置變更,而且總是希望這種變更後的配置能夠即時生效。
在並發IPS系統中只有一份配置,配置的變化意味著所有的並行工作都要暫停下來,需要根據新的配置調整運行參數。運行時態頻繁地調整配置不可避免地影響並發IPS系統性能,如果設計不好還會產生「停頓」,導致丟包。同樣的,在IPS系統中各種統計資料(流量統計、事件統計、時間統計等)都需要實時地準確地顯示到用戶可視層面,多個引擎需要並發地對單一資料結果操作,如果簡單地用鎖規避競爭也會很大程度上影響並發IPS系統性能的提升。
一個系統的成熟和完善離不開調試,與基於單內核的系統相比,並發IPS系統的調試工具極度匱乏,調試手段也很不成熟。那些傳統的強大的單步跟蹤工具已經沒有用武之地,就連簡單的打印調試信息也需要特別小心,因為你需要先知道這個信息是哪個內核打印的才好定位問題。如果系統運行時死鎖,那麼整個系統或者IPS進程會被掛起,但留下的供你調試的線索卻非常有限。總之,有四類問題比較關鍵:死機、記憶體洩漏、記憶體篡改和報文調試。這些問題影響並發IPS系統的穩定,當然也影響到性能發揮。
機遇與挑戰並存。儘管利用並行處理技術提升IPS產品性能並非易事,還有很多問題有待解決,很多技術有待探索和突破,但是相信,在當今多核處理器迅速普及並不斷發展的趨勢下,硬體計算資源的開發暨並行處理技術的應用將為IPS產品帶來性能的質的飛躍。同時伴隨著新技術新產品的應用,也將引發現有IPS產品市場佈局的一場變革。
天融信公司的網絡衛士入侵防禦系統(TopIDP)應用了先進的多核處理器硬體平台,將並行處理技術融入天融信自主知識產權操作系統TOS系統,實現了高效率的並行處理檢測引擎,達到了千兆級性能,能夠滿足高速網絡的安全防禦要求,同時也打破了國外產品長期壟斷高端IPS產品市場的局面。
(註:作者「吳亞飆」現為天融信總工程師)
(