网络功能虚拟化环境中实现网元级并行化服务功能的方法与流程

文档序号:14559550阅读:137来源:国知局
网络功能虚拟化环境中实现网元级并行化服务功能的方法与流程

本发明涉及网络功能虚拟化(nfv)和服务功能能链(sfc)领域,尤其涉及网络功能虚拟化环境中实现网元级并行化服务功能的方法。



背景技术:

在数据中心中,一般都部署了多个以物理专用设备或虚拟机形式存在的、覆盖第4层到第7层的网络功能,主要包括防火墙、网络地址转换nat等。在数据中心的流量从产生、传输到终止都需要经过多种服务功能的处理。而目前这些网络功能主要基于专用设备实现,这就带来了可扩展性差、灵活性差、更新周期长、购买及运行开销大等问题。为了解决这些问题,一个新的概念——网络功能虚拟化(nfv,networkfunctionvirtualization)因此产生。nfv利用虚拟化技术提供设计、部署和管理网络服务的新方法来解决传统专有设备带来的诸多问题。nfv的主要思想是物理的网络设备与其上运行的功能的分离。这意味着网络功能(nf,networkfunction)可以作为普通软件的实例运行在网络服务提供商(isp,internetserviceprovider)设备中。这允许将许多网络功能整合到大容量服务器、交换机和存储器上,这些设备可以位于数据中心中、分布式网络节点上或者是终端用户设施中。这样,一个给定的服务可以分解成一组虚拟网络功能,然后可以在一个或多个商用物理服务器上运行的软件中得以实现。此外,虚拟网络功能(vnf,virtualizednetworkfunction)实例可以在不同的网络位置进行重定位和实例化,而不必要求购买和安装新硬件。nfv具有巨大的灵活性,可以进一步向用户和其他服务开放网络功能和服务,以及更快、更便宜地部署或支持新的网络服务的能力。为了实现这些优势,与现在传统的专有物理设备的实现方式相比,nfv有如下这些差异:

(1)软硬件解耦。由于网络元素不再是专有硬件和专有软件实体集成的组合,因此两者的演进是相互独立的。这允许单独的开发时间表和对软、硬件的单独维护。

(2)灵活的网络功能部署。软件与硬件的分离有助于重新分配和共享基础设施资源,因此硬件和软件可以在不同时间执行不同的功能。这有助于服务提供商在同一物理平台上更快地部署新的网络服务。因此,可以在网络中的任何启用nfv的设备上实例化服务组件,并且可以以灵活的方式设置其连接。

(3)动态缩放。将网络功能分解为可实例化的软件服务组件提供了更大的灵活性,以更动态的方式、更细粒度扩展实际的vnf性能。

基于nfv技术的兴起,服务功能链(sfc,servicefunctionchain)的概念也孕育而生。sfc定义并实例化了这样一个链式、有序的服务功能(sf,servicefunction,等价于nfv中的nf)集合,它负责sf之间的流量分发(数据平面)、控制和监控(控制平面)特定服务/应用程序。sfc是一种支撑技术,可以灵活管理特定服务/应用流,为流分类提供解决方案,并根据服务要求和网络的可用性状态伴随流的路由实施适当的策略。

最近,在利用网络功能虚拟化技术nfv实现vnf灵活部署、弹性扩展和减少成本的基础上,sfc还利用软件定义网络(sdn,softwaredefinednetwork)优化了sfc网络传输的灵活性与可扩展性。从本质上看,利用nfv实现由传统专有设备sf向虚拟网络功能(vnf)的转变,提供更有效和高效的sf部署与编排;利用sdn解耦控制和数据平面,并引入了适用于sfc中的编程抽象,用于对sfc拓扑结构的动态控制以及跨越sf的流路由。



技术实现要素:

针对现有技术的不足,本发明公开了网络功能虚拟化环境中实现网元级并行化服务功能的方法,

包括以下步骤:

步骤1,获取并遍历服务功能链,运行服务功能分解分析算法,将各服务功能分解为基本报文处理单元,称之为网元,分析、综合各服务功能中的网元特性,确定各服务功能对报文的操作以及操作域信息并保存;

步骤2,根据步骤1中得到的各服务功能的操作及操作域信息,运行可并行化判定算法,确定服务功能链中能够进行并行优化的服务功能组合;

步骤3,对于步骤2中得到的可并行服务功能队列,执行并行优化算法,生成新的服务功能,并加入新服务功能链队列;对于非可并行服务功能,将其加入新服务功能链队列中;

步骤4,结合步骤3中生成的新服务功能以及非可并行化的服务功能,按照原服务功能顺序编排组合,输出即为并行优化后的新服务功能链。

步骤1包括以下步骤:

步骤1-1,获取管理员输入的服务功能链;

步骤1-2,读取服务功能链中第一个服务功能,并创建被命名为sfhm(servicefunctionhashmap,服务功能哈希映射表)的哈希映射表hashmap<key,values>(唯一的键key对应其值values),用于存储各服务功能key的操作和操作域信息values,操作域信息values包括写操作域和读操作域;

步骤1-3,判断下一个服务功能是否在服务功能链中,如果是,则进入步骤1-4;否则进入步骤1-5;

步骤1-4,运行服务功能分解分析算法:

首先将当前服务功能分解为网元,然后按照规则分析、综合各网元对报文的操作以及操作域信息,确定该服务功能对报文的操作及操作域。对于服务功能分解分析算法,分解过程主要根据服务功能中各部分对报文的操作,包括获取、输出、读、写(修改或增/删报文域)、丢弃报文等,并将这些基本报文处理单元作为网元,从而组合成能实现特定服务功能的有向无环图。

分析与综合:分析、综合过程需要综合考虑组成服务功能的各网元的操作及操作域信息从而确定服务功能的可能操作和操作域,而网元的操作、操作域信息与各网元特性以及用户规则相关,如fw的按照用户设定规则和报文报头信息进行分类(读)网元需要根据用户的设定确定需要读取的报文域。因此,分析、综合时需要对除获取报文网元、输出报文网元、丢弃网元外的所有网元,采取的规则是:当存在网元执行读操作时,该服务功能所有网元的读操作域求并集;当存在网元执行写操作时,该服务功能所有网元的写操作域求并集。按上述规则实现的服务功能分解分析算法,可利用各网元的操作与操作域信息,确定服务功能对报文的可能操作和操作域信息并保存到sfhm中;

步骤1-5创建可并行服务功能队列pq(parallelqueue,可并行队列)和新服务功能链队列nc(newchain,新服务功能链),可并行服务功能队列pq用于存储可并行服务功能组合,新服务功能链队列nc用于存储并行优化后的新服务功能链;读取服务功能链中第一个服务功能及其操作、操作域信息,将其加入可并行服务功能队列,并标记为队头和队尾;服务功能链末尾标志置end为0,进入步骤2。

步骤2包括以下步骤:

步骤2-1,判断可并行服务功能队列pq是否为空时,如果不为空,进入步骤2-2;否则进入步骤2-3;

步骤2-2,将当前读取的服务功能加入可并行服务功能队列pq,并将队头、队尾指向当前服务功能;

步骤2-3,读取服务功能链中下一个服务功能及其操作、操作域信息;

步骤2-4,运行可并行判定算法,主要内容是:当且仅当当前读取的服务功能与可并行服务功能队列pq中所有服务功能,在不考虑报文丢弃的情况下,各服务功能的报文操作域无交集,或者各服务功能按照其在pq中的顺序(当前服务功能顺序为末尾)对同一报文域(即操作域有交集)的操作为读后读、写,或写后写时,pq中的服务功能可与当前读取的服务功能可并行化。判断当前读取的服务功能是否能与可并行服务功能队列pq中的所有服务功能并行,如果是可并行,进入步骤2-5;否则进入步骤3;

步骤2-5,将当前服务功能加入可并行服务功能队列pq,并将其标记为队尾,进入步骤4;

步骤3包括以下步骤:

步骤3-1,判断当前可并行服务功能队列pq中队头队尾是否指向同一个服务功能(servicefunction,sf),即是否仅包含一个服务功能,如果是,表示该服务功能不能与其他相邻的服务功能并行,将该服务功能存储到新服务功能链队列nc,进入步骤3-2;否则进入步骤3-3;

步骤3-2,清空当前可并行服务功能队列pq,置队头队尾为空,进入步骤4;

步骤3-3,执行并行优化算法:先创建从网卡获取报文网元,实现从网卡获取报文的功能,其输入端连接网卡用以获取报文,输出端初始化置为空;

步骤3-4,创建复制分发网元,实现复制报文并分发各报文副本到各并行服务功能上的功能,其输入端连接发送报文到网卡网元输出端,输出端初始化置为空;

步骤3-5,创建报文合并网元,实现合并经过各服务功能后的报文副本并最终形成输出报文,其输入端初始化置为空,输出端初始化置为空;

步骤3-6,获取当前可并行服务功能队列pq队首服务功能,并设置当前服务功能操作优先级pid(priorityidentification,优先级标识)数值为队列长度,pid用于两个以上报文副本同一报文域数据不同时的合并优先级;

步骤3-7,删除当前服务功能从网卡获取报文网元,原输出网元连接到复制分发输出端;

步骤3-8,判断服务功能发送报文到网卡网元输入端是否连接队列网元,如果是,则进入步骤3-9,否则进入步骤3-10;

步骤3-9,用步骤3-8中原发送报文到网卡网元输入端连接的队列作为输出队列输出队列网元替换发送报文到网卡网元,在保留队列原输入的基础上,增加发送报文到网卡的输入,进入步骤3-11;

步骤3-10,替换服务功能发送报文到网卡网元为输出队列网元,发送报文到网卡网元输入即为输出队列网元的输入;

步骤3-11,替换服务功能中丢弃报文网元为设为丢弃网元,实现标记丢弃报文替代简单丢弃报文的功能,其输入为原丢弃报文网元输入,输出网元为输出队列网元;

步骤3-12,设置步骤3-9和3-10创建的各输出队列网元输出端网元为步骤3-5中创建的报文合并网元,并连接;

步骤3-13,判断当前服务功能是否是当前可并行服务功能队列pq的队尾,如果是,则进入步骤3-14,否则,进入步骤3-7;

步骤3-14,创建新的发送报文到网卡网元,其输出端连接网卡,用于输出最终报文,其输入端连接报文合并网元,至此,并行优化算法执行完毕,pq中的所有服务功能被并行化成为一个新的服务功能;

步骤3-15,将步骤3-14中新生成的服务功能加入新服务功能链队列nc,执行步骤4;

步骤4包括以下步骤:

步骤4-1,判断服务功能链结束标识符end,值为1时,进入步骤4-4;否则,进入步骤4-2;

步骤4-2,判断当前读取的服务功能是否位于原服务功能链末尾,若是,则表示原服务功能链判定完毕,则进入步骤4-3;否则,进入步骤2-1;

步骤4-3,设置结束标识符end为1,表示原服务功能链判定完毕,返回步骤3;

步骤4-4,按照原服务功能顺序编排组合,输出新服务功能链队列nc,即为并行优化后的服务功能链。

目前sfc主要基于nfv技术实现的虚拟网络功能(vnf),并将其按照一定的顺序部署、编排,再利用sdn技术实现sf之间的动态流路由。然而,传统链式连接sfc会导致随着服务/应用程序数量的稳步增长,sfc的长度会不断的增加,这样当报文经过这样的sfc时所带来的延时开销也会急剧的增加,sfc就不能满足严格的异构服务质量(qos,qualityofservice)要求以及服务等级协议(sla,service-levelagreement),导致sfc的发展陷入了困境。因此,目前有许多研究人员致力于此问题解决方案的研究。主要的研究工作包括:

(1)消除网络功能之间的冗余操作;

(2)最大程度实现网络功能之间的并行。

在研究(1)中,研究者发现nf之间往往存在较多的冗余操作,如每个服务功能均需要从网卡获取报文、发送报文到网卡等。因此,消除nf之间的重复过程,可以优化nf串行处理效率。但是,虽然减少nf之间的重复操作一定程度上缩短了报文经过sfc时的延时开销,但是,sfc依然是采用的串行处理,未能充分利用报文操作之间的并行性,当sfc较长时,依然存在性能瓶颈。

而在研究(2)中,研究人员研究发现,目前数据中心中常用的nf有53.8%是可以并行的,因此,他们提出了一种nf级的并行实现方式。他们专注于单台服务器中多个vnf之间的并行优化,实现了一个用于产生报文副本的nf与以及一个用于合并多个报文副本的nf。虽然,这样的实现方式相较于研究(1)中的实现方式所带来的延时更低,但是,并行时需要全报文的复制操作,以及多vnf之间对报文的冗余操作,也将引入部分的延时开销。

综上所述,基于nfv技术实现的vnf组成的sfc,尽管存在可灵活部署、可扩展性强等优点,但是这样的sfc时延开销大所带来的不能满足qos和sla等问题也是存在的,而目前的研究,主要从在串行链式中减少冗余操作和直接采用并行方式来进行优化,可是这些研究工作也都存在各自的不足,但是,考虑到计算机领域的发展趋势以及并行化所带来的巨大延时缩减,并行化方式必将成为未来的主流。鉴于此,本发明提出了一种用于网络功能虚拟化环境中实现网元级并行化服务功能的方法,通过服务功能分解分析算法将服务功能分解为基本的报文处理单元称之为网元,并分析服务功能中的网元特性,确定各服务功能对报文的操作及操作域信息,然后运行可并行判定算法对服务功能进行可并行化分析,确定服务功能链中可进行并行优化的服务功能组合,并运行并行优化算法实现并行化;在此基础上,结合不可并行的服务功能和并行优化后的服务功能,创建生成新服务功能链,从而有效地缩短原服务功能链长度,提高各服务功能并行度,显著地减少报文经过服务功能链时的延时开销。

有益效果:

本发明的有效之处在于:

通过一种用于网络功能虚拟化环境中实现网元级并行化服务功能的方法,从而有效地缩短原服务功能链长度,提高各服务功能并行度,显著地减少延时开销。

本发明与现有技术相比,具有以下优点:

1、本发明通过服务功能分解分析算法,将服务功能分解成网元组合,更细粒度的分析服务功能的操作及操作域信息,借此来确定服务功能之间的可并行性,为针对服务功能的并行性分析提供了参考;

2、使用网元级的服务功能并行化来替代服务功能级的并行化,避免了服务功能间的冗余操作以及跨虚拟机时网卡对报文的操作过程,为以后的nfv中服务功能并行化研究提供了新思路;

3、服务功能分解分析算法、可并行化判定算法以及并行优化算法简单有效,正确率高,复杂度低,可以适用长服务功能链环境;

4、模块化的设计使得系统的各个组件之间耦合度较低,各个模块之间通过全局共享变量进行交互,可以适应新的需求和扩展。

nfv作为新兴的网络技术,发展前景令人期待。同时,基于nfv实现的sfc实现方案越来越成为主流,但是带来的问题也亟待解决。在此背景下,本发明针对服务功能链qos和sla中主要关注的延时问题,提出用于网络功能虚拟化环境中实现网元级并行化服务功能,通过服务功能分解分析算法,分解服务功能为网元的组合,并根据对各服务功能中网元特性分析,确定各网络功能对报文的操作以及操作域信息,再运行可并行化判定算法,确定服务功能链中可进行并行优化的服务功能组合,并对其执行并行优化算法,生成新的服务功能,并结合不可并行化的服务功能,输出并行优化后的新服务功能链,从而缩短原服务功能链长度,减少延时开销。本发明为解决服务功能链的延时提供了新思路,必将为服务功能链及其性能优化的研究与发展贡献力量。

本发明方法通过服务功能分解分析算法,分解服务功能为网元组合而成的有向无环图,分析、综合其中网元的操作及操作域信息来确定服务功能对报文的操作与操作域信息,运行可并行判定算法确定可并行服务功能组合,通过并行优化算法并行化服务功能,并结合非可并行的服务功能,生成经并行优化后的新服务功能链,从而有效地缩短原服务功能链长度,显著减少报文经过服务功能链时的延时。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1服务功能网元级并行化系统架构图。

图2服务功能网元级并行化流程图。

图3并行优化算法流程图。

图4服务功能网元组成示例。

图5为图4中服务功能网元级并行化示例。

图6为服务功能网元级并行化系统主要实现过程示意图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

本发明公开了网络功能虚拟化环境中实现网元级并行化服务功能的方法,首先需要在服务器上实现一个控制器,用于获取管理员输入的服务功能链信息,并对其进行并行化处理,最后输出并行优化后的新服务功能能链,因此,控制器主要包括四个模块,分别是服务功能分解分析模块、服务功能可并行化分析模块、可并行服务功能并行优化模块、新服务功能链生成模块。具体实现方法如下:

在服务功能分解分析模块中,首先需要获取并遍历管理员输入的服务功能链,运行服务功能分解分析算法,分解其中各服务功能为基本报文处理单元,称之为网元,然后分析、综合各服务功能中的网元特性,规则为:当存在网元执性读操作时,该服务功能所有网元的读操作域求并集;当存在网元执性写操作时,该服务功能所有网元的写操作域求并集。依据规则确定各服务功能对报文的操作以及操作域信息并保存到hashmap<key,values>中,其中各服务功能是key键,服务功能对应的操作及操作域为values值。

执行步骤如下:

步骤1,获取管理员输入的服务功能链,进入步骤2;

步骤2,读取服务功能链中第一个服务功能,并创建被命名为sfhm的hashmap<key,values>用于存储各服务功能(key)的操作和操作域信息(values,包括写操作域和读操作域),进入步骤3;

步骤3,判断下一个服务功能是否在服务功能链中,是,则进入步骤4;否则,进入步骤5;

步骤4,运行服务功能分解分析算法,首先分解当前服务功能为基本报文处理单元称为网元组合而成的有向无环图,然后依据规则分析、综合分解当前服务功能所得的各网元对报文的操作以及操作域,确定该服务功能对报文的操作及操作域信息并存储到sfhm中,进入步骤3。

步骤5,创建可并行服务功能队列pq和新服务功能链队列nc;读取服务功能链中第一个服务功能及其操作、操作域信息,将其加入pq;服务功能链末尾标志置end为0,调用服务功能可并行化分析模块。

在服务功能可并行化分析模块中,根据服务功能分解分析模块中得到的各服务功能的操作及操作域信息,运行可并行化判定算法,确定该服务功能链中可进行并行优化的服务功能组合。其中,对于可并行化判定算法,主要依据是:当且仅当服务功能链中连续的服务功能,不考虑报文丢弃,各服务功能的报文操作域无交集,或者各服务功能按照其在服务功能链中的顺序对同一报文域(即有交集)的操作为读后读或写后写时,服务功能之间可并行化。

执行步骤如下:

步骤1,当pq不为空时,否,进入步骤2;是,进入步骤3;

步骤2,将当前读取的服务功能加入pq,进入步骤3;

步骤3,读取服务功能链中下一个服务功能及其操作、操作域信息,进入步骤4;

步骤4,运行可并行判定算法,判断当前读取的服务功能,是否能与pq中的所有服务功能并行。当可并行时,进入步骤5;否则,调用可并行服务功能并行优化模块;

步骤5,将当前服务功能加入pq,调用新服务功能链生成模块;

在可并行服务功能并行优化模块中,对于服务功能可并行化分析模块中得到的可并行优化服务功能组合,输入可并行该组合,执行并行优化算法,输出并行化后的新服务功能,并将其加入新服务功能链队列中;对于非可并行服务功能,将其加入新服务功能链队列中。

执行步骤如下:

步骤1,判断当前pq是否仅包含一个服务功能,是,处理非可并行服务功能,进入步骤2;否则,运行并行优化算法,进入步骤3;

步骤2,表示该服务功能不可并行,将其存储到nc,并清空pq,调用新服务功能链生成模块;

步骤3,开始运行并行优化算法,首先创建新的从网卡获取报文网元,实现从网卡获取报文的功能,其输入端连接网卡用以获取报文,输出端暂时置为空进入步骤4;

步骤4,创建复制分发网元,实现复制报文并分发各报文副本到各并行服务功能上的功能,其输入端连接步骤1中创建的新的从网卡获取报文网元输出端,输出端暂时置为空,进入步骤5;

步骤5,创建报文合并网元,实现合并经过各服务功能后的报文副本并最终形成输出报文,其输入端暂时置为空,输出端暂时置为空,进入步骤6;

步骤6,获取pq队首服务功能,并设置当前服务功能操作优先级pid数值为队列长度,pid用于多个报文副本同一报文域数据不同时的合并优先级,进入步骤7;

步骤7,删除当前服务功能从网卡获取报文网元,原输出网元连接到复制分发输出端,进入步骤8;

步骤8,判断服务功能发送报文到网卡网元输入端是否连接队列网元。是,则进入步骤9;否则进入进入步骤10;

步骤9,用该队列作为输出队列输出队列网元替换发送报文到网卡网元,在保留队列原输入的基础上,增加发送报文到网卡的输入,进入步骤11;

步骤10,替换服务功能发送报文到网卡网元为输出队列网元,发送报文到网卡网元输入即为输出队列网元输入,进入步骤11;

步骤11,替换服务功能中丢弃报文网元为设为丢弃网元,实现标记丢弃报文替代简单丢弃报文的功能,其输入为原丢弃输入,输出网元为输出队列网元进入步骤12;

步骤12,设置输出队列网元输出网元为报文合并网元,并连接。进入步骤13;

步骤13,判断当前服务功能是否是pq的队尾,是,则进入步骤14;否则,进入步骤7;

步骤14,创建新的发送报文到网卡网元,其输出端连接网卡,用以输出最终报文,其输入端连接上述创建的各服务功能输出队列输出端。至此,并行优化算法执行完毕,实现将pq中的所有服务功能并行化后生成新的服务功能,进入步骤15;

步骤15,将其加入nc,调用新服务功能链生成模块;

在新服务功能链生成模块中,结合可并行服务功能并行优化模块中并行化后生成的新服务功能以及少量不可进行并行化的服务功能,按照原服务功能顺序编排组合,最终输出即为并行优化后的新服务功能链。

执行步骤如下:

步骤1,判断服务功能链结束标识符end,值为1时,进入步骤4;否则,进入步骤2。

步骤2,判断当前读取的服务功能是否位于原服务功能链末尾,若是,则表示原服务功能链判定完毕,则进入步骤3;否则,调用服务功能可并行化分析模块;

步骤3,设置结束标识符end为1,表示原服务功能链判定完毕,调用可并行服务功能并行优化模块;

步骤4,按照原服务功能顺序编排组合,输出新服务功能链队列,即为并行优化后的服务功能链。

实施实例

考虑到本发明实现服务功能网元级并行化,需要对服务功能进行网元化分解,在实现服务功能时采用可分解的、模块式的实现方式也更为方便。因此,采用目前大多数vnf的采用的开源软件是click来实现的。具体来说,clickmodularrouter是一种用于构建灵活和可配置的网络功能的的可扩展软件架构,它运行在x86架构通用服务器上的。一个基于click实现的服务功能由称为click元素的数据包处理模块组装而成。单个click元素可实现简单的报文处理功能,如报文分类、排队、调度、和网络设备交互,而多个click元素可用于组合、实现高级路由和包处理功能,用于实现网络功能。同时,用户还可以使用click提供的api添加自定义click元素。从本质上来说,一个服务功能就是一个由click元素组成的有向图无环图,其中顶点是click元素,而报文沿着图的边传输。在此,本发明仅将click元素中对报文进行读、写(修改和增/删报文域)、丢弃等关键操作对应本发明中所定义的网元,相对应的,服务功能也就是网元所组成的有向无环图。在本发明中执行过程中也只考虑网元对服务功能操作和操作域的影响,而不考虑其他click元素的影响,这些网元包括如click元素classifier,对应读网元,实现按用户规则进行分类操作;iprewriter,对应写网元,实现修改ip源、目的地址;discard,对应丢弃网元,实现简单丢弃报文操作。

因此,为了实现用于网络功能虚拟化环境中实现网元级并行化服务功能的方法,该服务功能网元级并行化系统框架如图1所示,首先将服务功能网元级并行优化控制器运行在控制层服务器节点上,然后将服务功能实例运行在数据层服务器节点的kvm虚拟机中。在虚拟机中,利用经扩展过的click软件工具包(实现包括复制分发网元、报文合并网元、设为丢弃网元等)来实现服务功能,并利用netmap报文处理加速框架加速虚拟机报文处理,同时为了保证物理节点报文处理的性能,每个数据层服务器节点运行inteldpdk报文处理加速框架。物理节点通过以太网连接,每台服务器中的虚拟机节点采用基于dpdk的openvswitch虚拟交换机进行连接。在控制层服务器节点中,运行着的服务功能网元级并行优化控制器向上为管理员提供服务功能链输入、修改、删除等功能,向下实现了四个模块:服务功能分解分析模块、服务功能可并行化分析模块、可并行服务功能并行优化模块、新服务功能链生成模块。结合图2,服务功能网元级并行优化的具体实施步骤如下:

在服务功能分解分析模块中,控制器首先获取管理员输入的服务功能链,其中每个服务功能以click配置文件的方式呈现。随后对服务功能链进行遍历,这些服务功能均采用clickmodularrouter软件工具包中的click元素构成,因此,需要执行服务功能分解分析算法,筛选click元素以对应网元,并将服务功能分解为网元组合而成的有向无环图,如图4所示,然后分析各服务功能中网元的特性,其规则为:当存在网元执性读操作时,该服务功能所有网元的读操作域求并集;当存在网元执性写操作时,该服务功能所有网元的写操作域求并集。依据规则,从而确定各网络功能对报文的操作以及操作域信息。

服务功能分解分析算法包括:首先将当前服务功能分解为网元,然后按照规则分析、综合各网元对报文的操作以及操作域信息,确定该服务功能对报文的操作及操作域。具体来说,结合图3,对于服务功能分解分析算法,分解过程主要根据服务功能中各部分对报文的操作,包括获取、输出、读、写(修改或增/删报文域)、丢弃报文等,并将这些基本报文处理单元作为网元,从而组合成能实现特定服务功能的有向无环图。例如在图3的防火墙中,结合服务功能的报文操作逻辑,可以将防火墙分解为从网卡读取报文(获取)、按照用户设定规则和报文报头信息进行分类(读)、丢弃不满足规则的报文(丢弃)、输出满足规则的报文到网卡(输出)等四个网元组合而成的有向无环图;

分析与综合:分析、综合过程需要综合考虑组成服务功能的各网元的操作及操作域信息从而确定服务功能的可能操作和操作域,而网元的操作、操作域信息与各网元特性以及用户规则相关,如防火墙的按照用户设定规则和报文报头信息进行分类(读)网元需要根据用户的设定确定需要读取的报文域。因此,分析、综合时需要对除获取报文网元、输出报文网元、丢弃网元外的所有网元,采取的规则是:当存在网元执行读操作时,该服务功能所有网元的读操作域求并集;当存在网元执行写操作时,该服务功能所有网元的写操作域求并集。按上述规则实现的服务功能分解分析算法,可利用各网元的操作与操作域信息,确定服务功能对报文的可能操作和操作域信息并保存到sfhm中;

在服务功能可并行化分析模块中,遍历服务功能链,结合服务功能操作信息分析模块中得到的各服务功能操作及操作域信息sfhm,对当前服务功能与可并行化服务功能队列pq执行可并行化判定算法,判定它们是否可并行,条件是:当且仅当服务功能链中连续的服务功能,不考虑报文丢弃,各服务功能的报文操作域无交集,或者各服务功能按照其在服务功能链中的顺序对同一报文域(即有交集)的操作为读后读/写或写后写时,服务功能之间可并行化。这样每获得一个可并行服务功能集合,就调用可并行服务功能并行优化模块并行化生成一个新的服务功能,直到服务功能链遍历完毕。

可并行化判定算法的内容为:当且仅当当前读取的服务功能与可并行服务功能队列pq中所有服务功能,在不考虑报文丢弃的情况下,各服务功能的报文操作域无交集,或者各服务功能按照其在pq中的顺序(当前服务功能顺序为末尾)对同一报文域(即操作域有交集)的操作为读后读、写,或写后写时,pq中的服务功能可与当前读取的服务功能可并行化。

在可并行服务功能并行优化模块中,首先获取服务功能可并行化分析模块输入可并行服务功能队列,然后判定队首和队尾是否指向同一服务功能,即队列中服务功能的个数是否仅有一个,为1时表示该网元不可并行化,则加入新服务功能链队列中;大与1时,表示这些服务功能可以并行化,则执行并行优化算法,算法流程图如图3所示,最终生成一个新的服务功能,并被加入新服务功能链队列中。在上述操作完毕后,需要判断服务功能链是否遍历完毕,完毕则调用新服务功能链生成模块,否则则调用服务功能可并行化分析模块读取下一个网元。此外,可并行服务功能并行优化模块为了实现网元级并行化,还需要新的网元的支持,包括实现包括复制分发网元、报文合并网元、设为丢弃网元等,它们的具体功能如下:

复制分发网元:

功能:首先,从网卡获取报文,打上报文id,以区分报文;然后,复制报文及其报文id,并打上默认操作oid(默认为读操作),此外,还需要根据各服务功能的操作优先级pid,为将发送到各服务功能的报文副本打上相应优先级pid,以保证在报文副本合并时的准确性;最后,将相应的报文副本从对应各服务功能的出端口发出。

报文合并网元:

功能:首先,将各入端口收到的报文副本存储在各端口独占的缓存队列中,选取当前长度最短的端口缓存队列,获取队首报文;随后,根据报文id从各端口队列获取各报文副本,总副本数应该等于报文合并网元入端口总数;然后,如果有副本操作oid被设为丢弃时,丢弃所有报文副本,如果有副本oid被设为读且此副本不是最后一个副本时,仅丢弃该报文副本;最后,根据优先级pid按优先级从高到低的方式确定报文的合并顺序(即当数据不同时,保留优先级高更高的数据),进行各报文副本合并操作,生成最终的报文。

设为丢弃网元:

功能:用于替换并行服务功能中的click中discard元素,实现通过设置操作oid为丢弃防止报文副本被直接丢弃,增加输出端口,其输出端为服务功能的输出队列;

修改click中实现写(包括修改和增/删报文域)等功能的元素,增加设置操作oid为写的功能。

在新服务功能链生成模块中,需要遵循原服务功能链中的服务功能顺序,编排组合可并行服务功能并行优化模块中并行化后生成的新服务功能以及少量不可进行并行化的服务功能,即保证在不改变服务功能链功能的基础上最大程度实现并行化。

该服务功能网元级并行化系统的主要实现过程如图6所示,假如存在图4所示的服务功能链,那么经过该并行化过程,图4的并行化结果将如图5所示。

本发明提供了网络功能虚拟化环境中实现网元级并行化服务功能的方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

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