网络资源迁移方法及装置转让专利

申请号 : CN201711365129.2

文献号 : CN108540405B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨家海俞荟庄奕方欣

申请人 : 清华大学

摘要 :

本发明提供了一种网络资源迁移方法及装置,所述方法包括:S1,若判断获知网络系统的胖树拓扑结构中存在扩容冲突进而需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型;S2,根据所述层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合;S3,当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合。本发明提供的一种网络资源迁移方法及装置,考虑了VM之间的带宽资源的限制,进行网络资源的迁移。使得网络资源的迁移过程中可以精确的分配网络资源,避免了某一实体设备发生扩容冲突。

权利要求 :

1.一种网络资源迁移方法,其特征在于,包括:

S1,若判断获知网络系统的胖树拓扑结构中存在扩容冲突进而需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型,所述胖树拓扑结构中的层级类型包括物理机层和交换机层;

S2,根据所述层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合,所述第一集合为对应的节点中所有未使用的虚拟机VM集合,所述第二集合为对应的节点中所有已使用的VM集合;

S3,当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合;

若判断获知存在扩容冲突的层级类型为所述物理机层,则S2具体包括:

将所述第一集合初始化为所述第一集合对应的节点中包含的所有VM,将所述第二集合初始化为空集;

将所述第一集合中的所有VM逐一迁移至所述第二集合,直至所述第二集合中的所有VM满足CPU资源限制条件和内存资源限制条件时,所述第二集合中的所有VM的CPU资源总量最大,且所述第二集合中的所有VM的内存资源总量最大;

其中,CPU资源限制条件为所述第二集合中的所有VM占用的CPU资源总量小于或等于所述第二集合对应的节点处的物理机的CPU资源容量,内存资源限制条件为所述第二集合中的所有VM占用的内存资源总量小于或等于所述第二集合对应的节点处的物理机的内存资源容量。

2.根据权利要求1所述的方法,其特征在于,S1中所述确定所述胖树拓扑结构中存在扩容冲突的层级类型具体包括:按所述物理机层至所述交换机层的顺序,遍历所述胖树拓扑结构的每一层级,以确定所述胖树拓扑结构中存在扩容冲突的层级类型。

3.根据权利要求1所述的方法,其特征在于,S1之前还包括:

获取资源需求量以及所述网络系统的资源剩余量;

若判断获知所述资源剩余量小于所述资源需求量,且所述网络系统的资源迁移惩罚量大于或等于资源配置不足惩罚量,则确定所述网络系统的胖树拓扑结构中存在扩容冲突需要进行资源迁移。

4.根据权利要求1所述的方法,其特征在于,所述第二集合的集合带宽限制条件具体为:所述第二集合中的所有VM的上行带宽之和小于或等于所述第二集合对应的节点处的物理机的上行带宽阈值,或所述第二集合为空集;

所述VM带宽限制条件为:

所述VM的输出带宽总和与输入带宽总和之差最大。

5.根据权利要求1所述的方法,其特征在于,若判断获知存在扩容冲突的层级类型为所述物理机层,则所述方法还包括:通过第一迁移函数将所述第一集合中的所有VM逐一迁移至所述第二集合,以及当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合;

所述第一迁移函数为:SettleInServer(v1,Wv1,Sv1),其中v1为所述物理机层中存在资源余量的节点,Wv1为节点v1对应的第一集合,Sv1为节点v1对应的第二集合。

6.根据权利要求5所述的方法,其特征在于,若判断获知存在扩容冲突的层级类型为所述交换机层,则S2具体包括:通过第二迁移函数将所述第一集合中的所有VM逐一迁移至所述第二集合;

所述第二迁移函数为:SettleInSwitch(v2,Wv2,Sv2,l),其中v2为所述交换机层中存在资源余量的节点,Wv2为节点v2对应的第一集合,Sv2为节点v2对应的第二集合,l为所述交换机层在所述胖树拓扑结构中的层级位置,l大于或等于1;

所述第二迁移函数对于所有存在资源余量的节点中的任一节点v2,遍历所述任一节点的所有子节点,对于任一子节点v2’,若判断获知所述任一子节点v2’所处的层级为物理机层,则调用函数SettleInServer(v2,Wv2,Sv2),将节点v2对应的Wv2中的所有VM逐一迁移至Sv2,直至Wv2为空集。

7.根据权利要求6所述的方法,其特征在于,若判断获知存在扩容冲突的层级类型为所述交换机层,则S2还包括:对于所有存在资源余量的节点中的任一节点v3,遍历所述任一节点的所有子节点,对于任一子节点v3’,若判断获知所述任一子节点v3’所处的层级为交换机层,则调用函数SettleInSwitch(v3’,Wv3,Sv3,l-1),将节点v3对应的Wv3中的所有VM逐一迁移至Sv3,直至Wv3为空集。

8.根据权利要求7所述的方法,其特征在于,所述第二集合的集合带宽限制条件具体为:所述第二集合中的所有VM的上行带宽之和小于或等于所述第二集合对应的节点处的物理机的上行带宽阈值;

所述VM带宽限制条件为:

所述VM的输出带宽总和与输入带宽总和之差最大。

9.一种网络资源迁移装置,其特征在于,包括:

确定层级类型模块,用于若判断获知网络系统的胖树拓扑结构中存在扩容冲突进而需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型,所述胖树拓扑结构中的层级类型包括物理机层和交换机层;

确定集合模块,用于根据所述层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合,所述第一集合为对应的节点中所有未使用的虚拟机VM集合,所述第二集合为对应的节点中所有已使用的VM集合;

迁移模块,用于当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合;

所述确定层级类型模块若判断获知存在扩容冲突的层级类型为所述物理机层,则所述确定集合模块具体用于:将所述第一集合初始化为所述第一集合对应的节点中包含的所有VM,将所述第二集合初始化为空集;

将所述第一集合中的所有VM逐一迁移至所述第二集合,直至所述第二集合中的所有VM满足CPU资源限制条件和内存资源限制条件时,所述第二集合中的所有VM的CPU资源总量最大,且所述第二集合中的所有VM的内存资源总量最大;

其中,CPU资源限制条件为所述第二集合中的所有VM占用的CPU资源总量小于或等于所述第二集合对应的节点处的物理机的CPU资源容量,内存资源限制条件为所述第二集合中的所有VM占用的内存资源总量小于或等于所述第二集合对应的节点处的物理机的内存资源容量。

说明书 :

网络资源迁移方法及装置

技术领域

[0001] 本发明涉及云计算和网络功能虚拟化技术领域,更具体地,涉及网络资源迁移方法及装置。

背景技术

[0002] 中间件,又称网络设备,是一种独立的系统软件或服务程序,分布式应用软件借助这种中间件在不同的技术之间实现资源共享。中间件通常位于客户端或服务器的操作系统内,管理计算机资源和网络通讯。中间件是连接两个独立应用程序或独立系统的软件,相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。
[0003] 有研究表明,中间件被广泛用来提高网络性能和增强网络安全。但是,中间件的大规模部署也带来了很多问题,例如中间件所需的专用硬件较为昂贵,协调管理比较复杂等等。为了解决这些问题,网络功能虚拟化(Network Function Virtualization,NFV)的概念被提出。NFV通过在标准的商用服务器上以软件的形式运行网络功能(Network Function,NF),进而将网络功能与专用硬件分离。
[0004] 目前,大多数对NFV概念的验证与早期实现都是在云终端的虚拟机(Virtual Machine,VM)上部署网络功能而完成的。NFV主要由三个部分构成:虚拟网络功能(Virtualized Network Function,VNF)、网络功能虚拟化基础设施(NFV Infrastructure,NFVI)和网络功能虚拟化管理与编排(NFVManagement and Orchestration,NFV MANO)。由于VNF的工作负载经常发生变化,这就要求底层的基础架构能够动态且灵活地处理这些变化。同时,不同的VNF消耗的资源也不相同,例如,入侵检测系统(Intrusion Detection Systems,IDS)/互联网协议群(Internet Protocol Suite,IPS)通常是CPU密集型的,需要消耗大量的计算资源,HTTP缓存消耗最多的是内存,而流量监控器的性能瓶颈则在于带宽。因而,在物理机上执行灵活高效的VNF资源分配是一个重大挑战。
[0005] 为了解决上述问题,已有学者通过创建和销毁云终端中的VM副本来提出NFV的弹性解决方案。然而,现有技术中的解决方案是同时将物理机对应的所有VNF上的虚拟机占用的CPU、内存和传输带宽同时进行扩大或缩小,这种解决方案是粗粒度的,这并不能根据需要对资源进行弹性配置,可能导致不必要的资源过度供应,因而使得资源利用率下降。同时,这些方案可能会违反服务级别目标(Service Level Object,SLO),导致VNF性能的下降。
[0006] 为云终端内的VNF中间件提供云资源配置方案需要解决两个问题:1)为了组成适当的服务链,需要动态地调整VNF占用物理机的CPU资源和内存资源,以及带宽资源;2)如果物理机上的资源余量不足以满足所有的VNF扩容,将产生VNF间的扩容冲突。
[0007] 对云资源的弹性配置以及对扩容冲突的解决主要基于以下两个模块:资源弹性配置(Resource Elastic Provisioning,REP)模块和扩容冲突处理(Scaling Conflict Handling,SCH)模块。这两个模块及其运行平台(Keyboard Video Mouse,KVM)和Open vSwitch之间的运行关系如图1所示。
[0008] REP模块使用libvirtvirtualizationAPI和sFlow监视各虚拟机的资源使用情况,并用动态多资源(Dynamic Multi-Resource,DMR)模型表示服务链的动态资源需求。同时,REP模块为单个VNF提供弹性的虚拟机资源,为一组由虚拟链路连接的VNF集群提供弹性的云终端的网络资源。REP模块对VM的缩容或扩容处理是基于采用CPU热插拔技术和内存ballooning技术的KVM管理程序(KVM hypervisor)来实现的,通过这两种技术,虚拟机可以在运行时更改所使用的vCPU数量和内存容量,即进行纵向伸缩(scale-up/down)。弹性的云终端网络资源由OpenvSwitch提供,它可以为VNF之间的虚拟链路提供动态的带宽保证。
[0009] 当物理机(Physical Machine,PM)不能满足VNF的扩容请求时(即发生扩容冲突时),SCH模块便将一些VNF迁移到PM之外,以解决资源不足的问题。其中,何时触发VNF迁移以及哪些VNF需要被迁移,这些问题都是由SCH模块决定的。虽然有相关研究学者关注云终端上网络资源的迁移方法,但均是是基于标准的虚拟集群(Virtual Colony,VC)模型的,并且不能够基于VNF之间的带宽需求进行迁移。

发明内容

[0010] 为克服上述问题或者至少部分地解决上述问题,本发明提供了一种网络资源迁移方法及装置。
[0011] 一方面,本发明提供了一种网络资源迁移方法,包括:
[0012] S1,若判断获知网络系统的胖树拓扑结构中存在扩容冲突进而需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型,所述胖树拓扑结构中的层级类型包括物理机层和交换机层;
[0013] S2,根据所述层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合,所述第一集合为对应的节点中所有未使用的虚拟机VM集合,所述第二集合为对应的节点中所有已使用的VM集合;
[0014] S3,当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合。
[0015] 另一方面,本发明提供了一种网络资源迁移装置,包括:
[0016] 确定层级类型模块,用于若判断获知网络系统的胖树拓扑结构中存在扩容冲突需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型,所述胖树拓扑结构中的层级类型包括物理机层和交换机层;
[0017] 确定集合模块,用于根据所述层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合,所述第一集合为对应的节点中所有未使用的虚拟机VM集合,所述第二集合为对应的节点中所有已使用的VM集合;
[0018] 迁移模块,用于当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合。
[0019] 另一方面,本发明还提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述方法。
[0020] 另一方面,本发明还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述方法。
[0021] 本发明提供的网络资源迁移方法及装置,考虑了VM之间的带宽资源的限制,进行网络资源的迁移。使得网络资源的迁移过程中可以精确的分配网络资源,避免了某一实体设备发生扩容冲突。

附图说明

[0022] 图1为现有技术中REP模块和SCH模块及KVM和OpenvSwitch之间的运行关系示意图;
[0023] 图2a为现有技术中拥有两条服务链的DMR模型的结构示意图;
[0024] 图2b为现有技术中拥有两条服务链的DMR模型的参数设置示意图;
[0025] 图3为本发明实施例提供的一种网络资源迁移方法的流程示意图;
[0026] 图4a为本发明实施例提供的TPMM,Sandpiper和Oktopus三种算法在增加vCPU数量或内存大小操作时的迁移开销的ECDF示意图;
[0027] 图4b为本发明实施例提供的TPMM,Sandpiper和Oktopus三种算法在增大带宽操作时的迁移开销的ECDF示意图;
[0028] 图4c为本发明实施例提供的TPMM,Sandpiper和Oktopus三种算法在增加vCPU数量或内存大小或带宽操作时的迁移开销的ECDF示意图;
[0029] 图5a为本发明实施例提供的将平台负载(vCPU数量或内存大小)从0%不断增加到50%的过程中,TPMM,Sandpiper和Oktopus三种算法的平均迁移开销的示意图;
[0030] 图5b为本发明实施例提供的将平台负载(带宽大小)从0%不断增加到50%的过程中,TPMM,Sandpiper和Oktopus三种算法的平均迁移开销的示意图;
[0031] 图5c为本发明实施例提供的将平台负载(vCPU数量、内存大小以及带宽大小)从0%不断增加到50%的过程中,TPMM,Sandpiper和Oktopus三种算法的平均迁移开销的示意图;
[0032] 图6a为本发明实施例提供的使用两种不同缩扩容方案(ElasticNFV和FreeFlow)部署Suricata时对CPU资源、内存资源和带宽资源的资源平均利用率示意图;
[0033] 图6b为本发明实施例提供的使用两种不同缩扩容方案(ElasticNFV和FreeFlow)部署Varnish时对CPU资源、内存资源和带宽资源的资源平均利用率示意图;
[0034] 图6c为本发明实施例提供的在Click上进行流量监测的测试结果示意图。

具体实施方式

[0035] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0036] 本发明在SCH模块中提供了两阶段最小迁移(Two-Phase Minimal Migration,TPMM)算法,该算法可捕获VNF之间的带宽需求,同时允许网络系统动态地重新配置虚拟机的CPU资源、内存资源和传输信息的带宽资源,并且只在满足一定条件下才进行虚拟机的迁移,以最大限度地降低成本。
[0037] 在介绍本发明的TPMM算法之前,首先介绍一下网络系统中的REP模块,REP模块主要用于为虚拟机提供动态和细粒度的网络资源配置。
[0038] REP模块主要有四个作用,一是构建三维建模关系(Dimensionally ModeledRelational,DMR)模型,二是进行CPU资源弹性配置,三是内存资源弹性配置,四是带宽资源弹性配置,以下分别具体说明。
[0039] REP模块中构建的DMR模型用于捕获由一组VNF形成的一个或多个服务链的实时资源需求。既可表达单个VNF的CPU资源需求和内存资源需求之外,DMR模型还可以表达VNF和VNF之间的带宽资源需求。这里需要说明的是,本发明中每个VM对应着一个VNF,为描述方便,以下均用VM来描述VNF。
[0040] 构建的DMR模型具体为:DMR(n,C,M,B)。其中,n为服务链中包含的VM数量,C是表示n个VM中所有VM对应的vCPU数量组成的向量,即C={c1,c2,…,cn},C中的每一个元素均表示一个VM对应的vCPU数量;M是表示n个VM的内存资源大小的向量,即M={m1,m2,…,mn},M中的每一个元素均表示一个VM对应的内存资源大小;B是服务链的带宽资源矩阵,B中的每一个元素表示每两个VM之间进行信息传输时的带宽资源。如图2所示为拥有两条服务链的DMR模型。图2a为结构图,图2b为每一虚拟机对应的参数图。在图2a中,虚拟机1(即Firewall,防火墙)、虚拟机2(即Proxy,代理服务器)和虚拟机4(即Web Server,网络服务器)构成服务链1(即Chain 1),虚拟机1(即Firewall,防火墙)、虚拟机2(即Proxy,代理服务器)、虚拟机3(即IPS,入侵防御系统)和虚拟机4(即Web Server,网络服务器)构成服务链2(即Chain2)。在图2b中,虚拟机1实现VNF1,对应的vCPU数量为C1,内存资源大小为M1;虚拟机2实现VNF2,对应的vCPU数量为C2,内存资源大小为M2;虚拟机3实现VNF3,对应的vCPU数量为C3,内存资源大小为M3;虚拟机4实现VNF4,对应的vCPU数量为C4,内存资源大小为M4;在虚拟机1与2之间的带宽资源为B12,在虚拟机2与4之间的带宽资源为B24,在虚拟机2与3之间的带宽资源为B23,在虚拟机3与4之间的带宽资源为B34。
[0041] REP模块对VM进行CPU资源弹性配置。REP模块将时间划分为多个窗口,设定每个窗口的时间长度,作为优选,可选用每个窗口的时间长度为1秒。以资源压强P(0≤P≤1)表示一个VM中的网络资源利用率,其中网络资源包括CPU资源、内存资源和传输带宽资源。对于CPU资源,当P超过利用率阈值Pthreshold时,通过向此VM添加vCPU来触发scale-up操作;当P小于 时,通过从此VM中移除额
[0042] 外的e个vCPU来触发scale-down操作;其中,n表示此VM中当前的vCPU数。这种由KVM支持的CPU弹性配置也称为CPU热插拔技术,可用于根据VM的要求在运行时垂直地放大或缩小VM的CPU资源容量。作为优选方案,利用率阈值Pthreshold可以设置为0.9。
[0043] REP模块对VM进行内存资源的弹性配置。与离散式的CPU资源弹性配置不同,内存资源的弹性配置是连续的。在对内存资源进行弹性配置的过程中,当scale-up操作被触发时,REP模块通过将VM中原有的内存资源容量上限乘以一个不小于1的比率αup来提高VM内存资源的资源容量上限。相反,当scale-down操作被触发时,REP模块通过将VM中原有的内存资源容量上限除以一个不小于1的比率αdown来降低VM内存资源的资源容量上限。这里需要说明的是,REP模块可以根据资源压强P的大小动态地决定scale-up比率αup。通常利用如下公式计算αup:
[0044]
[0045] 其中,αmax和αmin通常由云平台提供商进行调整。αmin是SLO被违反期间达到的最小的scale-up粒度;αmax表示在两个或三个时间窗口内能够扩展到的最大内存资源上限对应的比率。
[0046] 同样地,REP模块还根据VM内的内存资源的使用情况动态地确定scale-down的比率αdown。一般当P小于 时,内存资源的scale-down操作被触发,所以可将αdown的值设置为 本发明中通过KVM提供了一种在运行时改变访客虚拟机正在使用的内存资源大小的方法,该方法称为内存balloonling技术,与CPU热插拔技术类似。
[0047] REP模块对VM进行带宽资源的弹性配置。带宽资源的弹性配置也是连续的,与内存资源的弹性配置相似。REP模块在服务链中的两个VM之间创建一条VM到VM的路径,作为基本的单元。对于带宽资源的scale-up操作,通常使用比αmax和αmin这两个数大的数进行带宽资源的缩放。这是因为相比于内存资源的扩展,VM会更快地响应带宽资源的扩展。类似的,对于带宽资源的scale-down操作,REP模块可以预留一部分带宽资源用于避免拥塞,这部分带宽是物理链路容量和最大的物理链路使用量之间的差值。在本发明中,将预留的一部分带宽资源,即该差值选定为10%。通过在OpenvSwitch的顶层将带宽资源的弹性配置作为用户级进程来实现。由于OpenvSwitch的大多数控制逻辑均是通过直接的系统命令实现的,具有实时参数,实时参数取决于P和scale-up/down的比率,这将占用大约0.3%到0.6%的CPU资源。由于这部分CPU资源的占比非常小,所以本发明中忽略不计。
[0048] 本发明中SCH模块实现的功能主要是如何处理网络系统中的扩容冲突问题,以下进行具体说明。扩容冲突产生的原因通常是由于网络系统中的物理机的网络资源是一定的,而所有嵌入物理机内的虚拟机所占用的网络资源总量不得超过物理机的网络资源阈值,当网络系统获取到扩容请求需要在物理机内嵌入更多的虚拟机时,若接受该扩容请求会导致网络系统出现扩容冲突,即物理机内不能容纳扩容请求中包含的虚拟机的数量。
[0049] 此时,解决扩容冲突有两种方法:一是拒绝该扩容请求,二是接受该扩容请求,并从物理机中移除一些VM,以容纳扩容请求中包括的VM,这两种方法都可能导致SLO被违反。本发明旨在提供一种网络资源的迁移方法,具体确定物理机中的VM何时会触发迁移操作并确定迁移操作如何进行。本发明基于CloudScale技术,使用远程桌面协议(Remote Desktop Protocol,RDP)模块来预测PM上的资源需求量的总和,该模块可以预测扩容冲突的发生时间、严重程度和持续时间,进而确定PM中的VM何时会触发迁移操作。
[0050] 为更清楚的描述网络资源迁移方法,本发明中设置一个应用场景,即使用DMR模型的不同服务链需要被嵌入到给定的基板上,即存在连接一组物理机的网络系统,该网络系统由多个服务链组成,每条服务链上设置有多个虚拟机和物理机。在本发明中,服务链的表示方式是胖树(又称多根树),整个网络系统构成一个胖树拓扑结构。胖树拓扑结构可以在物理机之间提供多条路径,而根据多路复用和多路径路由协议,如果流量分配均匀,则多条物理链路可以被视为单条聚合链路。使用DMR模型的服务链利用嵌入图来描述每个VM和每个PM之间的嵌入关系。
[0051] 以下对本发明中可能用到的各种变量进行说明。
[0052] 由于DMR模型支持可随着时间动态调整网络系统中的服务链。具体来说,是“升级”或“降级”某条服务链DMR(n,C,M,B),这里所述的“升级”是指在服务链中移入某些VM,“降级”是指在服务链中移除某些VM。设“升级”或“降级”服务链DMR(n,C,M,B)后,该服务链具有针对CPU资源的参数向量α(其中,向量α中的任一元素αi≥0,i=1,…,n,αi表示向量α中第i个VM对应的CPU资源参数)、针对内存资源的参数向量β(其中,向量β中的任一元素βi≥0,i=1,…,n,βi表示向量β中第i个VM对应的内存资源参数),以及针对带宽资源的参数矩阵γ(其中,矩阵γ中的任一元素γij≥0,i=1,…,n,j=1,…,n,γij表示矩阵γ中第i个VM和第j个VM之间的传输带宽资源参数),也就是得到模型DMR(n,C×α,M×β,B×γ)。为了支持服务链的重配置,设置以下符号和定义:
[0053] 为网络系统的数据中心,其中 表示物理机PM的集合,表示物理链路的集合。
[0054] v=(N,L)为来自DMR模型的请求,N表示虚拟机VM的集合,L表示虚拟链路的集合。
[0055] R表示PM的不同资源种类(资源种类包括CPU资源和内存资源)。
[0056] 为物理机 关于资源种类r(r∈R)的容量。
[0057] 为虚拟机n(n∈N)关于资源种类r(r∈R)的容量。
[0058] 表示物理链路 的带宽资源容量。
[0059] bl表示虚拟链路l(l∈L)的带宽资源容量。
[0060] 为布尔量,1表示虚拟机n嵌入了物理机 0表示虚拟机n未嵌入了物理机
[0061] 为布尔量,1表示虚拟链路l嵌入了物理链路 0表示虚拟链路l未嵌入了物理链路
[0062] snl∈{0,1}为布尔量,1表示虚拟机n为虚拟链路l的源节点,0表示虚拟机n不是虚拟链路l的源节点,源节点是指存在扩容冲突的节点,即网络资源不足的节点。
[0063] dnl∈{0,1}为布尔量,1表示虚拟机n为虚拟链路l的目的节点,0表示虚拟机n不是虚拟链路l的目的节点,目的节点为源节点中的VM要迁往的节点。
[0064] 表示虚拟机n从物理机 到物理机 所需的迁移时间。
[0065] 表示虚拟机n从物理机 到物理机 所需的嵌入开销。
[0066] T表示网络系统的3级胖树拓扑结构,其中层级l=0、1、2、3。
[0067] Wv为节点v中未使用的虚拟机集合,即第一集合。
[0068] Sv为节点v中已使用的虚拟机集合,即第二集合。
[0069] bi[VM]表示指向特定VM的所有虚拟链路的带宽资源总和。
[0070] bo[VM]表示从特定VM指出的所有虚拟链路的带宽资源总和。
[0071] 在上述符号和定义的基础上,网络系统必须满足物理资源约束,即:
[0072]
[0073]
[0074] 其中,公式(1)表示对于网络系统中的任一物理机 嵌入至物理机 中的所有虚拟机关于资源种类r的容量需要不大于物理机 关于资源种类r(r∈R)的容量。公式(2)表示对于网络系统中的任一物理链路 嵌入至物理链路 中的所有虚拟链路的带宽资源容量需要不大于物理链路 的带宽资源容量。
[0075] 网络系统还必须满足CM放置方式的约束,即:
[0076]
[0077]
[0078] 其中,公式(3)表示对于网络系统中的任一虚拟机n,一定会被嵌入至一个物理机中。公式(4)表示对于网络系统中的任一虚拟链路l,一定会被嵌入至一个物理链路 中。
[0079] 网络系统还要求虚拟链路的嵌入满足每个服务链中每个源节点和目标节点对之间的流量约束,具体为:
[0080]
[0081] 网络系统的迁移时间通常由公式(6)计算得到。
[0082]
[0083] 其中, 表示虚拟机n从物理机 到物理机 所需的迁移时间;当虚拟机n已经嵌入物理机 时,即 时,该迁移时间为0。
[0084] 网络系统的嵌入开销 通常由公式(7)计算得到。
[0085]
[0086] 其中, 表示虚拟机n从物理机 到物理机 所需要的嵌入开销;当虚拟机n已经嵌入物理机 时,即 嵌入开销 保持不变。
[0087] 当网络系统的胖树拓扑结构中存在扩容冲突需要进行资源迁移时,需要满足如公式(8)所示的优化函数,即公式(8)为资源迁移需要达到的优化目标。
[0088]
[0089] 其中, 是权衡迁移时间 和嵌入开销 的惩罚函数。例如,若 (ε是一个常数,可根据需要进行设置,例如设置为5us),那么 否则, 将随着 的
增长而迅速增长。
[0090] 实际上,公式(8)表示的优化函数是一个NP-hard多维装箱问题,这是很难被解决的。因此,本发明根据公式(8),提供了一种网络资源迁移方法,即TPMM的启发式算法,以实现网络系统中的资源迁移。
[0091] 如图3所示,本发明一实施例中提供了一种网络资源迁移方法,包括:
[0092] S1,若判断获知网络系统的胖树拓扑结构中存在扩容冲突进而需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型,所述胖树拓扑结构中的层级类型包括物理机层和交换机层;
[0093] S2,根据所述层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合,所述第一集合为对应的节点中所有未使用的虚拟机VM集合,所述第二集合为对应的节点中所有已使用的VM集合;
[0094] S3,当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合。
[0095] 具体地,本发明中提供的网络系统的胖树拓扑结构中的层级类型包括物理机层和交换机层,物理机层包括多个物理机,每个物理机均为一个节点,交换机层包括多个交换机,每个交换机均为一个节点。上述物理机和交换机均属于实体设备,在每个实体设备上均嵌入有多个VM,每一VM可以实现一种网络虚拟功能VNF。当网络系统的胖树拓扑结构中存在扩容冲突需要进行资源迁移时,此时需要先确定存在扩容冲突的节点所处的层级类型,根据不同层级类型进行不同处理。这里,资源余量是指在该节点处还可以有可用资源,包括CPU资源、内存资源和带宽资源。
[0096] 胖树拓扑结构由底层至顶层分别为物理机层和多个交换机层。例如,对于一个4层胖树拓扑结构,层级l取值分别为0、1、2、3,其中l=0表示物理机层,l=1、2、3分别表示交换机层。
[0097] 根据扩容冲突存在的层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合。例如,在层级l上存在扩容冲突,则需要确定出胖树拓扑结构中存在资源余量的节点。需要说明的是,某一层级上存在资源余量的节点可以有多个,此时在确定对应的第一集合和第二集合时,需要按l=0、1、2、3的顺序遍历胖树拓扑结构中每一层级上的每一个节点。而且,需要优先确定每一层级中与存在扩容冲突的节点最近的节点的第一集合和第二集合。这是因为,胖树拓扑结构的层级越低(即处于底层),嵌入开销越小,同时,优先选取与存在扩容冲突的节点最近的节点进行处理,可以减小迁移时间。
[0098] 在确定第一集合和第二集合后,需要判断第二集合中的这些VM是否满足第二集合的集合带宽限制条件,如果满足,则不进行迁移,如果不满足第二集合的集合带宽限制条件,则需要进行迁移,即将第二集合中满足VM带宽限制条件的VM迁移至第一集合中。需要说明的是,这里的集合带宽限制条件对于物理机层的节点和交换机层的节点是不同的,针对于物理机层的节点,第二集合的集合带宽限制条件是指第二集合中的所有VM的上行带宽之和小于或等于所述第二集合对应的节点处的物理机的上行带宽阈值,或所述第二集合为空集;针对于交换机层中的节点,第二集合的集合带宽限制条件为指第二集合中的所有VM的上行带宽之和小于或等于所述第二集合对应的节点处的物理机的上行带宽阈值。也就是说,针对于交换机层时,集合带宽限制条件中不包括第二集合为空集的情况。
[0099] 所述VM带宽限制条件为所述VM的输出带宽总和与输入带宽总和之差最大。
[0100] 本发明中,在网络系统的胖树拓扑结构中存在扩容冲突需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型,并根据所述层级类型,确定所述胖树拓扑结构中每一存在资源余量的节点对应的第一集合和第二集合,所述第一集合为对应的节点中所有未使用的虚拟机VM集合,所述第二集合为对应的节点中所有已使用的VM集合;当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合。本发明提供的网络资源迁移方法,考虑了VM之间的带宽资源的限制,进行网络资源的迁移。使得网络资源的迁移过程中可以精确的分配网络资源,避免了某一实体设备发生扩容冲突。
[0101] 在上述实施例的基础上,S1中所述确定所述胖树拓扑结构中存在扩容冲突的层级类型具体包括:
[0102] 按所述物理机层至所述交换机层的顺序,遍历所述胖树拓扑结构的每一层级,以确定所述胖树拓扑结构中存在扩容冲突的层级类型。
[0103] 具体地,由于在确定对应的第一集合和第二集合时,需要按l=0、1、2、3的顺序遍历胖树拓扑结构中每一层级上的每一个节点,为了节约程序,本发明中可在确定胖树拓扑结构中存在扩容冲突的层级类型时,可直接按照物理机层至所述交换机层的顺序,同时遍历所述胖树拓扑结构的每一层级,以及每一层级上存在资源余量的每一节点,以同时确定出所述胖树拓扑结构中存在扩容冲突的层级类型,和存在资源余量的节点的第一集合和第二集合。这样可以进一步节约整个迁移过程的时间。
[0104] 在上述实施例的基础上,S1之前还包括:
[0105] 获取资源需求量以及所述网络系统的资源剩余量;
[0106] 若判断获知所述资源剩余量小于所述资源需求量,且所述网络系统的资源迁移惩罚量大于或等于资源配置不足惩罚量,则确定所述网络系统的胖树拓扑结构中存在扩容冲突需要进行资源迁移。
[0107] 具体地,本实施例中提供了一种判断网络系统的胖树拓扑结构中是否存在扩容冲突的方法,若存在扩容冲突则需要进行资源迁移,不存在则不需要进行资源迁移。具体的判断方法是首先获取网络系统的资源剩余量,即网络系统的胖树拓扑结构中各层级中的资源剩余总量。并基于资源需求请求,获取资源需求量。资源需求请求通常是指需要在胖树拓扑结构中的某一实体设备上嵌入VM,但是需要得到网络系统的授权是否允许嵌入,此时需要发送资源需求请求,在此请求中包含有资源需求量信息。资源需求量是指对内存资源、CPU资源以及传输带宽资源的需求量。
[0108] 当胖树拓扑结构中的资源剩余量小于资源需求量,且网络系统的资源迁移惩罚量大于或等于资源配置不足惩罚量时,即可确定网络系统的胖树拓扑结构中存在扩容冲突,且需要进行资源迁移。
[0109] 需要说明的是,S2中所述的存在资源余量的节点,是指该节点中包括了资源需求量中对应的VM的类型,即实现的VNF的类型。
[0110] 本实施例中,通过获取资源需求量以及资源剩余量,并比较资源剩余量和资源需求量的大小,以确定所述网络系统的胖树拓扑结构中是否存在扩容冲突,本实施例为确定胖树拓扑结构中存在扩容冲突提供了一种简单可行的方案。
[0111] 在上述实施例的基础上,若判断获知存在扩容冲突的层级类型为所述物理机层,则S2具体包括:
[0112] 将所述第一集合初始化为所述第一集合对应的节点中包含的所有VM,将所述第二集合初始化为空集;
[0113] 将所述第一集合中的所有VM逐一迁移至所述第二集合,直至所述第二集合中的所有VM满足CPU资源限制条件和内存资源限制条件时,所述第二集合中的所有VM的CPU资源总量最大,且所述第二集合中的所有VM的内存资源总量最大;
[0114] 其中,CPU资源限制条件为所述第二集合中的所有VM占用的CPU资源总量小于或等于所述第二集合对应的节点处的物理机的CPU资源容量,内存资源限制条件为所述第二集合中的所有VM占用的内存资源总量小于或等于所述第二集合对应的节点处的物理机的内存资源容量。
[0115] 具体地,这里所述的CPU资源限制条件和内存资源限制条件均是指嵌入至物理机中的所有VM占用的CPU资源总量以及内存资源总量必须在所处的物理机的CPU资源容量和内存资源容量的范围内。当物理机层中存在扩容冲突时,即说明物理机层中的某一节点处的物理机存在扩容冲突,首先,对胖树拓扑结构中的每一个存在资源余量的节点的第一集合和第二集合进行初始化,将第一集合初始化为对应节点中包含的所有VM,将第二集合初始化为空集。然后将第一集合中的所有VM逐一迁移至所述第二集合,直至第二集合中的所有VM满足CPU资源限制条件和内存资源限制条件时,第二集合中的所有VM的CPU资源总量最大,且所述第二集合中的所有VM的内存资源总量最大。
[0116] 这一过程可通过背包问题实现,即将第二集合中的所有VM满足CPU资源限制条件和内存资源限制条件下,将节点中的所有VM作为放入背包的物品,将节点中已使用的VM的CPU资源总量作为背包总重,将节点中已使用的VM的内存资源总量作为背包价值,也就是将问题转化为在已知最大背包总重的情况下,如何放置物品,可以使背包价值最大,选出的VM放入至第二集合,剩余的VM放入至第一集合。
[0117] 在上述实施例的基础上,若判断获知存在扩容冲突的层级类型为所述物理机层,即存在扩容冲突的节点位于物理机层,即层级l=0,则所述方法还包括:通过第一迁移函数将所述第一集合中的所有VM逐一迁移至所述第二集合,以及当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合;
[0118] 所述第一迁移函数为:SettleInServer(v1,Wv1,Sv1),其中v1为所述物理机层中存在资源余量的节点,Wv1为节点v1对应的第一集合,Sv1为节点v1对应的第二集合。
[0119] 具体地,利用第一迁移函数实现上述迁移过程,以解决物理机层的扩容冲突问题。首先通过第一次迁移过程,得到第一集合和第二集合,当第二集合不满足第二集合的集合带宽限制条件时,再进行第二次迁移过程,将第二集合中满足VM带宽限制条件的VM迁移至第一集合,最终第二集合中VM的数量即为该节点处可以容纳的VM数量,而不会导致该节点处产生扩容冲突。
[0120] 在上述实施例的基础上,若判断获知存在扩容冲突的层级类型为所述交换机层,则S2具体包括:
[0121] 通过第二迁移函数将所述第一集合中的所有VM逐一迁移至所述第二集合;
[0122] 所述第二迁移函数为:SettleInSwitch(v2,Wv2,Sv2,l),其中v2为所述交换机层中存在资源余量的节点,Wv2为节点v2对应的第一集合,Sv2为节点v2对应的第二集合,l为所述交换机层在所述胖树拓扑结构中的层级位置,l大于或等于1;一般l取值为1、2、3,即胖树拓扑结构中共有四层。
[0123] 所述第二迁移函数对于所有存在资源余量的节点中的任一节点v2,遍历所述任一节点的所有子节点,对于任一子节点v2’,若判断获知所述任一子节点v2’所处的层级为物理机层,则调用函数SettleInServer(v2,Wv2,Sv2),将节点v2对应的Wv2中的所有VM逐一迁移至Sv2,直至Wv2为空集。
[0124] 在上述实施例的基础上,若判断获知存在扩容冲突的层级类型为所述交换机层,则S2还包括:
[0125] 对于所有存在资源余量的节点中的任一节点v3,遍历所述任一节点的所有子节点,对于任一子节点v3’,若判断获知所述任一子节点v3’所处的层级为交换机层,则调用函数SettleInSwitch(v3,Wv3,Sv3,l-1),将节点v3对应的Wv3中的所有VM逐一迁移至Sv3,直至Wv3为空集。
[0126] 具体地,利用第二迁移函数来解决交换机层的扩容冲突问题。当交换机层处于层级l=1时,与此交换机层层级更低一层级的为层级l=0。也就是说,交换机层级上任一节点的子节点处于物理机层时,调用第一迁移函数来解决此交换机层的扩容冲突问题。当交换机层处于层级l>1时,与此交换机层层级更低一层级的至少为层级l=1。也就是说,交换机层级上任一节点的子节点也处于交换机层时,调用第一迁移函数来解决此交换机层的扩容冲突问题。然后对于子节点所处的交换机层,再进一步判断子节点的子节点是否处于物理机层,直至某一子节点处于物理机层时调用第一迁移函数,即可解决扩容问题。
[0127] 需要说明的是,利用第二迁移函数实现上述迁移过程,以解决交换机层的扩容冲突问题。首先通过第一次迁移过程,得到第一集合和第二集合,当第二集合不满足第二集合的集合带宽限制条件时,再进行第二次迁移过程,将第二集合中满足VM带宽限制条件的VM迁移至第一集合,最终第二集合中VM的数量即为该节点处可以容纳的VM数量,而不会导致该节点处产生扩容冲突。第一迁移函数和第二迁移函数均实现了两次迁移过程。
[0128] 在上述实施例的基础上,S3后还包括:判断第二集合中VM的数量与资源需求量之间的大小关系,当第二集合中VM的数量等于资源需求量,则整个迁移过程完毕。
[0129] 以下通过操作流程的角度具体介绍TPMM。
[0130] TPMM可以在资源充足的情况下接受和实现任何扩容;在资源不足的情况下可以解决扩容冲突问题。同时,该算法还需要达到如公式(8)所示的优化目标函数,即实现最短的迁移时间和最低的嵌入开销。为了优化VM的迁移时间,TPMM基于首次适应(first-fit)策略将需要迁移的VM移动到最近的目的节点。需要说明的是,TPMM需要在迁移时间和嵌入开销这两个指标之间做出权衡,通常考虑因素的优先级如下:(1)最高优先级为迁移请求,即尽可能地使VM迁移;(2)次高优先级为迁移时间;(3)最低优先级则是嵌入开销。
[0131] TPMM可以实现从DMR(n,C,M,B)到DMR(n,C×α,M×β,B×γ)的迁移过程。
[0132] S11,首先,计算胖树拓扑结构T上的资源余量,并获取资源需求请求r的资源需求量。其中资源余量a通过指令a=GetResourceAvailable(T)得到,资源需求请求r的资源需求量d通过指令d=GetResourceDemand(r)得到。
[0133] S22,比较资源需求量d和资源余量a的大小。若d≤a,则根据资源需求请求r更新T上服务链的资源上限,更新后算法结束;若d>a,则执行S33。
[0134] S33,判断QRP≤QM是否成立。其中,QRP表示资源配置不足惩罚量,QM表示资源迁移惩罚量。若QRP≤QM成立,则触发迁移操作,否则算法结束。
[0135] 其中,迁移操作具体为:初始化层级序号(即层级位置),即令l=0。随着扩容冲突处理过程的推进,每处理完一层,序号增加1,即l=l+1,直到l=3。
[0136] 在每一层进行扩容冲突处理时依次执行如下步骤:在遍历某一层l的所有满足条件的节点时,是按照距离源节点从近到远的顺序进行的。
[0137] 若当前所处的层级为物理机层,即l=0,则将Wv初始化为节点v中资源需求请求r所需的全部VM,并将Sv初始化为空集。调用函数SettleInServer(v,Wv,Sv)处理物理机层的扩容冲突。若当前所处的层级为交换机层,即l>0,则调用函数SettleInSwitch(v,Wv,Sv)处理交换机层的扩容冲突。
[0138] 若Sv中VM的数量等于资源需求请求r所需的VM的数量,则迁移完毕,算法结束;否则,若当前层级为l=3,则回滚到算法执行前的状态;否则,将v定义为v的父节点,更新Wv和Sv,并继续循环迁移,直至Sv中VM的数量等于资源需求请求r所需的VM的数量。
[0139] 其中,SettleInServer(v,Wv,Sv)用于在发生扩容冲突时,决定哪些VM可以被嵌入到特定的PM中。函数步骤如下:
[0140] 将当前场景视为一个背包问题,(Wv,Sv)=Knapsack(Wv,Sv)。
[0141] 使用启发式搜索的方法获得Sv的上行带宽资源b,即b=GetUpstreamBandwidth(Sv)。
[0142] 当上行带宽资源b不满足Sv的集合带宽限制条件且Sv不为空时,执行以下步骤:
[0143] 选择Sv中某一特定的VM,使得bi[VM]和bo[VM]的差值最大。
[0144] 从Sv中删除该特定的VM,并将该VM添加到Sv中去,再次调用b=GetUpstreamBandwidth,获取当前Sv的上行带宽资源。
[0145] 若新得到的b满足带宽限制条件,或变为空集,则返回(Wv,Sv)。
[0146] SettleInSwitch(v,Wv,Sv)用于在发生扩容冲突时,决定哪些VNF应被嵌入特定的交换机中。函数步骤如下:
[0147] 步骤1:若当前层级l满足l=1,则遍历v的所有子节点v’,对每个子节点依次进行如下操作:
[0148] 由于子节点v’所处的层级为物理机层,故调用函数SettleInServer(v,Wv,Sv)对(Wv,Sv)进行更新。若更新后的Wv变为空集,则结束步骤1,执行步骤3。
[0149] 步骤2:若当前层级不满足l=1,则遍历v的所有子节点v’,对每个子节点依次进行如下操作:
[0150] 调用函数SettleInSwitch(v’,Wv,Sv,l-1)对(Wv,Sv)进行更新。若更新后的Wv变为空集,则结束步骤2,执行步骤3。
[0151] 步骤3:获取Sv的上行带宽资源,即b=GetUpstreamBandwidth(Sv)。
[0152] 步骤4:若b不满足Sv的集合带宽限制条件,遍历Sv中的每一个VM,对每个VM进行如下操作,直到b满足集合带宽限制条件后返回(Wv,Sv)。
[0153] 从Sv中删去该VM,并将该VM添加到Wv中去。
[0154] 以下对TPMM算法的性能进行测试:
[0155] 采用模拟器粗粒度地模拟多租户网络系统,该模拟器使用3胖树拓扑结构。网络系统中包括1个核心交换机,20个聚合交换机,400个ToR交换机和16000个服务器,其超额订购率(oversubscriptionrate)为4,使用具有相同的CPU资源(12个vCPU)、内存资源(32GB)和带宽资源容量(1Gbps)的PM进行实验。其中,PM、ToR交换机和聚合交换机的上行带宽资源分别为1Gbps,10Gbps和50Gbps。
[0156] 根据泊松过程,新的DMR请求的到达率为0.36。根据平均值为3600s的指数分布,选择每个服务链的生命周期。默认情况下,VM的CPU资源、内存资源和带宽资源分别从平均值为4vCPU、8GB和100Mbps的指数分布中选择。为了将选择出的这些VM动态地添加到DMR请求中去,使用六个附加的泊松过程,它们连续地选择服务链进行缩容和/或扩容。
[0157] TPMM算法允许通过增加其当前位置的VM之间的带宽以及通过扩展VM的vCPU数量和内存大小来扩展现有服务链。若本地资源不足以满足请求并且触发了迁移操作,便可以使用TPMM算法进行VM的重新嵌入。
[0158] 为了理解TPMM算法的贡献,对TPMM算法与Sandpiper算法进行了测试比较。Sandpiper算法使用贪心算法思想,将VM迁移到可容纳该VM的负载最小的PM中去。该算法只能处理CPU和内存扩展的请求,同时也对TPMM算法与Oktopus算法进行了比较。
[0159] 图4绘制了三种算法(TPMM,Sandpiper和Oktopus)在进行三种不同操作时的迁移开销的经验累积分布函数(ECDF)。图4a对应着增加vCPU数量或内存大小操作,图4b对应着增大带宽操作,图4c对应着增加vCPU数量或内存大小或带宽操作。图4的三个图中横坐标均为迁移成本,纵坐标均为ECDF。
[0160] 例如,如图4b所示,TPMM的表现接近但比Sandpiper好,并且远远优于Oktopus。TPMM和Sandpiper可以满足迁移少于20%内存大小的请求的35%,而Oktopus只能满足同等情况下的请求的大约8%。
[0161] 对TPMM算法进行灵敏度研究。通过改变网络系统负载的大小,以研究不同网络系统负载对TPMM算法的影响。
[0162] 图5展示了将网络系统负载从0%不断增加到50%的过程中,三种算法的平均迁移开销。由图5所示,一般来说,对于TPMM和Sandpiper算法的平均迁移开销,网络系统负载的影响并不显著,然而,随着网络系统负载的增加,Oktopus的平均迁移成本逐渐下降,因为使用first-fit策略增加网络系统负载将会简化基板的结构,从而减少开销,带来更好的性能。但从整体上看,可以明显发现,当改变网络系统负载时,TPMM在平均迁移开销方面显著优于其他两种算法。
[0163] 接着,采用小型的原型方法对TPMM算法进行测试。测试的目标是:(1)相比于横向扩展NFV(即scale in/out),TPMM算法能够提供更加有效的对资源的利用;(2)相比于横向扩展NFV,TPMM算法具有更短的完成时间。在由7台PM组成的小型网络系统实验台上对TPMM算法进行测试。将OpenStack软件(Kilo版本)部署到包含1个控制器节点和6个计算节点的网络系统中去。每个服务器有两个2GHz的Intel Xeon E5-2620 CPU和16GB的内存,每个VM有一个vCPU,1GB的内存和500MB的带宽。
[0164] 在以下这种情况下验证ElasticNFV的上述目标:某特定VM Z以两种不同的缩放方式处理由VM X发送的流量。在VM Z上分别部署了三个VNF(Suricata,Varnish和流量监控)。随着流量变化,系统调整VM Z的vCPU数量和内存大小以及VM X与Z之间的带宽。将ElasticNFV与FreeFlow(一种横向缩扩容方案)进行实际工作负载的比较。
[0165] 图6a显示了两种不同缩扩容方案(ElasticNFV和FreeFlow)部署Suricata时对CPU资源、内存资源和带宽资源的资源平均利用率。在本实验中,VM X将发送18GB的工作负载。ElasticNFV可以实现66.9%的CPU资源利用率,而FreeFlow的CPU资源利用率为58.9%。这两个结果非常接近,因为添加或删除vCPU数量(纵向缩扩容)等同于添加或删除VM副本(横向缩扩容)。同时,这两种方案的内存利用率都为16.3%,因为内存使用量与工作负载无关。
另外,ElasticNFV可以实现71.7%的带宽资源利用率,而FreeFlow仅仅达到了24.1%,这说明在带宽资源利用方面,ElasticNFV显著优于FreeFlow。而且,采用ElasticNFV算法的完成时间比Suricata快13.3%。
[0166] 图6b显示了使用两种不同缩扩容方案(ElasticNFV和FreeFlow)部署Varnish时对CPU资源、内存资源和带宽资源的资源平均利用率示意图。Varnish HTTP缓冲是一种内存密集型的VNF,仅消耗少量的CPU和带宽资源,因此这两种不同缩扩容方案的CPU和带宽利用率非常接近,而内存利用率则大大不同。ElasticNFV可实现82.0%的内存资源利用率,而FreeFlow的内存资源利用率仅能达到55.2%,由此可见,在本次实验中ElasticNFV的性能优于FreeFlow。
[0167] 图6c显示了在Click上进行流量监测的测试结果。ElasticNFV可以达到36.3%的CPU资源利用率,而FreeFlow则可以达到35.6%的CPU资源利用率。同时,这两种缩扩容方案的内存资源利用率都接近5.5%,因为在这种情况下,内存资源使用量与工作负载无关。然而,ElasticNFV可实现79.6%的带宽资源利用率,而FreeFlow的带宽资源利用率为60.1%。
[0168] 由上述测试可见,本发明提供的TPMM的性能很高,且达到了预期目的。
[0169] 在上述实施例的基础上,本发明另一实施例提供了一种网络资源迁移装置,包括:
[0170] 确定层级类型模块,用于若判断获知网络系统的胖树拓扑结构中存在扩容冲突需要进行资源迁移时,确定所述胖树拓扑结构中存在扩容冲突的层级类型,所述胖树拓扑结构中的层级类型包括物理机层和交换机层;
[0171] 确定集合模块,用于确定所述层级类型对应的层级中每一存在资源余量的节点对应的第一集合和第二集合,所述第一集合为对应的节点中所有未使用的虚拟机VM集合,所述第二集合为对应的节点中所有已使用的VM集合;
[0172] 迁移模块,用于当所述第二集合不满足所述第二集合的集合带宽限制条件时,将所述第二集合中满足VM带宽限制条件的VM迁移至所述第一集合。
[0173] 具体地,本实施例中各模块的操作流程与上述方法类实施例是一一对应的,本实施例在此不再赘述。
[0174] 最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。