CN117667950A - 一种前传数据接收方法和装置 - Google Patents

一种前传数据接收方法和装置 Download PDF

Info

Publication number
CN117667950A
CN117667950A CN202311868816.1A CN202311868816A CN117667950A CN 117667950 A CN117667950 A CN 117667950A CN 202311868816 A CN202311868816 A CN 202311868816A CN 117667950 A CN117667950 A CN 117667950A
Authority
CN
China
Prior art keywords
data packet
data
target
forwarding
forward data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311868816.1A
Other languages
English (en)
Inventor
陈锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN202311868816.1A priority Critical patent/CN117667950A/zh
Publication of CN117667950A publication Critical patent/CN117667950A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种前传数据接收方法和装置,将接收到的第一前传数据包写入预设内存中的第一缓存区域,将第一缓存区域以及第一前传数据包的参数信息写入预设列表的目标表项。基于目标表项创建第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系。基于关联关系响应物理层处理结构从第一缓存区域获得数据。其中,预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包。

Description

一种前传数据接收方法和装置
技术领域
本申请涉及信息技术领域,更具体的说,是涉及一种前传数据接收方法和装置。
背景技术
现有多核通用服务器处理物理层,需要最大限度的利用多核的并行处理能力,保证实时性的在规定的时间之前处理完成。在5G基站中的物理层,前传接收数据的处理效率会制约,物理层能够处理多大容量小区的数据。目前主流前传数据接收分为CPRI(thecommon public radio interface,公共无线电接口)和eCPRI(enhanced CPRI,增强版公共无线电接口)两种协议模式,在这两种模式中物理层设计中又可分为三种传输方式分别为XDMA(Xing分布式媒体结构)、QDMA(Queue-Direct Memory Access,队列存储器访问)和Ethernet(以太网)进行传输。
其中,QDMA和Ethernet使用DPDK(Data Plane Development Kit,数据平面开发包)底层数据传输IO(in/out,输入/输出)接口,DPDK绕过内核态直接将FPGA(Field-Programmable Gate Array,即现场可编程门阵列)数据收取到应用层,数据传输效率较高。但是QDMA和Ethernet在传输数据时传输最大的巨型帧有字节限制,而正常单个符号(symbol)的频域数据是远大于该巨型帧的字节数,因此QDMA和Ethernet方案需要将单个符号分拆为多个包进行组合,然后再将拆分的数据包复制到物理层使用内存空间中,因此,接收到的频域数据搬移到相应的物理层空间将涉及到多次拷贝动作。
发明内容
有鉴于此,本申请提供了一种前传数据接收方法,如下:
一种前传数据接收方法,包括:
将接收到的第一前传数据包写入预设内存中的第一缓存区域,所述预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包;
将所述第一缓存区域以及所述第一前传数据包的参数信息写入预设列表的目标表项;
基于所述目标表项创建所述第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系;
基于所述关联关系响应物理层处理结构从所述第一缓存区域获得数据。
可选地,基于所述关联关系响应物理层处理结构从所述第一缓存区域获得数据,包括:
若所述第一前传数据包所属目标小区的前传数据全部接收,确定目标任务线程;
控制所述目标任务线程将满足预设拼接条件的至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包,以使得所述物理层处理结构基于所述预设列表中记录的第一缓存区域对应的关联关系从所述目标缓存区域获得所述数据。
可选地,将所述第一缓存区域以及所述第一前传数据包的参数信息写入预设列表的目标表项,包括:
基于所述第一前传数据包中包头信息,在预设列表中确定目标表项;
将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述第一前传数据包与原始数据包的关系信息,写入所述目标表项,所述原始数据包通过拆分为至少两个前传数据包传输。
可选地,将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述第一前传数据包与原始数据包的关系信息,写入所述目标表项,包括:
基于所述目标表项中有第二缓存区域的地址信息,清空所述目标表项,以清除所述第二缓存区域与所述目标表项之间的关联关系,使得所述第二缓存区域能够写入第三前传数据包;
将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述第一前传数据包与原始数据包的关系信息,写入所述目标表项。
可选地,基于所述第一前传数据包中包头信息,在预设列表中确定目标表项,包括:
基于预设的包头信息与预设列表中表项的对应关系,确定所述第一前传数据包中包头信息对应的目标表项。
可选地,预设列表是环形队列列表,所述环形队列列表中的表项个数根据任务线程的时隙配比确定。
可选地,基于所述目标表项创建所述第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系,包括:
基于所述目标表项创建指针,所述指针用于将所述第一缓存区域中第一前传数据包的数据地址赋给所述物理层处理结构,以建立所述数据与所述物理层处理结构之间的关联关系。
可选地,确定目标任务线程,包括:
基于所述目标小区的第一参数,确定与所述目标小区对应的目标任务线程;或
基于与所述目标小区相关的第二参数,确定与所述参数对应的目标任务线程。
可选地,控制所述目标任务线程将满足预设拼接条件的至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包,包括:
控制所述目标任务线程基于所述预设列表中记载的至少两个前传数据包的参数信息确定属于同一原始数据包的至少两个前传数据包,以按照所述至少两个前传数据包中数据的排列顺序,确定首位的目标前传数据包,并将非首位的前传数据包中的数据依次拼接。
一种前传数据接收装置,包括:
数据缓存模块,用于将接收到的第一前传数据包写入预设内存中的第一缓存区域,所述预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包;
表项写入模块,用于将所述第一缓存区域以及所述第一前传数据包的参数信息写入预设列表的目标表项;
关联关系创建模块,用于基于所述目标表项创建所述第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系;
数据获取模块,用于基于所述关联关系响应物理层处理结构从所述第一缓存区域获得数据。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种前传数据接收方法实施例1的流程图;
图2为本申请提供的一种前传数据接收方法实施例2的流程图;
图3为本申请提供的一种环形队列列表的结构示意图;
图4为本申请提供的一种前传数据接收方法实施例3的流程图;
图5为本申请提供的一种数据拼接方法示意图;
图6为本申请提供的一种前传数据接收装置的结构示意图;
图7为本申请提供的一种数据传输方案示意图;
图8为本申请提供的一种QDMA和Ethernet数据传输方案的示意图;
图9为本申请提供的一种前传数据接收方法实施例4的流程图;
图10为本申请提供的一种参数信息写入方案的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示的,为本申请提供的一种前传数据接收方法实施例1的流程图,该方法应用于一电子设备,该方法包括以下步骤:
步骤S101:将接收到的第一前传数据包写入预设内存中的第一缓存区域。
本实施例中,预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包。第一前传数据包为接收到的前传数据包中的任意一个前传数据包。
本实施例中,第一前传数据包为接收到的前传数据包中的任意一个前传数据包。
本实施例中,预设内存中包含至少两个缓存区域,每个缓存区域存储一个前传数据包。其中,预设内存为预先配置的内存池,内存池中的每个缓存区域分为包头存储区域(用于存储包头信息的子区域)和数据存储区域(用于存储数据的子区域),其中,数据存储区域的大小基于物理层当前带宽能够处理的单个符号数据的数据量最大值也即符号数据量阈值M确定,以缓存区域能够存储完整的单个符号数据为标准,缓存区域的数据存储区域的大小被配置为大于上述符号数据量阈值M。
步骤S102:将第一缓存区域以及第一前传数据包的参数信息写入预设列表的目标表项。
本实施例中,参数信息包括但不限于地址信息,例如,第一缓存区域的地址信息以及第一前传数据包的地址信息。预设列表包括多个表项,多个表项按照队列的形式排列,具体地,每一个表项用于记载至少一个前传数据包的参数信息。
步骤S103:基于目标表项创建第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系。
本实施例中,基于目标表项中记载的第一缓存区域以及第一前传数据包的参数信息构建第一前传数据包的数据与物理层处理结构之间的关联关系,可选地,通过创建指针的方法建立第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系。
步骤S104:基于关联关系响应物理层处理结构从第一缓存区域获得数据。
其中,基于目标表项创建的第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系,响应物理层处理结构根据该关联关系从内存池中提取第一缓存区域中存储的数据包的数据。可选地,若通过创建的指针的方法建立第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系,则响应物理层处理结构根据已创建的指针,将指针指示的内存池缓存区域中提取存储的数据包的数据。
综上,本实施例提供的一种前传数据接收方法,将接收到的第一前传数据包写入预设内存中的第一缓存区域,将第一缓存区域以及第一前传数据包的参数信息写入预设列表的目标表项。基于目标表项创建第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系。基于关联关系响应物理层处理结构从第一缓存区域获得数据。其中,预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包。本申请通过预先配置多个缓存区域缓存前传数据包,将缓存区域以及存储的前传数据包的参数信息写入预设列表的目标表项后,创建缓存区域中前传数据包的数据与物理层处理结构之间的关联关系,由此,基于关联关系响应物理层处理结构从各个缓存区域获得前传数据,无需前传线程向物理层多次拷贝前传数据,提高数据接收的效率。
如图2所示的,为本申请提供的一种前传数据接收方法实施例2的流程图,该方法包括以下步骤:
步骤S201:将接收到的第一前传数据包写入预设内存中的第一缓存区域。
本实施例中,预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包。其中,通过将原始数据包拆分得到多个前传数据包传输,则第一前传数据包为由原始数据包拆分得到多个前传数据包中的任一个。
以QDMA和Etherne为例,QDMA和Ethernet方案需要将单个符号数据分拆为多个数据包进行组合,在此类场景下,将单个符号数据基于巨型帧拆分得到K个前传数据包传输,其中,第一前传数据包可以为K个前传数据包中的第k(0≤k<K)个前传数据包。
本实施例中,以内存池中预先配置了N个缓存区域mbuf(memory buffer,存储器缓存)为例,每一个mbuf的数据存储区域大小均大于符号数据量阈值M,足够存储单个符号数据。本步骤将接收到的第一前传数据包存储至第n个mbuf,也即mbuf_n。
步骤S202:基于第一前传数据包中包头信息,在预设列表中确定目标表项。
其中,预设列表是环形队列列表,环形队列列表中的表项个数根据任务线程的时隙配比确定。具体的,基于任务线程的时隙配比确定时隙数量为Δ=20,则环形队列列表中的表项个数为20。图3示例了本申请实施例提供的一种环形队列列表的结构,如图3所示,该环形队列列表为控制信号IO_Ctrl环形结构,简称为IO_Ctrl环,IO_Ctrl环包括按照顺时针方向排列的控制信号表项IO_Ctrl_0、IO_Ctrl_1、IO_Ctrl_12、...17、18、19。
具体地,基于预设的包头信息与预设列表中表项的对应关系,确定第一前传数据包中包头信息对应的目标表项。其中,前传数据包的包头信息包括索引信息,具体可以包括小区索引、时隙索引、天线索引、符号索引以及序位索引。其中,小区索引用于指示该前传数据包所属小区,时隙索引用于指示接收该前传数据包的时隙,天线索引用于指示该前传数据包所属天线,符号索引用于指示接收该前传数据包的符号。序位索引用于指示第一前传数据包在原始数据包拆分得到的多个前传数据包中的序位。例如,序位索引Section_k表示第一前传数据包在原始数据包拆分得到的多个前传数据包中的序位为k。
本实施例中,基于包头信息与预设列表中表项的对应关系具体为时隙索引和表项索引的关系,以IO_Ctrl环为例,构建时隙索引和IO_Ctrl的对应关系,例如,时隙索引为slot_a+Δ20,则对应的IO_Ctrl为IO_Ctrl_a,0≤a<20,Δ为任意整数。当接收到的第一前传数据包中包头信息包括时隙索引slot_a,在IO_Ctrl环中确定目标表项为IO_Ctrl_a。
步骤S203:基于目标表项中有第二缓存区域的地址信息,清空目标表项,以清除第二缓存区域与目标表项之间的关联关系,使得第二缓存区域能够写入第三前传数据包。
具体地,首先查看目标表项是否存有第二缓存区域的地址信息,其中,第二缓存区域为预设内存中除了第一缓存区域之外的其他任意一个缓存区域。若是,则基于目标表项中有第二缓存区域的地址信息,清空目标表项,以清除第二缓存区域与目标表项之间的关联关系,使得第二缓存区域能够写入第三前传数据包。其中,第二缓存区域为存储第二前传数据包的缓存区域,第三前传数据包为第二前传数据包和第一前传数据包以外的前传数据包。
步骤S204:将第一缓存区域的地址信息、第一前传数据包的地址信息以及第一前传数据包与原始数据包的关系信息,写入目标表项。
其中,第一前传数据包与原始数据包的关系信息基于索引信息得到,关系信息用于指示第一前传数据所属的原始数据包以及第一前传数据包在原始数据包拆分得到的多个前传数据包中的序位。例如,第一前传数据包与原始数据包的关系信息包括包头信息中的索引信息。
步骤S205:基于目标表项创建第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系。
具体地,基于目标表项创建指针,指针用于将第一缓存区域中第一前传数据包的数据地址赋给物理层处理结构,以建立数据与物理层处理结构之间的关联关系。
步骤S206:基于关联关系响应物理层处理结构从第一缓存区域获得数据。
其中,物理层处理结构基于目标表项的指针指示的数据与物理层处理结构之间的关联关系,获取第一前传数据包的数据地址,从而从数据地址提取数据。
综上,本实施例提供的一种前传数据接收方法,使用预设列表中的表项存储作为参数信息的存储单元,其中,由于预设列表是环形队列列表,能够实现充分循环使用内存池中的mbuf,以及将mbuf内存空间完成和物理层空间的快速链接,并且,环形队列列表中的表项个数根据任务线程的时隙配比确定。第二缓存区域中存储的第二前传数据包与第一前传数据包的时隙差大于或等于划分的时隙数量,基于此,该时隙差能够保证第二前传数据包的数据当前已经被使用。
如图4所示的,为本申请提供的一种前传数据接收方法实施例4的流程图,该方法包括以下步骤:
步骤S401、将接收到的第一前传数据包写入预设内存中的第一缓存区域。
步骤S402、基于第一前传数据包中包头信息,在预设列表中确定目标表项。
步骤S403、基于目标表项中有第二缓存区域的地址信息,清空目标表项,以清除第二缓存区域与目标表项之间的关联关系,使得第二缓存区域能够写入第三前传数据包。
步骤S404、将第一缓存区域的地址信息、第一前传数据包的地址信息以及第一前传数据包与原始数据包的关系信息,写入目标表项。
步骤S405、基于目标表项创建第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系。
其中,步骤S401-405与实施例2中的相应步骤一致,本实施例中不做赘述.
步骤S406、若第一前传数据包所属目标小区的前传数据全部接收,确定目标任务线程。
其中,小区索引包括小区标识或索引符号两种表达形式。基于目标小区的第一参数也即小区标识,确定与目标小区对应的目标任务线程。或基于与目标小区相关的第二参数也即索引符号,确定与参数对应的目标任务线程。
步骤S407、控制目标任务线程将满足预设拼接条件的至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包。
其中,预设拼接条件包括属于同一原始数据包。
具体地,基于前传数据包的包头信息中的索引信息判断前传数据包是否属于同一原始数据包,可选地,若多个前传数据包的小区索引、时隙索引、天线索引以及符号索引均相同,则确定该多个前传数据包属于同一原始数据包。
若是,则控制目标任务线程将至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包,以使得物理层处理结构基于预设列表中记录的第一缓存区域对应的关联关系从目标缓存区域获得数据。其中,目标缓存区域为存储目标前传数据包的缓存区域,目标前传数据包为从至少两个前传数据包中确定的一个前传数据包。
本实施例中,预设列表中记载了前传数据包与原始数据包的关系信息,因此,控制目标任务线程基于预设列表中记载的至少两个前传数据包的参数信息也即关系信息,确定属于同一原始数据包的至少两个前传数据包,以按照至少两个前传数据包中数据的排列顺序,确定首位的目标前传数据包,并将非首位的前传数据包中的数据依次拼接。
具体地,基于序位索引确定数据的排序顺序,将序位索引为指示首位序位的序位索引(例如Section_0)的前传数据包作为目标前传数据包,也即该目标前传数据包在原始数据包中的序位为首位。进一步,按照序位索引从小到大(例如Section_1~Section_K)的顺序依序将非首位的前传数据包中的数据拼接到目标缓存区域中的目标前传数据包。其中,目标缓存区域记为该Section_0对应的前传数据包所在的缓存区域。进一步,控制目标任务线程释放其他缓存区域,其中,其他缓存区域指的是非首位的前传数据包所在的缓存区域。
图5示例了一种数据拼接示意图,如图5所示,首先目标任务线程基于预设列表中记载的参数信息,确定mbuf#a、mbuf#b~mbuf#h为属于同一原始数据包的多个前传数据包,其中,mbuf#a的包头信息中包括序位索引section0,也即首位索引,而mbuf#b~mbuf#h的序位索引分别为section1~section7,则,将mbuf#a作为目标缓存区域,将mbuf#b~mbuf#h中的数据部分依序拼接到mbuf#a中的数据区域中的第一前传数据包的数据后。
综上,本实施例提供的一种前传数据接收方法,在单符号由多个数据包组成的场景下,通过多RT线程任务进行并行处理,充分利用系统核资源,能快速响应UL任务的处理。且,由于一个mbuf的数据内存大于单个符号数据的数据量,因此,通过序号索引将同属于一个原始数据包的前传数据包的数据部分依序拼接存储至一个mbuf,减少频域数据处理时的拷贝动作。
与上述本申请提供的一种前传数据接收方法实施例相对应的,本申请还提供了应用该前传数据接收方法的前传数据接收装置实施例。图6为本申请提供的一种前传数据接收装置的结构示意图,该前传数据接收装置包括:
数据缓存模块601,用于将接收到的第一前传数据包写入预设内存中的第一缓存区域,所述预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包;
表项写入模块602,用于将所述第一缓存区域以及所述第一前传数据包的参数信息写入预设列表的目标表项;
关联关系创建模块603,用于基于所述目标表项创建所述第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系;
数据获取模块604,用于基于所述关联关系响应物理层处理结构从所述第一缓存区域获得数据。
可选地,数据获取模块包括:
线程确定单元,用于若所述第一前传数据包所属目标小区的前传数据全部接收,确定目标任务线程;
数据拼接单元,用于控制所述目标任务线程将满足预设拼接条件的至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包,以使得所述物理层处理结构基于所述预设列表中记录的第一缓存区域对应的关联关系从所述目标缓存区域获得所述数据。
可选地,表项写入模块包括:
表项确定单元,用于基于所述第一前传数据包中包头信息,在预设列表中确定目标表项;
参数写入单元,用于将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述第一前传数据包与原始数据包的关系信息,写入所述目标表项,所述原始数据包通过拆分为至少两个前传数据包传输。
可选地,表项写入模块包括:
基于所述目标表项中有第二缓存区域的地址信息,清空所述目标表项,以清除所述第二缓存区域与所述目标表项之间的关联关系,使得所述第二缓存区域能够写入第三前传数据包;
将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述述第一前传数据包与原始数据包的关系信息,写入所述目标表项。
可选地,表项确定单元用于基于所述第一前传数据包中包头信息,在预设列表中确定目标表项时,具体用于:
基于预设的包头信息与预设列表中表项的对应关系,确定所述第一前传数据包中包头信息对应的目标表项。
可选地,预设列表是环形队列列表,所述环形队列列表中的表项个数根据任务线程的时隙配比确定。
可选地,关联关系创建模块包括:
指针创建单元,用于基于所述目标表项创建指针,所述指针用于将所述第一缓存区域中第一前传数据包的数据地址赋给所述物理层处理结构,以建立所述数据与所述物理层处理结构之间的关联关系。
可选地,线程确定单元包括:
第一线程确定子单元,用于基于所述目标小区的第一参数,确定与所述目标小区对应的目标任务线程;或
第一线程确定子单元,用于基于与所述目标小区相关的第二参数,确定与所述参数对应的目标任务线程。
可选地,数据拼接单元用于控制所述目标任务线程将满足预设拼接条件的至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包时具体用于:
控制所述目标任务线程基于所述预设列表中记载的至少两个前传数据包的参数信息确定属于同一原始数据包的至少两个前传数据包,以按照所述至少两个前传数据包中数据的排列顺序,确定首位的目标前传数据包,并将非首位的前传数据包中的数据依次拼接。
综上,本实施例提供的一种前传数据接收装置,将接收到的第一前传数据包写入预设内存中的第一缓存区域,将第一缓存区域以及第一前传数据包的参数信息写入预设列表的目标表项。基于目标表项创建第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系。基于关联关系响应物理层处理结构从第一缓存区域获得数据。其中,预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包。本申请通过预先配置多个缓存区域缓存前传数据包,将缓存区域以及存储的前传数据包的参数信息写入预设列表的目标表项后,创建缓存区域中前传数据包的数据与物理层处理结构之间的关联关系,由此,基于关联关系响应物理层处理结构从各个缓存区域获得前传数据,无需前传线程向物理层多次拷贝前传数据,提高数据接收的效率。
与上述本申请提供的一种前传数据接收方法实施例相对应的,本申请还提供了与该前传数据接收方法相应的电子设备以及可读存储介质。
其中,该电子设备,包括:存储器、处理器;
其中,存储器存储有处理程序;
所述处理器用于加载并执行所述存储器存储的所述处理程序,以实现如上述任一项所述的前传数据接收方法的各步骤。
具体该电子设备的实现前传数据接收方法,参考前述前传数据接收方法实施例即可。
其中,该可读存储介质,其上存储有计算机程序,所述计算机程序被处理器调用并执行,实现如上述任一项所述的前传数据接收方法的各步骤。
具体该可读存储介质存储的计算机程序执行实现前传数据接收方法,参考前述前传数据接收方法实施例即可。
综上,本申请实施例提供了一种前传数据接收方法、装置、设备以及可读存储介质,基于在预设内存中划分多个缓存区域,且构建缓存区域中存储的数据与物理层处理结构之间的关联关系获取数据,充分利用多核RT任务进行前传数据的高效接收处理。
在CPRI和eCPRI两种协议模式中物理层设计中可分为三种传输方式分别为XDMA、QDMA和Ethernet进行传输。图7示例了三种传输方式的数据接收示意图,如图7所示,XDMA通过使用read/write IO接口读取FPGA中数据。QDMA和Ethernet使用DPDK底层数据传输IO接口读取FPGA中数据,直接将FPGA数据收取到应用层,提高了数据传输效率。
其中,QDMA和Ethernet使用DPDK底层数据传输IO接口,相比XDMA read/write IO接口,DPDK绕过内核态直接将FPGA数据收取到应用层,
但是,QDMA和Ethernet在传输数据时传输最大的巨型帧为9600字节,这样正常单个符号的频域数据是远大于9600字节,因此QDMA和Ethernet方案需要将单个符号数据分拆为多个数据包,然后再将拆分的数据包通过复制到物理层使用内存空间中。
如图8示例的QDMA和Ethernet数据接收方案的示意图,调用前传IO线程实现DPDK数据包接收,解析数据包包头,并获取空闲物理层buf空间,进一步,根据包头中小区、天线、符号将数据包中的频域数据搬移到物理空间,也即空闲物理层buf空间,调用BBUIO Timing线程检查收到的数据是否完整,若完整,则触发UL RT任务,UL RT任务包括并行的多个线程,图8以三个RT线程为例,每个线程并行地实现UL处理任务。
QDMA和Ethernet在数据接收方案的结束缺点在于:
1.UL频域数据根据使用的MTU(Maximum Transmission Unit,最大传输单元)被划分为多个数据包也即UL频域数据包,将接收到的频域数据搬移到相应的物理层空间将涉及到多次数据包拷贝动作。
2.在小区容量提升的场景下,前传线程不仅需要处理接收频域数据,同时还涉及到UL频域数据的拷贝搬移,这样在不增加前传线程数情况下,几乎很难按时完成数据的收发处理。
基于此,以QDMA和Ethernet方案需要将单个符号分拆为多个数据包传输的场景为例,以下对本申请的技术方案进行举例说明,本申请设计通用处理框架,兼容XDMA、QDMA、Ethernet,充分利用多核RT任务进行前传频域数据的高效接收处理。
其中,通用处理框架包括前传接收模块,前传接收模块包括预先配置的可循环使用的内存池,内存池用来接收前传数据,内存池的大小满足小区容量所需要的大小,内存池中划分成多个独立的mbuf,每个mbuf用来接收前传数据,以供物理层使用该前传数据进行运算,每个mbuf数据部分为物理层当前带宽所能处理单个符号的最大值,以便物理层能使用mbuf中数据进行运算。
图9为本申请实施例提供的一种数据接收方法的具体实施方法的流程图,如图9所示,本方法包括以下步骤:
S901、前传IO线程从内存池中获取空闲mbuf接收UL频域数据包。
其中,UL频域数据包为单个符号频域数据包划分得到。
S902、解析前传数据包的包头信息。
S903、将mbuf地址、数据地址以及数据包的包头信息存放至对应的IO_Ctrl。
S904、将IO_Ctrl中前一次存放的信息所属的mbuf释放。
其中,为充分循环使用内存池中的mbuf,以及将mbuf内存空间完成和物理层空间的快速链接,本申请设计一个IO_Ctrl环结构,IO_Ctrl环的大小根据UL处理的任务时隙配比大小可灵活配置。
当接收到单个符号的UL频域数据包,通过包头信息:小区索引,时隙索引,天线索引,符号索引,序位索引,获取需要使用的存储单元,也即目标表项IO_Ctrl,并将mbuf地址、数据地址、和包头信息存储至对应的IO_Ctrl。
具体地,判断IO_Ctrl是否有mbuf存在,也即是否存储有任意的mbuf的地址信息,如果有,则将该已存在的mbuf回收到内存池中进行使用,同时将新接收到的mbuf关联到IO_Ctrl下,也即将mbuf地址、数据地址、和包头信息存储至IO_Ctrl。统一通过DPDK mbuf机制将已经划分好的mbuf内存块用于接收数据,降低开销。
图10示例了参数信息写入方案的示意图,如图10所示,内存池MemmBufPool包括N+1个mbuf:mbuf#0、mbuf#1、mbuf#2、...mbuf#X...mbuf#N,在时隙a(slot#a)分配mbuf#0接收频域数据包,并通过控制字段将时隙a的mbuf和数据信息进行存储,具体的,参数信息包括控制字段,具体包括地址信息字段和包头信息字段,将mbuf#0地址信息的各个字段以及接收到数据包包头信息的各个字段存储至时隙a对应的IO_Ctrl,在时隙a+20,使用时隙a对应的IO_Ctrl存储接收到数据包,首先检查该IO_Ctrl已经存储的信息对应的数据包是否已经被使用,若是,则释放该IO_Ctrl已经存储的信息对应的muf到内存池中。
S905、检查当前小区当前时隙频域数据是否接收完整。
S906、若接收完整则触发频域数据处理任务UL RT Task。
具体地,UL RT Task由多个RT线程组成,充分利用多线程核的优势并行将接收到的UL频域数据进行拼接。单个线程用于处理一个小区一个时隙的频域数据。
S907、单个RT线程将单天线单符号频域数据拼接至一个目标mbuf。
S908、释放除了目标mbuf之外的mbuf。
具体的,在RT Task中一方面可以根据小区数进行多线程任务并行处理,另外一方面可以根据符号数和天线数,分配RT线程,以达到快速处理UL频域数据的拼接组装。
如在三小区场景下,只需要一个前传IO线程进行UL频域数据的接收处理,在这个线程中仅需要将相应的参数信息(地址信息和包头信息)填充至IO_Ctrl中,然后检查当前时隙频域数据是否收齐,进一步触发相应小区的UL RT Task。这样在三小区场景下,就会有三个相应的RT线程并行去处理收到的数据包。在RT线程中,以Section0 mbuf作为起始物理地址,将剩余Section所在的数据部分依次拷贝到Section0末尾,后续将Section0数据部分指针赋值给物理层作为进一步数据运算。
采用本方案之后的优势是:基站侧前传IO线程接收数据通过RT多核线程进行并行处理,同时减少数据拷贝搬移,提升IO线程效率增加系统容量。充分利用RT线程核资源,并行处理前传IO侧接收处理数据压力,提升前传IO线程效率,提升RT线程响应速度。IO线程专注于收前传数据,IO线程核效率更高,在不增加IO线程核的情况下能提升系统小区容量。在单符号由多个数据包组成的场景下,通过多RT线程任务进行并行处理,充分利用系统核资源,能快速响应UL任务的处理。通过mbuf的大内存的设计,减少频域数据合并时的拷贝动作。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所提供的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所提供的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种前传数据接收方法,包括:
将接收到的第一前传数据包写入预设内存中的第一缓存区域,所述预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包;
将所述第一缓存区域以及所述第一前传数据包的参数信息写入预设列表的目标表项;
基于所述目标表项创建所述第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系;
基于所述关联关系响应物理层处理结构从所述第一缓存区域获得数据。
2.根据权利要求1所述的前传数据接收方法,所述基于所述关联关系响应物理层处理结构从所述第一缓存区域获得数据,包括:
若所述第一前传数据包所属目标小区的前传数据全部接收,确定目标任务线程;
控制所述目标任务线程将满足预设拼接条件的至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包,以使得所述物理层处理结构基于所述预设列表中记录的第一缓存区域对应的关联关系从所述目标缓存区域获得所述数据。
3.根据权利要求1所述的前传数据接收方法,所述将所述第一缓存区域以及所述第一前传数据包的参数信息写入预设列表的目标表项,包括:
基于所述第一前传数据包中包头信息,在预设列表中确定目标表项;
将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述第一前传数据包与原始数据包的关系信息,写入所述目标表项,所述原始数据包通过拆分为至少两个前传数据包传输。
4.根据权利要求3所述的前传数据接收方法,所述将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述第一前传数据包与原始数据包的关系信息,写入所述目标表项,包括:
基于所述目标表项中有第二缓存区域的地址信息,清空所述目标表项,以清除所述第二缓存区域与所述目标表项之间的关联关系,使得所述第二缓存区域能够写入第三前传数据包;
将所述第一缓存区域的地址信息、所述第一前传数据包的地址信息以及所述第一前传数据包与原始数据包的关系信息,写入所述目标表项。
5.根据权利要求3所述的前传数据接收方法,所述基于所述第一前传数据包中包头信息,在预设列表中确定目标表项,包括:
基于预设的包头信息与预设列表中表项的对应关系,确定所述第一前传数据包中包头信息对应的目标表项。
6.根据权利要求5所述的前传数据接收方法,所述预设列表是环形队列列表,所述环形队列列表中的表项个数根据任务线程的时隙配比确定。
7.根据权利要求1所述的前传数据接收方法,基于所述目标表项创建所述第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系,包括:
基于所述目标表项创建指针,所述指针用于将所述第一缓存区域中第一前传数据包的数据地址赋给所述物理层处理结构,以建立所述数据与所述物理层处理结构之间的关联关系。
8.根据权利要求2所述的前传数据接收方法,所述确定目标任务线程,包括:
基于所述目标小区的第一参数,确定与所述目标小区对应的目标任务线程;或
基于与所述目标小区相关的第二参数,确定与所述参数对应的目标任务线程。
9.根据权利要求2所述的前传数据接收方法,所述控制所述目标任务线程将满足预设拼接条件的至少两个前传数据包中的数据拼接到目标缓存区域中的目标前传数据包,包括:
控制所述目标任务线程基于所述预设列表中记载的至少两个前传数据包的参数信息确定属于同一原始数据包的至少两个前传数据包,以按照所述至少两个前传数据包中数据的排列顺序,确定首位的目标前传数据包,并将非首位的前传数据包中的数据依次拼接。
10.一种前传数据接收装置,包括:
数据缓存模块,用于将接收到的第一前传数据包写入预设内存中的第一缓存区域,所述预设内存中包含至少两个缓存区域,每个缓存区域能够存储一个前传数据包;
表项写入模块,用于将所述第一缓存区域以及所述第一前传数据包的参数信息写入预设列表的目标表项;
关联关系创建模块,用于基于所述目标表项创建所述第一缓存区域中第一前传数据包的数据与物理层处理结构之间的关联关系;
数据获取模块,用于基于所述关联关系响应物理层处理结构从所述第一缓存区域获得数据。
CN202311868816.1A 2023-12-29 2023-12-29 一种前传数据接收方法和装置 Pending CN117667950A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311868816.1A CN117667950A (zh) 2023-12-29 2023-12-29 一种前传数据接收方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311868816.1A CN117667950A (zh) 2023-12-29 2023-12-29 一种前传数据接收方法和装置

Publications (1)

Publication Number Publication Date
CN117667950A true CN117667950A (zh) 2024-03-08

Family

ID=90077157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311868816.1A Pending CN117667950A (zh) 2023-12-29 2023-12-29 一种前传数据接收方法和装置

Country Status (1)

Country Link
CN (1) CN117667950A (zh)

Similar Documents

Publication Publication Date Title
US20230011387A1 (en) Data processing method and nvme storage device
WO2021088466A1 (zh) 提高网络芯片报文存储效率的方法、设备及存储介质
US7733892B2 (en) Buffer management method based on a bitmap table
CN104040977B (zh) 缓存报文的方法和装置
US11102322B2 (en) Data processing method and apparatus, server, and controller
CN102104548B (zh) 一种数据包接收处理方法和装置
CN105573711B (zh) 一种数据缓存方法及装置
EP3657744B1 (en) Message processing
CN115913937B (zh) 一种容器多网卡网络配置方法、装置、设备及存储介质
CN107135189B (zh) 一种报文发送方法及物理机
JPWO2012144041A1 (ja) 中継装置、及び復旧方法
CN112765175A (zh) 一种接口数据的处理方法、装置、计算机设备及介质
CN112636908A (zh) 密钥查询方法及装置、加密设备及存储介质
CN110232029A (zh) 一种基于索引的fpga中ddr4包缓存的实现方法
CN117667950A (zh) 一种前传数据接收方法和装置
CN109614345B (zh) 一种协议层之间通信的内存管理方法及装置
CN109358820B (zh) 数据访问方法、装置、电子设备及计算机可读存储介质
CN105450679A (zh) 进行数据云存储的方法及系统
CN114024844B (zh) 数据调度方法、数据调度装置及电子设备
US20160085683A1 (en) Data receiving device and data receiving method
US9338219B2 (en) Direct push operations and gather operations
CN112214429B (zh) 一种基于srio的数据传输装置及方法
CN117499351A (zh) 报文转发装置及方法、通信芯片及网络设备
CN113609245A (zh) 一种索引的分片扩容方法及系统
EP3754491A1 (en) Data transmission method and system employing virtio port

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination