倪思源,扈紅超,劉文彥,梁 浩
(1.鄭州大學(xué) 中原網(wǎng)絡(luò)安全研究院,鄭州 450000;2.中國人民解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué),鄭州 450000)
云計(jì)算憑借其隨需應(yīng)變、按需即付的優(yōu)勢給用戶帶來極大的便利。為支持大規(guī)模的云服務(wù),數(shù)據(jù)中心需開通數(shù)千臺服務(wù)器和交換機(jī)。數(shù)據(jù)中心要為眾多服務(wù)器和網(wǎng)絡(luò)設(shè)備供電,因此會消耗大量能源。典型數(shù)據(jù)中心的能耗相當(dāng)于25 000 戶家庭的能耗,每5 年可能翻1 番[1-2]。最近的研究結(jié)果表明,由于數(shù)據(jù)中心的服務(wù)器利用率不足會導(dǎo)致大量的資源被浪費(fèi),且服務(wù)器的平均利用率僅為5%~20%之間[3]。因此,在提供云服務(wù)的同時,提高數(shù)據(jù)中心的服務(wù)器利用率非常重要。
部署在服務(wù)器上的虛擬機(jī)被攻擊后會影響正常服務(wù),所以研究人員提出一種冗余備份的虛擬機(jī)策略,冗余策略能夠提高云計(jì)算環(huán)境的容錯性,減小對用戶體驗(yàn)帶來的影響。然而,系統(tǒng)組件的同質(zhì)化,使得攻擊者易于探測用戶信息、竊取用戶數(shù)據(jù),導(dǎo)致云計(jì)算環(huán)境受到安全威脅[4]。2019 年1 月,研發(fā)人員發(fā)現(xiàn)WINRAR 漏洞,該漏洞威脅了5 億用戶的系統(tǒng)安全。同年10 月,Android 零日漏洞也被發(fā)現(xiàn),該漏洞威脅了華為、三星、小米等多家電子設(shè)備的安全。基礎(chǔ)設(shè)施異構(gòu)化能夠增大攻擊者探測難度[5],提高云計(jì)算環(huán)境的安全性,在此基礎(chǔ)上對虛擬機(jī)進(jìn)行動態(tài)輪換能夠進(jìn)一步增強(qiáng)虛擬機(jī)安全性,通過動態(tài)改變虛擬機(jī)的部署位置和虛擬機(jī)的操作系統(tǒng),避免用戶虛擬機(jī)受到側(cè)信道攻擊[6]和探測攻擊[7]。
然而,異構(gòu)云基礎(chǔ)設(shè)施和虛擬機(jī)輪換會帶來云計(jì)算資源分配的難題[8]。一方面,由于基礎(chǔ)設(shè)施異構(gòu)化使得傳統(tǒng)的裝箱方法不再適用資源分配,供應(yīng)商需考慮每一個服務(wù)器可提供的資源來實(shí)現(xiàn)負(fù)載均衡。另一方面,虛擬機(jī)的輪換會改變當(dāng)前服務(wù)器的負(fù)載情況,如何在輪換的過程中減小負(fù)載波動值得研究。本文提出一種基于輪換策略的異構(gòu)云資源分配算法,將不同的資源抽象成維度不同的向量,利用余弦定理來衡量向量之間的相似度,根據(jù)向量間的相似度進(jìn)行資源分配以實(shí)現(xiàn)負(fù)載平衡,并在初次資源分配完成后對虛擬機(jī)選擇相似度最高的服務(wù)器進(jìn)行輪換。
云計(jì)算中的資源分配屬于大規(guī)模多任務(wù)調(diào)度問題,一直是人們研究的熱點(diǎn)。文獻(xiàn)[9]提出一種兩步式的資源分配算法,首先在云中選擇一個集群,然后在集群中選擇一個節(jié)點(diǎn)部署虛擬機(jī),該模型使用了3 個集群和6 個節(jié)點(diǎn),實(shí)驗(yàn)結(jié)果表明,選擇合適的集群比選擇合適的節(jié)點(diǎn)對資源分配的影響更大。文獻(xiàn)[10]討論了如何量化服務(wù)器和整個系統(tǒng)間的負(fù)載平衡,該研究選用貪心算法來平衡服務(wù)器之間的負(fù)載,當(dāng)服務(wù)器負(fù)載超過閾值時,對該服務(wù)器上的虛擬機(jī)進(jìn)行遷移,并計(jì)算遷移虛擬機(jī)后的服務(wù)器負(fù)載平衡變化值,選取最小不平衡變化值進(jìn)行遷移。文獻(xiàn)[11]根據(jù)虛擬機(jī)的狀態(tài),提出了靜態(tài)虛擬機(jī)放置和動態(tài)虛擬機(jī)放置的算法,既考慮了單個服務(wù)器的資源剩余量和資源利用率,又兼顧了整體服務(wù)器的資源剩余量和資源利用率。該算法使用平面資源六邊形,由代表不同資源利用類別的三角形組成。虛擬機(jī)被分配到互補(bǔ)資源三角形中的服務(wù)器上來平衡總體利用率。文獻(xiàn)[12]在文獻(xiàn)[11]的基礎(chǔ)上提出了一種虛擬機(jī)放置互補(bǔ)策略。該互補(bǔ)策略考慮資源使用和時間使用兩個方面,并認(rèn)為在不同時間使用相同資源的虛擬機(jī)或在相同時間使用不同資源的虛擬機(jī)是互補(bǔ)的。文獻(xiàn)[13]設(shè)計(jì)一種基于啟發(fā)式正交二叉樹搜索的三維裝箱算法,該算法以所有葉子節(jié)點(diǎn)填充率最高為目標(biāo),滿足了裝箱的3 個約束條件。文獻(xiàn)[14]結(jié)合日常砌墻策略,提出了一種混合模擬退火算法,利用找點(diǎn)法和參考線規(guī)則來進(jìn)行裝箱,該算法能有效解決三維裝箱問題。
虛擬機(jī)是一種用于模擬物理服務(wù)器的虛擬化技術(shù)。隨著虛擬化的發(fā)展,虛擬機(jī)擴(kuò)容和虛擬機(jī)的實(shí)時遷移為提高服務(wù)器利用率提供了兩種潛在的解決方案[15-16]。虛擬機(jī)大小調(diào)整方案可以對虛擬機(jī)資源配置的細(xì)粒度進(jìn)行調(diào)整。與峰值資源請求的資源調(diào)配相比,虛擬機(jī)大小調(diào)整的資源調(diào)配可以更好地利用物理資源,而計(jì)算開銷可以忽略不計(jì)。實(shí)時遷移能夠以無中斷的方式在不同服務(wù)器之間移動正在運(yùn)行的虛擬機(jī)。通過應(yīng)用實(shí)時遷移和虛擬機(jī)擴(kuò)容,數(shù)據(jù)中心管理器可以將虛擬機(jī)整合到更少的服務(wù)器上,以提高數(shù)據(jù)中心的能源使用率。在整合虛擬機(jī)時,可能存在虛擬機(jī)工作負(fù)載突發(fā)的情況使服務(wù)器過載[17]。虛擬機(jī)遷移通過改變底層的物理環(huán)境可以抵御云計(jì)算中的側(cè)信道攻擊,文獻(xiàn)[18]在此基礎(chǔ)上利用MTD 技術(shù),通過多個操作系統(tǒng)的輪換來增強(qiáng)安全性,并利用現(xiàn)有技術(shù),提供了一個可行的動態(tài)防御解決方案,可以方便地部署在真實(shí)的網(wǎng)絡(luò)環(huán)境中。不同于虛擬機(jī)遷移,該方案通過輪換刪除原服務(wù)器上的虛擬機(jī),并在新的服務(wù)器上部署新的虛擬機(jī)。測試結(jié)果表明,平臺的多樣性和動態(tài)性提高了系統(tǒng)的安全性,攻擊成功率與輪換時間間隔成反比。
隨著云計(jì)算的發(fā)展,越來越多的計(jì)算資源被提供給客戶,如CPU、內(nèi)存大小、磁盤大小、帶寬等。因此,分配方法應(yīng)該支持任意數(shù)量的維度[19]。同時,在保障虛擬機(jī)安全性的同時服務(wù)器的資源利用率和負(fù)載波動也應(yīng)被關(guān)注。針對以上問題,本文在傳統(tǒng)的裝箱方法上做了改進(jìn),并提出一種基于輪換策略的異構(gòu)云資源分配算法,主要貢獻(xiàn)如下:
1)對底層物理設(shè)施異構(gòu)化,通過異構(gòu)底層物理服務(wù)器,增大攻擊者探測難度,提升云計(jì)算環(huán)境安全性。
2)將影響虛擬機(jī)部署的資源抽象成向量,多維度地考慮資源分配問題,以更貼近真實(shí)的資源分配環(huán)境,同時根據(jù)虛擬機(jī)部署資源的向量與物理服務(wù)器向量間的相似度選擇虛擬機(jī),使得計(jì)算節(jié)點(diǎn)成本更小,能源利用率更大。
3)在每個虛擬機(jī)初次部署的同時,為每個虛擬機(jī)設(shè)置駐留時間,當(dāng)?shù)竭_(dá)駐留時間后根據(jù)當(dāng)前服務(wù)器負(fù)載情況對虛擬機(jī)進(jìn)行輪換。輪換會改變虛擬機(jī)的操作系統(tǒng)以及所部署的服務(wù)器位置,在提高資源利用率的同時提升了執(zhí)行體的安全性。
虛擬機(jī)在部署時會面臨服務(wù)器選擇問題,由于不同的服務(wù)器負(fù)載情況可能不同,在部署時會影響云平臺的整體負(fù)載情況。本文將多維異構(gòu)資源的分配問題分為2 個階段:
1)初次部署虛擬機(jī)。將虛擬機(jī)部署在異構(gòu)的物理服務(wù)器上,同時保證各個服務(wù)器資源利用率高和服務(wù)器間負(fù)載平衡,這本質(zhì)上是一個多目標(biāo)優(yōu)化問題。
2)輪換已經(jīng)部署好的虛擬機(jī)。輪換可以減小攻擊者對虛擬機(jī)的影響,提升虛擬機(jī)安全性,但是輪換會引起服務(wù)器負(fù)載變化,所以在考慮虛擬機(jī)安全的同時,應(yīng)盡量減小服務(wù)器的負(fù)載波動。
資源分配問題通常被視為裝箱問題,即在最少的箱子里放置最多的物品。云計(jì)算中影響資源分配的因素有很多,如CPU、內(nèi)存大小、磁盤大小、帶寬等。本文用不同的維度來表示這些因素,并對云計(jì)算中多維資源分配問題進(jìn)行研究。裝箱問題描述如下:有n種體積不同的物品,將這n種物品裝到體積為C的m個箱子中,并約定這n種物品的體積均小于箱子的體積C。不同的裝箱策略使用的箱子個數(shù)可能不同,裝箱問題要求使用最少的箱子來裝這些物品。
云計(jì)算的物理基礎(chǔ)設(shè)施是由一臺臺的物理服務(wù)器組成的,異構(gòu)能有效提高云計(jì)算環(huán)境的安全性,但是異構(gòu)的服務(wù)器之間容量不同,因此異構(gòu)裝箱較傳統(tǒng)的裝箱問題相比引入了新的問題。對于每臺服務(wù)器均需滿足以下約束條件:
部署在服務(wù)器J上的虛擬機(jī)資源需求要小于服務(wù)器容量,不滿足該約束條件即視為裝箱失敗。以三維裝箱為例,將服務(wù)器的CPU、內(nèi)存與磁盤空間抽象為互不相關(guān)的3 個維度,如圖1 所示。的容量為(6,6,3),的容量 為(7,5,6)。的體積為(2,1,3)的體積為(1,2,1),的體積為(1,2,2),的體積為(3,1,2),的體積為(2,1,1)。按傳統(tǒng)的裝箱方法,當(dāng)虛擬機(jī)任務(wù)請求到達(dá)時,先嘗試放入已經(jīng)打開的箱子,如果能放下就放入該箱子,放不下就開啟新的箱子,直到找到能放下的箱子為止。如圖1(a)所示;可以放置在,放置后剩余資源為(5,5,0),此時磁盤空間已經(jīng)使用完,但是CPU 與內(nèi)存空間還剩余很多,會造成嚴(yán)重的資源浪費(fèi);、和可以放置在上,放置后剩余資源為(2,0,2),此時,導(dǎo)致無法放置。但這種放置策略會造成資源浪費(fèi),即PM的利用率不高。如圖1(b)所示,將放置在上,和放置在上,此時,所有虛擬機(jī)都能成功部署在服務(wù)器上。這種放置策略可以有效提高箱子的利用率,減少資源的浪費(fèi)。
圖1 虛擬機(jī)放置策略Fig.1 Virtual machine placement strategies
網(wǎng)絡(luò)攻擊對網(wǎng)絡(luò)系統(tǒng)的危害主要分為網(wǎng)絡(luò)可用性危害與信息安全屬性危害[20],主要體現(xiàn)在對可用性、機(jī)密性、完整性、不可抵賴性、認(rèn)證性等安全屬性的危害。由于不同的系統(tǒng)遇到危害時敏感性反應(yīng)不同,假設(shè)攻擊者只要能入侵目標(biāo)主機(jī)便視為成功攻擊,攻擊過程的5 個階段描述如圖2 所示。
圖2 侵入攻擊階段示意圖Fig.2 Schematic diagram of intrusion attack phase
同一臺物理服務(wù)器上的虛擬機(jī)之間共享資源,攻擊者通過定位到目標(biāo)主機(jī)所在的服務(wù)器位置,將攻擊者控制的虛擬機(jī)與目標(biāo)主機(jī)部署到同一臺服務(wù)器上,并對目標(biāo)主機(jī)發(fā)起側(cè)信道攻擊。同時,攻擊者也可以探測用戶虛擬機(jī)的操作系統(tǒng),根據(jù)用戶操作系統(tǒng)漏洞對目標(biāo)主機(jī)進(jìn)行攻擊。攻擊成功率P與虛擬機(jī)操作系統(tǒng)漏洞有關(guān):
其中,V表示虛擬機(jī)操作系統(tǒng)漏洞。因此,動態(tài)地改變虛擬機(jī)部署的位置和虛擬機(jī)的操作系統(tǒng)能夠增大攻擊者的探測難度,降低攻擊者的攻擊成功率。
本節(jié)提出基于輪換策略的異構(gòu)云資源分配算法,將異構(gòu)云資源分配問題建模為多維裝箱問題進(jìn)行求解,同時提出一個資源分配利用率指標(biāo),根據(jù)該指標(biāo)選擇虛擬機(jī)要部署的服務(wù)器位置。
本節(jié)根據(jù)利用率指標(biāo)來解決虛擬機(jī)布局問題。在資源分配時根據(jù)當(dāng)前服務(wù)器的負(fù)載情況以及資源利用率來選擇虛擬機(jī)的放置位置,參數(shù)定義如表1所示。
表1 參數(shù)定義Table 1 Parameters definition
式(3)表示服務(wù)器j的剩余資源為服務(wù)器j的總資源減去部署虛擬機(jī)i所占用的資源。由于部署虛擬機(jī)時要考慮當(dāng)前服務(wù)器負(fù)載情況以及資源剩余情況,因此本文根據(jù)當(dāng)前的服務(wù)器資源利用率來選擇虛擬機(jī)的部署位置。對于一個2 維向量空間,兩個向量間的夾角越小,兩個向量越相似。將此推廣至兩個k維向量,即虛擬機(jī)i的資源需求request 與服務(wù)器j的資源剩余,這兩個k維向量余弦值如式(5)所示,其中θvp表示虛擬機(jī)i的資源需求與服務(wù)器j的剩余資源夾角大小。
θvp值越大表示虛擬機(jī)i的資源需求與服務(wù)器j的剩余資源之間夾角越大,兩個向量相關(guān)性越低。反之,θvp值越小表示虛擬機(jī)的資源需求與服務(wù)器的剩余容量相關(guān)性越高。本文選取與虛擬機(jī)i的θvp值最小的服務(wù)器j來放置虛擬機(jī)。
資源分配問題本質(zhì)上是一個多目標(biāo)優(yōu)化的問題,旨在提高能源效率、資源利用率、負(fù)載平衡和服務(wù)器整合。本文將云計(jì)算中的異構(gòu)資源分配問題視為多維異構(gòu)裝箱問題,具體描述如下:有n個體積不同的虛擬機(jī)(0 ≤i≤n),m個容量不同的服務(wù)器(0 ≤j≤m),如式(6)所示,目標(biāo)是用最少的服務(wù)器部署最多的虛擬機(jī)。
目標(biāo)函數(shù):
在革命戰(zhàn)爭年代,長征時期紅軍戰(zhàn)士爬雪山、過草地、煮皮帶、吃樹根,堅(jiān)決執(zhí)行“不拿群眾一針一線”的方針;在社會主義年代,老一代科學(xué)家風(fēng)餐露宿、頑強(qiáng)拼搏,克服各種難以想象的困難,突破技術(shù)難關(guān),最終完成了我國“兩彈一星”戰(zhàn)略。大學(xué)生接受紅色文化熏陶,有助于將艱苦奮斗精神滲透到他們的學(xué)習(xí)和生活中去,培養(yǎng)謙虛、踏實(shí)的學(xué)習(xí)和生活態(tài)度[1]。
由于虛擬機(jī)是多維資源包,本文用向量來表示虛擬機(jī)的多維資源,其中k表示資源類型的維度。式(7)表示放置的虛擬機(jī)資源需求要小于服務(wù)器的剩余資源,表示服務(wù)器j的k維資源剩余情況,表示服務(wù)器的容量,表示虛擬機(jī)i各個維度占的體積。式(8)表示將虛擬機(jī)i部署在服務(wù)器j上。
變量說明:
S(xij):0-1 變量,當(dāng)虛擬機(jī)i在服務(wù)器j上的狀態(tài)正常時,S(wij)為1,否則為0。
約束條件:
式(9)表示虛擬機(jī)i在服務(wù)器j上駐留的時間不能超過時間t。式(10)表示服務(wù)器的負(fù)載變化情況,它等于虛擬機(jī)輪換前后服務(wù)器體積的變化,其中,add 表示輪換后服務(wù)器j新增的虛擬機(jī)體積,delete 表示服務(wù)器j上要刪除的虛擬機(jī)體積。式(11)表示服務(wù)器當(dāng)前負(fù)載狀態(tài),它等于動態(tài)輪換之前服務(wù)器的負(fù)載與輪換后服務(wù)器負(fù)載變化之和。虛擬機(jī)動態(tài)輪換時也要滿足式(7)的約束條件,即輪換的虛擬機(jī)體積要小于服務(wù)器的容量。
本文通過動態(tài)、異構(gòu)的虛擬機(jī)部署方式來增強(qiáng)虛擬機(jī)的安全性。對于虛擬機(jī)(Ov,Pj),本文考慮操作系統(tǒng)Ov以及部署的服務(wù)器位置Pj兩個要素,通過異構(gòu)操作系統(tǒng)Ov和部署的服務(wù)器位置Pj來提高虛擬機(jī)的安全性。如圖3 所示,在創(chuàng)建虛擬機(jī)(O1,P1)時,給每個虛擬機(jī)提前設(shè)定好駐留時間,同時設(shè)置代理監(jiān)控每個虛擬機(jī)的狀態(tài)。當(dāng)虛擬機(jī)到達(dá)駐留時間或虛擬機(jī)狀態(tài)異常時,便刪除該服務(wù)器上的虛擬機(jī),但是該虛擬機(jī)的數(shù)據(jù)仍然存在一個安全的共享數(shù)據(jù)庫中。同時,創(chuàng)建一個新的虛擬機(jī)(O2,P2),該虛擬機(jī)操作系統(tǒng)與原虛擬機(jī)不同,部署的服務(wù)器位置也不同,但是虛擬機(jī)(O2,P2)能從數(shù)據(jù)庫中獲取虛擬機(jī)(O1,P1)的數(shù)據(jù),并和虛擬機(jī)(O1,P1)一樣對外提供服務(wù)。虛擬機(jī)根據(jù)當(dāng)前服務(wù)器的負(fù)載,選擇θvp值最大的服務(wù)器進(jìn)行輪換,并要求request,即當(dāng)前服務(wù)器剩余容量大于要輪換的虛擬機(jī)體積。
圖3 虛擬機(jī)輪換方法Fig.3 Virtual machine rotation method
算法1基于輪換策略的異構(gòu)云多維資源分配算法
本文根據(jù)服務(wù)器利用率指標(biāo)來解決虛擬機(jī)布局問題。在資源分配時根據(jù)當(dāng)前服務(wù)器的負(fù)載情況以及資源利用率來選擇虛擬機(jī)的放置位置。對虛擬機(jī)遍歷所有的服務(wù)器,通過式(5)計(jì)算θvp值,θvp=[θvp(i,1),θvp(i,2),…,θvp(i,j)]。將虛擬機(jī)部署到θvp值最小的服務(wù)器上,此時應(yīng)注意服務(wù)器的負(fù)載情況,若服務(wù)器資源剩余量小于虛擬機(jī)資源請求,則選擇θvp第二小的服務(wù)器上,依次類推,直到能成功部署虛擬機(jī)為止。若資源池中有虛擬機(jī)需要輪換,服務(wù)器的負(fù)載狀態(tài)要同時考慮輪換的虛擬機(jī)體積和部署的虛擬機(jī)體積。若資源池中無虛擬機(jī)需要輪換,服務(wù)器的負(fù)載狀態(tài)僅考慮要部署的虛擬機(jī)體積。
1)時間復(fù)雜度分析。當(dāng)初次部署虛擬機(jī)時,沒有虛擬機(jī)進(jìn)行輪換。n個虛擬機(jī)遍歷m個服務(wù)器,并選取最佳θvp選擇服務(wù)器,時間復(fù)雜度為O(mn)。當(dāng)有虛擬機(jī)進(jìn)行輪換且輪換個數(shù)為w時,輪換的時間復(fù)雜度為O(wn)。
2)安全性分析。探測攻擊是攻擊者常用的一種攻擊手段。攻擊者通過向用戶發(fā)送帶有惡意網(wǎng)址或附件的電子郵件來收集有關(guān)目標(biāo)網(wǎng)絡(luò)信息,并根據(jù)收集到的信息來判斷用戶的操作系統(tǒng),然后利用該操作系統(tǒng)的漏洞發(fā)動攻擊。對于攻擊者來說,每次無論是否攻擊成功,都能獲得用戶的操作系統(tǒng)類型,并為下次攻擊做準(zhǔn)備。攻擊成功率如式(12)所示:
其中,P表示虛擬機(jī)被攻擊成功的概率,V表示虛擬機(jī)操作系統(tǒng)的種類,n表示攻擊者發(fā)動的攻擊次數(shù),探測攻擊最多發(fā)動2 次攻擊就一定能攻擊成功。輪換策略增大了攻擊者的攻擊難度,使得攻擊者無法根據(jù)上一次探測到的信息來判斷用戶的操作系統(tǒng)。
本文實(shí)驗(yàn)在Intel?CoreTMi7-4790 CPU 3.6 GHz,16 GB RAM 的主機(jī)上進(jìn)行,基于輪換策略的多維異構(gòu)裝箱算法采用C++語言編程實(shí)現(xiàn),并利用Matlab工具對實(shí)驗(yàn)結(jié)果進(jìn)行分析。攻擊者已知的操作系統(tǒng)漏洞和防御者操作系統(tǒng)具有的漏洞都服從[0,11]的均勻分布,攻擊手段采用探測攻擊。每個實(shí)驗(yàn)進(jìn)行100 次蒙特卡洛仿真,保證誤差在合理范圍內(nèi)。
本文通過通用漏洞披露(Common Vulnerability Enumeration,CVE)公布的數(shù)據(jù),獲取了11 種操作系統(tǒng)在1994 年—2017 年被公開的所有漏洞。這11 種操作系統(tǒng)分別是OB(OpenBSD)、NB(NetBSD)、FB(FreeBSD)、W03(Windows Server 2003)、W08(Windows Server 2008)、W12(Windows Server 2012)、U(Ubuntu)、D(Debian)、R(Redhat)、OS(OpenSolaris)和S(Solaris)。表2 所示為上述系統(tǒng)存在的漏洞數(shù)量以及不同操作系統(tǒng)間存在的共同漏洞數(shù)量。
表2 操作系統(tǒng)共同漏洞數(shù)量Table 2 Number of common vulnerabilities in operating systems
假設(shè)攻擊者已獲知的操作系統(tǒng)為Ii,該系統(tǒng)的漏洞數(shù)為V(Ii),用戶虛擬機(jī)的操作系統(tǒng)為Ij,用戶的操作系統(tǒng)漏洞數(shù)為V(Ij),攻擊者已知的漏洞和用戶虛擬機(jī)間的操作系統(tǒng)共同漏洞數(shù)為V(Ii,Ij)。用戶虛擬機(jī)被攻擊成功的概率為:
仿真實(shí)驗(yàn)1不同維度下服務(wù)器資源利用率的對比實(shí)驗(yàn)。本實(shí)驗(yàn)分別對10 臺服務(wù)器、50 個虛擬機(jī)和20 臺服務(wù)器、100 個虛擬機(jī)這兩種組合進(jìn)行分析。對比這兩種組合中不同維度下的服務(wù)器資源利用率情況。實(shí)驗(yàn)結(jié)果如圖4 所示。
圖4 不同維度下服務(wù)器資源利用率對比Fig.4 Comparison of server resource utilization in different dimensions
從圖4 可以看出,對于10 臺服務(wù)器和50 個虛擬機(jī)的裝箱實(shí)驗(yàn),不同維度的服務(wù)器資源利用率不同,隨著維度的升高,虛擬機(jī)的資源利用率逐漸降低。在2 維時資源利用率為0.990 0,在3 維時資源利用率為0.989 7,在5 維時資源利用率為0.988 7;對于20 臺服務(wù)器和100 個虛擬機(jī),在2 維時資源利用率為0.981 5,在3 維資源利用率為0.978 4,在5 維時資源利用率為0.967 9。通過以上實(shí)驗(yàn)分析結(jié)果可以看出,隨著維度的增加,服務(wù)器的資源利用率會降低。
仿真實(shí)驗(yàn)2不同異構(gòu)程度的裝箱對比實(shí)驗(yàn)。實(shí)驗(yàn)設(shè)置10臺服務(wù)器、50個虛擬機(jī)進(jìn)行裝箱。對異構(gòu)程度不同的虛擬機(jī)與服務(wù)器組合進(jìn)行對比分析。4 組組合分別是:同構(gòu)服務(wù)器,同構(gòu)虛擬機(jī);同構(gòu)服務(wù)器,異構(gòu)虛擬機(jī);異構(gòu)服務(wù)器,同構(gòu)虛擬機(jī);異構(gòu)服務(wù)器,異構(gòu)虛擬機(jī)。將本文所使用的基于最大利用率策略與輪流放置策略、隨機(jī)放置策略進(jìn)行對比,如圖5所示。
圖5 服務(wù)器異構(gòu)裝箱資源利用率對比Fig.5 Comparison of server heterogeneous packing resource utilization
從圖5 可以看出:當(dāng)服務(wù)器與虛擬機(jī)都同構(gòu)時,3 種策略下的服務(wù)器平均資源利用率相同,均為0.990 0;當(dāng)服務(wù)器同構(gòu)、虛擬機(jī)異構(gòu)時,基于最大利用率策略與輪流策略的資源利用率相同為0.993 9,隨機(jī)放置策略的服務(wù)器的資源利用率為0.979 1;當(dāng)服務(wù)器異構(gòu)、虛擬機(jī)同構(gòu)時,基于最大利用率策略下平均資源利用率最高為0.993 8,輪流策略次之,平均資源利用率為0.965 2,隨機(jī)策略最差,平均資源利用率為0.941 6;當(dāng)服務(wù)器異構(gòu)、虛擬機(jī)異構(gòu)時,基于最大利用率策略下平均資源利用率最高為0.993 8,輪流策略次之,平均資源利用率為0.940 7,隨機(jī)策略最差,平均資源利用率為0.848 2。以上實(shí)驗(yàn)結(jié)果表明,基于利用率裝箱策略在異構(gòu)裝箱問題中表現(xiàn)較好。
仿真實(shí)驗(yàn)3不同策略下服務(wù)器利用率的對比實(shí)驗(yàn)。實(shí)驗(yàn)分為兩組:一組是10 臺服務(wù)器,50 個虛擬機(jī);另一組是20 臺服務(wù)器,100 個虛擬機(jī)。對比兩組配置在不同虛擬機(jī)部署策略下的服務(wù)器資源利用率。
圖6 所示為基于利用率裝箱策略和輪流放置策略、隨機(jī)放置策略的資源利用率情況。
圖6 不同策略下服務(wù)器資源利用率對比Fig.6 Comparison of server resource utilization under different strategy
從圖6 可以看出:當(dāng)服務(wù)器為10 臺,虛擬機(jī)為50 個時,計(jì)算每臺服務(wù)器的負(fù)載情況。本文使用的基于利用率裝箱策略下服務(wù)器的平均資源利用率為0.993 6,差值為0.016 8,輪流放置策略的平均資源利用率為0.981 4,差值為0.051 1,隨機(jī)放置策略的平均資源利用率為0.841 0,差值為0.323 0。當(dāng)服務(wù)器為20 臺,虛擬機(jī)數(shù)量為100 個時,計(jì)算每臺服務(wù)器的負(fù)載情況?;诶寐恃b箱策略平均資源利用率為0.991 7,差值為0.028 4,輪流放置策略的平均資源利用率為0.981 6,差值為0.048 0,隨機(jī)放置策略的平均資源利用率為0.848 2,差值為0.471 4。以上實(shí)驗(yàn)分析可得,基于利用率裝箱策略能夠有效提高服務(wù)器的資源利用率并減小負(fù)載波動。
仿真實(shí)驗(yàn)4輪換前后服務(wù)器負(fù)載狀態(tài)對比實(shí)驗(yàn)。由于每個虛擬機(jī)創(chuàng)建的時間不同,每個虛擬機(jī)開始輪換的時間也不同,因此本實(shí)驗(yàn)單獨(dú)考慮每個虛擬機(jī)輪換情況。首先從服務(wù)器資源池中隨機(jī)選取10 個虛擬機(jī),依次進(jìn)行輪換并計(jì)算輪換前后服務(wù)器負(fù)載平衡變化。
如圖7 所示,輪換前服務(wù)器的平均負(fù)載平衡率為0.966 5,差值為0.055 3。進(jìn)行10 次輪換后服務(wù)器的平均負(fù)載平衡率為0.964 0,差值為0.068 5。通過分析實(shí)驗(yàn)數(shù)據(jù)可得,輪換后服務(wù)器的負(fù)載平衡率降低了0.002 5,不同服務(wù)器之間負(fù)載平衡率差值增大了0.013 5,輪換后服務(wù)器平均負(fù)載平衡降低了0.2 個百分點(diǎn),負(fù)載波動值增大了15.3 個百分點(diǎn)。
圖7 輪換前后負(fù)載平衡率變化情況Fig.7 Changes in load balance rate before and after rotation
仿真實(shí)驗(yàn)5有無輪換策略下虛擬機(jī)被攻擊的對比實(shí)驗(yàn)。本文實(shí)驗(yàn)隨機(jī)從操作系統(tǒng)庫中選取1 個操作系統(tǒng),從物理資源池中隨機(jī)選擇1 臺服務(wù)器來部署虛擬機(jī),操作系統(tǒng)服從[0,11]均勻分布。攻擊者對用戶虛擬機(jī)發(fā)動探測攻擊,并根據(jù)探測到的信息調(diào)整攻擊策略發(fā)動下一次攻擊。實(shí)驗(yàn)進(jìn)行100 次蒙特卡洛仿真,保證誤差在合理范圍內(nèi)。
圖8 所示為有無輪換策略下用戶操作系統(tǒng)被攻擊成功的概率的實(shí)驗(yàn)對比分析。
圖8 虛擬機(jī)被攻擊成功的概率對比Fig.8 Comparison of success rate of virtual machines being attacked
本文針對的是探測攻擊,在攻擊鏈中攻擊者先探測用戶的虛擬機(jī),根據(jù)從用戶探測到的信息來判斷用戶的操作系統(tǒng),然后根據(jù)掌握的操作系統(tǒng)漏洞對用戶發(fā)起攻擊。如圖8 所示,對于非輪換策略,攻擊者在首次發(fā)動攻擊時,有0.27 的概率能夠成功攻擊用戶,但是第一次攻擊結(jié)束后,攻擊者根據(jù)探測到的信息再次發(fā)動攻擊的成功率變?yōu)?。對于有輪換策略,用戶在攻擊者發(fā)動1 次探測的時間范圍內(nèi)進(jìn)行輪換,此時用戶的操作系統(tǒng)已經(jīng)改變,攻擊者已經(jīng)無法根據(jù)上次探測到的信息來確定用戶的操作系統(tǒng)。進(jìn)行100 次探測攻擊實(shí)驗(yàn),攻擊者的平均攻擊成功率約為0.183 6,輪換后虛擬機(jī)的安全性提升了18.5 個百分點(diǎn),實(shí)驗(yàn)結(jié)果表明,輪換策略能夠有效提高操作系統(tǒng)的安全性。
云計(jì)算中的資源分配通常被建模為裝箱問題。在裝箱問題中,靜態(tài)同構(gòu)的云計(jì)算環(huán)境會威脅到虛擬機(jī)安全,動態(tài)異構(gòu)的云計(jì)算環(huán)境更符合真實(shí)的資源分配情況,但也引入了新的資源分配問題。同時,由于影響資源分配的因素較多,傳統(tǒng)的裝箱方法無法解決多維的資源分配問題。針對以上問題,本文提出一種基于輪換策略的多維異構(gòu)云資源分配算法。將虛擬機(jī)和服務(wù)器資源抽象為向量,并給出一種利用率指標(biāo),根據(jù)利用率指標(biāo)為虛擬機(jī)選擇要部署的服務(wù)器。為提高虛擬機(jī)的安全性引入了輪換策略,給每個虛擬機(jī)設(shè)定一定的駐留時間,當(dāng)虛擬機(jī)在服務(wù)器上的駐留時間達(dá)到閾值或虛擬機(jī)狀態(tài)出現(xiàn)異常后,對虛擬機(jī)進(jìn)行輪換。實(shí)驗(yàn)結(jié)果表明,該算法在多維異構(gòu)的裝箱問題中具有較高的資源利用率,且能夠提高虛擬機(jī)的安全性。下一步研究方向?yàn)閷ふ易罴演啌Q周期,在保證安全性的前提下盡可能減少輪換產(chǎn)生的開銷。