掌桥专利:专业的专利平台
掌桥专利
首页

DPU中内核的流量分发方法、装置、设备及存储介质

文献发布时间:2024-01-17 01:14:25


DPU中内核的流量分发方法、装置、设备及存储介质

技术领域

本公开涉及数据处理技术领域,具体涉及一种DPU中内核的流量分发方法、装置、设备及存储介质。

背景技术

数据处理器(DPU,Data Processing Unit)中包含多个内核(core),多个内核可以并行进行数据处理。由于处理报文的业务分多个阶段(stage),每个业务阶段分配的内核数量取决于各阶段的业务负载所消耗的计算资源,因此无法保证每个业务阶段分配的内核数量均为2的幂。在DPU中对流量进行核间流量分发的场景中,如果将流量分发给下一业务阶段的内核进行处理,而该业务阶段的内核数量非2的幂,需要采用非2的幂的近似分发算法,采用现有的非2的幂的近似分发算法分发流量给内核时,流量分发的较为不均匀。

例如,待分发流量的业务阶段的内核数量为6,向上取数值6最接近的2的k次幂,得k=3,幂值为8。当流量报文进入某一业务阶段后,会对该流量报文进行哈希(hash)运算,得到该流量报文的哈希值,用哈希值对数值8取模,得到取模值,可以理解的是,取模值会在0~7之间。当取模值为0~5时,流量被分发到内核0~5;当取模值为6时,流量被分发到内核6;等当取模值为7时,流量被分发到内核7,可以看出,内核0、1比其他内核多分发的流量为整体分发流量的1/8,造成流量分发的不均匀程度比较严重。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了及一种DPU中内核的流量分发方法、装置、设备及存储介质。

第一方面,本公开实施例提供了一种DPU中内核的流量分发方法,包括:

获取DPU中处理待分发流量报文的多个内核的数量以及精度扩展指数,所述精度扩展指数为正整数;

将所述数量向上取整为2的幂值,并计算所述幂值与2的精度扩展指数次幂的乘积,得到扩展值;

计算所述待分发流量报文对应的哈希值;

确定所述哈希值对所述扩展值取模的第一取模值,以及所述第一取模值对所述数量取模的第二取模值;

将所述待分发流量报文分发给所述第二取模值对应的内核。

可选的,所述计算所述待分发流量报文对应的哈希值,包括:

基于用户设定的提取规则提取所述待分发流量报文的报文特征;

对所述报文特征做哈希运算,得到所述哈希值。

可选的,所述确定所述哈希值对所述扩展值取模的第一取模值,包括:

将所述哈希值与第一差值进行按位与运算,得到所述第一取模值,所述第一差值为所述扩展值与1的差值。

可选的,所述将所述待分发流量报文分发给所述第二取模值对应的内核之前,还包括:

按照所述数量分别为所述多个内核赋予标识号,所述标识号的取值包括0到目标数值间的整数,所述目标数值为所述数量与1的差值;

所述将所述待分发流量报文分发给所述第二取模值对应的内核,包括:

将所述待分发流量报文分发给标识号是所述第二取模值的内核。

可选的,所述获取精度扩展指数,包括:

响应于用户针对所述精度扩展指数的操作,获取用户修改后的精度扩展指数。

第二方面,本公开实施例提供了一种DPU中内核的流量分发装置,包括:

获取模块,用于获取DPU中处理待分发流量报文的多个内核的数量以及精度扩展指数,所述精度扩展指数为正整数;

扩展模块,用于将所述数量向上取整为2的幂值,并计算所述幂值与2的精度扩展指数次幂的乘积,得到扩展值;

哈希模块,用于计算所述待分发流量报文对应的哈希值;

取模模块,用于确定所述哈希值对所述扩展值取模的第一取模值,以及所述第一取模值对所述数量取模的第二取模值;

分发模块,用于将所述待分发流量报文分发给所述第二取模值对应的内核。

可选的,所述哈希模块在计算所述待分发流量报文对应的哈希值时,具体用于基于用户设定的提取规则提取所述待分发流量报文的报文特征;对所述报文特征做哈希运算,得到所述哈希值。

可选的,所述取模模块在确定所述哈希值对所述扩展值取模的第一取模值时,具体用于将所述哈希值与第一差值进行按位与运算,得到所述第一取模值,所述第一差值为所述扩展值与1的差值。

可选的,所述装置还包括标识模块,用于在将所述待分发流量报文分发给所述第二取模值对应的内核之前,按照所述数量分别为所述多个内核赋予标识号,所述标识号的取值包括0到目标数值间的整数,所述目标数值为所述数量与1的差值;

所述分发模块在将所述待分发流量报文分发给所述第二取模值对应的内核,具体用于将所述待分发流量报文分发给标识号是所述第二取模值的内核。

可选的,所述获取模块在获取精度扩展指数时,具体用于响应于用户针对所述精度扩展指数的操作,获取用户修改后的精度扩展指数。

第三方面,本公开实施例提供了一种DPU设备,包括存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如第一方面任一项所述的方法。

第四方面,本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。

本公开提供的技术方案与现有技术相比具有如下优点:

本公开提供DPU中内核的流量分发方法、装置、设备及存储介质,通过获取DPU中处理待分发流量报文的内核数量和精度扩展指数,然后将该数量向上取整为2的幂值,并根据该精度扩展指数将原本作为哈希值取模范围的幂值扩大为扩展值,之后再通过确定待分发流量报文的哈希值,将该哈希值对扩展值取模得到第一取模值,再将第一取模值对内核数量取模得到第二取模值,最后将待分发流量报文分发给第二取模值对应的内核。因为可以通过精度扩展指数增大了第一取模值的数值范围,而DPU中内核间流量分发的精度误差跟第一取模值的数值范围成反比,所以通过设定精度扩展指数减小了DPU中内核间流量分发的精度误差,使得DPU中分发给内核的流量更加均匀。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的DPU中内核的流量分发方法流程图;

图2为本公开实施例提供的DPU中报文流量分发的业务场景示意图;

图3为本公开实施例提供的内核间流量分发的精度误差表的示意图;

图4为本公开实施例提供的DPU中内核的流量分发装置的结构示意图;

图5为本公开实施例提供的DPU设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

图1为本公开实施例提供的一种DPU中内核的流量分发方法流程图,该方法可以由DPU中内核的流量分发装置执行,该DPU中内核的流量分发装置可以采用软件和/或硬件的方式实现,该DPU中内核的流量分发装置可配置于DPU设备中。该方法包括如下步骤:

S101、获取DPU中处理待分发流量报文的多个内核的数量以及精度扩展指数,精度扩展指数为正整数。

示例性的,图2为本公开实施例提供的DPU中报文流量分发的业务场景示意图,该DPU200中包含内核210、221、222、223、224、225、226等。图2所示场景中,内核210被分配到流量报文处理业务的第一阶段,内核221、222、223、224、225、226被分配到流量报文处理业务的第二阶段。

在流量报文A进入DPU200后,进行第一阶段的处理业务,由内核210进行相应处理,内核210处理完成后,DPU200对流量报文A开始进行第二阶段的处理业务,内核210就需要将流量报文A分发给负责第二阶段处理业务的内核,即内核221、222、223、224、225、226中的一个,此时流量报文A即待分发流量报文,内核221、222、223、224、225、226即处理待分发流量报文的多个内核,数量为6。

为了确定将流量报文A分发给内核221、222、223、224、225、226中哪一个,内核210通过获取负责第二阶段处理业务的内核数量,记内核数量为n,此时n=6,以及存储在DPU200的寄存器中的精度扩展指数,记精度扩展指数为p,精度扩展指数p为正整数。该精度扩展指数存储在DPU200的寄存器中,可以是DPU200系统中预设的值,也可以是由用户设定的值。

S102、将该数量向上取整为2的幂值,并计算幂值与2的精度扩展指数次幂的乘积,得到扩展值。

将该数量向上取整为2的幂值,可以实现将内核数量近似为2的幂值。将该数量向上取整为2的幂值,即向上取最接近该数量的2的幂值,记2的幂值为2

S103、计算待分发流量报文对应的哈希值。

哈希算法(hash algorithm)是一类非常重要的密码学算法,可用于将任意长度的消息摘要成固定长度的散列值,常见的哈希算法有md5、sha-1、sha-2等。本公开实施例通过解析报文头部信息作为哈希算法的输入进行哈希运算,得到分发流量报文的哈希值。

在一种实施方式中,计算待分发流量报文对应的哈希值,包括:基于用户设定的提取规则提取待分发流量报文的报文特征;对报文特征做哈希运算,得到哈希值。

本公开实施例通过对待分发流量的报文特征进行哈希运算来得到对应的哈希值,其中,用于做哈希运算的报文特征可以由用户指定,也可以是系统默认设定的报文特征,用户可以通过设定报文特征的提取规则来让DPU提取指定的报文特征,由此可以满足不同用户的需求。

例如,用户可以设定流量报文的五元组作为指定的报文特征,在用户设定流量报文的五元组作为指定报文特征后,DPU便提取待分发流量报文的五元组做哈希运算,得到对应的哈希值。用户也可以设定流量报文的三元组作为报文特征,或是设定流量报文中指定长度的字段作为报文特征等,在用户指定报文特征后,DPU便会提取指定的报文特征做哈希运算。

其中,五元组包括了每个数据包的源ip地址、目的ip地址、协议类型、源端口号和目的端口号等关键信息。在网络通信中,对于每一个数据包,通常都会对其进行路由处理,即确定该数据包传输的目标地点,而在路由处理过程中,需要对每个数据包进行分类和识别,以便实现路由规则,因此流量报文都具有相应的五元组。

示例性的,通过解析报文头部信息得到流量报文A的五元组,然后将五元组中的元素组合起来做哈希运算得到一个哈希值,该哈希值即流量报文A的哈希值。

本公开实施例通过提取流量报文的报文特征做哈希运算得到哈希值,以便后续利用哈希值分发流量报文。

S104、确定哈希值对扩展值取模的第一取模值,以及第一取模值对该数量取模的第二取模值。

取模(Modulo)是一种常见的数学运算,用来计算一个数除以另一个数所得的余数,取模通常使用取模运算符号“%”表示。在计算机编程中,取模运算常用于判断一个数是否为另一个数的倍数,或者将数值限制在一定的范围内等场景。

本公开实施例通过哈希值对扩展值取模,将哈希值转换为一个在扩展值范围内的取模值,即第一取模值。记哈希值为H,第一取模值q1,则q1=H%2

这种进行多轮次比较的方式相当于第一取模值对内核数量再进行一次取模来确定流量报文分发的内核。因此本公开实施例通过第一取模值对内核数量取模,将第一取模值转换为一个取值范围在内核数量范围内的第二取模值,记第二取模值为q2,则q2=q2%n。

S105、将待分发流量报文分发给第二取模值对应的内核。

示例的,以内核数量n=6、精度扩展指数p=1为例,扩展值2

当第一取模值q1的取值在6~11之间时,第二取模值q2的取值在0~5之间,此时流量报文A同样被分发到内核221、222、223、224、225、226。

当第一取模值q1的取值为12时,第二取模值q2的取值为0,此时流量报文A被分发到内核221;当第一取模值q1的取值为13时,第二取模值q2的取值为1,流量报文A被分发到内核222;当第一取模值q1的取值为14时,第二取模值q2的取值为2,流量报文A被分发到内核223;当第一取模值q1的取值为15时,第二取模值q2的取值为3,流量报文A被分发到内核224。

可以看出,分发到内核221/内核222/内核223/内核224的流量报文,比分发到其它内核的流量报文所多出的流量为整体流量的1/16,也就是说,流量分发的精度误差为1/16,这个精度误差会随着精度扩展指数p的增大进一步减小。即哈希值H以幂值2

图3为本公开实施例提供的内核间流量分发的精度误差表的示意图。以n=6为例说明内核间流量分发的精度误差,k=3,m值随k+p变化而变化,内核间流量分发的精度误差如图3表格所示。

本公开实施例通过获取DPU中处理待分发流量报文的内核数量和用户设定的精度扩展指数,然后将该数量向上取整为2的幂值,并根据该精度扩展指数将原本作为哈希值取模范围的幂值扩大为扩展值,之后再通过确定待分发流量报文的哈希值,将该哈希值对扩展值取模得到第一取模值,再将第一取模值对内核数量取模得到第二取模值,最后将待分发流量报文分发给第二取模值对应的内核。因为可以通过精度扩展指数增大了第一取模值的数值范围,而DPU中内核间流量分发的精度误差跟第一取模值的数值范围成反比,所以通过设定精度扩展指数减小了DPU中内核间流量分发的精度误差,使得DPU中分发给内核的流量更加均匀。

在一些实施例中,确定哈希值对扩展值取模的第一取模值,包括:将哈希值与第一差值进行按位与运算,得到第一取模值,第一差值为扩展值与1的差值。

在计算机编程中,一些情况下可以使用位运算中的“与”运算符(&)来进行取模运算,例如将一个非负整数x对2的幂次方y(即x%2^y)取模。该取模运算可以通过以下公式实现:x&(2^y-1)。这个公式的原理是2的幂次方表示为二进制时只有最高位是1,低于y位都是0,因此,当我们对x进行位与运算时,只有低y位上的值保留下来,其余的都变成了0,从而达到了取模的效果。

例如使用位于运算将数10对数2^3取模,即10%8,10用二进制表示为1010,8用二进制表示为1000,(2^3)-1=7,7用二进制表示为0111,将二进制数1010与二进制数0111按位与运算,可得结果为二进制数10,二进制数10用十进制表示为2,10%8=2。在计算机中,通过位与运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快,所以位运算(&)效率要比取模运算(%)高很多。

本公开实施例中,扩展值2

本公开实施例通过将哈希值与第一差值进行按位与运算来得到第一取模值,从而提高取模时的运算效率,减少取模运算对DPU资源的占用。

在一些实施例中,将待分发流量报文分发给第二取模值对应的内核之前,还包括:按照该数量分别为多个内核赋予标识号,标识号的取值包括0到目标数值间的整数,目标数值为内核数量与1的差值;

将待分发流量报文分发给第二取模值对应的内核,包括:将待分发流量报文分发给标识号是第二取模值的内核。

示例性的,第二阶段的内核数量n=6,按照内核数量n为内核221、222、223、224、225、226赋予标识号(ID),ID的取值为0~5之间的整数,因为内核数量n=6,所以第一取模值q1对内核数量n取模得到的第二取模值q2,其取值在0~5之间。例如,为内核221赋予的ID为0,为内核222赋予的ID为1,为内核223赋予的ID为2,为内核224赋予的ID为3,为内核225赋予的ID为4,为内核226赋予的ID为5。

当第二取模值q2的取值为0时,报文流量A分发给ID为0的内核,即内核221;当第二取模值q2的取值为1时,报文流量A分发给ID为1的内核,即内核222;当第二取模值q2的取值为2时,报文流量A分发给ID为2的内核,即内核223,以此类推,此处不作赘述。由此便可根据第二取模值,将待分发流量报文分发给标识号是第二取模值的内核。

本公开实施例通过按照该数量分别为多个内核赋予标识号,标识号的取值包括0到目标数值间的整数,目标数值为内核数量与1的差值,然后将待分发流量报文分发给标识号是第二取模值的内核,以简化流量报文分发给内核的运算复杂度。

在一些实施例中,获取精度扩展指数,包括:响应于用户针对精度扩展指数的操作,获取用户修改后的精度扩展指数。可选地,精度扩展指数还可以是预先设置于DPU中的固定值,该精度扩展指数可以由基于经验设定,也可以由用户指定。

由于精度扩展指数决定了DPU内核间流量分发的精度误差,因此本公开实施例让用户可以在DPU上设定精度扩展指数,以便用户通过修改精度扩展指数的值来调整DPU内核间流量分发的精度误差,从而满足不同用户的需求,提高方案的灵活性。

图4为本公开实施例提供的DPU中内核的流量分发装置的结构示意图。该DPU中内核的流量分发装置可以是如上实施例的终端中的部件或组件。本公开实施例提供的DPU中内核的流量分发装置可以执行DPU中内核的流量分发方法实施例提供的处理流程,如图4所示,该DPU中内核的流量分发装置300包括:

获取模块,用于获取DPU中处理待分发流量报文的多个内核的数量以及精度扩展指数,精度扩展指数为正整数;

扩展模块,用于将数量向上取整为2的幂值,并计算幂值与2的精度扩展指数次幂的乘积,得到扩展值;

哈希模块,用于计算待分发流量报文对应的哈希值;

取模模块,用于确定哈希值对扩展值取模的第一取模值,以及第一取模值对数量取模的第二取模值;

分发模块,用于将待分发流量报文分发给第二取模值对应的内核。

在一些实施例中,哈希模块在计算待分发流量报文对应的哈希值时,具体用于基于用户设定的提取规则提取待分发流量报文的报文特征;对报文特征做哈希运算,得到哈希值。

在一些实施例中,取模模块在确定哈希值对扩展值取模的第一取模值时,具体用于将哈希值与第一差值进行按位与运算,得到第一取模值,第一差值为扩展值与1的差值。

在一些实施例中,该装置还包括标识模块,用于在将待分发流量报文分发给第二取模值对应的内核之前,按照数量分别为多个内核赋予标识号,标识号的取值包括0到目标数值间的整数,目标数值为内核数量与1的差值;

分发模块在将待分发流量报文分发给第二取模值对应的内核,具体用于将待分发流量报文分发给标识号是第二取模值的内核。

在一些实施例中,获取模块在获取精度扩展指数时,具体用于响应于用户针对精度扩展指数的操作,获取用户修改后的精度扩展指数。

图4所示实施例的DPU中内核的流量分发装置可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图5为本公开实施例提供的DPU设备的结构示意图。该DPU设备可以是如上实施例所述的服务器。本公开实施例提供的DPU设备可以执行DPU中内核的流量分发方法实施例提供的处理流程,如图5所示,DPU设备400包括:存储器401、处理器402、计算机程序和通讯接口403;其中,计算机程序存储在存储器401中,并被配置为由处理器402执行如上所述的DPU中内核的流量分发方法。在特定实施例中,存储器401可以是非易失性固态存储器。在特定实施例中,存储器401包括只读存储器ROM(Read-Only Memory)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(ElectricalProgrammable ROM,EPROM)、电可擦除PROM(Electrically Erasable Programmable ROM,EEPROM)、电可改写ROM(Electrically Alterable ROM,EAROM)或闪存,或者两个或及其以上这些的组合。

另外,本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的DPU中内核的流量分发方法。其中,存储介质可以是非易失性/非临时性计算机可读存储介质,例如,非易失性/非临时性计算机可读存储介质可以是ROM、随机存取存储器(Random Access Memory,RAM)、光盘只读存储器(Compact Disc ROM,CD-ROM)、磁带、软盘和光数据存储设备等。

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

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 内核钩子函数保护方法、装置、设备以及存储介质
  • 内核故障诊断信息处理方法、装置、存储介质及电子设备
  • DPU接收机的信号处理方法、装置及存储介质
  • 一种数据分发的方法、装置、终端设备及存储介质
  • 基于弹幕顺序的弹幕分发方法、装置、设备和存储介质
  • 流量分发控制方法、装置、存储介质及计算机设备
  • 一种流量分发方法、装置、设备和计算机可读存储介质
技术分类

06120116074772