蔣建軍,劉彤
1.上海電機(jī)學(xué)院電子信息學(xué)院,上海200240
2.武漢理工大學(xué)信息工程學(xué)院,湖北武漢430070
3.北京天融信網(wǎng)絡(luò)安全技術(shù)有限公司,北京100085
一種AMP架構(gòu)下的處理器負(fù)載均衡改進(jìn)方法
蔣建軍1,2,劉彤3
1.上海電機(jī)學(xué)院電子信息學(xué)院,上海200240
2.武漢理工大學(xué)信息工程學(xué)院,湖北武漢430070
3.北京天融信網(wǎng)絡(luò)安全技術(shù)有限公司,北京100085
在多核異構(gòu)方式下,由于數(shù)據(jù)流大小差異很大,在檢測處理器檢測數(shù)據(jù)流時(shí)耗時(shí)較長,導(dǎo)致了檢測處理器之間的負(fù)載處于不均衡狀態(tài)。同時(shí),在網(wǎng)絡(luò)處理器和檢測處理器之間由于是固定任務(wù)分配,不可能做到完全均衡。針對存在的這些缺陷,提出了循環(huán)工作隊(duì)列方法,可以動(dòng)態(tài)感知處理器負(fù)載均衡態(tài)勢,改進(jìn)了檢測處理器均衡方法,進(jìn)一步提高了檢測處理器的性能發(fā)揮,解決了網(wǎng)絡(luò)處理器和檢測處理器之間無法均衡的問題,提升了系統(tǒng)的整體性能。
IPS;AMP構(gòu)架;異構(gòu)方式;檢測處理器;負(fù)載均衡
近幾年,入侵防御系統(tǒng)IPS(Intrusion Prevention System,入侵防御系統(tǒng))[1]產(chǎn)品已成為安全產(chǎn)品市場的熱點(diǎn),不僅保持了每年100%以上的市場增長率,而且應(yīng)用領(lǐng)域不斷擴(kuò)大,應(yīng)用技術(shù)也逐步普及。與傳統(tǒng)的IDS[2]旁路接入不同,IPS產(chǎn)品采用在線工作方式,即對接收的數(shù)據(jù)進(jìn)行檢測,然后按照其目的轉(zhuǎn)發(fā),這與安全網(wǎng)關(guān)類產(chǎn)品如防火墻、VPN(Virtual Private Network,虛擬專用網(wǎng))[3]等非常相似。這種工作方式?jīng)Q定了IPS產(chǎn)品除了要有準(zhǔn)確的檢測能力,還要有與應(yīng)用網(wǎng)絡(luò)相適應(yīng)的性能要求。
實(shí)際上自IPS產(chǎn)品誕生以來,一直采用協(xié)議識別和攻擊特征模式匹配等成熟技術(shù),困擾其應(yīng)用范圍的主要是性能要求。目前的防火墻達(dá)到千兆線速、4 G、甚至10 G轉(zhuǎn)發(fā)能力已屬平常,但I(xiàn)PS要實(shí)現(xiàn)這一性能絕非易事。在IPS中不僅需要檢查數(shù)據(jù)報(bào)文的頭部,還要針對具體的應(yīng)用協(xié)議檢查數(shù)據(jù)報(bào)文的內(nèi)容,這就使得在IPS中五元組相同的數(shù)據(jù)報(bào)文也不能“加速處理”,也就是說在IPS處理數(shù)據(jù)報(bào)文的整個(gè)路途中沒有“捷徑”,IPS需要對流經(jīng)自身的每一個(gè)報(bào)文進(jìn)行逐一檢測。這樣IPS成為CPU[4]資源的主要耗費(fèi)者,其性能很大程度上取決于硬件處理器的處理能力。
近年來多核處理器的發(fā)展為利用并行處理技術(shù)提升IPS產(chǎn)品性能提供了廣闊的空間,由于處理器計(jì)算能力的提升對IPS檢測全路徑都是有效的,所以從理論上講內(nèi)核數(shù)量與性能提升成正比。但是理論不等于實(shí)踐,實(shí)際性能的提升主要取決于IPS對各個(gè)處理器均衡的利用,即發(fā)揮每一個(gè)處理器的最大計(jì)算能力。
1.1 同構(gòu)方式與異構(gòu)方式
在多核并行計(jì)算環(huán)境中一般有兩種處理器工作構(gòu)架,一種是SMP(Symmetrical Multiprocessing,對稱多處理)[5]方式,也稱為同構(gòu)方式,SMP方式顧名思義就是將多個(gè)內(nèi)核平等看待,每個(gè)內(nèi)核擔(dān)負(fù)的工作都相同,且每個(gè)內(nèi)核上都運(yùn)行一套IPS系統(tǒng),這樣從數(shù)據(jù)接收、連接建立、數(shù)據(jù)檢測到數(shù)據(jù)發(fā)送都是并發(fā)執(zhí)行的,相當(dāng)于多個(gè)IPS系統(tǒng)在同時(shí)運(yùn)行。這種架構(gòu)比較簡潔,各個(gè)處理器內(nèi)核負(fù)載均衡,但是因?yàn)樗袃?nèi)核都擔(dān)負(fù)相同的工作,勢必產(chǎn)生對共享資源(內(nèi)存數(shù)據(jù)、文件描述符、I/O[6]設(shè)備等)的大量爭用,為處理這些并發(fā)與同步使用的大量鎖機(jī)制,又嚴(yán)重制約了性能發(fā)揮,更嚴(yán)重的是隨著內(nèi)核數(shù)量的增多,并發(fā)與同步的消耗達(dá)到一定的量級,性能不但不會增長反而會有所下降。
另一種為AMP(Asymmetric Multi-processing,非對稱多處理)[7]方式,也稱為異構(gòu)方式,如圖1所示為AMP方式示意圖(以4核為例)。
圖1 AMP方式示意圖Fig.1 Schematic diagram of AMP
AMP方式就是將多個(gè)內(nèi)核區(qū)別看待,可以運(yùn)行不同的操作系統(tǒng)也可以在相同的操作系統(tǒng)上運(yùn)行不同的任務(wù),各個(gè)處理器內(nèi)核按照任務(wù)劃分,各負(fù)其責(zé),規(guī)避共享資源的競爭,做到“術(shù)有專攻”,從而提升IPS產(chǎn)品的綜合性能。完整的操作系統(tǒng)往往比較龐大,耗費(fèi)資源較多,效率也較低。拿出幾個(gè)物理內(nèi)核,在其上建立一種簡易的系統(tǒng)環(huán)境(有時(shí)候直接叫做“裸核”環(huán)境),在這個(gè)“潔凈的空間”內(nèi)運(yùn)行單一任務(wù)(比如收發(fā)數(shù)據(jù)、模式匹配等)往往可以獲得極高的性能,這是AMP方式的特點(diǎn),也是其優(yōu)勢。雖然AMP構(gòu)架比較復(fù)雜,但因其性能提升非常有效,目前已被廣泛應(yīng)用。
AMP構(gòu)架的難點(diǎn)在于需要仔細(xì)權(quán)衡各個(gè)內(nèi)核的任務(wù)分擔(dān),否則會造成內(nèi)核負(fù)載不均衡,影響性能發(fā)揮。目前普遍采用的方法是將處理器內(nèi)核分為兩類,一類叫作網(wǎng)絡(luò)處理器,用于處理網(wǎng)絡(luò)數(shù)據(jù)報(bào)文的接收和發(fā)送,另一類叫做檢測處理器,用于進(jìn)行IPS檢測。網(wǎng)絡(luò)處理器接收到網(wǎng)絡(luò)數(shù)據(jù)報(bào)文后,根據(jù)其五元組建立連接(數(shù)據(jù)流),然后用hash[8]算法將連接平均地定位到唯一的檢測處理器上,這樣實(shí)現(xiàn)負(fù)載均衡,即將數(shù)據(jù)流平均地分配到檢測處理器上,同時(shí)保障將同一個(gè)數(shù)據(jù)流分配到同一個(gè)檢測處理器上,保障一個(gè)數(shù)據(jù)流始終由一個(gè)檢測處理器處理。
1.2 現(xiàn)有工作構(gòu)架的技術(shù)缺陷
如圖2所示為原有的處理器負(fù)載均衡方法示意圖,該方法的缺陷是,雖然數(shù)據(jù)流被相對均衡地分配到檢測處理器上,但是因?yàn)椴煌臄?shù)據(jù)流中包含的數(shù)據(jù)報(bào)文個(gè)數(shù)、報(bào)文大小、報(bào)文內(nèi)容都差異很大,這直接導(dǎo)致檢測處理器檢測數(shù)據(jù)流的速度不相同,如有的報(bào)文比較小甚至不包含應(yīng)用層數(shù)據(jù),無須進(jìn)行IPS檢測,可以快速地處理完畢,而有的數(shù)據(jù)報(bào)文是http協(xié)議[9]且包含豐富的uri[10]信息,有大量的IPS規(guī)則需要逐一匹配檢測,勢必耗時(shí)較長。這導(dǎo)致了檢測處理器之間的負(fù)載實(shí)際上處于不均衡狀態(tài),影響了性能發(fā)揮。另一方面,在網(wǎng)絡(luò)處理器和檢測處理器之間是固定任務(wù)分配,而網(wǎng)絡(luò)處理與檢測處理兩種工作不可能正好均衡,這也影響了整體性能的提升。
圖2 原有的處理器負(fù)載均衡方法示意圖Fig.2 The original processor load balance method diagram
為解決上述問題,提出了一種改進(jìn)的處理器負(fù)載均衡方法,以最大限度地發(fā)揮處理器計(jì)算能力,如圖3所示為改進(jìn)的處理器負(fù)載均衡方法。
圖3 改進(jìn)的處理器負(fù)載均衡方法示意圖Fig.3 Improved processor load balance method diagram
主要方法如下:
(1)建立環(huán)形工作隊(duì)列,動(dòng)態(tài)感知處理器均衡態(tài)勢。
(2)在檢測處理器之間進(jìn)行數(shù)據(jù)流重定向
(3)在網(wǎng)絡(luò)處理器與檢測處理器之間進(jìn)行工作任務(wù)動(dòng)態(tài)調(diào)整。
2.1 建立環(huán)形工作隊(duì)列
(1)為每個(gè)檢測處理器創(chuàng)建一個(gè)普通的隊(duì)列數(shù)據(jù)結(jié)構(gòu),并建立隊(duì)列頭和隊(duì)列尾指針。
(2)網(wǎng)絡(luò)處理器接收到數(shù)據(jù)報(bào)文后,需要提交檢測處理器檢測時(shí),將該數(shù)據(jù)報(bào)文的報(bào)文信息(包括協(xié)議類型、所屬數(shù)據(jù)流、報(bào)文大小等信息,但不包含數(shù)據(jù)報(bào)文本身)加入到隊(duì)列尾部,隊(duì)列尾可以循環(huán)從頭開始,但不能超過隊(duì)列頭。
(3)檢測處理器從隊(duì)列頭中依次取出報(bào)文信息,根據(jù)該信息對數(shù)據(jù)報(bào)文內(nèi)容進(jìn)行IPS檢測處理,處理后隊(duì)列頭依次后移,隊(duì)列頭也可以循環(huán)從頭開始,但不能超過隊(duì)列尾。
2.2 動(dòng)態(tài)感知處理器均衡態(tài)勢
(1)定時(shí)依次檢查每一個(gè)循環(huán)工作隊(duì)列的隊(duì)列頭和隊(duì)列尾。
(2)如果隊(duì)列頭尾距離很遠(yuǎn),說明隊(duì)列中積壓了很多待處理數(shù)據(jù)報(bào)文,該檢測處理器負(fù)載較重。當(dāng)頭尾距離等于隊(duì)列數(shù)據(jù)結(jié)構(gòu)長度時(shí),說明隊(duì)列已滿,該檢測處理器負(fù)載已達(dá)到極限,已無法再接收數(shù)據(jù)報(bào)文。
(3)如果隊(duì)列頭尾距離很近,說明隊(duì)列中沒有積壓的待處理數(shù)據(jù)報(bào)文,該檢測處理器負(fù)載較輕。當(dāng)頭尾距離等于零時(shí),說明隊(duì)列為空,該檢測處理器沒有負(fù)載,處于“吃不飽”狀態(tài)。
(4)通過不斷地檢查各個(gè)檢測處理器的負(fù)載情況,就能夠有效地動(dòng)態(tài)感知到處理器均衡態(tài)勢。
2.3 在檢測處理器之間進(jìn)行數(shù)據(jù)流重定向
(1)網(wǎng)絡(luò)處理器接收到數(shù)據(jù)報(bào)文,根據(jù)其五元組建立連接,再根據(jù)連接確定其捆綁的檢測處理器。
(2)利用循環(huán)工作隊(duì)列動(dòng)態(tài)感知該檢測處理器的負(fù)荷,如果負(fù)荷較重,則重定向連接到其它的檢測處理器上。此時(shí)負(fù)載均衡方法由原來的“按連接均衡地分給檢測處理器”改進(jìn)為“按連接均衡地分給負(fù)載最輕的檢測處理器”。
2.4 在網(wǎng)絡(luò)處理器與檢測處理器之間進(jìn)行工作任務(wù)動(dòng)態(tài)調(diào)整
(1)將一些報(bào)文后續(xù)處理工作(如記錄日志、報(bào)文轉(zhuǎn)發(fā)等)獨(dú)立出來,使得它們既可以在網(wǎng)絡(luò)處理器上運(yùn)行,也可以在檢測處理器上運(yùn)行。
(2)正常情況下,這些獨(dú)立的工作由網(wǎng)絡(luò)處理器負(fù)責(zé),檢測處理器由開關(guān)控制,默認(rèn)關(guān)閉。
(3)利用循環(huán)工作隊(duì)列動(dòng)態(tài)感知檢測處理器的負(fù)載,如果發(fā)現(xiàn)所有檢測處理器負(fù)載均很輕,則打開開關(guān),使得檢測處理器參加后續(xù)報(bào)文處理工作,增加檢測處理器負(fù)載,同時(shí)減輕網(wǎng)絡(luò)處理器負(fù)載,在兩種處理器之間進(jìn)行工作任務(wù)動(dòng)態(tài)調(diào)整。
以四核處理器為例,詳細(xì)說明一種改進(jìn)的處理器負(fù)載均衡方法的具體處理流程,是如何以最大限度地發(fā)揮處理器計(jì)算能力的。
3.1 建立環(huán)形工作隊(duì)列
分別為檢測處理器0、檢測處理器1和檢測處理器2創(chuàng)建一個(gè)普通的隊(duì)列數(shù)據(jù)結(jié)構(gòu),隊(duì)列長度為512,即最大可以緩存512個(gè)報(bào)文信息,同時(shí)分別建立隊(duì)列頭和隊(duì)列尾指針。
環(huán)形工作隊(duì)列的工作方式是,當(dāng)網(wǎng)絡(luò)處理器接收到數(shù)據(jù)報(bào)文后,根據(jù)其源地址、目的地址、源端口、目的端口查找連接,如果查找不到需要新建立一個(gè)連接結(jié)構(gòu),然后將報(bào)文協(xié)議類型、報(bào)文大小、報(bào)文數(shù)據(jù)地址、連接句柄(指向連接結(jié)構(gòu)的指針)等信息組成一個(gè)報(bào)文信息結(jié)構(gòu),加入到隊(duì)列尾部,隊(duì)列尾可以循環(huán)從頭開始,但不能超過隊(duì)列頭。
檢測處理器從隊(duì)列頭中依次取出報(bào)文信息,根據(jù)該信息對數(shù)據(jù)報(bào)文內(nèi)容進(jìn)行IPS檢測處理,處理后隊(duì)列頭依次后移,隊(duì)列頭也可以循環(huán)從頭開始,但不能超過隊(duì)列尾。
3.2 在檢測處理器之間進(jìn)行數(shù)據(jù)流重定向
實(shí)現(xiàn)過程如下:
(1)網(wǎng)絡(luò)處理器接收到數(shù)據(jù)報(bào)文,進(jìn)行初步分析,非TCP/UDP報(bào)文[11]不處理直接轉(zhuǎn)發(fā),對于TCP/UDP報(bào)文根據(jù)其五元組(源地址、目的地址、源端口、目的端口、協(xié)議)[12]計(jì)算hash值,再根據(jù)Hash值查找連接,如果查找到連接直接進(jìn)行(4)。
(2)對于沒有查找到連接的,需要新建立一個(gè)連接結(jié)構(gòu),一個(gè)連接結(jié)構(gòu)實(shí)際上對應(yīng)一個(gè)數(shù)據(jù)流。
(3)對連接的hash值除以cpu個(gè)數(shù)減1,然后取余,得到的值在0~2之間,這個(gè)值就是這個(gè)連接對應(yīng)的檢測處理器序號,將序號記錄到連接結(jié)構(gòu)中,這樣不用每次都計(jì)算。
(4)取出連接中記錄的檢測處理器序號,找到其一一對應(yīng)的環(huán)形工作隊(duì)列,檢查環(huán)形工作隊(duì)列的頭尾指針,如果頭尾指針差距小于512則說明隊(duì)列未滿,直接進(jìn)行(6)。
(5)隊(duì)列已滿則繼續(xù)檢查下一個(gè)處理器的環(huán)形工作隊(duì)列,如果未滿,則更改連接中的檢測處理器序號,將連接重定向到新的檢測處理器。如果所有檢測處理器的環(huán)形工作隊(duì)列均滿,則只能放棄檢測,直接轉(zhuǎn)發(fā)該連接。
(6)生成一個(gè)報(bào)文信息結(jié)構(gòu),包含報(bào)文協(xié)議類型、報(bào)文大小、報(bào)文數(shù)據(jù)地址、連接句柄(指向連接結(jié)構(gòu)的指針)等信息,從隊(duì)列尾部加入環(huán)形工作隊(duì)列,等待檢測處理器檢測。
3.3 將發(fā)送報(bào)文工作獨(dú)立出來
(1)將發(fā)送報(bào)文部分程序獨(dú)立成一個(gè)模塊,使得網(wǎng)絡(luò)處理器可以調(diào)用,同時(shí)檢測處理器也可以調(diào)用。當(dāng)網(wǎng)絡(luò)處理器調(diào)用發(fā)送報(bào)文模塊時(shí),該模塊代碼是在網(wǎng)絡(luò)處理器上運(yùn)行的,占用網(wǎng)絡(luò)處理器負(fù)載。當(dāng)檢測處理器調(diào)用發(fā)送報(bào)文模塊時(shí),該模塊代碼是在檢測處理器上運(yùn)行的,占用檢測處理器負(fù)載。
(2)設(shè)置一個(gè)開關(guān),正常情況下處于關(guān)閉狀態(tài)。該開關(guān)關(guān)閉時(shí)由網(wǎng)絡(luò)處理器調(diào)用發(fā)送報(bào)文模塊,檢測處理器不調(diào)用。開關(guān)打開時(shí)正好相反。
3.4 工作任務(wù)動(dòng)態(tài)調(diào)整
在網(wǎng)絡(luò)處理器與檢測處理器之間進(jìn)行工作任務(wù)動(dòng)態(tài)調(diào)整,方法如下:
(1)設(shè)置一個(gè)定時(shí)器,定時(shí)檢查各個(gè)檢測處理器的環(huán)形工作隊(duì)列。
(2)如果所有環(huán)形工作隊(duì)列均隊(duì)列頭與隊(duì)列尾相等,則說明檢測處理器負(fù)載較輕,此時(shí)打開開關(guān),在網(wǎng)絡(luò)處理器與檢測處理器之間進(jìn)行工作任務(wù)動(dòng)態(tài)調(diào)整。
改進(jìn)后的技術(shù)方案,與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn),改進(jìn)后的辦法提出了循環(huán)工作隊(duì)列方法,可以動(dòng)態(tài)感知處理器負(fù)載均衡態(tài)勢。改進(jìn)了檢測處理器均衡方法,進(jìn)一步提高了檢測處理器性能發(fā)揮。解決了網(wǎng)絡(luò)處理器和檢測處理器之間無法均衡的問題,實(shí)現(xiàn)了系統(tǒng)整體性能的提升。
[1]Kivity A,Kamay Y.kvm:the Linux virtual machine monitor.In 2007 Ottawa Linux Symposium,2007:225-230
[2]Ashoor,Asmaa Shaker.Difference between Intrusion Detection System(IDS)and Intrusion Prevention System(IPS). Communications in Computer and Information Science,v 196 CCIS,Advances in Network Security and Applications-4th International Conference,2011:497-501
[3]Chen Fei;Wu Kehe.The research and implementation of the VPN gateway based on SSL.Proceedings-2013 International Conference on Computational and Information Sciences,ICCIS 2013,2013:1376-1379
[4]陳曉嬌,哈力木拉提·買買提.一種基于HMM的維吾爾文聯(lián)機(jī)手寫識別的方法[J].計(jì)算機(jī)工程與應(yīng)用,2013,49(24):1 75-178
[5]胡亮,解男男,努爾布力,等.基于智能規(guī)劃的多步攻擊場景識別算法[J].電子學(xué)報(bào),2013,41(9):1753-1759
[6]陶文君,胡斌.一個(gè)可抵抗臨時(shí)指數(shù)泄露的密鑰協(xié)商協(xié)議形式化安全模型[J].計(jì)算機(jī)科學(xué),2013,40(11):97-102
[7]張思亮,李廣霞.子空間聚類在入侵檢測中的應(yīng)用[J].計(jì)算機(jī)安全,2013,12:2-6
[8]王文迪,湯文.基于Hash索引的高通量基因序列比對并行加速技術(shù)研究[J].計(jì)算機(jī)研究與發(fā)展,2013,50(11):2463-2471
[9]王麗娜,劉炎,何軍.基于IPSec和GRE的VPN實(shí)驗(yàn)仿真[J].實(shí)驗(yàn)室研究與探索,2013,32(9):70-75
[10]Richard Deal.Cisco VPN完全配置指南[M].北京:人民郵電出版社,2012:67-74
[11]應(yīng)宇鋒,王楨珍,王曉云.MPLS VPN技術(shù)在WLAN接入分組域中的應(yīng)用與研究[J].軟件,2012,33(9):74-76,80
[12]Wendell Odom,Rus Healy,Denise Donohue.CCIE routing and switching[M].北京:人民郵電出版社,2009:350-380
An Improved Method to Optimize the Load Balance of Processor under AMP Pattern
JIANG Jian-jun1,2,LIU Tong3
1.School of Electronic Information,shanghai Dianji University,Shanghai 200240,China
2.School of Information Engineering,Wuhan University of Technology,Wuhan 430070,China
3.Beijing Topsec Network Security Technology Co.,Ltd.,Beijing 100085,China
In the heterogeneous multi-core mode,the data stream size difference is very big,in the detection of the processor detects data stream is time-consuming,so as to lead to the load detection between processors is actually not equilibrium state. Because it is a fixed task allocation between network processor and detection processor,it is not possible to completely balance.Aiming at these defects,this paper proposed the circular queue method to perceived the load balancing situation of dynamic processor,and to improve the equalization method of the detection processor,to further improve the detection processor performance,to solve that the network processor and detection processor cannot balance problems,to improve the overall performance of the system.
Intrusion prevention system;Asymmetric Multi-Processing framework;heterogeneous;detection processor;load balance
TP3
A
1000-2324(2015)01-0096-05
2013-05-10
2013-05-19
上海市科委基金資助(14511108003)
蔣建軍(1967-),男,上海市人,副教授,碩士,主要研究方向:信息技術(shù)、網(wǎng)絡(luò)、虛擬化技術(shù)及應(yīng)用.E-mail:Jjjiang@189.cn