陳俊睿
(杭州師范大學(xué)錢江學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,浙江 杭州 310012)
當(dāng)今計(jì)算機(jī)技術(shù)已進(jìn)入以網(wǎng)絡(luò)為中心的計(jì)算時(shí)期。由于客戶/服務(wù)器模型的簡單性、易管理性和易維護(hù)性,客戶/服務(wù)器計(jì)算模式在網(wǎng)上被大量采用。在九十年代中期,萬維網(wǎng) (World Wide Web 的出現(xiàn)以其簡單操作方式將圖文并茂的網(wǎng)上信息帶給普通大眾,Web 也正在從一種內(nèi)容發(fā)送機(jī)制成為一種服務(wù)平臺(tái),大量的服務(wù)和應(yīng)用(如新聞服務(wù)、網(wǎng)上銀行、電子商務(wù)等)都是圍繞著Web 進(jìn)行。
客戶通過Virtual IP Address(虛擬服務(wù)的IP 地址)訪問網(wǎng)絡(luò)服務(wù)時(shí),請(qǐng)求報(bào)文到達(dá)調(diào)度器,調(diào)度器根據(jù)連接調(diào)度算法從一組真實(shí)服務(wù)器中選出一臺(tái)服務(wù)器,將報(bào)文的目標(biāo)地址Virtual IP Address 改寫成選定服務(wù)器的地址,報(bào)文的目標(biāo)端口改寫成選定服務(wù)器的相應(yīng)端口,最后將修改后的報(bào)文發(fā)送給選出的服務(wù)器。同時(shí),調(diào)度器在連接Hash 表中記錄這個(gè)連接,當(dāng)這個(gè)連接的下一個(gè)報(bào)文到達(dá)時(shí),從連接Hash 表中可以得到原選定服務(wù)器的地址和端口,進(jìn)行同樣的改寫操作,并將報(bào)文傳給原選定的服務(wù)器。當(dāng)來自真實(shí)服務(wù)器的響應(yīng)報(bào)文經(jīng)過調(diào)度器時(shí),調(diào)度器將報(bào)文的源地址和源端口改為Virtual IP Addres:和相應(yīng)的端口,再把報(bào)文發(fā)給用戶。我們?cè)谶B接上引入一個(gè)狀態(tài)機(jī),不同的報(bào)文會(huì)使得連接處于不同的狀態(tài),不同的狀態(tài)有不同的超時(shí)值。在TCP 連接中,根據(jù)標(biāo)準(zhǔn)的TCP 有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移;在UDP 中,我們只設(shè)置一個(gè)UDP 狀態(tài)。不同狀態(tài)的超時(shí)值是可以設(shè)置的,在缺省情況下,SYN 狀態(tài)的超時(shí)為1分鐘,ESTABLISHED 狀態(tài)的超時(shí)為15分鐘,F(xiàn)IN 狀態(tài)的超時(shí)為1分鐘;UDP 狀態(tài)的超時(shí)為5分鐘。當(dāng)連接終止或超時(shí),調(diào)度器將這個(gè)連接從連接Hash 表中刪除。
IP 隧道(IP tunnel噸)是將一個(gè)IP 報(bào)文封裝在另一個(gè)IP 報(bào)文的技術(shù),這可以使得目標(biāo)為一個(gè)IP 地址的數(shù)據(jù)報(bào)文能被封裝和轉(zhuǎn)發(fā)到另一個(gè)IP 地址。IP 隧道技術(shù)亦稱為IP 封裝技術(shù)(IP encapsulation)。IP 隧道主要用于移動(dòng)主機(jī)和虛擬私有網(wǎng)絡(luò)(Virtual PrivateNetwork),在其中隧道都是靜態(tài)建立的,隧道一端有一個(gè)地址,另一端也有唯一的IP 地址。
我們利用IP 隧道技術(shù)將請(qǐng)求報(bào)文封裝轉(zhuǎn)發(fā)給后端服務(wù)器,響應(yīng)報(bào)文能從后端服務(wù)器直接返回給客戶。但在這里,后端服務(wù)器有一組而非一個(gè),所以我們不可能靜態(tài)地建立一一對(duì)應(yīng)的隧道,而是動(dòng)態(tài)地選擇一臺(tái)服務(wù)器,將請(qǐng)求報(bào)文封裝和轉(zhuǎn)發(fā)給選出的服務(wù)器。這樣,我們可以利用IP 隧道的原理將一組服務(wù)器上的網(wǎng)絡(luò)服務(wù)組成在一個(gè)IP 地址上的虛擬網(wǎng)絡(luò)服務(wù)。
IP 隧道(IP tunnel噸)是將一個(gè)IP 報(bào)文封裝在另一個(gè)IP 報(bào)文的技術(shù),這可以使得目標(biāo)為一個(gè)IP 地址的數(shù)據(jù)報(bào)文能被封裝和轉(zhuǎn)發(fā)到另一個(gè)IP 地址。IP 隧道技術(shù)亦稱為IP 封裝技術(shù) (IP encapsulation)。IP 隧道主要用于移動(dòng)主機(jī)和虛擬私有網(wǎng)絡(luò) (Virtual PrivateNetwork),在其中隧道都是靜態(tài)建立的,隧道一端有一個(gè)IP 地址,另一端也有唯一的IP 地址。
我們利用IP 隧道技術(shù)將請(qǐng)求報(bào)文封裝轉(zhuǎn)發(fā)給后端服務(wù)器,響應(yīng)報(bào)文能從后端服務(wù)器直接返回給客戶。但在這里,后端服務(wù)器有一組而非一個(gè),所以我們不可能靜態(tài)地建立一一對(duì)應(yīng)的隧道,而是動(dòng)態(tài)地選擇一臺(tái)服務(wù)器,將請(qǐng)求報(bào)文封裝和轉(zhuǎn)發(fā)給選出的服務(wù)器。這樣,我們可以利用IP 隧道的原理將一組服務(wù)器上的網(wǎng)絡(luò)服務(wù)組成在一個(gè)IP 地址上的虛擬網(wǎng)絡(luò)服務(wù)。
我們提出基于動(dòng)態(tài)反饋負(fù)載均衡機(jī)制,來控制新連接的分配,從而控制各個(gè)服務(wù)器的負(fù)載。例如,在調(diào)度器的內(nèi)核中使用加權(quán)輪叫調(diào)度(Weighted Round-Robin Scheduling)算法來調(diào)度新的請(qǐng)求連接;在負(fù)載調(diào)度器的用戶空間中運(yùn)行Monitor Daemon o Monitor Daemon 定時(shí)地監(jiān)視和收集各個(gè)服務(wù)器的負(fù)載信息,根據(jù)多個(gè)負(fù)載信息算出一個(gè)綜合負(fù)載值。Monitor Daemon 將各個(gè)服務(wù)器的綜合負(fù)載值和當(dāng)前權(quán)值算出一組新的權(quán)值。當(dāng)綜合負(fù)載值表示服務(wù)器比較忙時(shí),新算出的權(quán)值會(huì)比其當(dāng)前權(quán)值要小,這樣新分配到該服務(wù)器的請(qǐng)求數(shù)就會(huì)少一些。當(dāng)綜合負(fù)載值表示服務(wù)器處于低利用率時(shí),新算出的權(quán)值會(huì)比其當(dāng)前權(quán)值要大,來增加新分配到該服務(wù)器的請(qǐng)求數(shù)。若新權(quán)值和當(dāng)前權(quán)值的差值大于設(shè)定的閥值,Monitor Daemon 將該服務(wù)器的權(quán)值設(shè)置到內(nèi)核中調(diào)度。過了一定的時(shí)間間隔(如2秒鐘),Monitor Daemon 再查詢各個(gè)服務(wù)器的情況,并相應(yīng)調(diào)整服務(wù)器的權(quán)值;這樣周期性地進(jìn)行??梢哉f,這是一個(gè)負(fù)反饋機(jī)制.使得服務(wù)器誤持較好的利用率。
系統(tǒng)的主要功能模塊如下圖所示,“VS Schedule&Control Module”是虛擬服務(wù)器的主控模塊,它掛接在IP 報(bào)文遍歷的IP LOCAL IN鏈和IP FORWARD 鏈兩處,用于截取/改寫IP報(bào)文;“VS Rules Table”用于存放虛擬服務(wù)器的規(guī)則,Connections Hash Table 表是用于記錄當(dāng)前連接的Hash 表;Stale Connection Collector塊用于回收己經(jīng)過時(shí)的連接;Statistics Data 表記錄ASAS-IFVS 的統(tǒng)計(jì)信息。用戶空間的ASAS-ipvsadmin 管理程序通過setsockopt 函數(shù)將虛擬服務(wù)器的規(guī)則寫入“VS Rules Table”表中,通過//proc 文件系統(tǒng)把“VS Rules Table”表中的規(guī)則讀出。
測(cè)試環(huán)境。硬件環(huán)境:負(fù)載調(diào)度器(load balancer):P4 xeon 2.8G,1G 內(nèi)存(ECC)1000M*2;執(zhí)行服務(wù)器 (real server):聯(lián)想萬全服務(wù)器T220GS(xeon 3.0G,1G),曙光 I220-A l(opteron 242,512M),浪潮英信 NP370H(xeon 2.8G,512M)。
采用SmartBits Websuite 2.6 作為流量測(cè)試工具,用Avalance Commander 7.51 來模擬正常仿真應(yīng)用層需求,攻擊軟件采用TFN2K,用來作ASAS 和ASAS-ES 的安全性測(cè)試。
實(shí)驗(yàn)中選擇了兩種攻擊模式,每種攻擊模式選擇了3種速率方式,恒定速率攻擊(Constant Rate Attack):攻擊迅速達(dá)到最大速率,持續(xù)3005 結(jié)束。漸增速率攻擊 (Increasing Rate Attack):攻擊在前3005 內(nèi)逐漸增大至最大速率,然后再持續(xù)3005 結(jié)束。
功能性測(cè)試。實(shí)驗(yàn)中的對(duì)比測(cè)試,主要包括流量,負(fù)載調(diào)度狀況,丟包率,服務(wù)器響應(yīng)時(shí)間。在包丟失率的測(cè)試中我們拔掉了浪潮服務(wù)器的網(wǎng)線(測(cè)試ASAS時(shí),停止Schedule:進(jìn)程以及服務(wù)器軟件),我們將權(quán)值更新超時(shí)設(shè)置為13S,權(quán)值發(fā)送周期為8s,同時(shí)測(cè)得了響應(yīng)時(shí)間中的服務(wù)器服務(wù)終止時(shí)間的時(shí)間。
從實(shí)驗(yàn)結(jié)果中可以看出,ASAS-ES 中由于負(fù)載均衡器需要在HASH 表中對(duì)攻擊的IP 包進(jìn)行統(tǒng)計(jì)分析,并且在轉(zhuǎn)發(fā)的11'IP 包中添加校驗(yàn)字段,由此做了一些額外的開銷,使得資源利用率比ASAS 中有所提高,但保證了執(zhí)行服務(wù)器能夠提供更多的有效服務(wù),因此ASAS-ES 中對(duì)DDoS 攻擊的防御是有效的,代價(jià)是更多的計(jì)算開銷。同時(shí)在實(shí)驗(yàn)中發(fā)現(xiàn)執(zhí)行服務(wù)器和負(fù)載均衡器均應(yīng)該禁止不必要的IcmP,TCP,UDP通訊端口,特別是 IcmP,可只允許類型3(目標(biāo)不可達(dá))數(shù)據(jù)包通過,以及禁止所有主機(jī)的IcmP echo reply,在此條件下防御DDoS 才能有較好的結(jié)果。
[1]夏明波,金士堯,王曉川,集群服務(wù)器自調(diào)度方法的研究與實(shí)現(xiàn),計(jì)算機(jī)應(yīng)用,2006年.
[2]李安貴,張志宏,段鳳英,模糊數(shù)學(xué)及其應(yīng)用,冶金工業(yè)出版社,1994年.