宋 娟,潘 欢,马 晓
(1.宁夏大学 物理与电子电气工程学院,银川 750021;2.宁夏大学 宁夏沙漠信息智能感知重点实验室,银川 750021;3.中国烟草总公司职工进修学院 信息中心, 郑州 450008)
近年来,大规模节能云数据中心的构造与使用成了政府和各大IT企业越来越重视的问题[1-4]。虚拟化及虚拟机迁移技术使得云数据中心的客户端可以很好地降低云客户端下载时间和节省能量消耗,但是相关研究表明,减少下载时间的维护成本会急剧增加,主要是因为云数据中心面临着拒绝服务攻击的威胁[5]。
虚拟机在线迁移过程中,虽然可以提高服务质量(quality of servive,QoS),节省云端的能量消耗,但是存在着大量的被网络攻击的风险,例如跨站脚本攻击与边信道攻击等。在云数据中心的虚拟机迁移或者合并过程中,构造安全架构提高虚拟机迁移的安全级别是一个新的研究热点[6]。本文利用隔室隔离技术(compartment isolation technique,CIT),提出了基于安全检测的虚拟机迁移策略,该方法可以很好地降低云数据中心中的安全风险,包括恶意代码和病毒的传播。
目前学术界利用虚拟机动态迁移来节省云数据中心的能量消耗,构建安全的云计算环境,目前,研究方向主要分为3大类:①是单纯的虚拟机迁移策略,没有利用相关智能算法进行优化,例如文献[7-8];②是采用贪心算法、遗传算法等来进行优化的虚拟机分配与迁移策略,例如文献[9-14];③是以Cloudsim模拟器平台中的迁移策略为主线的虚拟机分配策略及其后续的相关研究[15-17]。后续还有带温度感知的虚拟机迁移策略[18-20],这些文献中的内容大多参考了Cloudsim项目的研究思路与测试条件。
上述这些研究的主要目的是应用虚拟机动态迁移技术实现云端服务的负载均衡和容错,最终是为了改善云端的服务质量QoS, 节省服务器的能量消耗,减少服务等级协议(service level agreement, SLA)违规, 减少虚拟机迁移次数。虚拟机在迁移时考虑的物理资源使用情况的维度由早期的单一CPU使用率到现在多个维度的指标,甚至后面可能还有硬件因素,软件因素,网络带宽因素,网络设备接口能量消耗等。上述研究并没有考虑到云平台的安全问题,没有安全检测功能。当前为了构造绿色云计算环境,节省云数据中心的能量消耗已经成了趋势,所以虚拟机迁移的安全问题具有很大的挑战,例如边信道攻击和共享厄运风险攻击等[21-22]。
云计算平台的多租赁特性容易暴露CPU的缓存容量、时钟分析和跟踪硬件资源。边信道对外开放,很容易观察到这些信息或者利用隐藏信道来发送数据。攻击者使用缓存利用率等方法很容易探测到服务器上的目标虚拟机,当虚拟机的目标实例和恶意实例在同一个物理节点时,监视到CPU、内存、网络带宽和其他的行为可能导致交叉虚拟机信息泄露。
另一方面,一些研究表明,针对Web网站上的攻击行为占有的网络攻击比例超过60%。其中,SQL注入攻击和跨站脚本攻击又占用了大部分,这就使得面向互联网虚拟机迁移的安全保护变得更加复杂。云服务提供商在提供资源共享服务的时候,云服务器最容易受到分布式拒绝服务攻击,云计算环境下的效率计算对此类攻击十分脆弱。云环境下的拒绝服务攻击还可以导致操作系统内核损坏,这种损坏可以影响到虚拟机级别。
考虑到上面的安全风险,必须采取措施来保证云数据中心的虚拟机迁移安全。最简单的办法是划分虚拟机的安全级别,然后在虚拟机迁移过程中处理这些安全级别,判断其是否可以迁移。本文方法就是基于上述考虑,同时兼顾考虑云数据中心的能量节省,本文方法也属于Cloudsim项目的后续研究,大部分算法与性能评价指标都是参考Cloudsim项目的内容,除考虑节能目标外,增加了带安全检测的功能。
隔室隔离技术是一种用来改善网络与系统安全的有效技术,在Java等程序设计语言都利用这种技术来防止远程用户访问,限制其执行环境。最常见的还有操作系统的内核隔离,在这种隔离中,内核层和应用层是互相隔离的。虚拟机的隔离也是一种有效的方法来改善云数据中心的整体安全级别,降低网络攻击的风险。共享厄运是云安全方面的概念,假设一台虚拟机被授权的非法攻击者隔离或者锁定,那么同一台物理节点的其他虚拟机同样将被隔离或者锁定,这是资源共享带来的厄运。如果隔离级别越高,那么边信道上的非法入侵及监控者也将越少;隔离技术的最大好处是可以防止恶意代码和僵尸网络的传播,可以很好地避免边信道攻击和传染到目标主机。
本文基于安全检测的虚拟机迁移策略就使用了隔室技术。隔室技术利用了病毒传染(susceptible infected recovered, SIR)模型,SIR是计算生物学中分析疾病传播的一种模型,他被广泛应用到计算机病毒,恶意代码及僵死网络之中[23]。
SIR模型应用于安全感知的虚拟机迁移如图1,S表示易感染的虚拟机数量,I表示所有有机会传播与访问其他虚拟机的虚拟机数量,R表示整体已经恢复或者移出的虚拟机数量。
图1 SIR模型应用于安全感知的虚拟机迁移Fig.1 Application of SIR model in secure aware virtualmachine migration
给定时间t,易感染的虚拟机数量定义为S(t), 感病者虚拟机数量定义为I(t),已恢复的虚拟机数量定义为R(t),所有的虚拟机数量定义为N。根据SIR模型,有
S(t)+I(t)+R(t)=N(t)
(1)
当t=0时,有
S(0)≈N
(2)
从R到S的概率是a,从S到I的概率是b,从I到R的概率是c。用S′,I′ ,R′分别表示对应的动态虚拟机数量,根据SIR模型,可得
S′=aR-bSI
(3)
I′=bSI-cI
(4)
R′=cI-aR
(5)
S′+I′+R′=0
(6)
当没有虚拟机被感染,或者没有恶意代码传播的时候,I′=0, 表示脱毒平衡。如果I′>0,表示系统中有被感染的虚拟机。
定义一个阈值边界,用来判断是否有恶意代码入侵,也可以将其定义为基本产生数,用符号R0表示为
(7)
当基本产生数在I′=0的时候也存在着脱毒平衡状态。R0表示了病毒的传播潜力,如果R0<1,表示没有进行传播;如果R0>1,表示在云数据中心中有病毒迅速的传播;如果R0=1,表示云数据中心中的病毒传播(从I到S)处于稳定的控制阶段,具有一定的概率特性。
根据SIR模型,如果利用隔室技术来隔离被感染的虚拟机,那么病毒平衡就会改变,如果一恶意代码能够被感染到虚拟机的概率为P,那么所有的虚拟机能够被感染的概率则为Pn,如果有m个恶意代码,那么虚拟机能够被感染的概率则为Pmn。因此,所有的虚拟机能够被m个恶意代码所感染的概率为
P(s)=Pmn
(8)
如果有r个区域,那么有
(9)
由(8)—(9)式得
P(s)>P(s/r)
(10)
从 (10) 式可以看出,采用隔室技术来分离虚拟机可以降低计算机病毒交叉感染的可能性,因此,虚拟机在线迁移的时候,本文方法可以降低云数据中心的安全风险。
构造一种安全的虚拟机迁移策略,有下面4方面因素需要考虑。
1)物理主机超负载检测;
2)物理主机低负载检测;
3)虚拟机选择算法;
4)虚拟机放置算法。
物理主机的超负载或者低负载可以通过观察他的资源使用状态来判断,如果CPU的使用效率超过90%可以认为是超负载,低于10%可以认为是低负载。在这个时候,该物理节点的这台虚拟机将被选择出来,同时放置到另外一台正常负载的物理节点之上。本文提出了带安全检测的虚拟机选择算法(security based selection,SBS)和带安全检测的虚拟机放置算法(security based placement,SBP)。
与CloudSim中项目不同的是,SBS考虑了虚拟机的安全级别,如果一台物理主机被标记具有安全级别, 面临着1—10级安全威胁,那么该物理主机上具有相同安全级别的虚拟机将一直驻留,不会被选择。其他的虚拟机将在下一迁移周期进行迁移。在CloudSim项目中,已经有的虚拟机选择算法包括下面几种。
1)最大关联选择方法 (maximum correlation MC),即选择同一台物理主机上与CPU使用效率有最高关联度的虚拟机作为对象;
2)最小迁移时间选择方法(minimum migration time,MMT),即迁移一台在最短时间内能够完成的虚拟机作为选择对象;
3)最小使用效率选择办法(minimum utilization,MU),即对一台具有最小使用效率的虚拟机进行迁移;
4)随机选择策略(random selection,RS),即在物理服务器上随机选择一台虚拟机进行迁移。
虚拟机迁移的具体过程是先选择,然后放置。在选择阶段,本文带安全检测的SBS选择方法在RS, MMT, MC, MU算法中增加了安全性检查,增强了算法的安全性。SBS算法的伪代码如下。
算法1 SBS算法
Input: host
Output:vmsToMigrate
1 migratableVMs=getMigratableVms(host)
2 minMetric=MAX
3 for each vm in migratableVMs do
4 if vm is not in migration then
5 metric=vm.getRam()
6 if (metric 7 if hostSecurityLevel!=vmSecurityLevel then 8 vmToMigrate=vm 9 end if 10 end if 11 end if 12 end for 13 return vmsToMigrate SBS算法的输入为物理主机,输出为被选择好的虚拟机列表。每台物理主机上可能有多台将要迁移的虚拟机,SBS可以从这里选择出最合适的虚拟机。算法开始的时候,所有的候选虚拟机都被过滤,选择的标准是虚拟机为大内存容量。当一台虚拟机具有大的内存容量的时候,他将获得高的优先级。接下来,在SBS阶段,如果虚拟机和物理主机的安全级别不匹配,那么该虚拟机将被选择作为迁移的对象。在本算法中,完成了2个操作过程: 1)选择一台虚拟机进入隔离区,该隔离区内虚拟机和物理主机的安全级别是不相容的; 2)选择一台具有比较高内存容量的虚拟机,这样也可以降低迁移的时间。 CloudSim项目中,也提到几种虚拟机放置算法。 1)局部归约放置方法(local regression,LR); 2)鲁棒局部归约放置方法(local regression robust,LRR); 3)绝对中位差放置方法(median absolute deviation, MAD); 4)静态的资源使用效率阈值放置法(static threshold,THR)。 本文SBP算法在虚拟机放置算法(LR, LRR, MAD, THR)中进行了对应修改,也完成了安全检查,然后再将虚拟机放置到合适的物理节点之上。当各物理主机上的虚拟机被选择完成后,SBP算法开始工作。SBP算法通过迁移信息表来维护与虚拟机及其对应的物理主机信息。SBS算法的输出为被选择好的虚拟机列表,他将作为SBP算法的输入。 在SBP算法的处理过程中,物理主机将被测试,判断其是否与虚拟机的安全级别匹配,最后还要进行能量消耗情况判断,能量消耗有一个最大的设定值,SBP算法的伪代码如下。 算法2 SBP算法 Input: vmList, hostList Output:hostList 1 vmList.sortDecreasingUtilization() 2 for each vm in vmList do 3 minPower=MAX 4 allocatedHost=NULL 5 for each host in hostList do 6 if (hostSecurityLevel=vmSecurityLevel) then 7 if host has enough resources for vm then 8 Power=estimatedPower(vm,host) 9 if (Power 10 if (VMsInPM 11 allocatedHost=host 12 minPower=Power 13 end if 14 end if 15 end if 16 end if 17 end for 18 if allocatedHost!=NULL then 19 allocation.add(allocatedhost,vm) 20 end if 21 end for 22 return allocation SBP算法中estimatedPower()函数用来检测虚拟机迁移之后云数据中心的整体能量消耗,在第1次迭代过程中,该函数的返回值将和每台物理主机的能量消耗比较。在每次循环中,都可以选择出最小的能量消耗,也要完成安全级别的检查。 通过各种检查的虚拟机最终将进入物理节点的虚拟机分配表,当分配表构造完成,即完成虚拟机到物理主机的放置,这样虚拟机迁移过程的所有步骤就完成,在此过程中,虚拟机迁移的循环过程不停地执行,可以通过变量来控制虚拟机迁移循环的频率。 为了测试本文的基于安全检测的虚拟机迁移策略,本节使用Cloudsim模拟器。Cloudsim支持按照需求进行资源的配置,资源的管理,可以评测云数据中心中的能量消耗的相关算法,其他的模拟器往往不提供此功能。 本实验环境包括3种类型的场景,在模拟过程中,云数据中心都有不同类型的应用程序负载访问,同时评价基于安全检测的虚拟机迁移策略的性能变化情况。第1类工作场景就是在一个时间段内应用程序负载不断增加,可以称为基本负载测试。第2类工作场景是调整云数据中心的物理主机的数量,判断其可扩展性情况。第3类工作场景是测试云数据中心的能量消耗与SLA违规的情况。 仿真实验设置了800个物理节点和1052台虚拟机,这样就可以保证云数据中心的基本负载。通过比较物理主机的使用效率和其上的能量消耗情况,可以形成一张能量消耗表。表1为仿真实验CPU使用率和能量消耗之间的关系。能量模型使用的是SPEC模型,当然这也是Cloudsim项目中使用的能量模型,物理服务器中CPU使用率和能量消耗之间的关系是通过Cloudsim工具中的编码来完成的。 表1 基于资源使用效率的物理服务器能量消耗模型 实验中使用了2种类型的物理服务器,HP ProLiant G4 和HP ProLiant G5。根据表1中的数据可以看出,当CPU的使用效率从0%增加到100%时,能量消耗大约增加27%。模拟器物理节点的配置与虚拟机的配置情况如表2、表3。 表2 云数据中心中的物理节点配置 表3 虚拟机对资源的需求情况 在隔室隔离技术中,有多种类型的隔离级别,每类级别都可以用来隔离虚拟机,在对云数据中心的模拟中,虚拟机迁移周期设置为每小时一次,这种设置就意味着带安全检测的虚拟机的负载探测和虚拟机的迁移1 h运行一次,一共运行24 h。 图2为基本负载的仿真结果。图2纵坐标表示24 h内的能量消耗,横坐标表示了基于安全检测的隔离方法的级别。从图2可以看出,随着安全级别的提高,云数据中心的能量消耗相应有一定增加,安全级别从Level2提高到Level10,能量消耗大约只增加了1.8%,云服务提供商的能量消耗虽然有少量的增加,但降低了安全风险,以牺牲1.8%的能量消耗为代价,换取安全级别为10的云服务是值得的。 还可以观察到,在安全级别在Level6至Level8的时候,能量的消耗基本没有什么变化,这表明在整个虚拟机迁移的过程中,安全级别Level6至Level8是活动物理主机数量最稳定的时候,活动物理主机的数量是与云数据中心的总体能量消耗呈线性关系的[15],该结果也证明了安全级别越高,能量消耗越大,企业成本越高。 在可扩展的测试环境构造中,调整物理主机的数量,然后观察基于安全检测的虚拟机迁移策略的性能变化情况,对主机的数量进行2到3次调整。表4为可扩展性的测试环境。 图2 基本负载虚拟机迁移安全性能比较Fig.2 Load-based performance analysis of virtual machine migration security 表4 可扩展性的测试环境构造 图3为云数据中心的物理主机数量分别为1 000,2 000,3 000条件下系统的能量及安全级别变化的性能曲线。从图3可以看出,从没有使用安全策略的level 1到安全级别逐级提高至level 8,能量消耗有少量增加,这些少量增加的能量消耗对于虚拟机迁移过程中系统的安全级别来说是可以接受的。 随着安全级别的增加,在物理节点数量分别为1 000,2 000,3 000的情况下,云数据中心的整体能量消耗没有急剧增加。图3表明了能量消耗与安全虚拟机检测平衡的情况。当没有安全检测时,能量消耗很小,当隔离级别为Level2时,能量消耗突然上升,但是从Level3逐级增至Level10时,能量消耗处于稳定降低状态。值得注意的是,当物理主机数为3 000的时候,能量消耗却低于主机数为1 000与2 000时,这是因为很少的物理主机会产生保持隔离空间的开销。从另外一个角度分析,当1 000或者2 000台物理主机运行相同的工作负载时,他们需要更多开销用于产生维护隔离区域。从图3还可以看出,云数据中心的规模会影响系统的能量消耗。本文基于安全检测的虚拟机迁移策略是可扩展的,比较适合物理主机数目比较大的情形。 图3 物理主机数量为1 000,2 000,3 000能量消耗比较Fig.3 Energy consumption results of 1 000, 2 000, 3 000 physical nodes 本节将安全检测的策略应用到Cloudsim中多个与能量相关的虚拟机算法之中。随机选择某24 h内的工作负载进行测试。根据工作负载的特点,定义了1 000台虚拟机分布在800台物理主机之上,虚拟机的迁移时间间隔设置为1 h,即24 h内一共循环运行24次虚拟机迁移算法,一台物理服务器上最大允许运行8台虚拟机,物理服务器和虚拟机的资源配置情况与表2、表3的配置一样。性能比较对象为无安全检测的Cloudsim中的虚拟机选择及放置策略,他们分别是IRQ-MC迁移策略,MAD-MMT迁移策略,LLR-MMT迁移策略,LR-MU迁移策略, LR-MMT迁移策略和THR-MMT迁移策略. 在带安全检测的虚拟机SBS选择算法及SBP放置算法中,可以把Cloudsim中已有的各种能量感知算法结合起来,这样就形成了6种不同的测试方法,图4为测试结果。从图4可以看出,随着安全级别的增加,能量消耗也随着缓慢增加,从级别Level2提高到Level10,能量消耗增加大约为3%。 图4底部的2条曲线能量消耗比较低,他们分别表示带安全检测的THR-MMT与LR-MMT算法,这表明这2个组合性能比较好。可以得出下面2结论。 1)随着安全级别提高,能量消耗也随着增加,这是很正常的现象。 2)带安全检测的LR-MMT组合算法具有最好的安全性能,优于其他的能量感知迁移策略。 图4 基于安全检测的虚拟机迁移策略及能量消耗比较Fig.4 Energy consumption results of different security-baed virtual machine migration model Cloudsim项目中SLA违规的具体值计算表示为 SLAV=SLATAH*PDM (11) (11)式中:SLATAH表示CPU使用效率为100%的活动主机所占的比例;PDM代表整个系统因为虚拟机迁移后的性能降低值。 Cloudsim中用能量消耗与服务质量平衡指标 (energy and SLA violations, ESV)方法评价整个云数据中心的性能,ESV的计算公式为 ESV=E*SLAV (12) (12)式中:E是云数据中心的整体能量消耗;SLAV是 (11) 式的结果值。 表5为基于安全检测的虚拟机迁移的SLA违规与节能情况。从表5可以看出,带安全检测的Secure LR-MMT虚拟机迁移方法具有最低的SLA违规值和最低的ESV值,这种组合结果是值得云服务提供商参考的。 表5 安全检测的虚拟机迁移策略中的ESV性能比较 本文利用隔室技术,提出了云数据中心中基于安全检测的虚拟机迁移策略,面向绿色的云计算平台构造,降低了能量消耗,在一定程度上保证云数据中心不会受到常见的网络安全攻击。参考Cloudsim项目中的思路,实现了带安全检测的虚拟机选择算法SBS和虚拟机放置算法SBP。仿真结果表明:本文基于安全检测的虚拟机迁移策略比不带安全检测的算法会增加一定能量消耗,但安全性更高。本文的研究对政府和IT企业构造节能和安全的云数据中心具有一定参考价值。2.3 安全检测的虚拟机放置算法
3 仿真实验与性能分析
3.1 仿真实验概况
3.2 基本负载的仿真实验及性能分析
3.3 可扩展性的仿真及性能分析
3.4 节能与SLA违规仿真及性能分析
4 结 论