基于GPU的网络功能虚拟化系统、方法及存储介质转让专利

申请号 : CN201910454646.X

文献号 : CN110289990B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 毕军郑智隆孙晨

申请人 : 清华大学

摘要 :

本发明公开了基于GPU的网络功能虚拟化系统、方法及存储介质,包括:SFC控制模块(1)和设置于GPU中的SFC代理模块(2),其中SFC代理模块(2)内封装有SFC(3),每个SFC控制模块(1)对应一个所述SFC代理模块(2);SFC控制模块(1)包括:自适应模块(11),用于将接收到的多个数据包聚合,以获得聚合数据包,并计算分配给聚合数据包的GPU的计算资源的数量;SFC启动模块(12),用于调用GPU中的SFC代理模块(2);SFC代理模块(2),用于根据所述SFC启动模块(12)的调用来启动SFC(3);SFC(3)用于接收由自适应模块(11)发送的聚合数据包,并采用GPU的计算资源处理聚合数据包,获得处理后的数据包,并将处理后的数据包发送给SFC控制模块(1)。

权利要求 :

1.一种基于GPU的网络功能虚拟化系统,其特征在于,所述系统包括:SFC控制模块(1)和设置于GPU中的SFC代理模块(2),其中所述SFC代理模块(2)内封装有SFC(3),每个所述SFC控制模块(1)对应一个所述SFC代理模块(2);

所述SFC控制模块(1)包括:

自适应模块(11),用于将接收到的多个数据包聚合,以获得聚合数据包,并计算分配给所述聚合数据包的GPU的计算资源的数量;

SFC启动模块(12),用于调用设置于所述GPU中的SFC代理模块(2);

所述SFC代理模块(2),用于根据所述SFC启动模块(12)的调用来启动所述SFC(3);

其中,所述SFC(3)用于接收由所述自适应模块(11)发送的所述聚合数据包,并采用所述GPU的计算资源处理所述聚合数据包,获得处理后的数据包,并将所述处理后的数据包发送给所述SFC控制模块(1)。

2.根据权利要求1所述的基于GPU的网络功能虚拟化系统,其特征在于,所述系统还包括:分类器(4),用于将待分配给各个SFC控制模块(1)的数据包根据该数据包的五元组信息分配给各个SFC控制模块(1)。

3.根据权利要求1所述的基于GPU的网络功能虚拟化系统,其特征在于,所述SFC控制模块(1)还包括:丢包模块(13),用于将所述处理后的数据包根据该数据包的元数据进行丢包处理;

转发模块(14),用于将经丢包模块(13)处理过的数据包转发到网卡队列上。

4.根据权利要求1所述的基于GPU的网络功能虚拟化系统,其特征在于,所述自适应模块(11)具体包括:数据包缓冲单元(111),用于存储SFC控制模块(1)接收到的多个数据包,并获得聚合数据包;

流速监控单元(112),用于统计SFC控制模块(1)接收到的数据包的流速;

资源计算单元(113),用于接收流速监控单元(112)发送的所述流速的信息,并根据所述流速的信息计算分配给所述聚合数据包的GPU的计算资源的数量。

5.根据权利要求4所述的基于GPU的网络功能虚拟化系统,其特征在于,当自适应模块(11)内的所述聚合数据包的大小达到系统预设值时,SFC控制模块(1)通过调用SFC启动模块(12)来调用GPU中的SFC代理模块(2),从而启动SFC(3)采用GPU的所述计算资源处理所述聚合数据包。

6.根据权利要求5所述的基于GPU的网络功能虚拟化系统,其特征在于,所述系统预设值根据SFC控制模块(1)接收到的数据包的流速来确定。

7.根据权利要求5或6所述的基于GPU的网络功能虚拟化系统,其特征在于,所述分配给所述聚合数据包的GPU的所述计算资源的数量,根据SFC控制模块(1)接收到的数据包的流速来确定。

8.根据权利要求7所述的基于GPU的网络功能虚拟化系统,其特征在于,分配给所述聚合数据包的GPU的所述计算资源的数量为GPU分配给所述聚合数据包的,用于处理所述聚合数据包的线程数。

9.根据权利要求7所述的基于GPU的网络功能虚拟化系统,其特征在于,所述系统预设值与SFC控制模块(1)接收到的数据包的流速的关系,以下式表示:其中,r表示所述流速,其单位为kpps;size表示限定所述聚合数据包的大小的所述系统预设值,所述系统预设值以GPU分配给所述聚合数据包的线程数表示。

10.根据权利要求1所述的基于GPU的网络功能虚拟化系统,其特征在于,所述处理后的数据包至少包括下列中的一种:经过防火墙指示的需要丢弃的数据包和经过VPN加密后的数据包。

11.一种利用权利要求1至10中任意一项所述系统的基于GPU的网络功能虚拟化方法,其特征在于,所述方法包括:S1,通过SFC控制模块(1)中的自适应模块(11),将所述SFC控制模块(1)接收到的多个数据包聚合,以获得聚合数据包,并通过自适应模块(11)计算分配给所述聚合数据包的GPU的计算资源的数量;

S2,通过SFC启动模块(12)调用设置于所述GPU中的SFC代理模块(2),以启动封装在SFC代理模块(2)内的SFC(3);

S3,通过SFC(3)接收自适应模块(11)发送的所述聚合数据包,并采用所述GPU的计算资源处理所述聚合数据包,获得处理后的数据包,并将所述处理后的数据包发送给所述SFC控制模块(1)。

12.一种计算机可读的存储介质,其特征在于,存储有实现所述权利要求11所述方法的计算机程序。

说明书 :

基于GPU的网络功能虚拟化系统、方法及存储介质

技术领域

[0001] 本发明涉及网络功能虚拟化技术,尤其涉及一种基于GPU的网络功能虚拟化系统和方法及计算机可读的存储介质。

背景技术

[0002] (一)网络功能虚拟化技术
[0003] 在传统网络中,网络功能由专有的硬件承载,这些网络功能被称为中间件(Middlebox)。这些中间件在网络基础设施中十分常见,如防火墙、入侵检测系统(Intrusion Detection System,IDS)、网络优化代理、网络协议安全(Internet Protocol Security,IPSec)等。然而,传统基于专有硬件开发的网络功能有一系列的问题:首先,随着软件定义网络(Software Defined Network,SDN)架构的发展,网络创新变得简单,而传统专有硬件驱动的网络功能不能快速更新迭代的特性,会降低网络创新速度;其次,随着网络规模逐渐增大,例如,数据中心的流量会随着时间频繁波动,这需要网络功能灵活动态地扩展;最后,SDN为网络管理带来了更好,更灵活的方式,而传统网络功能并不能享受这种运维方式。
[0004] 针对传统专有硬件承载的网络功能的挑战,网络功能虚拟化(Network Function Virtualization,NFV)应运而生。NFV技术于2012年由欧洲电信标准协会(European Telecommunication Standards Institute,ETSI)首先提出,旨在提高网络功能的灵活性以及降低投资成本、研发成本、和运维成本。NFV技术将专有硬件承载的中间件转换为基于软件实现的网络功能,从而降低了开发难度、研发成本,并缩短研发周期,易于扩展新特性。NFV将网络功能装载于虚拟机、容器等中;利用虚拟化技术,NFV可以实现网络功能的灵活启动、销毁,随流量变化弹性伸缩;NFV利用普通商用服务器为网络功能提供虚拟机、容器等运行环境,而不再需要专有硬件,从而降低了投资成本,同时,通用的底层硬件更易于运维和管理。
[0005] (二)NFV中网络功能弹性伸缩的需求
[0006] 由于网络中流量存在很强的动态性,网络管理员通常需要增加或者减少网络功能实例数目、资源数量,来应对流量的变化。例如,当流量变大时,网络管理员会启动一个新的网络功能实例来应对更大的计算需求,避免数据包不能被处理以及丢包的情况,违反了用户对服务质量的需求。另一方面,若流量变小了,网络管理员会关闭一些实例,来减小NFV系统的能耗,从而降低网络功能服务提供商的开销。
[0007] (三)现有网络功能弹性伸缩方案的不足
[0008] 然而,现有的网络功能弹性伸缩方案存在一些不足。首先,大多数网络功能都是带状态的,比如,带状态防火墙,需要保存每个传输控制协议(Transmission Control Protocol,TCP)连接的状态,深度包检测系统需要管理并检测所有会话的状态,如超文本传输协议(Hyper Text Transfer Protocol,HTTP)连接。由于存在带状态这个挑战,当前弹性伸缩的方案,如Split/Merge,OpenNF等,都采用“状态迁移”的技术。它们在新启动或者关闭一个实例后,都将原有实例中与流或者数据包相关的状态“复制”一份到新的实例。这种方案通常被称为横向扩展(scale out/in)。在状态迁移的过程中,一个必要的步骤是暂停对原来流的处理,并将其后续报文缓存起来,待成功迁移后,再恢复对这些流的处理。
[0009] 这个过程会带来一个严重的问题,即可能造成过大的端到端延时抖动,如果数据包缓存区满了,甚至会造成丢包。其次,为了应对上述方案的不足,学术界最新提出了网络功能“无状态化”的概念,其基本技术是利用现有如远程直接数据存取(Remote Direct Memory Access,RDMA)的高速数据中心网络设备,将网络功能的处理逻辑和状态解耦,并将状态存储在远端的数据库里,通常为键-值数据库。这样的解耦使得网络功能在扩展时,只需扩展处理逻辑所需资源,不再需要缓存数据包,也能保持状态的一致性,从而避免了基于迁移方案可能造成的过大延时抖动。但是,由于每个数据包都需要访问远程的状态,相较于原来状态存储在本地的方案,其会给每个数据包带来额外的处理时间,影响端到端的延时以及吞吐。
[0010] 现有技术中存在的技术问题,其根本原因在于当前基于通用CPU平台的NFV系统只能提供十分有限的计算资源,并且CPU分配时通常以核为单位,这样不利于细粒度的资源管理。相对CPU,图形处理器(Graphics Processing Unit,GPU)具有更强的计算能力,其拥有更多的--单设备至少上千个--物理核,在扩展时,能做更细粒度的资源扩展。并且由于摩尔定律时代几乎结束,CPU的计算能力很难继续提升,但是GPU由于目前人工智能(Artificial Intelligence,AI),大数据技术的飞速发展,其计算能力有不断的大幅提升。

发明内容

[0011] 本发明针对现有技术中存在的上述问题,包括NFV基础设施层的不足,而利用GPU强大的处理能力及拥有更多计算资源的特性,以支持弹性的网络功能。因此,本发明提供了一种基于GPU的网络功能虚拟化系统,包括:SFC控制模块(1)和设置于GPU中的SFC代理模块(2),其中所述SFC代理模块(2)内封装有SFC(3),每个所述SFC控制模块(1)对应一个所述SFC代理模块(2);
[0012] 所述SFC控制模块(1)包括:
[0013] 自适应模块(11),用于将接收到的多个数据包聚合,以获得聚合数据包,并计算分配给所述聚合数据包的GPU的计算资源的数量;
[0014] SFC启动模块(12),用于调用设置于所述GPU中的SFC代理模块(2);
[0015] 所述SFC代理模块(2),用于根据所述SFC启动模块(12)的调用来启动所述SFC(3);
[0016] 其中,所述SFC(3)用于接收由所述自适应模块(11)发送的所述聚合数据包,并采用所述GPU的计算资源处理所述聚合数据包,获得处理后的数据包,并将所述处理后的数据包发送给所述SFC控制模块(1)。
[0017] 优选地,所述系统还包括:
[0018] 分类器(4),用于将待分配给各个SFC控制模块(1)的数据包根据所述数据包的五元组信息分配给各个SFC控制模块(1)。
[0019] 优选地,所述SFC控制模块(1)还包括:
[0020] 丢包模块(13),用于将所述处理后的数据包根据数据包的元数据进行丢包处理。
[0021] 转发模块(14),用于将经丢包模块(13)处理过的数据包转发到网卡队列上。
[0022] 优选地,所述自适应模块(11)具体包括:
[0023] 数据包缓冲单元(111),用于存储SFC控制模块(1)接收到的多个数据包,并获得聚合数据包;
[0024] 流速监控单元(112),用于统计SFC控制模块(1)接收到的数据包的流速;
[0025] 资源计算单元(113),用于接收流速监控单元(112)发送的所述流速的信息,并根据所述流速的信息计算分配给所述聚合数据包的GPU的计算资源的数量。
[0026] 优选地,当自适应模块(11)内的所述聚合数据包的大小达到系统预设值时,所述SFC控制模块(1)通过调用SFC启动模块(12)来调用GPU中的SFC代理模块(2),从而启动SFC(3)采用GPU的所述计算资源处理所述聚合数据包。
[0027] 优选地,所述系统预设值根据SFC控制模块(1)接收到的数据包的流速来确定。
[0028] 优选地,所述分配给所述聚合数据包的GPU的所述计算资源的数量,根据SFC控制模块(1)接收到的数据包的流速来确定。
[0029] 优选地,分配给所述聚合数据包的GPU的所述计算资源的数量为GPU分配给所述聚合数据包的,用于处理所述聚合数据包的线程数。
[0030] 优选地,所述系统预设值与SFC控制模块(1)接收到的数据包的流速的关系,以下式表示:
[0031]
[0032] 其中,r表示所述流速,其单位为kpps;size表示限定所述聚合数据包的大小的所述系统预设值,所述系统预设值以GPU分配给所述聚合数据包的线程数表示。
[0033] 优选地,所述处理后的数据包至少包括下列中的一种:经过防火墙指示的需要丢弃的数据包和经过VPN加密后的数据包。
[0034] 本发明还提供一种利用上述任意一项所述系统的基于GPU的网络功能虚拟化方法,包括:
[0035] S1,通过SFC控制模块(1)中的自适应模块(11),将所述SFC控制模块(1)接收到的多个数据包聚合,以获得聚合数据包,并通过自适应模块(11)计算分配给所述聚合数据包的GPU的计算资源的数量;
[0036] S2,通过SFC启动模块(12)调用设置于所述GPU中的SFC代理模块(2),以启动封装在SFC代理模块(2)内的SFC(3);
[0037] S3,通过SFC(3)接收自适应模块(11)发送的所述聚合数据包,并采用所述GPU的计算资源处理所述聚合数据包,获得处理后的数据包,并将所述处理后的数据包发送给所述SFC控制模块(1)。
[0038] 本发明还提供一种计算机可读的存储介质,存储有实现上述方法的计算机程序。
[0039] 本发明提出了利用高性能的GPU设备来支持NFV系统,提供更好的网络弹性伸缩能力。与现有技术相比,本发明具有如下优点或有益效果:
[0040] 1、本发明针对传统基于CPU网络功能性能的不足,提出了使用GPU来加速网络功能的方案。
[0041] 2、本发明探索利用GPU强大的处理能力,来提供更好的网络功能扩展能力。
[0042] 3、本发明利用GPU细粒度的计算资源,来提供更细粒度的弹性网络功能。

附图说明

[0043] 通过结合附图阅读下文示例性实施例的详细描述可更好地理解本公开的范围,其中所包括的附图是:
[0044] 图1为本发明的实施例一提供的一种基于GPU的网络功能虚拟化系统的示意性框图;
[0045] 图2为本发明的实施例一提供的自适应模块的示意性框图。;
[0046] 图3为本发明的实施例二提供的一种基于GPU的网络功能虚拟化方法的流程图。

具体实施方式

[0047] 为使本发明的目的、技术方案和优点更加清楚,下面结合附图以及实施例来详细说明本发明的实施方案,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。
[0048] 首先,本发明的基本设计理念是利用GPU强大的处理能力及拥有更多计算资源的特性,针对网络功能服务链(Service Function Chain,SFC)的场景,提供更好的网络功能扩展能力和弹性网络功能。
[0049] 实施例一
[0050] 图1为本发明实施例一提供的一种基于GPU的网络功能虚拟化系统的示意性框图,以下结合图1对本发明的系统进行详细说明。如图1所示,该系统主要包括:设置于CPU的SFC控制模块(1),设置于GPU中的SFC代理模块(2),其中SFC代理模块(2)内封装有SFC(3),以及设置于CPU的分类器(4),每个SFC控制模块(1)对应一个SFC代理模块(2)。SFC控制模块(1)包括:自适应模块(11),用于将SFC控制模块(1)接收到的多个数据包聚合,获得聚合数据包,并用于计算分配给所述聚合数据包的GPU的计算资源的数量;SFC启动模块(12),用于调用GPU中的SFC代理模块(2);丢包模块(13),用于将所述处理后的数据包根据数据包的元数据进行丢包处理;转发模块(14),用于将经丢包模块(13)处理过的数据包转发到网卡队列上。SFC代理模块(2)用于根据SFC启动模块(12)的调用来启动SFC(3),SFC(3)用于接收自适应模块(11)发送的聚合数据包,并采用GPU的计算资源处理聚合数据包,获得处理后的数据包。处理后的数据包由SFC控制模块(1)进行处理并转发。分类器(4),用于将数据包根据数据包的五元组信息分配给各个SFC控制模块(1)。
[0051] 本实施例提出了使用GPU来加速网络功能的方案,探索利用GPU强大的处理能力,来提供更好的网络功能扩展能力,并利用GPU细粒度的计算资源,来提供更细粒度的弹性网络功能。
[0052] 在具体的操作过程中,数据包的处理流程为:1)网卡收到数据包后,将数据包发送给分类器(4)进行处理,分类器(4)决定将应该由哪条SFC服务链处理该数据包,比如,数据包1的源IP为192.168.1.0/24,这一类的数据包分给SFC1处理;同时,具有源IP 10.0.0.0/24的数据包分给SFC2处理,即将数据包根据上述原则分配给对应的SFC控制模块(1)的自适应模块(11)做聚合处理,其中,每个自适应模块(11)对应一个SFC(3)。2)SFC控制模块(1)中的自适应模块(11)会将多个数据包聚合成一个聚合数据包(batch)。在该实施例中,当自适应模块(11)内的聚合数据包的大小达到系统预设值时,SFC控制模块(1)将调用SFC启动模块(12),从而调用GPU中的一个SFC代理模块(2),进而启动SFC(3)。SFC代理模块(2)的主要作用是封装了特定的SFC(3)并对外暴露相应接口。3)SFC(3)采用GPU的计算资源对该聚合数据包进行处理,并获得处理后的数据包,其中,处理后的数据包可包括防火墙指示需要丢弃的数据包和VPN加密后的数据包等网络功能数据包。4)GPU里的SFC(3)处理完一个聚合数据包后,SFC控制模块(1)会将经处理的数据包拷贝回CPU,并通过丢包模块(13)根据该数据包的元数据域置位的丢弃字段(drop field)将其丢弃,没有被丢弃的经处理的数据包则通过转发模块(14)转发到网卡队列上。
[0053] 自适应模块(11)是实现网络功能,即服务链功能弹性扩展的基础。由于GPU在处理时,通常是基于聚合(batch)技术来提升其性能。在本实施例中,通过聚合一部分数据包,提升了数据包在CPU和GPU之间拷贝的效率,减少单个数据包的拷贝开销。自适应模块(11)可以在SFC控制模块(1)接收到的数据包流速的大小发生变化时,通过在单位时间内,如10微妙内累计不同数目的数据包来应对其变化,从而达到扩展计算资源的目的。
[0054] 由于GPU自身不能直接转发数据包到网络端口,以及数据包可能在CPU中也有相关内存空间,而GPU不能释放CPU端的内存,故不能直接丢包,所以本发明提供了转发模块(13)和丢包模块(14)来完成数据包的转发及丢包的功能。
[0055] 转发模块(13)维护一个转发表来标识经过某SFC处理的数据包应该转发到哪个端口,而丢包模块会读取数据包的元数据字段,该字段是数据包在经过CPU和GPU处理时,相互传递信息的字段,GPU在处理后仅会标识该数据包是否应该丢弃,具体体现在需要丢弃的数据包的元数据的丢弃字段,丢包模块(14)在读到该字段后,会立马丢掉这个数据包。
[0056] 实施例二
[0057] 图2为本发明的实施例二提供的自适应模块的示意性框图。在实施例二中,提供一种自适应模块,如图2所示,上述具体过程也可通过在自适应模块(11)里维护一个较长的数据包缓冲单元(111),流速监控单元(112)以及资源计算单元(113)来实现的。自适应模块(11)用于和GPU通信,并用于计算分配给聚合数据包的GPU的计算资源的数量,即计算GPU分配给每个聚合数据包的线程数。其中,数据包缓冲单元(111)用于存储SFC控制模块(1)接收到的多个数据包,并获得聚合数据包;流速监控单元(112)通过维护一个计数器,来统计SFC控制模块(1)接收到的数据包的流速;资源计算单元(113)用于接收流速监控单元(112)发送的流速信息,并根据流速信息计算分配给聚合数据包的GPU的计算资源的数量。这里提及的计算资源的数量是指GPU分配给聚合数据包的,用于处理聚合数据包的线程数。
[0058] 当流速变大时,表明需要在单位时间内处理更多的数据包,因此,数据包缓冲单元(111)增大缓存的聚合数据包的大小,并增加分配给该聚合数据包的GPU的计算资源,即增加相应SFC的线程数;反之当流速变小时,会减小聚合数据包的大小,并减少分配给聚合数据包的GPU的计算资源。这里,聚合数据包的大小用线程数表示,在本实施例中,最小的聚合数据包值为32个线程,对应GPU一个最小计算单位的大小,从而避免过长的数据包聚合时间。
[0059] 在本实施例中,当自适应模块(11)内的所述聚合数据包的大小达到系统预设值时,SFC控制模块(1)调用SFC启动模块(12),来调用GPU中的SFC代理模块(2),从而启动SFC(3)采用GPU的所述计算资源处理所述聚合数据包。根据SFC控制模块(1)接收到的数据包的流速,确定该系统预设值,并根据SFC控制模块(1)接收到的数据包的流速,确定分配给该聚合数据包的GPU的所述计算资源的数量,即线程数。
[0060] 具体的,系统预设值与SFC控制模块(1)接收到的数据包的流速的关系,以下式表示:
[0061]
[0062] 其中,r表示所述流速,其单位为kpps;size表示限定聚合数据包的大小的系统预设值,系统预设值以GPU分配给所述聚合数据包的线程数表示。
[0063] 举例说明自适应模块(11)的工作流程,流速监控单元(112)检测到SFC控制模块接收到的数据包流速为128kpps(Packet Per Second),资源计算单元(113)根据该流速,计算数据包缓冲单元(111)中聚合数据包的大小,即计算分配给聚合数据包的GPU的线程数。在本实施例中,分配的线程数为32,即当聚合数据包的大小达到32个线程数的时候,便将聚合数据包发送给相应的SFC进行处理。在本实施例中,当数据包流速增加至256kpps时,对应的数据包缓冲单元(111)中的聚合数据包的大小为64个线程数;当流速减小至64kpps时,会将其减小至32个线程数。
[0064] 本实施例提出了使用GPU来加速网络功能的方案,探索利用GPU强大的处理能力,来提供更好的网络功能扩展能力,并利用GPU细粒度的计算资源,来提供更细粒度的弹性网络功能。
[0065] 实施例三
[0066] 表1为本发明的实施例一提供的SFC启动模块中维护的用于启动相应SFC的代理表。如表1所示,SFC启动模块(12)中维护了一个代理表来启动相应的SFC(3)。
[0067] SFC ID GPU ID 代理 网络功能1 #1 指针1 [1,2]
2 #1 指针2 [3,4]
3 #2 指针3 [4,5,6]
[0068] 表1 SFC启动模块中维护的用于启动相应SFC的代理表
[0069] 表1中,SFC ID中记录了各SFC的身份标识(SFC ID);GPU ID记录了各SFC对应的GPU的身份标识(GPU ID),这种对应关系表明SFC调用哪个GPU里的计算资源来处理聚合数据包,GPU的数目由服务器里周边元件连接快速接口(peripheral  component interconnect express,PCIe)的数目决定。在本实施例中,GPU的数目般为2个,一般情况下也可为4个。代理字段采用函数指针(Pointer)指向每个SFC的函数地址,对应的SFC代理模块里记录有其所封装的SFC的函数地址,这样,通过pointer指针可方便的通过SFC代理模块调用对应的SFC。最后,NFs字段详细记录了SFC上对应的网络功能(NF)类型,如防火墙,VPN等,在本实施例中,NF类型使用数字1~6表示,其代表着网络功能的注册ID。NFs字段的作用是用于记录SFC上的NF,以方便后续查看NF配置。需要注意的是,由于编程语言的不同,例如CUDA和OpenCL,网络功能和SFC代理模块的实现方式也可能不同。例如,本实施例的实现是基于CUDA,NF和SFC是使用__device__关键字来表示其为GPU里的功能,SFC代理模块是使用__global__关键字使其能被SFC启动模块调用。
[0070] 下面再详细说明下本实施例中的表1是如何形成的,如表1所示,以SFC ID为2的SFC为例,该SFC上包括防火墙(Firewall)和VPN两个网络功能,则这两个网络功能被分别分配了唯一的NF ID,以3和4表示。防火墙和VPN注册后,将这两个网络功能合起来编译成使用__global__关键字标识的SFC代理模块,并添加到表1中,在本实施例的表1中,该SFC代理模块封装的SFC的ID为2。如此,表1就增加了一条记录,SFC ID为2,表示包含防火墙和VPN的SFC代理模块及其封装的SFC,并将其部署到GPU ID为#1的GPU上,同时注册代理字段为Pointer 2,以指向该SFC的函数地址,方便调用该SFC,另外,该SFC的NFs字段为[3,4]。当需要被该SFC处理的数据包被聚合为一定的大小后,就会通过SFC启动模块调用对应的SFC代理,以启动SFC ID为2的SFC服务链进行处理。
[0071] 本发明提出的支持NFV弹性网络的基于GPU的网络功能虚拟化系统,能够由通用GPU以及多种通用CPU技术组合来支持,CPU端技术包括但不限:x86通用服务器+KVM,x86通用服务器+Linux容器等。
[0072] 实施例四
[0073] 图3为本发明的实施例四提供的一种基于GPU的网络功能虚拟化方法的流程图,如图3所示,本发明还提供了一种基于GPU的网络功能虚拟化方法,该方法包括:
[0074] S1,通过SFC控制模块(1)中的自适应模块(11),将所述SFC控制模块(1)接收到的多个数据包聚合,以获得聚合数据包,并通过自适应模块(11)计算分配给所述聚合数据包的GPU的计算资源的数量;
[0075] S2,通过SFC启动模块(12)调用设置于所述GPU中的SFC代理模块(2),以启动封装在SFC代理模块(2)内的SFC(3);
[0076] S3,通过SFC(3)接收自适应模块(11)发送的所述聚合数据包,并采用所述GPU的计算资源处理所述聚合数据包,获得处理后的数据包,并将所述处理后的数据包发送给所述SFC控制模块(1)。
[0077] 本实施例提出了使用GPU来加速网络功能的方案,探索利用GPU强大的处理能力,来提供更好的网络功能扩展能力,并利用GPU细粒度的计算资源,来提供更细粒度的弹性网络功能。
[0078] 此外,本发明还提供一种计算机可读存储介质,其中存储有基于GPU的网络功能虚拟化的系统程序,所述系统程序在被处理器执行时实现上述本发明基于GPU的网络功能虚拟化方法。在具体应用时:可将该计算机可读存储介质部署于终端或服务端,以利用上述系统对数据包进行处理,以利用GPU强大的处理能力及拥有更多计算资源的特性,针对网络功能服务链的场景,提供更好的网络功能扩展能力和弹性网络功能。
[0079] 以上实施例仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以存在许多变形。凡是本领域的普通技术人员能以本发明公开的内容直接导出或是联想到的所有变形均应被认为是本发明的保护范围。