带宽保障的虚拟网络功能部署方法与流程

文档序号:11138408阅读:444来源:国知局
带宽保障的虚拟网络功能部署方法与制造工艺

本发明属于网络功能虚拟化和带宽保障的虚拟机部署技术领域,尤其涉及一种带宽保障的虚拟网络功能部署方法。



背景技术:

公有云数据中心对外向租户提供计算资源、存储资源和网络资源来满足其需求,而云计算与NFV(Network Function Virtualization,即网络功能虚拟化)的兴起也使得企业将自己的虚拟网络功能(VNF)部署在云数据中心中以降低成本并提高效率。在NFV场景下,租户的请求通常是SFC(Service Function Chaining,即服务功能链),如何对租户的SFC请求进行合理的带宽保障的部署,是当前网络研究的重要研究问题。

现有的VNF部署方法多采用弹性部署的策略,即数据中心动态的调节VNF实例的数量和放置位置来满足不同流量负载情况下的CPU和带宽需求。但是弹性部署策略存在两个问题。第一,弹性放置的策略很容易浪费大量的计算和带宽资源。因为VNF实例的放置位置是由当前流量负载决定,放置位置是不可预测的。不良的放置会使得流量需要走更长的路径,因此可能浪费更多的带宽。第二,弹性扩展策略会导致更多的虚拟机操作开销,包括虚拟机的启动、终止、迁移以及状态同步等。由于维持状态一致性的开销较大,虚拟机的迁移往往需要多达几秒钟的时间,这不仅引入了更多的流量而且增加了任务的完成时间。数据中心多变的流量负载会导致频繁的虚拟机扩展与迁移,因而不可避免的加剧了网络开销。



技术实现要素:

针对上述问题,本发明提出了一种带宽保障的虚拟网络功能部署方法,包括如下步骤:

步骤1:根据SFC和带宽需求建立虚拟网络功能实例通信图;

步骤2:基于生成的所述虚拟网络功能实例通信图,建立对应的带宽保障的虚拟网络功能实例部署方案。

所述步骤1具体包括:

步骤1.1:根据SFC请求中的每一个虚拟网络功能计算所需虚拟网络功能实例的个数;

步骤1.2:计算每个所述虚拟网络功能实例的带宽需求;

步骤1.3:分析虚拟网络功能实例放置的带宽节约原理;

步骤1.4:根据SFC请求的连接情况和虚拟网络功能实例的数目,建立虚拟网络功能实例通信图。

所述步骤1.3具体包括:

步骤1.3.1:计算上下级虚拟网络功能之间的内部带宽需求;

步骤1.3.2:计算每个虚拟网络功能的外部带宽需求;

步骤1.3.3:计算跨子树的总流量和子树内部的总流量;

步骤1.3.4:将所有的属于同数据中心拓扑层的外部流量相加;

步骤1.3.5:根据相加结果,对每一个子树最小化外部带宽、最大化内部带宽。

所述步骤2具体包括:

步骤2.1:从最底层开始选定目标层中的一棵子树作为目标子树;

步骤2.2:计算子树中的剩余虚拟机槽资源,如果虚拟网络功能实例通信图中的虚拟网络功能实例个数大于子树剩余虚拟机槽个数,则选择当前层的下一棵子树,继续步骤2.2,否则转步骤2.3;

步骤2.3:根据虚拟网络功能实例通信图G,选定的虚拟网络功能实例集合St和选定的子树t对带宽资源进行分配;

步骤2.4:如果分配成功,则返回成功并得到分配的结果值,否则进入步骤2.5;

步骤2.5:若当前层中有子树并未分配,则选择所述子树的下一棵子树作为目标子树,进入步骤2.2;否则进入步骤2.6;

步骤2.6:若没有搜索根节点子树,则上移一层进入步骤2.1,否则无法接受此请求,返回失败。

所述步骤2.3具体包括:

步骤2.3.1:如果当前层数为最底层,则直接将SFC请求中的虚拟网络功能实例部署到此子树上;

步骤2.3.2:如果当前层数不是最底层,则对子树t的所有子树按照可用资源的多少进行降序排列,所述可用资源包括虚拟机槽的数量和可用的出口带宽;

步骤2.3.3:对子树t的子树v进行分配,首先赋值cnt为虚拟网络功能实例集合St中未使用的虚拟网络功能实例数量和子树v中剩余的虚拟机槽数量的较小值;

步骤2.3.4:设置具有最大聚合带宽的虚拟网络功能实例集合Sv为空集,选择St中没有使用过的具有最大聚合带宽的虚拟网络功能实例放入Sv中;

步骤2.3.5:若Sv中的虚拟网络功能实例的个数小于等于cnt,且子树v的所有入流量总和Cvin和子树v的所有出流量总和Cvout都不超过子树v的预留带宽,则从虚拟网络功能实例集合St中选择使得跨子树的总流量最小而子树内部的总流量最大的虚拟网络功能实例放入具有最大聚合带宽的虚拟网络功能实例Sv中;

步骤2.3.6:将虚拟网络功能实例通信图G,具有最大聚合带宽的虚拟网络功能实例Sv,子数v作为输入参数,返回步骤2.3;

步骤2.3.7:若对子树v分配成功,则为子树v预留出口链路的带宽,标记Sv中的虚拟网络功能实例为已使用;若虚拟网络功能实例集合St中还有未分配的且子树t还有子树没有考虑,进入子树t的下一棵子树,并转入步骤2.3.3,否则转入步骤2.3.8;

步骤2.3.8:如果在考虑了所有的子树之后虚拟网络功能实例集合St中仍然有未分配的子树,则去掉以前分配的资源;否则转步骤2.3.9;

步骤2.3.9:返回分配的结果。

本发明的有益效果在于:

本发明采用带宽保障式的VNF部署策略,可以根据用户提供的带宽信息,并结合当前全局的资源使用情况,做出更为全局优化的VNF部署。VNF实例通信模型和启发算的VNF部署算法,一方面保障了用户的带宽需求,另一方面集中式的放置用户的虚拟机,从而减少不必要的带宽损耗,接受更多的实例。

附图说明

图1是VNF实例通信图;

图2是VNF实例部署流程图。

具体实施方式

下面结合附图,对实施例作详细说明。

本发明主要提出一种基于带宽保障的SFC请求模型以及相应的在数据中心网络中的VNF放置方案,目的是节约网络带宽资源并且减少虚拟机开销。数据中心租户提出SFC的请求并且指定带宽总量需求。我们保障租户提出的带宽需求并决定如何将其SFC请求部署到数据中心网络中,即保障了租户的性能,又节约了全局的带宽。

如图1所示,三个虚线框表示三个VNF(虚拟网络功能),其中的方框1-9表示不同的VNF实例,不同的虚拟网络功能需要的VNF实例个数不同。箭头以及标注的数字表示不同的VNF需要负载的网络流量。当租户提出的一个SFC请求,800的流量首先经过VNF1,然后分成两支,500的流量经过VNF2,300的流量经过VNF3。用户的请求包含SFC的连接情况,以及各个VNF之间的带宽需求。我们首先估计每种类型的VNF实例可以承担的最大的负载流量,然后算出所需要的VNF实例个数,即得到了包含VNF实例的通信图。我们需要将其部署到数据中心中去。由于数据中心的带宽资源非常稀缺,尤其是上层带宽资源存在着较高的超额认购比,因此我们在部署过程中需要尽量节约带宽。在设计算法的时候,我们考虑将通信量大的VNF实例尽可能的放置在同一棵子树中去,使得流量更加内聚,这样就减少了跨子树的流量,从而节约带宽资源,尤其是上层网络带宽。我们的部署算法采用启发式的思想,首先自底向上的搜索可能容纳下整个SFC的子树,一旦找到了可能的子树,则对其进行自顶向下的递归的部署。即把VNF实例通信图分割开来放置到该子树的不同子树中去。通过此递归的搜索,最终所有的VNF实例都会放置在物理机上,并且为每条链路预留合适的带宽以保障通信需求。

具体步骤如下:

1.根据SFC和带宽需求建立VNF实例通信图。具体步骤如下:

步骤1.1:计算所需VNF实例的个数。

对于SFC请求中的每一个VNF,我们需要提供足够的处理能力来完成其流量处理需求。我们假设每一个VNFi的实例具有的最大流量处理能力是Ubi(可以通过进行压力测试来获得),因此我们可以算出对于VNFi最少需要的VNF实例数量是:

Biin和Biout分别代表VNFi的总入带宽需求和总出带宽需求。

Ubi表示单个属于VNFi的实例可以支持的最大流量负载。

Ni表示VNFi总共具有的实例个数。

步骤1.2:计算每个VNF实例的带宽需求。

根据负载均衡原则,每一个实例所需要的带宽是相等的,可以算出每一个实例的带宽需求。

Biin和Biout分别代表VNFi的总入带宽需求和总出带宽需求。

步骤1.3:分析VNF实例放置的带宽节约原理

VNF的放置过程实际上就是把各个VNF的实例递归的放置到数据中心的每个子树中,直到所有的实例都被放置在物理机上。对于每一个分配了VNF实例的子树而言,我们需要预留内部带宽(保障子树内部的实例的通信需求)和外部带宽(保障子树内外实例之间的通信需求)。

步骤1.3.1:计算上下级VNF之间的内部带宽需求。

显然的,每一个VNF实例都优先将流量传送给同一个子树内部的下级VNF实例而不是跨子树的实例。于是我们可以计算出内部带宽需求:

步骤1.3.2:计算每个VNF的外部带宽需求:

步骤1.3.3:计算跨子树的总流量和子树内部的总流量:

步骤1.3.4:将所有的属于同数据中心拓扑层l的外部流量相加,我们得到下面的式子:

步骤1.3.5:从步骤1.3.4中我们可以知道是一个常量,因此得到推论:如果我们想最小化整体的链路带宽损耗,对于每一个子树来说我们应该最小化外部带宽而最大化内部带宽。

步骤1.4:根据SFC请求的连接情况和VNF实例的数目,建立VNF实例通信图。

VNF实例通信图由租户请求的VNF(包括根据带宽需求计算出来的实例个数)以及各个VNF实例之间的带宽需求组合而成。反应了租户需要处理的流量的流向情况和流经每个VNF的流量大小。

2.基于生成的VNF实例通信图,本发明设计了对应的带宽保障的VNF实例部署方案。我们假设数据中心拓扑为树型结构,具体步骤如下:

步骤2.1:选定目标层中的一棵子树作为目标子树(初始从最底层开始)。

步骤2.2:计算子树中的剩余虚拟机槽资源,如果VNF实例通信图中的VNF实例个数超过了子树剩余虚拟机槽个数,则选择该层的下一棵子树,继续步骤2.2,否则转2.3。

步骤2.3:Alloc过程,本过程是一个自顶向下递归放置的过程,输入的参数有VNF实例通信图G,选定的VNF实例集合St,以及选定的子树t。

步骤2.3.1:如果当前层数为最底层,则直接将SFC请求中的VNF实例部署到此子树(即物理机)上。

步骤2.3.2:如果当前层数不是最底层,则对于t来说,将其所有的子树按照可用资源的多少进行降序排列,可用资源包括虚拟机槽的数量和可用的出口带宽。

步骤2.3.3:假设对于t的子树v进行分配,首先赋值cnt为St中未使用的VNF实例数量和v中剩余的虚拟机槽数量的较小值。

步骤2.3.4:设置Sv为空集,选择St中没有使用过的具有最大聚合带宽的VNF实例放入Sv中。

步骤2.3.5:若Sv中的VNF实例的个数小于等于cnt,且Cvin和Cvout都不超过子树v的预留带宽,则从St中选择满足步骤1.3.3中使得Ct最小而Tt最大的VNF实例放入Sv中。

步骤2.3.6:将G,Sv,v作为输入参数,继续步骤2.3过程。

步骤2.3.7:若对子树v的分配成功,则为子树v预留出口链路的带宽,标记Sv中的VNF实例为已使用。若St中还有为分配的且t还有子树没有考虑,进入t的下一棵子树,并转步骤2.3.3,否则转2.3.8。

步骤2.3.8:如果在考虑了所有的子树之后St中仍然有未分配的子树,则去掉以前分配的资源。否则转步骤2.3.9。

步骤2.3.9:返回分配的结果。

步骤2.4:如果分配成功,则返回成功并得到分配的结果值。否则进入步骤2.5。

步骤2.5:若该层中还有子树没有考虑过,则选择该子树的下一棵子树作为目标子树,进入步骤2.2;否则进入步骤2.6。

步骤2.6:若还没有搜索根节点子树,则上移一层进入2.1步骤,否则无法接受此请求,返回失败。

我们进行了仿真实验将本发明方案和现有的弹性部署方案对比,结果表明我们的发明方案能够有效的节约更多的带宽资源,并且接受更多的租户请求。说明本发明达到了预期的目的,具有较好的效果。

本发明的SFC请求中的每个VNF提供保障的带宽,并且通过估计每个VNF实例的最大处理流量来计算总共需要的VNF实例的个数,然后建立每个VNF实例之间的通信模型图。根据此模型,采用启发式算法将VNF实例部署到数据中心中。部署算法采用本地化的方法,尽可能的减少跨子树的流量并且增大内部传输的流量,以此来达到节省带宽的目的。

此实施例仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1