CN114095572B - 数据搬运方法及装置 - Google Patents

数据搬运方法及装置 Download PDF

Info

Publication number
CN114095572B
CN114095572B CN202010754808.4A CN202010754808A CN114095572B CN 114095572 B CN114095572 B CN 114095572B CN 202010754808 A CN202010754808 A CN 202010754808A CN 114095572 B CN114095572 B CN 114095572B
Authority
CN
China
Prior art keywords
data
memory block
mbuf
address
target
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.)
Active
Application number
CN202010754808.4A
Other languages
English (en)
Other versions
CN114095572A (zh
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.)
Datang Mobile Communications Equipment Co Ltd
Original Assignee
Datang Mobile Communications Equipment Co 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 Datang Mobile Communications Equipment Co Ltd filed Critical Datang Mobile Communications Equipment Co Ltd
Priority to CN202010754808.4A priority Critical patent/CN114095572B/zh
Publication of CN114095572A publication Critical patent/CN114095572A/zh
Application granted granted Critical
Publication of CN114095572B publication Critical patent/CN114095572B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种数据搬运方法及装置。所述方法包括:获取目标内存块的起始地址和数据块长度;根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;将所述目标内存块的所述多段式内存块发送至接收端。本申请实施例解决了现有技术中,实现RDMA功能的硬件设备成本、操作成本较高的问题。

Description

数据搬运方法及装置
技术领域
本申请涉及移动通信技术领域,尤其涉及一种数据搬运方法及装置。
背景技术
在无线通信系统中,系统间的数据搬运方式,通常是基于传输控制协议/互联协议(Transmission Control Protocol/Internet Protocol,TCP/IP)网络通信实现的。在数据搬运过程中,数据发送方首先需要将数据从用户应用空间缓存(Buffer)中复制到内核空间的套接字缓存(Socket Buffer)中,然后在内核空间中添加数据包头,进行数据封装。通过一系列多层网络协议的数据包处理操作,最后将数据发送到网络接口控制器(NetworkInterface Controller,NIC)网卡中的Buffer中进行网络传输。相应地,消息接收方接收从远程机器发送的数据包后,首先要将数据包从NIC Buffer中复制到内核的Socket Buffer。然后通过一系列的多层网络协议进行数据包的解析操作,解析后的数据最后才会被复制到相应位置的用户空间Buffer。
随着网络通信技术不断发展,远程直接数据存取(Remote Direct MemoryAccess,RDMA)的远程直接内存访问的实现方式应运而生,RDMA可以解决网络传输中因远端数据搬运处理而产生的延迟。RDMA通过专有的RDMA网卡(RNIC),绕过内核直接从用户空间访问可支持RDMA的网络接口控制器(Network Interface Controller,NIC)网卡。RDMA提供有一个传输接口(Verbs Interface),Verbs Interface为应用和RNIC之间的传输接口层(Software Transport Interface),而不是传统的TCP/IP的Socket Interface。要使用RDMA,首先需要建立从RDMA到应用程序内存的数据路径,可以通过RDMA专有的VerbsInterface接口来建立这些数据路径,一旦数据路径建立后,就可以直接访问用户空间Buffer,访问过程中没有额外的数据移动和复制操作。然而,RDMA功能需要专用的硬件设备、协议支持和一定过程的协议接口操作,实现RDMA功能的硬件设备成本、操作成本较高。
发明内容
本申请实施例提供一种数据搬运方法及装置,以解决现有技术中,实现RDMA功能的硬件设备成本、操作成本较高的问题。
一方面,本申请实施例提供了一种数据搬运方法,应用于发送端,所述方法包括:
获取目标内存块的起始地址和数据块长度;
根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;
为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址;
将所述目标内存块的所述多段式内存块发送至接收端。
另一方面,本申请实施例还提供一种数据搬运方法,应用于接收端,所述方法包括:
接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址;
根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址;
将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
另一方面,本申请实施例还提供一种数据搬运装置,应用于发送端,所述装置包括:
获取模块,用于获取目标内存块的起始地址和数据块长度;
确定模块,用于根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;
切片配置模块,用于为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址;
发送模块,用于将所述目标内存块的所述多段式内存块发送至接收端。
另一方面,本申请实施例还提供一种数据搬运装置,应用于接收端,所述装置包括:
接收模块,用于接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址;
地址配置模块,用于根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址;
替换模块,用于将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
又一方面,本申请实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据搬运方法中。
再一方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据搬运方法中。
在本申请实施例中,获取目标内存块的起始地址和数据块长度;根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;为每个所述数据切片配置多段式内存块,将所述目标内存块的所述多段式内存块发送至接收端,通过网卡硬件实现目标内存块的搬运;在搬运过程中,基于MBUF的灵活的多链离散结构,无需对DPDK发送框架流程特殊处理;且未对目标内存块进行复制操作,未耗费CPU资源,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,在较低硬件成本和操作成本的基础上实现高带宽和低延迟的跨系统间的数据搬运。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的数据搬运方法的应用场景示意图;
图2为本申请实施例提供的数据搬运方法的步骤流程图之一;
图3为本申请实施例的第一示例的示意图;
图4为本申请实施例提供的数据搬运方法的步骤流程图之二;
图5为本申请实施例的第二示例的示意图;
图6为本申请实施例的第三示例的示意图;
图7为本申请实施例提供的数据搬运装置的结构框图之一;
图8为本申请实施例提供的数据搬运装置的结构框图之二;
图9为本申请实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请所提供的实施例中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
图1示出了本申请实施例一个应用场景示意图。其中,图1所示场景可基于数据平面开发套件(Data Plane Development Kit,DPDK)框架实现。系统间的数据搬运途径以太网口,涉及数据发送和数据接收两个主要环节。具体地,如图1所示,数据发送端将应用A的内存块通过数据搬运发送给接收端,接收端的应用B可访问该内存块,获得该内存块的数据。在此过程中,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,大幅度减少处理过程中对系统中央处理器(Central Processing Unit,CPU)的资源开销,在网络通信状况很好的情况下,实现高带宽和低延迟的跨系统间的数据搬运。
如图2所示,本申请实施例提供了一种数据搬运方法,应用于发送端,发送端即数据源,所述方法包括:
步骤201,获取目标内存块的起始地址和数据块长度。
其中,发送端确定待搬运的目标内存块的起始地址和数据块长度,以确定目标数据块在发送端的物理存储地址的起点和终点;起始地址即物理存储地址的起点,通过起点加上数据块长度确定目标内存块的终点。
步骤202,根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址。
最大传输单元(Maximum Transmission Unit,MTU)用来确定数据服务单元的最大尺寸,即数据包或数据帧的最大长度,一般以字节记,可选地,MTU通常为8K字节。发送端调用适配层接口,控制适配层接口按照以太网可传的MTU大小,计算待搬运的目标内存块的切片个数n,切片个数n为第一数目;然后将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址,作为第一示例,参见图3,将目标内存块分割为切片1至切片n。
需要说明的是,若每个切片的数据长度刚好为MTU,则发送端记录每个切片的第一起始地址,以在执行搬运时确定切片的存储地址终点;若存在数据长度小于MTU的切片,则发送端还记录该切片的数据长度,以确定存储地址终点。
步骤203,为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址。
存储器缓存(Memory Buffer,MBUF)在内核中属于全局支持的范畴,主要用于保存在进程和网络接口间相互传递的用户数据以及其他各类数据,比如网络报文头部的源地址、目的地址以及端口信息、Socket选项等。
结合图3,发送端按照切片个数n从HDR pool中,申请对应2N个数的MBUF;其中,HDRpool即内存池(mempool),功能单独的MBUF地址池资源,主要用于待封装数据在封装ETH+IP时使用。
为每个所述数据切片配置多段式内存块(multi-segmented),如图3所示,每两个MBUF串接作为一组multi-segmented,以其中切片1对应的multi-segmented为例,multi-segmented1包括第一存储器缓存MBUF(MBUF1)和第二MBUF(MBUF2)。
第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址;比如在M2中封装头部信息(即头开销)以及接收端地址,接收端地址可采用ETH(以太网地址)+IP地址的形式。所述头部信息包括所述第二MBUF的标识,比如M1中可封装指向与MBUF1属于同一multi-segmented1的第二MBUF(MBUF2)的指示信息,便于标识第二MBUF。
所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址。其中,第一起始地址即multi-segmented的切片起始地址。目标数据即multi-segmented中的有效数据。结合图3,目标内存块的目标数据以及所述数据切片的第一起始地址封装在M3中,M4中可封装空值(null)。
这样,将n个数据切片一次封装成n组multi-segmented,并执行发送操作。
步骤204,将所述目标内存块的所述多段式内存块发送至接收端。
在发送过程中,发送端调用DPDK发送接口按照数据切片顺序发送。可选择支持multi-segmented的MBUF网卡发送,网路上传输的就是n个multi-segmented数据帧。
可选地,所述为每个所述数据切片配置多段式内存块,包括:
通过所述MTU,修正所述头部信息中的数据长度信息;所述数据长度信息为所述数据切片的数据长度信息;
以及
通过所述第一起始地址替换所述第二MBUF的I/O虚拟地址。
在第二MBUF按照当前实际切片长度信息,修正本组MBUF的长度信息;其中,若每个切片的数据长度刚好为MTU,则发送端根据MTU值修正数据长度信息;若存在数据长度小于MTU的切片,则以数据切片实际的长度信息修正头部信息中的长度信息。
此外,在封装第一起始地址时,通过第一起始地址替换原有的I/O虚拟地址,即通过物理存储地址替换虚拟地址。
可选地,所述将所述目标内存块的所述多段式内存块发送至接收端,包括:
将所述第一起始地址添加到直接存储器访问DMA描述符中,控制数据平面开发套件DPDK接口根据所述DMA描述符中指示的第一起始地址,读取所述数据切片,并发送所述多段式内存块。
具体地,驱动网卡发送数据时,对于发送端的地址,仍然按照I/O虚拟地址(IOVA)模式(buf_iova)地址填充描述符命令字,将buf_iova地址配置到发送端的硬件空间的DMA描述符中,最终DPDK接口根据所述DMA描述符中指示的第一起始地址读取所述数据切片操作地址,将数据从物理网口合并发出。
本申请实施例中,获取目标内存块的起始地址和数据块长度;根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;为每个所述数据切片配置多段式内存块,将所述目标内存块的所述多段式内存块发送至接收端,通过网卡硬件实现目标内存块的搬运;在搬运过程中,基于MBUF的灵活的多链离散结构,无需对DPDK发送框架流程特殊处理;且未对目标内存块进行复制操作,未耗费CPU资源,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,在较低硬件成本和操作成本的基础上实现高带宽和低延迟的跨系统间的数据搬运。本申请实施例解决了现有技术中,实现RDMA功能的硬件设备成本、操作成本较高的问题。
参见图4,本申请实施例还提供了一种数据搬运方法,应用于接收端,如图1所示,接收端接收内存块之后,应用B从接收端读取内存块,所述方法包括:
步骤401,接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址。
其中,目标内存块以ETH+IP标识接收端,传输到接收端网卡后,接收端网卡接收多段式内存块(multi-segmented)。所述多段式内存块至少包括第一存储器缓存(MemoryBuffer,MBUF)和第二MBUF;MBUF在内核中属于全局支持的范畴,主要用于保存在进程和网络接口间相互传递的用户数据以及其他各类数据,比如网络报文头部的源地址、目的地址以及端口信息、Socket选项等。
发送端将目标内存卡分割为多个数据切片后,为每个所述数据切片配置多段式内存块,作为第二示例,如图5所示,每两个MBUF串接作为一组multi-segmented,以其中切片1对应的multi-segmented为例,multi-segmented1包括第一存储器缓存MBUF(MBUF1)和第二MBUF(MBUF2)。
第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址;比如在M2中封装头部信息(即头开销)以及接收端地址,接收端地址可采用ETH(以太网地址)+IP地址的形式。所述头部信息包括所述第二MBUF的标识,比如M1中可封装指向与MBUF1属于同一multi-segmented1的第二MBUF(MBUF2)的指示信息,便于标识第二MBUF。
所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址。其中,第一起始地址即multi-segmented的切片起始地址。目标数据即multi-segmented中的有效数据。结合图3,目标内存块的目标数据以及所述数据切片的第一起始地址封装在M3中,M4中可封装空值(null)。
这样,发送端将n个数据切片一次封装成n组multi-segmented发送,接收端接收n组multi-segmented,并解析第一MBUF和第二MBUF。
步骤402,根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址。
接收端在配置本地物理地址时,预先申请连续的地址空间,按照发送端MTU块(8K字节)的数据长度大小,为每个数据切片预划分地址,配置本地物理地址信息,本地物理地址信息包括所述第二MBUF的第二起始地址为每个数据切片划分第二起始地址。
步骤403,将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
接收端解析第一MBUF得到头部信息之后,根据头部信息中指示的第二MBUF,解析第二MBUF获得第一起始地址。通过第二起始地址替换为第二起始地址,将每个数据切片映射到预先申请的连续的地址空间中。接收端网卡的接收搬运数据,将对应的数据帧的内容直接写到预先申请的BlockSlice地址空间(第二起始地址对应的内存空间)。
发送端网卡发送数据时,将buf_iova地址配置到发送端的硬件空间的DMA描述符中,DPDK接口根据所述DMA描述符中指示的第一起始地址读取所述数据切片操作地址,将数据从物理网口合并发出;接收端网卡接收DMA描述符有两种实现模型,第一种是简化描述符(Simplified Descriptor)方式,第二种是头部分割描述符(Header Split Descriptor)方式。通常情况下,DPDK默认使用的是第一种配置,本申请实施例中,将DPDK框架配置为第二种模型进行接收。Header Split Descriptor需要填写两个地址信息,分别为数据包缓存地址(Packet Buffer Address)和头开销缓存地址(Header Buffer Address),将其挂到特定Mbuf Pool进行管理。在配置时,预先申请连续的地址空间,按照发送端的MTU块大小(8K字节),为数据切片预划分第二起始地址,将地址替换到特定MBUF上,这样Packet BufferAddress实际映射到了预先申请连续的地址空间上。
作为第三示例,如图6所示,接收端网卡接收数据包,数据包包括头开销部分(Header)和有效载荷部分(Payload);解析头开销部分得到第一MBUF的HeaderBuffer1,解析有效载荷部分得到第一MBUF的DataBuffer1,第二MBUF的HeaderBuffer2和DataBuffer2;其中,第一MBUF的Header Split Descriptor1填写到DataBuffer1和DataBuffer1中,第二MBUF的Header Split Descriptor2填写到DataBuffer2和DataBuffer2中。
在此过程中,需要保证接收端和发送端的数据切片大小一致,需要接收端的网卡硬件过滤器(filter)保证特定接收队列里没有其他种类的数据进来,且数据搬运通路传输的数据帧是连续的,无丢包现象。此外,接收端的描述符的Packet Buffer Address地址是连续放置的,使得恢复后的内存块是连续的。满足上述条件,数据切片被连续的搬运到预申请的连续空间。
后续接收端本地的应用访问所述目标数据时,可通过第二起始地址访问对应的内存空间,获得目标数据。
上述接收处理流程中,需要网卡硬件支持数据的预过滤功能;利用MBUF的灵活的多链离散结构,结合利用Header Split Descriptor功能,实现数据切片的离散组包接收;此过程中未对待搬运的内存块进行复制操作,接收端只存在对头开销部分(Header)的逻辑的资源的开销损耗,未耗费CPU资源,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,在较低硬件成本和操作成本的基础上实现高带宽和低延迟的跨系统间的数据搬运。
可选地,所述接收端地址包括以太网ETH地址和网际互联IP地址;
所述接收目标内存块的多段式内存块,包括:
接收目标内存块的多段式内存块;
获取所述多段式内存块中的第一MBUF的接收端地址,将所述多段式内存块分流到目标接收队列。
接收端接收多段式内存块,接收端的网卡硬件过滤器(filter)对特定的ETH+IP分流到与接收端地址对应的接收队列(Rx Queue)上,然后网卡通过其DMA硬件将收到的报文写入到指定的收包队列中。
可选地,所述头部信息包括所述数据切片的起始标识、结束标识以及切片标识;起始标识即第二起始位置的标识,结束标识即起始位置标识加上数据长度所得的结束位置的标识;切片标识即标识数据切片的标识。
所述将所述目标数据写入至所述第二起始地址对应的内存空间之后,所述方法还包括:
接收数据请求端对所述目标接收队列中的目标数据切片的访问请求,解析所述目标数据切片的目标头部信息;数据请求端可以是接收端本地的应用程序或者远程的客户端;接收到访问请求之后,获取所请求的目标数据切片的目标头部信息;接收端完成数据接收之后,将各个数据切片的头部信息通知各请求端,请求端需要获取数据时,向接收端发送所请求的目标数据切片的目标头部信息。
根据所述目标头部信息,获取所述目标数据切片对应的第一目标内存块包括的第一数据切片;接收端根据目标头部信息中的切片标识,确定目标数据切片,并进一步确定目标数据切片对应的第一目标内存块包括的第一数据切片;然后将所述第一数据切片的第二MBUF的目标数据,发送给所述数据请求端。
本申请实施例中,接收目标内存块的多段式内存块;根据所述头部信息,为所述多段式内存块配置本地物理地址信息,并通过本地物理地址信息替换所述目标内存块的第二MBUF的第一数据切片地址,通过网卡硬件实现目标内存块的搬运;在搬运过程中,基于MBUF的灵活的多链离散结构,无需对DPDK发送框架流程特殊处理;且未对目标内存块进行复制操作,未耗费CPU资源,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,在较低硬件成本和操作成本的基础上实现高带宽和低延迟的跨系统间的数据搬运。本申请实施例解决了现有技术中,实现RDMA功能的硬件设备成本、操作成本较高的问题。
以上介绍了本申请实施例提供的数据搬运方法,下面将结合附图介绍本申请实施例提供的数据搬运装置。
参见图7,本申请实施例还提供了一种数据搬运装置,应用于发送端,所述装置包括:
获取模块701,用于获取目标内存块的起始地址和数据块长度。
其中,发送端确定待搬运的目标内存块的起始地址和数据块长度,以确定目标数据块在发送端的物理存储地址的起点和终点;起始地址即物理存储地址的起点,通过起点加上数据块长度确定目标内存块的终点。
确定模块702,用于根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址。
最大传输单元(Maximum Transmission Unit,MTU)用来确定数据服务单元的最大尺寸,即数据包或数据帧的最大长度,一般以字节记,可选地,MTU通常为8K字节。发送端调用适配层接口,控制适配层接口按照以太网可传的MTU大小,计算待搬运的目标内存块的切片个数n,切片个数n为第一数目;然后将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址,作为第一示例,参见图3,将目标内存块分割为切片1至切片n。
需要说明的是,若每个切片的数据长度刚好为MTU,则发送端记录每个切片的第一起始地址,以在执行搬运时确定切片的存储地址终点;若存在数据长度小于MTU的切片,则发送端还记录该切片的数据长度,以确定存储地址终点。
切片配置模块703,用于为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址。
存储器缓存(Memory Buffer,MBUF)在内核中属于全局支持的范畴,主要用于保存在进程和网络接口间相互传递的用户数据以及其他各类数据,比如网络报文头部的源地址、目的地址以及端口信息、Socket选项等。
结合图3,发送端按照切片个数n从HDR pool中,申请对应2N个数的MBUF;其中,HDRpool即内存池(mempool),功能单独的MBUF地址池资源,主要用于待封装数据在封装ETH+IP时使用。
为每个所述数据切片配置多段式内存块(multi-segmented),如图3所示,每两个MBUF串接作为一组multi-segmented,以其中切片1对应的multi-segmented为例,multi-segmented1包括第一存储器缓存MBUF(MBUF1)和第二MBUF(MBUF2)。
第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址;比如在M2中封装头部信息(即头开销)以及接收端地址,接收端地址可采用ETH(以太网地址)+IP地址的形式。所述头部信息包括所述第二MBUF的标识,比如M1中可封装指向与MBUF1属于同一multi-segmented1的第二MBUF(MBUF2)的指示信息,便于标识第二MBUF。
所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址。其中,第一起始地址即multi-segmented的切片起始地址。目标数据即multi-segmented中的有效数据。结合图3,目标内存块的目标数据以及所述数据切片的第一起始地址封装在M3中,M4中可封装空值(null)。
这样,将n个数据切片一次封装成n组multi-segmented,并执行发送操作。
发送模块704,用于将所述目标内存块的所述多段式内存块发送至接收端。
在发送过程中,发送端调用DPDK发送接口按照数据切片顺序发送。可选择支持multi-segmented的MBUF网卡发送,网路上传输的就是n个multi-segmented数据帧。
可选地,所述切片配置模块703包括:
修正子模块,用于通过所述MTU,修正所述头部信息中的数据长度信息;所述数据长度信息为所述数据切片的数据长度信息;
以及
替换子模块,用于通过所述第一起始地址替换所述第二MBUF的I/O虚拟地址。
可选地,所述发送模块704包括:
发送子模块,用于将所述第一起始地址添加到直接存储器访问DMA描述符中,控制数据平面开发套件DPDK接口根据所述DMA描述符中指示的第一起始地址,读取所述数据切片,并发送所述多段式内存块。
本申请实施例提供的数据搬运装置能够实现图1至图3的方法实施例中基站侧实现的各个过程,为避免重复,这里不再赘述。
本申请的实施例中,获取模块701获取目标内存块的起始地址和数据块长度;确定模块702根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;切片配置模块703为每个所述数据切片配置多段式内存块,发送模块704将所述目标内存块的所述多段式内存块发送至接收端,通过网卡硬件实现目标内存块的搬运;在搬运过程中,基于MBUF的灵活的多链离散结构,无需对DPDK发送框架流程特殊处理;且未对目标内存块进行复制操作,未耗费CPU资源,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,在较低硬件成本和操作成本的基础上实现高带宽和低延迟的跨系统间的数据搬运。
参见图8,本申请实施例还提供了一种数据搬运装置,应用于接收端,所述装置包括:
接收模块801,用于接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址。
其中,目标内存块以ETH+IP标识接收端,传输到接收端网卡后,接收端网卡接收多段式内存块(multi-segmented)。所述多段式内存块至少包括第一存储器缓存(MemoryBuffer,MBUF)和第二MBUF;MBUF在内核中属于全局支持的范畴,主要用于保存在进程和网络接口间相互传递的用户数据以及其他各类数据,比如网络报文头部的源地址、目的地址以及端口信息、Socket选项等。
发送端将目标内存卡分割为多个数据切片后,为每个所述数据切片配置多段式内存块,如图5所示,每两个MBUF串接作为一组multi-segmented,以其中切片1对应的multi-segmented为例,multi-segmented1包括第一存储器缓存MBUF(MBUF1)和第二MBUF(MBUF2)。
第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址;比如在M2中封装头部信息(即头开销)以及接收端地址,接收端地址可采用ETH(以太网地址)+IP地址的形式。所述头部信息包括所述第二MBUF的标识,比如M1中可封装指向与MBUF1属于同一multi-segmented1的第二MBUF(MBUF2)的指示信息,便于标识第二MBUF。
所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址。其中,第一起始地址即multi-segmented的切片起始地址。目标数据即multi-segmented中的有效数据。结合图3,目标内存块的目标数据以及所述数据切片的第一起始地址封装在M3中,M4中可封装空值(null)。
这样,发送端将n个数据切片一次封装成n组multi-segmented发送,接收端接收n组multi-segmented,并解析第一MBUF和第二MBUF。
地址配置模块802,用于根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址。
接收端在配置本地物理地址时,预先申请连续的地址空间,按照发送端MTU块(8K字节)的数据长度大小,为每个数据切片预划分地址,配置本地物理地址信息,本地物理地址信息包括所述第二MBUF的第二起始地址为每个数据切片划分第二起始地址。
替换模块803,用于将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
接收端解析第一MBUF得到头部信息之后,根据头部信息中指示的第二MBUF,解析第二MBUF获得第一起始地址。通过第二起始地址替换为第二起始地址,将每个数据切片映射到预先申请的连续的地址空间中。接收端网卡的接收搬运数据,将对应的数据帧的内容直接写到预先申请的BlockSlice地址空间(第二起始地址对应的内存空间)。
发送端网卡发送数据时,将buf_iova地址配置到发送端的硬件空间的DMA描述符中,DPDK接口根据所述DMA描述符中指示的第一起始地址读取所述数据切片操作地址,将数据从物理网口合并发出;接收端网卡接收DMA描述符有两种实现模型,第一种是简化描述符(Simplified Descriptor)方式,第二种是头部分割描述符(Header Split Descriptor)方式。通常情况下,DPDK默认使用的是第一种配置,本申请实施例中,将DPDK框架配置为第二种模型进行接收。Header Split Descriptor需要填写两个地址信息,分别为数据包缓存地址(Packet Buffer Address)和头开销缓存地址(Header Buffer Address),将其挂到特定Mbuf Pool进行管理。在配置时,预先申请连续的地址空间,按照发送端的MTU块大小(8K字节),为数据切片预划分第二起始地址,将地址替换到特定MBUF上,这样Packet BufferAddress实际映射到了预先申请连续的地址空间上。
作为第三示例,如图6所示,接收端网卡接收数据包,数据包包括头开销部分(Header)和有效载荷部分(Payload);解析头开销部分得到第一MBUF的HeaderBuffer1,解析有效载荷部分得到第一MBUF的DataBuffer1,第二MBUF的HeaderBuffer2和DataBuffer2;其中,第一MBUF的Header Split Descriptor1填写到DataBuffer1和DataBuffer1中,第二MBUF的Header Split Descriptor2填写到DataBuffer2和DataBuffer2中。
在此过程中,需要保证接收端和发送端的数据切片大小一致,需要接收端的网卡硬件过滤器(filter)保证特定接收队列里没有其他种类的数据进来,且数据搬运通路传输的数据帧是连续的,无丢包现象。此外,接收端的描述符的Packet Buffer Address地址是连续放置的,使得恢复后的内存块是连续的。满足上述条件,数据切片被连续的搬运到预申请的连续空间。
后续接收端本地的应用访问所述目标数据时,可通过第二起始地址访问对应的内存空间,获得目标数据。
上述接收处理流程中,需要网卡硬件支持数据的预过滤功能;利用MBUF的灵活的多链离散结构,结合利用Header Split Descriptor功能,实现数据切片的离散组包接收;此过程中未对待搬运的内存块进行复制操作,接收端只存在对头开销部分(Header)的逻辑的资源的开销损耗,未耗费CPU资源,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,在较低硬件成本和操作成本的基础上实现高带宽和低延迟的跨系统间的数据搬运。
可选地,所述接收端地址包括以太网ETH地址和网际互联IP地址;
所述接收模块801包括:
接收子模块,用于接收目标内存块的多段式内存块;
分流子模块,用于获取所述多段式内存块中的第一MBUF的接收端地址,将所述多段式内存块分流到目标接收队列。
可选地,所述头部信息包括所述数据切片的起始标识、结束标识以及切片标识;
所述装置还包括:
解析模块,用于接收数据请求端对所述目标接收队列中的目标数据切片的访问请求,解析所述目标数据切片的目标头部信息;
切片获取模块,用于根据所述目标头部信息,获取所述目标数据切片对应的第一目标内存块包括的第一数据切片;
数据发送模块,用于将所述第一数据切片的第二MBUF的目标数据,发送给所述数据请求端。
本申请实施例中,接收模块801接收目标内存块的多段式内存块;地址配置模块802根据所述头部信息,为所述多段式内存块配置本地物理地址信息,替换模块803通过本地物理地址信息替换所述目标内存块的第二MBUF的第一数据切片地址,通过网卡硬件实现目标内存块的搬运;在搬运过程中,基于MBUF的灵活的多链离散结构,无需对DPDK发送框架流程特殊处理;且未对目标内存块进行复制操作,未耗费CPU资源,DPDK通过用户态网卡适配器,直接处理数据,避免内核态的复制处理开销,在较低硬件成本和操作成本的基础上实现高带宽和低延迟的跨系统间的数据搬运。
另一方面,本申请实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据搬运方法中。
举个例子如下,图9示出了一种电子设备的实体结构示意图。
如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行如下方法:
获取目标内存块的起始地址和数据块长度;
根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;
为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址;
将所述目标内存块的所述多段式内存块发送至接收端。
接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址;
根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址;
将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的数据搬运方法,例如包括:
获取目标内存块的起始地址和数据块长度;
根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;
为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址;
将所述目标内存块的所述多段式内存块发送至接收端。
接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址;
根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址;
将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (14)

1.一种数据搬运方法,应用于发送端,其特征在于,所述方法包括:
获取目标内存块的起始地址和数据块长度;
根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;
为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址;
将所述目标内存块的所述多段式内存块发送至接收端,发送端调用DPDK发送接口按照数据切片顺序发送。
2.根据权利要求1所述的数据搬运方法,其特征在于,所述为每个所述数据切片配置多段式内存块,包括:
通过所述MTU,修正所述头部信息中的数据长度信息;所述数据长度信息为所述数据切片的数据长度信息;
以及
通过所述第一起始地址替换所述第二MBUF的I/O虚拟地址。
3.根据权利要求1所述的数据搬运方法,其特征在于,所述将所述目标内存块的所述多段式内存块发送至接收端,包括:
将所述第一起始地址添加到直接存储器访问DMA描述符中,控制数据平面开发套件DPDK接口根据所述DMA描述符中指示的第一起始地址,读取所述数据切片,并发送所述多段式内存块。
4.一种数据搬运方法,应用于接收端,其特征在于,所述方法包括:
接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址,所述数据切片由发送端将所述目标内存块分割而成,接收端是按照发送端发送的数据切片顺序接收的;
根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址;
将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
5.根据权利要求4所述的数据搬运方法,其特征在于,所述接收端地址包括以太网ETH地址和网际互联IP地址;
所述接收目标内存块的多段式内存块,包括:
接收目标内存块的多段式内存块;
获取所述多段式内存块中的第一MBUF的接收端地址,将所述多段式内存块分流到目标接收队列。
6.根据权利要求5所述的数据搬运方法,其特征在于,所述头部信息包括所述数据切片的起始标识、结束标识以及切片标识;
所述将所述目标数据写入至所述第二起始地址对应的内存空间之后,所述方法还包括:
接收数据请求端对所述目标接收队列中的目标数据切片的访问请求,解析所述目标数据切片的目标头部信息;
根据所述目标头部信息,获取所述目标数据切片对应的第一目标内存块包括的第一数据切片;
将所述第一数据切片的第二MBUF的目标数据,发送给所述数据请求端。
7.一种数据搬运装置,应用于发送端,其特征在于,所述装置包括:
获取模块,用于获取目标内存块的起始地址和数据块长度;
确定模块,用于根据最大传输单元MTU以及所述数据块长度,将所述目标内存块分割为第一数目个数据切片,确定每个所述数据切片的第一起始地址;
切片配置模块,用于为每个所述数据切片配置多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括所述数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及所述数据切片的第一起始地址;
发送模块,用于将所述目标内存块的所述多段式内存块发送至接收端,发送端调用DPDK发送接口按照数据切片顺序发送。
8.根据权利要求7所述的数据搬运装置,其特征在于,所述切片配置模块包括:
修正子模块,用于通过所述MTU,修正所述头部信息中的数据长度信息;所述数据长度信息为所述数据切片的数据长度信息;
以及
替换子模块,用于通过所述第一起始地址替换所述第二MBUF的I/O虚拟地址。
9.根据权利要求7所述的数据搬运装置,其特征在于,所述发送模块包括:
发送子模块,用于将所述第一起始地址添加到直接存储器访问DMA描述符中,控制数据平面开发套件DPDK接口根据所述DMA描述符中指示的第一起始地址,读取所述数据切片,并发送所述多段式内存块。
10.一种数据搬运装置,应用于接收端,其特征在于,所述装置包括:
接收模块,用于接收目标内存块的多段式内存块;其中,所述多段式内存块至少包括第一存储器缓存MBUF和第二MBUF,第一MBUF包括数据切片的头部信息以及所述目标内存块的接收端地址,所述头部信息包括所述第二MBUF的标识;所述第二MBUF包括所述目标内存块的目标数据以及数据切片的第一起始地址,所述数据切片由发送端将所述目标内存块分割而成,接收端是按照发送端发送的数据切片顺序接收的;
地址配置模块,用于根据所述头部信息,为所述多段式内存块配置本地物理地址信息;所述本地物理地址信息包括所述第二MBUF的第二起始地址;
替换模块,用于将所述目标数据写入至所述第二起始地址对应的内存空间,并通过所述第二起始地址替换所述第二MBUF的第一数据切片地址。
11.根据权利要求10所述的数据搬运装置,其特征在于,所述接收端地址包括以太网ETH地址和网际互联IP地址;
所述接收模块包括:
接收子模块,用于接收目标内存块的多段式内存块;
分流子模块,用于获取所述多段式内存块中的第一MBUF的接收端地址,将所述多段式内存块分流到目标接收队列。
12.根据权利要求11所述的数据搬运装置,其特征在于,所述头部信息包括所述数据切片的起始标识、结束标识以及切片标识;
所述装置还包括:
解析模块,用于接收数据请求端对所述目标接收队列中的目标数据切片的访问请求,解析所述目标数据切片的目标头部信息;
切片获取模块,用于根据所述目标头部信息,获取所述目标数据切片对应的第一目标内存块包括的第一数据切片;
数据发送模块,用于将所述第一数据切片的第二MBUF的目标数据,发送给所述数据请求端。
13.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的数据搬运方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的数据搬运方法。
CN202010754808.4A 2020-07-30 2020-07-30 数据搬运方法及装置 Active CN114095572B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010754808.4A CN114095572B (zh) 2020-07-30 2020-07-30 数据搬运方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010754808.4A CN114095572B (zh) 2020-07-30 2020-07-30 数据搬运方法及装置

Publications (2)

Publication Number Publication Date
CN114095572A CN114095572A (zh) 2022-02-25
CN114095572B true CN114095572B (zh) 2023-04-07

Family

ID=80295056

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010754808.4A Active CN114095572B (zh) 2020-07-30 2020-07-30 数据搬运方法及装置

Country Status (1)

Country Link
CN (1) CN114095572B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115396422A (zh) * 2022-07-26 2022-11-25 阿里巴巴(中国)有限公司 数据传输方法及装置
CN117149282B (zh) * 2023-08-28 2024-09-13 山东华翼微电子技术股份有限公司 一种fpga xdma的高速驱动方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017215547A1 (zh) * 2016-06-15 2017-12-21 华为技术有限公司 一种数据传输方法及装置
CN108628684A (zh) * 2017-03-20 2018-10-09 华为技术有限公司 一种基于dpdk的报文处理方法及计算机设备
CN110011933A (zh) * 2018-01-05 2019-07-12 华为技术有限公司 发送数据包的方法、装置及计算机可读存储介质
CN110719234A (zh) * 2019-10-17 2020-01-21 南京中孚信息技术有限公司 一种基于dpdk的数据包处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017215547A1 (zh) * 2016-06-15 2017-12-21 华为技术有限公司 一种数据传输方法及装置
CN108628684A (zh) * 2017-03-20 2018-10-09 华为技术有限公司 一种基于dpdk的报文处理方法及计算机设备
CN110011933A (zh) * 2018-01-05 2019-07-12 华为技术有限公司 发送数据包的方法、装置及计算机可读存储介质
CN110719234A (zh) * 2019-10-17 2020-01-21 南京中孚信息技术有限公司 一种基于dpdk的数据包处理方法及装置

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
《基于多核平台的高速网络流量实时捕获方法》;令瑞林;《计算机与发展》;20170405;第1-14页 *
DPDK:rte_mbuf;赵子清;《https://www.yuque.com/zzqcn/dpdk/oirzxh》;20191102;第1页 *
一种简化mbuf的设计与实现;张雪锋;《软件工程》;20180805(第08期);全文 *
基于DPDK的多端口并行通信机制;姜海粟等;《小型微型计算机系统》;20200515(第05期);全文 *
嵌入式实时操作系统中实现MBUF;张峰等;《工业控制计算机》;20020420;第1-4页 *
嵌入式实时操作系统中实现MBUF;张峰等;《微型电脑应用》;20011130;第1-4页 *
谭喆编著.DPDK框架关键技术.《应用软件开发协议栈》.南京:东南大学出版社,2020, *

Also Published As

Publication number Publication date
CN114095572A (zh) 2022-02-25

Similar Documents

Publication Publication Date Title
US7561573B2 (en) Network adaptor, communication system and communication method
EP1687997B1 (en) A method and apparatus to provide data streaming over a network connection in a wireless mac processor
US7512128B2 (en) System and method for a multi-packet data link layer data transmission
CN104579695B (zh) 一种数据转发装置和方法
CN104580011B (zh) 一种数据转发装置和方法
US7710968B2 (en) Techniques to generate network protocol units
CN107395572B (zh) 一种数据处理方法及物联网网关
CN114095572B (zh) 数据搬运方法及装置
CN101409675A (zh) 网络分组净荷压缩
US20210359952A1 (en) Technologies for protocol-agnostic network packet segmentation
US8539112B2 (en) TCP/IP offload device
US11010165B2 (en) Buffer allocation with memory-based configuration
CN110167197B (zh) Gtp下行数据传输优化方法及装置
CN112003937A (zh) 卫星数据传输方法、装置、计算机设备、存储介质
CN109426631A (zh) 一种基于rdma的通信方法、装置及存储介质
CN113285931A (zh) 流媒体的传输方法、流媒体服务器及流媒体系统
CN115349121A (zh) 一种有状态业务的处理方法及装置
CN113572688A (zh) 报文转发方法及终端设备、计算机存储介质
CN105933325A (zh) 一种基于NFSoRDMA的内核态RPC通信加速方法
CN110958216B (zh) 安全的在线网络分组传输
CN108400974B (zh) 一种流量引导的方法和移动终端
CN112039801B (zh) 设置ip信息的方法、系统和代理服务器
CN114615347A (zh) 基于udp gso的数据传输方法和装置
US7532644B1 (en) Method and system for associating multiple payload buffers with multidata message
CN114615348B (zh) 基于udp gso的数据传输方法、装置、计算机设备和存储介质

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
GR01 Patent grant
GR01 Patent grant