一种基于SDN和NFV的服务功能链的部署方法与流程

文档序号:17817348发布日期:2019-06-05 21:54阅读:340来源:国知局
一种基于SDN和NFV的服务功能链的部署方法与流程

本发明属于网络通信中用户交互阶段网络服务功能部署领域,具体涉及一种基于sdn和nfv的服务功能链的部署方法。



背景技术:

在网络中,用户的一次请求可能需要经过或使用不同的网络功能,一般情况下,该请求需要经过的网络功能的顺序也是特定的,这条由流量所经过的不同的网络功能所形成的路径被称为服务功能链(servicefunctionchain,sfc),换句话说服务功能链就是由不同的网络服务功能通过特定的顺序组合形成的一条串行链,该链的组合顺序一般由某一具体的用户请求来决定。在传统网络中,服务功能链的部署一般通过增强网关或者静态服务功能链来实现。增强网关的设计理念是将某条具体请求所需要使用的网络功能全部部署到网关内部,形成一种增强型网关,这种方法虽然可以满足业务要求,但是该方法通常具有性能损耗高、带宽限制大以及接口开放程度差等缺点,不利于推广;而静态服务功能链方法本质上将不同的网络功能嵌入到具体的硬件设备中,不同的网络功能对应不同的硬件设备,同一个硬件设备只能处理某一个单一的网络功能,因此被称作静态服务功能链,然而该方法因为具体功能和设备之间耦合度太高容易造成部署成本昂贵、不利于网络功能的扩展以及缺乏灵活性等问题,也不是服务功能链的最优部署方式。

sdn和nfv技术的出现,为服务功能链提供了一种高效的、动态的以及扩展性极强的部署方案。从服务功能链的传统部署方案来看,主要存在以下不足:1)网络服务功能总是内嵌在网关中或者特定设备中,不利于扩展和维护;2)服务功能链的部署速度慢,成本高;3)网络的不确定性容易造成服务功能链的性能低下;4)如果服务功能链中某一个网络功能损坏会导致整个链的不可用;5)服务功能链的出错代价很大,并且恢复速度很慢。但是由sdn和nfv提供的服务功能链的解决方案可以完美解决上述问题。首先sdn将网络控制和数据转发功能分开,以实现集中和可编程的网络控制,sdn的特性正是简化和增强网络控制、灵活和高效的网络管理以及提高网络服务性能。sdn使整个网络变得简单和高效,为服务功能链的部署提供了优越的网络环境,sdn控制器对网络的整体控制,可以时刻保持对服务功能链状态的感知。其次nfv利用了虚拟化的技术将服务功能与基础设施分离。使得服务功能不再内嵌到某一个特定硬件中,这样当某一个具体的网络功能损坏时,只需要利用虚拟化技术重新初始化一个vnf,大大缩短了故障恢复时间,节省了人力成本,除此之外nfv也使得vnf的开发更简单和高效以及vnf在后期的维护和扩展也更灵活。

sdn和nfv技术的出现,为服务功能链提供了一种高效的、动态的以及扩展性极强的部署方案。从服务功能链的传统解决方案来看,主要存在了以下不足:1)网络服务功能总是内嵌在网关中或者特定设备中,不利于扩展和维护;2)服务功能链的部署速度慢,成本高;3)网络的不确定性容易造成服务功能链的性能低下;4)如果服务功能链中某一个网络功能损坏会导致整个链的不可用;5)服务功能链的出错代价很大,并且恢复速度很慢。



技术实现要素:

本发明的目的在于针对现有解决方案的不足,提供一种基于sdn和nfv的服务功能链的部署方法。

为实现上述目的,本发明采用如下的技术方案:

一种基于sdn和nfv的服务功能链的部署方法,首先建立基于sdn网络和nfv架构的结合框架以及模块化部署服务功能链,然后在sdn网络和nfv架构中的策略控制器内进行服务功能链的部署算法,策略控制器在用户流量进入网络后,通过服务功能链的部署算法判断用户流量所需要的网络服务功能是否和底层所拥有的vnf匹配,如若不匹配,策略控制则通知nfv的管理和编排组件缺失的vnf信息,nfv的管理和编排组件在得到消息后通过nfv底层设施资源将所有需要的vnf以模块化的策略部署到相应的虚拟机内,完成整个部署操作。

本发明进一步的改进在于,基于sdn网络和nfv架构的结合框架的工作过程为:当用户请求到来时,策略控制器根据用户的需求制定具体的服务功能链策略,并下发给sdn控制器集群,与此同时也将流分类策略下发给流分类器;sdn控制器根据服务功能链策略下发对应的流表至openvswitch,openvswitch根据流表对业务流量进行转发,送到相应的vnf处理,vnf对进入的业务流量进行处理后,将业务流量发送回openvswitch;服务功能链上所有的vnfs对流量处理完成后,业务流量被转发出服务功能链网络。

本发明进一步的改进在于,进行服务功能链的部署算法的具体过程如下:

(1)某个用户的一条流量进入网络进行数据传输请求;

(2)当流量进入后,策略控制器根据请求的网络服务功能,将用户需要使用的网络服务功能标记成集合sfc={vnf1,vnf2,.....,vnfn},然后策略控制器根据nfv管理和编排组件提供的vnf信息,即虚拟机的集合vm={v1,v2,...,vn}判断虚拟机的集合vm中是否包含所有的vnf;如若是则执行步骤(8),否则继续执行步骤(3);

(3)如果虚拟机的集合vm={v1,v2,...,vn}中所有的vm和此时要部署的任意vnfi都不满足vic+vim<cs或者ct-cs+vic+vim<=ct×80%,则此时所有的vm都达到一种极限状态,则执行步骤(4),否则执行步骤(5);

其中,vic代表第i个vnf部署时需要的内存资源,vim代表第i个vnf运行时所需要的cpu资源,虚拟机总资源ct=cc+cm,cc代表虚拟机cpu资源,cm代表虚拟机的内存资源,cs代表虚拟机剩余cpu资源和内存资源总和;

(4)启动备用虚拟机,将所有需要部署的vnf集合全部部署到备用虚拟机中,继续执行步骤(8);

(5)选定需要部署的vnf的上一个vnf所处虚拟机的位置,上一个vnf可能处于多个虚拟机内,根据顺序策略选择具体的vm;判断该虚拟机和需要部署的vnfi是否满足vic+vim<cs和ct-cs+vic+vim<=ct×80%,如若满足,则执行步骤(7),否则执行步骤(6);

(6)根据dcx<dci,1<=c<n,1=<x<=n,i={1,2,...,x-1,x+1,...,n}原则,选择合适的虚拟机位置部署vnfi;

其中,dcx为vc所处服务器到vx所处服务器之间的物理距离,dci为vc所处服务器到vi所处服务器之间的物理距离;

(7)判断是否所有需要的vnfs都部署完成,如果是,则执行步骤(8),否则执行步骤(5);

(8)完成所有部署任务后,更新虚拟机的集合vm={v1,v2,...,vn}中每一个vm的状态信息以及里面所有vnfs的状态信息;

(9)判断虚拟机状态和所有vnfs的状态是否满足规定,如果是,则执行步骤(10),否则执行步骤(11);

(10)更新所有vnfs和vm的状态信息;

(11)所有需要的vnfs都已处于就绪状态,部署算法结束。

本发明进一步的改进在于,对于任何一个新部署的vnfi,假设在服务功能链上该vnfi上一个vnfi-1已经部署在vc中,新部署的vnfi需要实例化在vx中,则vnfi部署过程中在满足vic+vim<cs和ct-cs+vic+vim<=ct×80%的基础上,也满足如下约束:

dcx<dci,1<=c<n,1=<x<=n,i={1,2,...,x-1,x+1,...,n}(3-3)

式3-3中,dcx为vc所处服务器到vx所处服务器之间的物理距离,dci为vc所处服务器到vi所处服务器之间的物理距离。

本发明进一步的改进在于,进行服务功能链的部署算法前还进行以下过程:对于一次需要新增vnf的情况,当一条服务功能链的请求经过特定的网络服务功能时,经过网络地址转换,防火墙以及入侵防御系统,此时由sdn控制器通过实时掌控底层设备的运行状况,发现记录表中并没有入侵防御系统的注册信息,在合适的虚拟机当中部署该网络服务功能。

本发明进一步的改进在于,进行服务功能链的部署算法前还进行以下过程:对于一次需要删除vnf的情况,在每一个虚拟机中都配置一张vnf的临时状态表,该状态表每一行记录每一个vnf被使用时的id号,该id号可以由该条网络流量的一些特征值生成,之外还记录每一个vnf上次被使用的时间到现在时间的差值。

本发明进一步的改进在于,进行服务功能链的部署算法前还进行以下过程:对于一次需要更新vnf的情况,一条服务功能链经过深度包检测,服务质量以及系统入侵检测,当流量正在服务功能链上进行转发时,发现服务质量功能故障,此时对服务质量功能进行更新。

与现有技术相比,本发明具有的有益效果:使用sdn网络和nfv架构是保证服务功能链的高效部署的前提,所以本发明首先设计一个基于sdn网络和nfv架构下服务功能链的部署框架,该框架是服务功能链部署的理论框架,也是该发明中服务功能链部署的基础环境,sdn网络为服务功能链的部署提供灵活的网络环境,而nfv架构为则为其提供充足的底层资源。然后在保证考虑vnf(virtualnetworkfunction,虚拟网络功能)全生命周期的情况下,给出一个基于vnfs模块化的sfc的部署算法;vnfs模块化部署思想是将相同的功能模块从不同的vnfs中抽象出来统一使用,类似于数据包头解析,协议解析,数据包分类等操作模块基本上都存在于每一个vnf中,可以将这些共同的操作模块抽象出来只提供一份供所有的vnf使用,这样既可以节省更多的系统资源也有利于促进vnf的开发和更新;除此之外,该算法在部署服务功能链时总是优先于就近的虚拟机,通过一种就近原则,将需要的vnf部署在离上一个vnf最近的虚拟机内;并且当某些vnf超过一定时间未被使用或者虚拟机容量达到某个额定的指标后会进行删除vnf或者虚拟机容量将降回操作,因此该算法与传统算法对比在考虑最短时延的情况下也兼顾资源的利用率。

附图说明

图1为基于sdn和nfv的服务功能链框架图。

图2为虚拟机集群示意图。

图3为正常部署和模块化部署对比图。

图4为一次需要新增vnf的示例图。

图5为一次需要删除vnf的示例图。

图6为一次需要更新vnf的示例图。

图7为服务功能链部署算法流程图。

图8为相关算法时延对比图。

图9为相关算法资源利用率对比图。

具体实施方式

下面结合附图对本发明进行详细说明。

本发明的基于sdn和nfv的服务功能链的部署方法为:首先设计基于sdn网络和nfv架构的结合框架以及模块化策略部署服务功能链,然后在sdn网络和nfv架构中的策略控制器内进行服务功能链的部署算法,策略控制器在用户流量进入网络后,通过服务功能链的部署算法判断用户流量所需要的网络服务功能是否和底层所拥有的vnf匹配,如若不匹配,策略控制则通过北向接口通知nfv的管理和编排组件缺失的vnf信息,nfv的管理和编排组件在得到消息后通过nfv底层设施资源将所有需要的vnf以模块化的策略部署到合适的虚拟机内,完成整个部署操作。

具体包括以下步骤:

第一步,建立基于sdn和nfv的服务功能链框架;

如图1所示,框架基本的业务流程:当用户请求到来时,策略控制器根据用户的特定需求制定具体的服务功能链策略,并下发给sdn控制器集群,与此同时也将流分类策略下发给流分类器。sdn控制器根据服务功能链的策略下发对应的流表至openvswitch,openvswitch根据流表对业务流量进行转发,送到相应的vnf处理,vnf对进入的业务流量进行处理后,把业务流量发送回openvswitch;服务功能链上所有的vnfs对流量处理完成后,业务流量被转发出服务功能链网络。在这个过程中可能会存在vnfs的动态变化,这需要sdn控制器、策略控制器以及nfv管理和编排组件共同协作完成。

如图1所示,该框架包含以下几个部分:

1)nfv管理和编排组件。用于对vnfs以及底层物理和虚拟资源的管理,并且以软件的方式运行在sdn架构的应用层,网络管理员可以通过gui的方式对业务链的vnfs进行创建、修改、删除等操作,当然nfv管理器都是可以自动化完成这些所有针对vnfs的操作;除此之外,nfv管理器负责了vnfs的整个生命周期的管理;虚拟设施管理器则负责整个nfvi组件的管理,为vnfs的各种操作提供底层资源支持。最关键的是,nfv编排器中运行了服务功能链的部署算法,并且通过北向接口直接和sdn通信。

2)策略控制器。当接受到用户的请求后,来制定服务功能链的策略,比如服务功能链的顺序策略和流量的分类策略。策略控制器一方面把流分类策略下发到流分类器;另一方面根据不同的请求,把服务功能链制定好的顺序策略下发到sdn控制器,从而控制业务流量走向。策略控制器可以通过标准的api接口和nfv编排器进行通信,这是非常必要的,因为在网络中某一个具体的vnf可能都被其他流量在使用,策略控制器通过北向接口和sdn控制器通信,并告知sdn控制器某一时刻需要重新初始化某些vnfs,当sdn控制器收到消息后,仍然通过北向接口将信息传递给nfv编排器,nfv编排器则调用nfv管理器初始化需要的vnf,并通过标准api接口告诉策略控制器所有需要的vnfs已经初始化完成,并准备就绪。

3)流分类器。根据策略控制器下发的策略,对进入网络中的业务流量进行分类,并进行标识。对业务流量的标识有很多种方式,可以在报文中加入新的标识字段,也可以使用报文原有的字段,如vlanid、ip地址等。流分类器的主要目的是将一些特殊流标记出来,因为对某些用户需求,很多网络服务功能必须出现在服务功能链的首端或者尾端,而服务功能链中vnfs的个数是决定整条服务功能链性能的关键因素,如果能提前确定某一个vnf的位置,对于提高服务功能链的性能和减少网络时延方面有很大的帮助。

4)sdn控制器。在图1中sdn控制器以集群的形式存在,通过北向接口和策略控制器交互,把由用户的需求制定的服务功能链的策略转化为具体的转发表项,并通过openflow协议下发至openvswitch。通过sdn的集中化控制,可以灵活高效的指定服务功能链的路径,实现服务功能链具体流量转发。除此之sdn控制器可以通过北向接口向策略控制器提供网络状态信息,以供策略控制器完成服务功能链的策略制定,反过来策略控制器也可以通过北向接口向sdn控制器反馈需要重新初始化的vnfs。

5)sdn交换机。支持openflow协议的交换机,这里使用了openvswitch。接受sdn控制器的统一管理,根据sdn控制器下发的流表进行流量转发。

6)虚拟网络功能。图1中以防火墙、网络地址转换以及深度包检测为例。服务功能链中可以根据不同的业务需求加入各种网络服务功能,连接到openvswitch的相应端口,处理来自openvswitch转发的业务流量。这里所有的网络服务功能都是由nfv产生的虚拟网络功能,可以根据业务类型和需求进行灵活的扩展,共享底层的硬件资源。

参见图1,图1中有一条服务功能链,由黑色曲线路径标记,可以看出,流量进入网络以后,由策略控制器制定服务功能链的策略并通过北向接口下发给sdn控制器,sdn控制器通过openflow协议引导流量依次通过防火墙和深度包检测,防火墙和深度包检测是由nfv架构提供的虚拟网络功能,也就是vnf,而防火墙和深度包检测则构成一条服务功能链。

第二步,设计基于模块化的策略部署服务功能链;

模块化的思想来源于软件设计中的可复用思想,通过抽象出一些通用接口,减少了代码的冗余量、提高软件开发的效率和系统的可扩展性。鉴于此思想,在不同的vnfs中必然包含了相同的多个功能模块,例如:数据包头解析,协议解析,数据包分类等等,这些操作基本存在于每一个vnf中,可以通过将这些通用的功能模块抽象出来只提供一份然后供其他所有的vnf一起使用,这样通过复用一些模块可以节省更多的系统资源,尤其是在部署量很大的时候。除此之外,模块化部署vnf带来的另一个好处是极大简化了vnf的开发工作,促进了vnf的开发和更新,让开发者专注于vnf自身的功能特性而忽略一些通用模块。例如,在更新vnf的功能时,可以只考虑更新通用模块,让其他的vnfs只需要复用更新后的通用模块,不需要再对每一个vnf都做重复的工作。在开发新的vnf时,只需要开发核心的功能而复用通用的模块,不需要再开发所用功能,节省了时间,提高了效率。这都是模块化部署带来的好处。

sfc(服务功能链)部署时,首先考虑vnf的初始化,本发明假设一种最极端的方式,所有的虚拟机都是从最初状态开始。依据历史经验向一些特定的虚拟机中初始化一批可能会使用率较高的vnfs,这些使用率较高的vnfs可能会随着时间的不同而变化,然而这只是一个初始状态的设定,并不影响sfc后续的部署和调度。图2是虚拟机集群示意图,参见图2,所有的虚拟和物理资源都是由nfv的基础设施服务提供,并由nfv管理和编排组件统一管理和调配。假设在5台虚拟机中初始化了一部分vnfs,例如在虚拟机1中初始化了深度包检测(deeppacketinspection,dpi)以及防火墙(firewall,fw);在虚拟机2中初始化了防火墙、网络地址转换(networkaddresstranslation,nat)以及系统入侵检测(intrusiondetectionsystem,ids),初始化所占用的服务器资源必然满足服务器空闲资源,而且初始化所占用的服务器资源一般小于服务器总资源的50%,服务器的资源通常指cpu和内存资源。除此之外,还保留了一部分空闲的虚拟机以作备用,如虚拟机6和虚拟机7。

所有虚拟机初始化的状态,除了参考一些历史经验外,是一个相对随机的过程。在不考虑模块化的前提下,其余vnfs的部署过程只是vnfs生命周期的动态变化,例如业务要求需要新增一些vnfs、某些vnfs在虚拟机内长期未被使用需要关闭以及需要更新某些vnfs的功能等等。模块化的思想来源于软件设计中的可复用思想,通过抽象出一些通用接口,减少了代码的冗余量、提高软件开发的效率和系统的可扩展性。鉴于此思想,在不同的vnfs中必然包含了相同的功能模块,例如:数据包头解析,协议解析,数据包分类等等,这些操作基本存在于每一个vnf中。如图3(a)所示,在理想情况下,虚拟机1中部署了网络地址转换和深度包检测,并未考虑通用模块,两者各占资源2%,虚拟机中空闲资源96%;在图3(b)中,虚拟机1中使用通用模块,将协议解析和包头解析抽象出来,而网络地址转换和深度包检测共用这些通用模块,可以看出系统的空闲资源剩余97%,相对于图3(a)中虚拟机1节省了1%的资源。可以看出当vnfs的部署量很大时,采用这种模块化的思想,可以节省更多的系统资源。

第三步,进行服务功能链的部署算法;

考虑一次需要新增vnf的情况,如图4所示,假设当前虚拟机中部署的实例如此,虚拟机的排列顺序并不代表实际数据中心或者云场景中虚拟机所处设备的物理距离。当一条服务功能链的请求需要经过特定的网络服务功能时,如图4中所示,需要经过网络地址转换,防火墙以及入侵防御系统(intrusionpreventionsystem,ips),此时由sdn控制器通过实时掌控底层设备的运行状况,发现记录表中并没有入侵防御系统的注册信息,即所有的(示例中的5个)虚拟机中都未部署入侵防御系统,因此则需要在合适的虚拟机当中部署该网络服务功能,这是一次vnf需要新增的示例,而新vnf部署的位置可能取决于上一个vnf所处的虚拟机的位置。考虑到低时延的因素,本发明的算法总是要保证新的vnf部署在最邻近的虚拟机中,这是因为现今的网络基本以分布式的形式存在,而分布式下物理距离和时延是呈正相关性的。

考虑一次需要删除vnf的情况,如图4所示,在每一个虚拟机中都配置一张vnf的临时状态表,该状态表每一行记录了每一个vnf被使用时的id号,该id号可以由该条网络流量的一些特征值生成,如访问网络的时间、业务类型以及相关协议等等,除此之外还记录了每一个vnf上次被使用的时间到现在时间的差值。例如在虚拟机1中的vnf的临时状态表中,第一行表示了深度包检测在3分钟前被id号为某一个值的网络流量所访问。可以想象到的是,当虚拟机中部署了越来越多的实例后,虚拟机的容量将达到上线,资源也会被占满,这会严重影响运行在虚拟机当中的vnf,除此之外由于同一个vnf可以部署在不同的虚拟机当中,因此许多虚拟机当中的vnf可能很长时间都是未被使用的状态,例如图4所示的虚拟机2中,防火墙功能有17分钟都是未被使用状态,考虑到资源利用率和性能的因素,本发明的算法中将超过某一时间阈值未被使用的vnf实例都会在虚拟机中删除,这样既可以提高资源利用率和性能,而且在进行vnf部署的时候可以缩短时延。

考虑一次需要更新vnf的情况,如图5所示,一条服务功能链需要经过深度包检测,服务质量(qualityofservice,qos)以及系统入侵检测,当流量正在服务功能链上进行转发时,发现服务质量功能故障,此时需要对服务质量功能进行更新,考虑到低时延因素,流量不会等待vnf的更新完成,而是选择就近的相同服务进行转发。因此当发生功能故障时,图6中的转发路径将会变成虚拟机1至虚拟机4至虚拟机5,而虚拟机3中的服务质量功能将会在后台重新初始化并且部署在虚拟机3中。

对上述3种情况进行分析后,或者根据实际需要中存在的情况进行分析后,进行以下过程:

首先将用户请求中包含的所有网络功能列出一个集合sfc={vnf1,vnf2,.....,vnfn},定义cc代表了虚拟机cpu资源,cm代表了虚拟机的内存资源,cs代表了虚拟机剩余cpu资源和内存资源总和,则虚拟机总资源ct=cc+cm,假设某一个vnfi所需要的虚拟机总资源为vic+vim,其中vic代表第i个vnf部署时需要的内存资源,vim代表第i个vnf运行时所需要的cpu资源,则部署vnfi时,需要满足如下约束:

vic+vim<cs(3-1)

ct-cs+vic+vim<=ct×80%(3-2)

定义虚拟机的集合vm={v1,v2,...,vm,...,vn},dmn表示vm所处服务器到vn所处服务器之间的物理距离。如果新部署的vnfi就处于服务功能链上一个vnfi-1所在的虚拟机内,则此时m=n,所以vm所处服务器到vn所处服务器之间的物理距离dmn=0。在进行vnf部署的时候尽量保证物理距离最小,以减少时延。因此对于任何一个新部署的vnfi,假设在服务功能链上该vnfi上一个vnfi-1已经部署在了vc中,而新部署的vnfi需要实例化在vx中,则vnfi部署过程中在满足(3-1)和(3-2)式的基础上,也应满足如下约束:

dcx<dci,1<=c<n,1=<x<=n,i={1,2,...,x-1,x+1,...,n}(3-3)

式3-3中,dcx为vc所处服务器到vx所处服务器之间的物理距离,dci为vc所处服务器到vi所处服务器之间的物理距离。

对于服务功能链来说,定义每一个vnfi在处理请求时消耗的总时长为tvi,那么对于一个用户请求的服务功能链中sfc={vnf1,vnf2,.....,vnfn}所有vnf消耗的总时长则是该服务功能链处理需求的总时长tt,可以表达为假设对于某一次的用户请求中,服务功能链中的vnfi发生故障需要更新或者所有虚拟机中都不存在需要新增,此时假定vnfi从故障到重新更新或者从没有到重新初始化达到就绪状态使用的时间为trecover,为了降低时延需要让式(3-5)的值尽可能地低,尽管和每一个vnfi在处理请求时消耗的总时长tvi代表了同一个vnf处理请求消耗的时常,但考虑到不同虚拟机的不同时间和不同状态,式(3-5)依旧考虑该误差。

式中,tnewt为最终的消耗时长,为对于同一个vnf在不同的虚拟机内处理请求所消耗的时长。

资源的利用率也是一个需要考虑的方面,假设对于任何一个vnfi刚被初始化的那一刻的时间为在任意时间节点处,如果该vnfi依旧存活在虚拟机内,就标记此刻vnfi的时间状态为则该vnfi一直在虚拟机内处于存活状态的时间为此外可以从nfv管理器得知任何一个vnfi的使用时间为记vnfi的利用率为理论上整条服务功能链的利用率esfc为式(3-8),该值越大表明资源利用率越高。

式中,为vnfi一直在虚拟机内处于存活状态的时间,为vnfi依旧存活在虚拟机内时刻vnfi的时间状态。

整个服务功能链的性能从如下两个方面来考虑,定义当虚拟机达到ct×75%后又强制降回50%的次数为countvi,每一次虚拟机强制降回50%时选择要删除的vnf都是根据最近最少使用(leastrecentlyused,lru)策略,而虚拟机两次发生降回时间的时间间隔是tbetween。

假设每次虚拟机降回50%时所用的时间为timevi,需要删除的vnf集合记作vnf={vnf1,vnf2,...,vnfk},则删除的vnf集合中每个vnf的存活时间集合为整个虚拟机的性能可以用式(3-9)来表示,其值越高越好。

式中,psfc为整个虚拟机的评判标准。

定义目标函数为(3-10),该目标函数的值代表整体服务功能链的评判标准为f(i,k,n),其值越高越好。

本发明的服务功能链部署算法的流程图如图7所示,具体步骤及分析如下:

(1)某个用户的一条流量进入网络进行数据传输请求;

(2)当流量进入后,策略控制器根据请求的网络服务功能,将用户需要使用的网络服务功能标记成sfc={vnf1,vnf2,.....,vnfn},然后策略控制器根据nfv管理和编排组件提供的vnf信息,即vm={v1,v2,...,vn}判断vm集合中是否包含所有的vnf。如若是则执行步骤(8),否则继续执行步骤(3);

(3)此时考虑一种极端情况,如果vm={v1,v2,...,vn}中所有的vm和此时要部署的任意vnfi都不满足vic+vim<cs或者ct-cs+vic+vim<=ct×80%,则此时所有的vm都达到一种极限状态,则执行步骤(4),否则执行步骤(5)。

(4)启动备用虚拟机,将所有需要部署的vnf集合全部部署到备用虚拟机中,继续执行步骤(8);

(5)选定需要部署的vnf的上一个vnf所处虚拟机的位置,上一个vnf可能处于多个虚拟机内,而选择是根据顺序策略选择具体的vm。判断该虚拟机和需要部署的vnfi是否满足vic+vim<cs和ct-cs+vic+vim<=ct×80%,如若满足,则执行步骤(7),否则执行步骤(6);

(6)根据dcx<dci,1<=c<n,1=<x<=n,i={1,2,...,x-1,x+1,...,n}原则,选择合适的虚拟机位置部署vnfi。

(7)判断是否所有需要的vnfs都部署完成,如果是,则执行步骤(8),否则执行步骤(5);

(8)完成所有部署任务后,更新vm={v1,v2,...,vn}集合中每一个vm的状态信息以及里面所有vnfs的状态信息;

(9)判断虚拟机状态和所有vnfs的状态是否满足规定,例如vnf是否超过15分钟未被使用、虚拟机的使用资源是否超过ct×75%等等,如果是则执行步骤(10),否则执行步骤(11);

(10)更新所有vnfs和vm的状态信息,例如执行vm的降回操作、vnfs的删除操作等等;

(11)所有需要的vnfs都已处于就绪状态,部署算法结束。

部署算法与传统算法的对比图如图8和图9所示,图8中,随机部署算法对于网络时延有很明显的随机性,并且时延长,而贪心算法则在部署中会随着部署vnf个数的增多不能求得全局最优解,也会导致时延增长,而本发明提出的部署算法随着需要部署vnf的个数增多呈稳定的线性变化,比较稳定。图9中,随机部署算法和贪心算法都不考虑资源回收的情况,随着虚拟机的使用时长的增加容易导致资源利用率逐渐降低,而本发明的部署算法会考虑删除长时间未用的vnf,这样资源利用率则稳定在某一个区间范围。通过对比,本发明提出的部署算法优于传统的部署算法。

本发明的基于sdn和nfv的服务功能链部署方法,主要能够实现以下四个目标:

(1)保证服务功能链的低时延:端到端流量经过服务功能链时保证低时延应该是算法的主要目标,算法应能根据vnf的不同变化(例如:新增、更新以及删除)快速做出响应,保证服务功能链上的流量正确转发。考虑到用户的特殊性,用户总是希望在网络交互中有更好的体验性,因此算法在部署vnf的时候更多的应该考虑时延因素,满足低时延是提高用户体验性的重要方式。

(2)提高服务功能链的资源利用率:传统服务功能链的解决方式中,很难保证资源利用率的问题,因为总是绕不开紧耦合的问题,无论是传统网络中控制平面和数据平面紧耦合,还是传统网络服务功能中具体网络服务功能和特定硬件的紧耦合,这种耦合性和高资源利用率两者之间本身就是矛盾的,因为耦合本身就意味着冗余和难以扩展和维护。因此算法在部署vnf的时候也应该考虑资源利用率的因素。

(3)提高服务功能链的性能:一般来说,具体功能内嵌到特定的硬件设备中形成的网络服务功能的性能肯定优于由nfv提供的虚拟网络服务功能,这也是耦合性带来的为数不多的好处。但是sdn网络提供的灵活网络环境和nfv提供的统一化管理可以弥补这部分劣势,尽管如此,提高服务功能链的性能也是该部署算法考虑的因素之一。

(4)降低算法的复杂度:sdn的集中化管控可以实时的掌控服务功能链上的每一个vnf的状态信息,对于每一次vnf的状态变化都可以通过北向接口向nfv的管理和编排组件传递信息,nfv管理器利用nfv基础设施提供的底层资源快速的调整vnf的状态,从而完成一次vnf的状态变化。正是由于sdn和nfv提供的技术支持,因此部署算法应该尽可能的简单高效,运行时间尽可能的短,从而缩短整个sfc的部署时间。

上述四个目标中,低时延是设计算法的主要目标,提高资源利用率和提高性能则是在保证低时延的情况下才考虑的次要目标,而降低算法复杂度的核心也是为了降低服务功能链的低时延。

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