数据处理方法及电子设备与流程

文档序号:17488576发布日期:2019-04-23 20:12阅读:151来源:国知局
数据处理方法及电子设备与流程

本申请涉及计算机技术领域,具体而言,涉及一种数据处理方法及电子设备。



背景技术:

sriov(singlerooti/ovirtualization,单根输入输出虚拟化)是一种基于硬件的虚拟化解决方案,允许不同虚拟器或容器之间共享pci(peripheralcomponentinterconnect,外围部件接口)设备,使得虚拟于pf(physicalfunction,物理功能)端口上的vf(virtualizedfunction,虚拟化功能)端口能够直接使用pci的硬件功能,且虚拟于同一pf端口上的不同vf接口能够共享一个或多个的物理资源,以提高效率,其中,网络资源的计算和部署开销主要在硬件设备上。



技术实现要素:

本申请的目的在于提供一种数据处理方法及电子设备,使为nfv系统分配的核的数量与vf接口能够启动的报文收发队列组的数量不相同时,nfv系统能够启动。

为了实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本申请实施例提供了一种数据处理方法,应用于电子设备,所述电子设备存储有网络功能虚拟化nfv系统,所述nfv系统包括至少两个虚拟功能vf接口,所述至少两个vf接口中每个vf接口预先创建有多个对应的报文收发队列,所述电子设备为所述nfv系统分配有多个核,所述方法包括:在所述nfv系统启动时,若为所述nfv系统分配的核的数量与数值组中的每一数值均不相同,在所述数值组中确定第一数值,其中,所述第一数值小于为所述nfv系统分配的核的数量,所述数值组中的每一数值表示所述每个vf接口可启动的报文收发队列组的数量;启动与所述第一数值对应数量的目标核,且所述每个vf接口启动与所述第一数值对应数量的目标报文收发队列组,以使所述每个vf接口对应启动的每一所述目标报文收发队列组与每一所述目标核一一对应;所述目标核通过各自所对应的所述目标报文收发队列组收发报文。

第二方面,本申请实施例提供了一种电子设备,包括处理器、存储器及网络接口卡,所述存储器中存储有网络功能虚拟化nfv系统,所述网络接口卡虚拟有至少两个虚拟功能vf接口,所述至少两个vf接口中每个vf接口预先创建有多个对应的报文收发队列,所述电子设备为所述nfv系统分配有多个核;所述处理器用于,在所述nfv系统启动时,若为所述nfv系统分配的核的数量与数值组中的每一数值均不相同,在所述数值组中确定第一数值,其中,所述第一数值小于为所述nfv系统分配的核的数量,所述数值组中的每一数值表示所述每个vf接口可启动的报文收发队列组的数量;所述处理器还用于,启动与所述第一数值对应数量的目标核,且所述每个vf接口启动与所述第一数值对应数量的目标报文收发队列组,以使所述每个vf接口对应启动的每一所述目标报文收发队列组与每一所述目标核一一对应;所述处理器还用于,所述目标核通过各自所对应的所述目标报文收发队列组收发报文。

相对于现有技术,本申请实施例所提供的一种数据处理方法及电子设备,在nfv系统启动时,若为nfv系统分配的核的数量与数值组中的每一数值均不相同,则通过在数值组中确定出第一数值,进而启动与第一数值对应数量的目标核,且每个vf接口启动与第一数值对应数量的目标报文收发队列组,以使每个vf接口对应启动的每一目标报文收发队列组与每一目标核一一对应,进而使目标核能够通过各自所对应的目标报文收发队列组收发报文,nfv系统能够启动,相比于现有技术,使为nfv系统分配的核的数量与vf接口能够启动的报文收发队列组的数量不相同时,nfv系统能够启动。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。

图1为本申请实施例提供的nfv系统的一种方框示意图;

图2为本申请实施例所提供的一种示意性应用场景图;

图3为本申请实施例所提供的另一种示意性应用场景图;

图4示出了本申请实施例所提供的一种数据处理方法的一种示意性流程图;

图5为图4中s103的子步骤的一种示意性流程图。

图中:300-电子设备;301-处理器;302-存储器;303-总线;304-网络接口卡。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

nfv(networkfunctionvirtualization,网络功能虚拟化)系统是一款可以安装于普通x86服务器上的虚拟设备,结合dpdk(dataplandevelopkit,数据面开发套件)加速技术,能够将协议栈转发功能在用户态实现。

例如,请参照图1,图1为本申请实施例提供的的电子设备300的一种方框示意图。电子设备300包括处理器301、存储器302、总线303和网络接口卡304(networkinterfacecard,nic),处理器301、存储器302和网络接口卡304通过总线303互相通信。

其中,处理器301用于执行存储器302中存储的可执行模块,例如计算机程序。本申请实施例所指的处理器301,可以是一个处理元件,也可以是多个处理元件的统称,例如,该处理器301可以是中央处理器(centralprocessingunit,cpu),也可以是特定集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digitalsignalprocessor,dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,fpga)。

存储器302,可以用于存储电子设备300中的各种程序和数据,比如nfv系统对应的程序指令。存储器302可以是一个存储装置,也可以是多个存储元件的统称,存储器302可以包括随机存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory),例如磁盘存储器,闪存(flash)等。

总线303可以是工业标准体系结构(industrystandardarchitecture,isa)总线、外部设备互连(peripheralcomponentinterconnect,pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,eisa)总线等。该总线303可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

网络接口卡304,为主要工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能,以及提供pf端口,并在pf端口上利用虚拟化功能虚拟出vf接口,供nfv系统使用。

存储器302用于存储程序,例如用以实施nfv功能的程序指令,处理器301在接收到执行指令后,执行存储器302所存储的程序以实现本申请实施例揭示的数据处理方法。

dpdk平台在用户态提供了多种类型网络接口卡的驱动,以实现报文的收发。其中,处理器301包括有多个核(core),网络接口卡用于提供pf端口,根据虚拟化功能可以在pf端口上虚拟出vf接口,以使nfv系统利用虚拟出的vf接口收发报文,并由处理器301分配给nfv系统的至少一个核处理报文,其中,处理器301为nfv系统分配的核的数量,可以是nfv系统启动时,由处理器301接收用户输入的参数获得,也可以由预设的参数获得。比如,nfv系统在启动时,用户输入的参数指定:核0和核1作为nfv系统所使用的核,则处理器301确定分配给nfv系统的核包括核0及核1两个核,并将核0和核1进行隔离,只允许该nfv系统使用核0及核1。其中,处理器301分配给nfv系统至少一个核,是指处理器301分配至少一个核给nfv系统使用,即由处理器301提供nfv系统对于核的开销。

但在虚拟环境中,虚拟端口能够创建的报文收发队列数量会受到硬件端口的限制。比如,在一些网络接口卡中,网络接口卡所包含的所有pf端口,最多可以创建128个vf接口,例如对于具有4个pf端口的网络接口卡来说,每个pf端口最多能创建32个vf接口,而在收发报文时,vf接口中能够启动的最大队列数取决于vf接口对应的pf端口。由于硬件端口的限制,在一些网络接口卡中,vf接口能够启动的发送队列和接收队列的最大数量均为4,且接收队列必须是2的幂次方,也就是说,接收队列能够启动的数量只能为1、2、4。因此,在虚拟环境中,若在网络接口卡的pf端口为nfv系统虚拟出vf接口,则nfv系统包括的每个vf接口上能够启动的发送队列的最大数量也为4,且接收队列能够启动的数量也必须是2的幂次方,即接收队列能够启动的数量只能为1、2、4。

一般来说,在被分配有多个核的nfv系统中,可以利用网卡多队列技术,使一个vf接口对应的一个接收队列和一个发送队列分别与分配给nfv系统的一个特定的核进行绑定,从而使该核能够通过该vf接口进行报文的收发;并且,为避免多个核对同一队列的并发操作,在同一vf接口上,启动工作的不同的核需要对应不同的接收队列和发送队列进行收发报文。

并且,由于每个核在每个vf接口上都有可能存在收发报文的行为,那么在nfv系统启动时,需要在每个启动的vf接口对应的接收队列和发送队列中,为每个核均绑定一个接收队列和一个发送队列;因此,为了便于理解,在本申请实施例中,将某一个vf接口对应的报文收发队列中所启动的接收队列和发送队列两两组合定义为报文收发队列组,每一个报文收发队列组均包括一个接收队列和一个发送队列,且每一个报文收发队列组对应同一个vf接口,并与同一个核进行绑定。

比如,请参阅图2,图2为本申请实施例所提供的一种示意性应用场景图,示例性地,该电子设备300的处理器301包含有核0、核1、核2、核3、核4、核5、核6、核7共计8个核,电子设备300为该nfv系统分配使用核0和核1两个核;网络接口卡包括pf0、pf1、pf2及pf3共计4个pf端口,且在端口pf1上为nfv系统虚拟有vf0及vf1两个vf接口;可以在内存中为vf0预先创建4个对应的报文收发队列,包括4个接收队列和4个发送队列,且为vf1预先创建4个对应的报文收发队列,同样包括4个接收队列和4个发送队列;由于核0和核1在vf0和vf1均有可能存在收发报文的行为,则在为vf0和vf1预先创建的4个对应的报文收发队列中,均启动两个接收队列和两个发送队列,且vf0对应启动的两个接收队列(图2中示意性启动接收队列3和接收队列4)分别与核0和核1进行绑定,vf0对应启动的两个发送队列(图2中示意性启动发送队列11和发送队列12)分别与核0和核1进行绑定,具体地,接收队列3与核0绑定,接收队列4与核1绑定,发送队列11与核0绑定,发送队列12与核1绑定,由此,在vf0对应启动的两个接收队列和两个发送队列中,与核0对应绑定的接收队列3和发送队列11构成了一个报文收发队列组,与核1对应绑定的接收队列4和发送队列12构成了另一个报文收发队列组;同理,vf1对应启动的两个接收队列(图2中示意性启动接收队列5和接收队列6)分别与核0和核1进行绑定,vf1对应启动的两个发送队列(图2中示意性启动发送队列13和发送队列14)分别与核0和核1进行绑定,具体地,接收队列5与核0绑定,接收队列6与核1绑定,发送队列13与核0绑定,发送队列14与核1绑定;由此,在vf1对应启动的两个接收队列和两个发送队列中,与核0对应绑定的接收队列5和发送队列13构成了一个报文收发队列组,与核1对应绑定的接收队列6和发送队列14构成了另一个报文收发队列组。

其中,值得说明的是,一般来说,nfv系统在处理报文时,接收报文的vf接口与发送报文的vf接口可能并不相同。比如,在如图2所示的应用场景中,以核0处理报文为例,由vf0接收的报文,被分配至vf0对应的报文收发队列组中与核0相绑定的接收队列3;核0在获得由vf0接收的报文,经处理后可能会发送至vf1对应的报文收发队列组中与核0相绑定的发送队列13,进而由vf1发出。

但如上所述,由于在虚拟环境下,vf接口能够启动的发送队列和接收队列的数量会受到pf端口的限制,比如在一些网络接口卡中,vf接口上能启动的发送队列和接收队列的最大数量均为4,且接收队列能够启动的数量只能为1、2、4,导致若为nfv系统分配的核的数量与vf接口能够启动的报文收发队列组的数量不匹配,例如,为nfv系统分配的核的数量大于vf接口能够启动的报文收发队列组的数量,受到vf接口能够启动的报文收发队列组的数量以及多个核不能对应同一报文收发队列组进行并发操作的限制,可能会导致nfv系统无法启动成功。

基于上述缺陷,本申请实施例所提供的一种可能的实现方式为:在nfv系统启动时,若为nfv系统分配的核的数量与数值组中的每一数值均不相同,则通过在数值组中确定出第一数值,进而启动与第一数值对应数量的目标核,且每个vf接口启动与第一数值对应数量的目标报文收发队列组,以使每个vf接口对应启动的每一目标报文收发队列组与每一目标核一一对应,进而使目标核能够通过各自所对应的目标报文收发队列组收发报文,nfv系统能够启动。

如上所述,由于nfv系统在启动时,对于每一vf接口对应启动的报文收发队列,需要为每个启动的核都分配一个报文收发队列组,且每个启动的核在每一vf接口上对应报文收发队列组的方式均相同,基于接收报文的vf接口与发送报文的vf接口可能并不相同,下面以两个vf接口作为实施的对象,对本申请实施例提供的一种数据处理方法进行示例性地说明。

请参阅图3,图3为本申请实施例所提供的另一种示意性应用场景图,该nfv系统包括有vf接口并被分配有多个核(图3中示例性地包含有5个核),以1个vf接口进行示例性说明,该vf接口预先创建有多个对应的报文收发队列,比如结合图2所示,1个vf接口可以在内存中预先创建有4个对应的报文收发队列,包含4个接收队列和4个发送队列;以为nfv系统分配5个核的应用场景为例,由于接收队列能够启动的最大数量为4,且必须是2的幂次方,也就是说,接收队列能够启动的数量只能为1、2、4,因此,由启动的一个接收队列和启动的一个发送队列并对应绑定同一核所构成一个报文收发队列组,则该vf接口上能够启动的报文收发队列组的数量只能为1、2、4。

值得说明的是,图3仅以1个vf接口为例进行示例性说明,但每一启动的vf接口,均存在如图3所示的对应关系。

并且,在本申请实施例中,报文收发队列组为逻辑概念,在一个vf接口对应启动的接收队列和发送队列中,绑定了相同目标核的一个接收队列和一个发送队列构成一个报文收发队列组,比如在如图2所示的应用场景中,vf0对应启动的两个接收队列和两个发送队列中,绑定了核0的接收队列3和发送队列11构成一个报文收发队列组,绑定了核1的接收队列4和发送队列12构成另一个报文收发队列组。

请参阅图4,图4示出了本申请实施例所提供的一种数据处理方法的一种示意性流程图,该数据处理方法应用于如图1所示的电子设备300,该电子设备300存储有如图3所示的nfv系统,在本申请实施例中,该数据处理方法包括以下步骤:

s101,nfv系统启动。

s102,判断为nfv系统分配的核的数量与数值组中的数值是否相同;若为是,执行s105;若为否,执行s103。

在本申请实施例中,电子设备300中记录有一数值组,该数值组中记录有至少一个数值,其中,数值组中的每一数值表示每个vf接口可启动的报文收发队列组的数量,比如在如图3所示的应用场景中,由于vf接口对应的的接收队列能够启动的数量只能为1、2、4,则该vf接口能够启动的报文收发队列组的数量只能为1、2、4,则数值组中包含的数值有1、2、4。

nfv系统在启动时,电子设备300则根据为nfv系统分配的核的数量,将核的数量与数值组中的每一数值进行比较,判断核的数量是否与数值组中的数值相同,若核的数量与数值组中的某一数值相同,则nfv系统可按照为每一核均对应一个报文收发队列组的方式,每个vf接口启动与核的数量具有相同数量的接收队列和发送队列,从而使每个vf接口构成与核的数量具有相同数量的目标报文收发队列组,完成nfv系统的启动,执行s105;反之,若核的数量与数值组中的每一数值均不相同,则执行s103。

比如,在如图3所示的应用场景中,数值组中包含的数值有1、2、4,若核的数量为4,则核的数量与数值组中的“4”相同,此时nfv系统可启动4个接收队列和4个发送队列,从而使每个vf接口均构成4个目标报文收发队列组,此时执行s105;而若核的数量为5,则核的数量与数值组中的每一数值均不相同(数值组中的数值只有1、2、4),此时则执行s103。

s103,在数值组中确定第一数值。

在由s102确定为nfv系统分配的核的数量与数值组中的每一数值均不相同时,此时在数值组中确定出第一数值,该第一数值表征nfv系统当前欲启动的核的数量,并且,该第一数值小于为nfv系统分配的所有核的数量。

可选地,请参阅图5,图5为图4中s103的子步骤的一种示意性流程图,作为一种可能的实现方式,s103包括以下子步骤:

s103-1,判断为nfv系统分配的核的数量是否大于数值组中的最大值;若为是,则执行s103-3;若为否,则执行s103-2。

s103-2,将数值组中小于为nfv系统分配的核的数量的所有数值中的最大值作为第一数值。

s103-3,将数值组中的最大值作为第一数值。

如上所述,由于每个vf接口能够启动的报文收发队列组的数量均记录于数值组中,因此,电子设备300需要综合为nfv系统分配的核的数量与数值组中包含的每一数值的大小确定出第一数值。

电子设备300在确定出第一数值时,判断为nfv系统分配的核的数量与数值组中的最大值两者的大小,若为nfv系统分配的核的数量大于数值组中的最大值,表征此时即使启动所有的报文收发队列组,依然不能与所有的核一一对应。因此,作为一种可能的实现方式,在本申请实施例中,若为nfv系统分配的核的数量大于数值组中的最大值,则将数值组中的最大值作为第一数值,以使启动工作的核的数量最大化。其中,数值组中的最大值表征当前每个vf接口能够支持启动的最大数量的报文收发队列组。

比如,在上述示例中,数值组中包含的数值有1、2、4,为若nfv系统分配的核的数量为5,则为nfv系统分配的核的数量(为5)大于数值组中的最大值(为4),此时则将4作为第一数值。

此时,示例性地,以启动序号为0和序号为1的两个vf接口(即vf0和vf1)为例进行说明,则对于vf0和vf1各自对应的4个报文收发队列,开启的四个接收队列rxq及四个发送队列txq与核的对应关系可以如下表1所示:

表1一种报文收发队列组与核的对应关系示意

其中,core0、core1、core2、core3、core4分别表示序号为0、1、2、3、4的核;txq:00、txq:01、txq:02、txq:03表示vf0对应的多个发送队列中,序号分别为00、01、02、03的发送队列;rxq:00、rxq:01、rxq:02、rxq:03表示vf0对应的多个接收队列中,序号分别为00、01、02、03的接收队列;txq:20、txq:21、txq:22、txq:23表示vf1对应的多个发送队列中,序号分别为20、21、22、23的发送队列;rxq:20、rxq:21、rxq:22、rxq:23表示vf1对应的多个接收队列中,序号分别为20、21、22、23的接收队列;na表示不负责队列。

值得说明的是,在本申请实施例其他的一些实施方式中,若为nfv系统分配的核的数量大于数值组中的最大值,还可以选用数值组中除最大值以外的其他值作为第一数值,比如在上述示例中,数值组中包含的数值有1、2、4,若为nfv系统分配的核的数量为5,不仅可以选定4作为第一数值,还可以选定1或2作为第一数值,只要是在数值组中选定的数值小于为nfv系统分配的核的数量即可。

并且,值得说明的是,在上述示例中,由于为nfv系统分配的核的数量和数值组中的每一数值均不相同,因此,为nfv系统分配的核的数量只可能大于或小于数值组中的最大值。

因此,若为nfv系统分配的核的数量小于数值组中的最大值,表征此时若启动所有的报文收发队列组,则可能导致部分启动的报文收发队列组收到的报文没有对应的核进行报文的处理,导致该部分启动的报文收发队列组所获得的报文将被丢弃。

作为一种可能的实现方式,若为nfv系统分配的核的数量小于数值组中的最大值,此时则将数值组中小于为nfv系统分配的核的数量的所有数值中的最大值作为第一数值,以使nfv系统能够启动工作的核的数量最大化。

比如,在上述示例中,数值组中包含的数值有1、2、4,若为nfv系统分配的核的数量为3,则核的数量(为3)小于数值组中的最大值(为4),此时数值组中小于核的数量的所有数值包括1和2,则将数值组中小于核的数量的最大值,即2作为第一数值。

此时,示例性地,以启动序号为0和序号为1的两个vf接口(即vf0和vf1)为例进行说明,则对于vf0和vf1各自对应的4个报文收发队列中,开启的两个接收队列rxq及两个发送队列txq与核的对应关系可以如下表2所示:

表2另一种报文收发队列组与核的对应关系示意

其中,core0、core1、core2分别表示序号为0、1、2的核;txq:00、txq:01表示vf0对应的多个发送队列中,序号分别为00、01的发送队列;rxq:00、rxq:01表示vf0对应的多个接收队列中,序号分别为00、01的接收队列;txq:20、txq:21表示vf1对应的多个发送队列中,序号分别为20、21的发送队列;rxq:20、rxq:21表示vf1对应的多个接收队列中,序号分别为20、21的接收队列;na表示不负责队列。

值得说明的是,在本申请实施例其他的一些实施方式中,若为nfv系统分配的核的数量小于数值组中的最大值,数值组中小于为nfv系统分配的核的数量的所有数值中的其他值作为第一数值,比如在上述示例中,数值组中小于为nfv系统分配的核的数量的所有数值包括1和2,此时不仅可以将2作为第一数值,还可以选定1作为第一数值。

s104,启动与第一数值对应数量的目标核,且每个vf接口启动与第一数值对应数量的目标报文收发队列组,以使每个vf接口对应启动的每一目标报文收发队列组与每一目标核一一对应。

s105,目标核通过各自所对应的目标报文收发队列组收发报文。

由此,根据在数值组中确定出的第一数值,启动与第一数值对应数量的目标核,且每个vf接口启动与第一数值对应数量的接收队列和发送队列,并按照每个vf接口对应启动的所有接收队列和发送队列中,与对应同一目标核的接收队列和发送队列构成一个目标报文收发队列组的方式,以使每一目标报文收发队列组与每一目标核一一对应。

比如,在上述示例中,数值组包含的数值有1、2、4,且确定出第一数值为4,则启动4个核、且每个vf接口均对应启动4个接收队列和4个发送队列,并将启动的4个接收队列和4个发送队列中,将对应同一核的接收队列和发送队列组合为一个目标报文收发队列组,以使4个核与每个vf接口对应启动的4个目标报文收发队列组一一对应;若第一数值为2,则启动2个核、且每个vf接口均启动2个对应的接收队列和发送队列,并将启动的2个接收队列和2个发送队列中,将对应同一核的接收队列和发送队列组合为一个目标报文收发队列组,以使2个核与每个vf接口对应启动的2个目标报文收发队列组一一对应。

例如,在如图2所示的应用场景中,电子设备300为nfv系统分配有核0和核1两个核,且启动了vf0和vf1两个vf接口,则在预先为vf0和vf1创建的多个报文收发队列中,均启动2个接收队列和2个发送队列(比如图2中,vf0对应启动了接收队列3、接收队列4、发送队列11和发送队列12,vf1对应启动了接收队列5、接收队列6、发送队列13和发送队列14);将vf0对应启动的2个接收队列分别对应核0和核1,并将vf0对应启动的2个发送队列分别对应核0和核1,具体地,接收队列3与核0对应,接收队列4与核1对应,发送队列11与核0对应,发送队列12与核1对应,由此,在vf0对应启动的2个接收队列和2个发送队列中,对应核0的接收队列3和发送队列11作为一个目标报文收发队列组,对应核1的接收队列4和发送队列12作为另一个目标报文收发队列组;同理,将vf1对应启动的2个接收队列分别对应核0和核1,并将vf1对应启动的2个发送队列分别对应核0和核1,具体地,接收队列5与核0对应,接收队列6与核1对应,发送队列13与核0对应,发送队列14与核1对应,由此,在vf1对应启动的2个接收队列和2个发送队列中,对应核0的接收队列5和发送队列13作为一个目标报文收发队列组,对应核1的接收队列6和发送队列14作为另一个目标报文收发队列组。

由此,每个vf接口中每一启动的目标报文收发队列组与每一目标核一一对应后,每一目标核均启动线程,将每一目标核的线程与各自对应的目标报文收发队列组进行绑定,从而使每一目标核由各自所对应的目标报文收发队列组中的接收队列接收报文,并由各自所对应的目标报文收发队列组中的发送队列发送报文,使每一目标核均能够启动线程并通过各自所对应的目标报文收发队列组循环收发报文,nfv系统能够启动。

其中,如上所述,一个报文收发队列组由一个vf接口对应的一个接收队列和一个发送队列构成。因此,值得说明的是,目标核在通过对应的目标报文收发队列组收发报文时,对于同一条报文,由于收发该报文的vf接口可能不同,目标核接收到该报文的接收队列和发送该报文的发送队列可能不属于同一目标报文收发队列组。

其中,以上述表2的对应关系为例,对绑定目标核的线程与报文收发队列组进行示例性说明。示例性地,在内存中创建报文收发队列时,每一报文收发队列组包含的接收队列和发送队列在内存中均具有地址;在绑定目标核的线程与目标报文收发队列组时,将目标报文收发队列组包含的接收队列和发送队列各自内存中的地址发送给目标核;由此,目标核则根据绑定的接收队列在内存中的地址接收报文,且根据绑定的发送队列在内存中的地址发送报文。

值得说明的是,在启动与第一数值对应数量的目标核时,由于分配给nfv系统的所有核中,除所有的目标核以外的其他全部核,均没有对应的报文收发队列组收发报文,因此,作为一种可能的实现方式,可以不启动为nfv系统分配的多个核中除所有启动的目标核以外的其他所有核,以避免目标报文收发队列组被除所对应的目标核以外的其他核收发报文,出现并发的情形。

并且,值得说明的是,在每一个vf接口对应启动的每一目标报文收发队列组与每一目标核存在一一对应的关系;但对于每一目标核来说,每一目标核对应的目标报文收发队列组的数量,与启动的vf接口的数量有关,比如在如图2所示的应用场景中,在启动两个vf接口时,核0对应有两个目标报文收发队列组,核1对应有两个目标报文收发队列组。

基于上述设计,本申请实施例所提供的一种数据处理方法,在nfv系统启动时,若为nfv系统分配的核的数量与数值组中的每一数值均不相同,则通过在数值组中确定出第一数值,进而启动与第一数值对应数量的目标核,且每个vf接口启动与第一数值对应数量的目标报文收发队列组,以使每个vf接口对应启动的每一目标报文收发队列组与每一目标核一一对应,进而使目标核能够通过各自所对应的目标报文收发队列组收发报文,nfv系统能够启动,相比于现有技术,使为nfv系统分配的核的数量与vf接口能够启动的报文收发队列组的数量不相同时,nfv系统能够启动。

在一些应用场景中,nfv系统在处理报文时,接收报文的vf接口与发送报文的vf接口可能并不相同,比如,在如图2所示的应用场景中,以核0处理报文为例,由vf0接收的报文,分配给核0处理后,可能会由vf1发出。

因此,可选地,作为一种可能的实现方式,nfv系统包括的至少两个vf接口中包括第一vf接口和第二vf接口,且第一vf接口和第二vf接口各自启动有与第一数值对应数量的目标报文收发队列组。

由此,在nfv系统中目标核通过各自所对应的目标报文收发队列组收发报文时:目标核将由第一vf接口启动的目标报文收发队列组中,与目标核对应的接收队列所接收的报文,经处理后,分配至第二vf接口启动的目标报文收发队列组中,与目标核对应的发送队列,以使由第一vf接口所接收的报文,被目标核处理后,经第二vf接口发出。

例如,在如图2所示的应用场景中,以核0作为目标核、vf0作为第一vf接口、vf1作为第二vf接口为例进行示意性说明,核0在由vf0启动的目标报文收发队列组中,与核0对应的接收队列3接收到报文时,将该报文处理后,分配至vf1启动的目标报文收发队列组中,与核0对应的发送队列13,以使该报文被核0处理后,由vf1发出。

值得说明的是,在本申请实施例其他一些可能的应用场景中,在nfv系统中目标核通过各自所对应的目标报文收发队列组收发报文时,目标核还可以将由第一vf接口启动的目标报文收发队列组中,与目标核对应的接收队列所接收的报文,经处理后,分配至第一vf接口启动的目标报文收发队列组中,与目标核对应的发送队列,即此时,由第一vf接口所接收的报文,被目标核处理后,同样经第一vf接口发出。

比如,在如图2所示的应用场景中,以核0作为目标核、vf0作为第一vf接口、vf1作为第二vf接口为例进行示意性说明,核0在由vf0启动的目标报文收发队列组中,与核0对应的接收队列3接收到报文,核0将该报文处理后,分配至vf0启动的目标报文收发队列组中,与核0对应的发送队列11,以使该报文被核0处理后,同样由vf0发出。

在一些应用场景中,由于nfv系统不仅需要处理属于业务的数据报文,同时还需要处理一定的协议报文,比如ospf(openshortestpathfirst,开放式最短路径优先)协议,一般来说,需要在ospf保持连接时,才能确保数据报文在路由间正常可达,而若设备间数据量较大,设备接收到的数据报文的量超过了吞吐量,或者是设备中的软件程序处理速度不够快,则可能导致用于ospf保活的hello报文被丢弃,从而导致ospf连接断开,使nfv系统不能正常的收发报文,造成nfv系统转发业务断流。

因此,可选地,作为一种可能的实现方式,将nfv系统所有启动的目标核各自的任务进行分配,其中,所有启动的目标核包括控制核和转发核。

并且,一般来说,相比于数据报文,协议报文的数据量较小。因此,在本申请实施例中,将协议报文分配至控制核对应的目标报文收发队列组中的接收队列,以使控制核处理协议报文;将数据报文分配至转发核对应的目标报文收发队列组中的接收队列,以使转发核处理数据报文。

其中,作为一种可能的实现方式,可以采用网络接口卡上的硬件功能导流器(flowdirector)和rss(receivesidescaling,接收端扩展)对协议报文和数据报文进行分流。但由于现有技术中,rss不支持对协议报文单独进行分流,因而,在本实施例提供的方法中,作为一种可能的实现方式,可以由导流器将协议报文导流至控制核对应的目标报文收发队列组中的接收队列,并由rss将数据报文分流至转发核对应的目标报文收发队列组中的接收队列,从而使协议报文单独由控制核进行处理,确保协议报文不丢失,nfv系统不断流。

比如,在如图3所示的示意图中,假定nfv系统中包含有5个核,vf接口上接收队列和发送队列的数量均为4个,且此时确定出4个核分别与4个报文收发队列组一一对应(比如图3中的核0、核1、核2及核3),并将核0作为控制核,核1、核2及核3均作为转发核。此时,当nfv系统接收到报文时,由导流器将协议报文导流至核0所对应的接收队列,以使协议报文单独由核0处理;并且,由rss将数据报文分流至核1、核2及核3各自所对应的接收队列中,以使数据报文由核1、核2及核3共同处理。

其中,作为一种可能的实现方式,基于导流器和rss均为网络接口卡上的硬件功能,与核属于不同的硬件设备,为实现上述导流器将协议报文导流至控制核对应的目标报文收发队列组中的接收队列,且rss将数据报文分流至转发核对应的目标报文收发队列组中的接收队列,控制核在启动与第一数值对应数量的目标核及目标报文收发队列组时,控制核将每一目标核与每一目标报文收发队列组的对应关系发送给网络接口卡,以使网络接口卡利用导流器将协议报文导流至控制核对应的目标报文收发队列组中的接收队列,并利用rss将数据报文分流至转发核对应的目标报文收发队列组中的接收队列。

可以理解的是,在本申请实施例其他一些可能的应用场景中,还可以采用其他的一些方式实现对协议报文和数据报文的分流,比如在如图2所示的应用场景中,存储有用于对报文的类型进行识别的程序指令,报文在由vf接口发送至内存后,且在被分配至接收队列之前,由用于对报文的类型进行识别的程序指令对报文的类型进行识别,若报文被识别为协议报文,则将报文分配至控制核对应的目标报文收发队列组中的接收队列;而若报文被识别为数据报文,则将报文分配至转发核对应的目标报文收发队列组中的接收队列。其中,识别报文类型的方式,可以通过匹配报文的特定字段实现,比如,若报文的以太类型为0x0806,则确定报文为arp(addressresolutionprotocol,地址解析协议)报文,属于协议报文。

并且,值得说明的是,作为一种可能的实现方式,nfv系统在启动时,上述s101、s102、s103及s104可具体由控制核执行。比如,在如图3所示的nfv系统中,该nfv系统被分配有核0、核1、核2、核3及核4共计5个核,且以核0作为控制核,每个vf接口预先创建有4个对应的接收队列和4个对应的发送队列,且能够启动的报文收发队列组的数量可以为1、2或4,则数值组中的数值包括有1、2、4;nfv系统在启动时,核0判定为nfv系统分配有5个核,与数值组中的每一数值均不相同,则根据分配的核的数量5,以及数值组中的所有数值,示例性地,将4作为第一数值,并每一vf接口对应启动的4接收队列和4发送队列中,且启动4个核,例如启动的4个核包括核0、核1、核2及核3;由此,启动的4个接收队列分别与核0、核1、核2及核3一一对应,启动的4个发送队列分别与核0、核1、核2及核3一一对应,且对应核0、核1、核2及核3各自的接收队列和发送队列两两组合,形成4个目标报文收发队列组,从而使核0、核1、核2及核3在一个vf接口上均对应有一个目标报文收发队列组。

基于上述设计,本申请实施例所提供的一种数据处理方法,通过将协议报文单独分配至控制核进行处理,并将数据报文分配至转发核处理,能够确保协议报文不丢失,避免设备间断流。

基于上述,请继续参阅图1,如图1所示的电子设备300,在实现上述的数据处理方法时:

处理器301用于,在nfv系统启动时,若为nfv系统分配的核的数量与数值组中的每一数值均不相同,在数值组中确定第一数值,其中,第一数值小于为nfv系统分配的核的数量,数值组中的每一数值表示每个vf接口可启动的报文收发队列组的数量;

处理器301还用于,启动与第一数值对应数量的目标核,且每个vf接口启动与第一数值对应数量的目标报文收发队列组,以使每个vf接口对应启动的每一目标报文收发队列组与每一目标核一一对应;

处理器301还用于,目标核通过各自所对应的目标报文收发队列组收发报文。

可选地,作为一种可能的实现方式,在数值组中确定第一数值时,处理器301具体用于:

若为nfv系统分配的核的数量大于数值组中的最大值,将数值组中的最大值作为第一数值。

可选地,作为一种可能的实现方式,在数值组中确定第一数值时,处理器301具体用于:

若为nfv系统分配的核的数量小于数值组中的最大值,将数值组中小于为nfv系统分配的核的数量的所有数值中的最大值作为第一数值。

可选地,作为一种可能的实现方式,至少两个vf接口包括第一vf接口和第二vf接口,每一报文收发队列组均包括接收队列和发送队列;

第一vf接口和第二vf接口各自启动有与第一数值对应数量的目标报文收发队列组;

目标核通过各自所对应的目标报文收发队列组收发报文时,处理器301具体用于:

目标核将由第一vf接口启动的目标报文收发队列组中,与目标核对应的接收队列所接收的报文,分配至第二vf接口启动的目标报文收发队列组中,与目标核对应的发送队列,以使报文由第二vf接口发出。

可选地,作为一种可能的实现方式,目标核中包含有控制核和转发核,每一报文收发队列组均包括接收队列和发送队列;

网络接口卡304用于,将协议报文分配至控制核对应的目标报文收发队列组中的接收队列,以使控制核处理协议报文;

网络接口卡304还用于,将数据报文分配至转发核对应的目标报文收发队列组中的接收队列,以使转发核处理数据报文。

可选地,作为一种可能的实现方式,网络接口卡304包括有导流器和接收端扩展rss;

导流器用于,将协议报文导流至控制核对应的目标报文收发队列组中的接收队列;

rss用于,将数据报文分配至转发核对应的目标报文收发队列组中的接收队列。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

综上所述,本申请实施例所提供的一种数据处理方法及电子设备,在nfv系统启动时,若为nfv系统分配的核的数量与数值组中的每一数值均不相同,则通过在数值组中确定出第一数值,进而启动与第一数值对应数量的目标核,且每个vf接口启动与第一数值对应数量的目标报文收发队列组,以使每个vf接口对应启动的每一目标报文收发队列组与每一目标核一一对应,进而使目标核能够通过各自所对应的目标报文收发队列组收发报文,nfv系统能够启动,相比于现有技术,使为nfv系统分配的核的数量与vf接口能够启动的报文收发队列组的数量不相同时,nfv系统能够启动;还通过将协议报文单独分配至控制核进行处理,并将数据报文分配至转发核处理,能够确保协议报文不丢失,避免设备间断流。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

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