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

一种基于RDMA的数据传输方法、装置

文献发布时间:2023-06-19 18:27:32


一种基于RDMA的数据传输方法、装置

技术领域

本发明涉及计算机技术领域,特别是涉及一种基于RDMA的数据传输方法、装置。

背景技术

在高性能计算(High Performance Computing,HPC)、金融服务、存储和备份系统、云计算、图形分析、机器学习等新兴的数据密集型应用中,基于远程直接内存访问(RemoteDirect Memory Access,RDMA)技术存在较为广泛的应用场景,并认为是未来高速网络的发展方向。

目前,RDMA硬件网卡的接收端采用串行流水的实现方案,即所有接收包依次进入所有流程方可达到保序接收的功能,图1为现有的RDMA硬件网卡的接收端处理的应用示意图,如图1所示,所有接收包依次进入响应包处理流程、SEND请求包处理流程、ATOMIC请求包处理流程、READ请求包处理流程、WRITE请求包处理流程、MR校验及地址转换流程、净荷报文写内存流程、CQ/CEQ/AEQ上报流程等流水级。若相邻两个包不是同一种类型的接收包时,后面的接收包需要等待前面的接收包在当前级的处理流程处理完成才可进入当前处理流程。当内存访问Cache未命中的情况时,由于当前接收包在当前处理流程等待处理导致后面的接收包处于堵塞状态,头阻塞现象明显增多,导致整个接收端的延迟时间明显增加,其处理性能降低。

因此,如何减少RDMA硬件接收端的延迟时间是本领域技术人员亟需要解决的。

发明内容

本发明的目的是提供一种基于RDMA的数据传输方法、装置,避免现有的数据传输过程仅通过串行处理导致的头阻塞现象,通过并行处理使得访问内存的时间在时间上进行了重叠,在一定程度上减少了延迟时间,提高RDMA的处理性能。

为解决上述技术问题,本发明提供一种基于RDMA的数据传输方法,包括:

获取多个接收包,并对多个接收包进行预处理得到对应的请求包操作类型;

根据多个接收包与对应的请求包操作类型进行对应的请求包处理以实现多个接收包的并行处理,其中RDMA的数据传输处理流程包括并行处理和串行处理;

根据预设周期汇总并行处理后的多个接收包,并根据序列顺序对汇总的多个接收包进行串行处理以便完成数据传输。

优选地,在对多个接收包进行预处理得到对应的请求包操作类型之前,还包括:

根据RDMA的数据传输协议分为不同的请求包操作类型,其中请求包操作类型至少包括响应包处理类型、send请求包处理类型、atomic请求包处理类型、read请求包处理类型和write请求包处理类型。

优选地,对多个接收包进行预处理得到对应的请求包操作类型,包括:

判断当前接收包的包头信息是否正确;

若是,则根据包头信息与请求包操作类型的对应关系确定当前接收包对应的请求包操作类型。

优选地,根据多个接收包与对应的请求包操作类型进行对应的请求包处理,包括:

若当前接收包对应的请求包操作类型为响应包处理类型时,识别当前接收包的丢响应信息,并对当前接收包的队列上下文、响应包的域段更新,并对更新后的当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为send请求包处理类型时,获取当前接收包的队列信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为atomic请求包处理类型时,根据当前接收包读取内存数据,向atomic上下文队列记录atomic信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为read请求包处理类型时,在接收read上下文队列中写入当前的read请求信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为write请求包处理类型时,对当前接收包进行异常包识别标记以完成当前接收包的处理。

优选地,在获取到当前接收包对应的请求包操作类型时,在根据当前接收包与对应的请求包操作类型进行对应的请求包处理之前,还包括:

获取当前接收包进行对应的请求包处理的预测结果;

将预测结果刷新队列上下文以便下一个当前接收包保持队列上下文一致性。

优选地,在根据多个接收包与对应的请求包操作类型进行对应的请求包处理之前,还包括:

对多个接收包进行预处理匹配对应的保序ID以便进行并行处理后根据序列顺序进行串行处理。

优选地,还包括:

建立共享缓存空间以存储多个接收包在并行处理时的存储信息。

为解决上述技术问题,本发明还提供一种基于RDMA的数据传输装置,包括:

获取模块,用于获取多个接收包,并对多个接收包进行预处理得到对应的请求包操作类型;

并行处理模块,用于根据多个接收包与对应的请求包操作类型进行对应的请求包处理以实现多个接收包的并行处理,其中RDMA的数据传输处理流程包括并行处理和串行处理;

串行处理模块,用于根据预设周期汇总并行处理后的多个接收包,并根据序列顺序对汇总的多个接收包进行串行处理以便完成数据传输。

本发明提供的一种基于RDMA的数据传输方法,包括:获取多个接收包,并对多个接收包进行预处理得到对应的请求包操作类型;根据多个接收包与对应的请求包操作类型进行对应的请求包处理以实现多个接收包的并行处理,其中RDMA的数据传输处理流程包括并行处理和串行处理;根据预设周期汇总并行处理后的多个接收包,并根据序列顺序对汇总的多个接收包进行串行处理以便完成数据传输。该方法通过预处理确定接收包对应的请求包操作类型,根据请求包操作类型的不同进行对应的请求包处理,以实现多个接收包的并行处理,在并行处理后汇总多个接收包,并根据序列顺序进行串行处理,避免现有的数据传输过程仅通过串行处理导致的头阻塞现象,通过并行处理使得访问内存的时间在时间上进行了重叠,在一定程度上减少了延迟时间,提高RDMA的处理性能。

另外,本发明还提供了一种基于RDMA的数据传输装置,具有如上述基于RDMA的数据传输方法相同的有益效果。

附图说明

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

图1为现有的RDMA硬件网卡的接收端处理的应用示意图;

图2为本发明实施例提供的一种基于RDMA的数据传输方法的流程图;

图3为本发明实施例提供的一种基于RDMA的数据传输装置的结构图;

图4为本发明实施例提供的一种基于RDMA的数据传输方法的应用示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

本发明的核心是提供一种基于RDMA的数据传输方法、装置,避免现有的数据传输过程仅通过串行处理导致的头阻塞现象,通过并行处理使得访问内存的时间在时间上进行了重叠,在一定程度上减少了延迟时间,提高RDMA的处理性能。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

需要说明的是,为了缓解现有技术的头阻塞带来的吞吐率降低的影响,常用的是在串行流水结构的每个流水级增大缓存深度,但是并不鞥你解决延迟升高的问题,同时还会增加硬件的资源消耗。为此,本发明提出的基于RDMA的输出传输方法,适用于以太智能网卡(Smart Network Interface Controller,Smart NIC)、数据处理器(Data ProcessingUnit,DPU)和服务器网卡等,可避免上述的问题出现。

图2为本发明实施例提供的一种基于RDMA的数据传输方法的流程图,如图2所示,该方法包括:

S11:获取多个接收包,并对多个接收包进行预处理得到对应的请求包操作类型。

具体地,通常情况下,获取接收包的数量为多个,作为RDMA硬件网卡的接收端,无需操作系统的介入,消除数据包在用户空间和内核空间复制移动和上下文切换的开销,故能解放内存带宽和CPU周期用于改进应用系统性能。

获取的多个接收包可以是连续的接收包,也可以是不连续的接收包,也可以同种类型或者不同种类型等,本发明不做具体限定,可根据实际情况设定。对应地,获取多个接收包的周期也不做限定,可以是先到先进行预处理,也可以是根据一定的预设时间接收。

在获取到多个接收包后,对其进行预处理得到对应的请求包操作类型,请求包操作类型是根据RDMA硬件网卡的传输协议设置的可以并行处理的类型。预处理在基于现有的常规处理后,还需要进行预测、识别各接收包对应的请求包操作类型。常规处理至少包括包头检查、队列上下文的保序部分的域段刷新。具体地,包头检查可以分为包头的错误检测、RC请求包顺序检测及ePSN更新,前包的信息检测(Opcode、请求MSN计算等)。为了节省等待过程出现的延迟时间,这里对进入流水级的接收包预测进入流水级的结果并刷新至队列上下文中,以避免流水级不再刷新队列上下文的域段。对应响应处理流水级阶段还需要在接收包进入时进行实际的域段更新。

S12:根据多个接收包与对应的请求包操作类型进行对应的请求包处理以实现多个接收包的并行处理,其中RDMA的数据传输处理流程包括并行处理和串行处理。

在步骤S11中根据接收包以及对应的请求包操作类型进行对应的请求包处理,需要说明的是,多个接收包可以是连续且存在同种类型的情况,也可以是不连续且存在同种类型的情况,或者连续且不同种类型以及不连续且不同种类型的情况。针对上述四种情况均可以实现对应的请求包处理,若为连续,且存在同种类型的情况,例如a、b、c、d、e五种接收包,连续,存在a、b两个接收包为同种类型,在得到对应的请求包类型后,其a、b为相同的请求包类型,故在对应的请求包的流水级处进行排队处理,等待a处理完后,处理b。由于各个不同的请求包处理模块进行并行处理,其b等待的时间也仅仅是的处理的时间,对c接收包不受影响,此时c接收包已在对应的请求包处理模块中进行处理,实现a、c的请求包处理的并行处理,d、e请求包同理。

若五种接收包均为不同种类型,且分别对应的请求包同时进行各自的接收包处理,实现该五种接收包的并行处理。

根据RDMA硬件网卡的传输协议分为不同的操作类型,其中操作类型针对于可并行处理的类型。同时硬件网卡的传输还包括串行处理的类型,在进行完并行处理后,需要将接收包对应的请求包处理后的接收包依次进行串行处理。

S13:根据预设周期汇总并行处理后的多个接收包,并根据序列顺序对汇总的多个接收包进行串行处理以便完成数据传输。

需要说明的是,在并行处理后进入串行处理,在串行处理之前秉承接收包的先进先出原则,由于并行处理之前的进入规定顺序,故多个接收包按照一定的顺序进入串行处理的操作类型。结合上述的例子,五种接收包连续且不同类型,a、c和e接收包在各自的请求包处理的时间为0.25us,b、d接收包在各自的请求包处理的时间为0.2us,此时最早结束的接收包为b,d。由于a还在请求包中进行处理,则此时b接收包需要等到a结束后,进入串行处理后方可进行串行处理,遵循先进先出原则,但是不必等待c-e接收包的处理时间。

根据预设周期汇总并行处理后的接收包,预设周期的时间长短不做限定,可以根据多个接收包的请求包处理的具体时间进行设定,也可以根据连续接收包的同种类型或者不同种类型的个数设定。对应的根据序列顺序进行串行处理,本实施例的序列顺序可以通过对接收包的标记情况设定,也可以通过定义接收包的ID设定等,不做具体限定。

作为一种优选地实施例,其在根据多个接收包与对应的请求包操作类型进行对应的请求包处理之前,还包括:

对多个接收包进行预处理匹配对应的保序ID以便进行并行处理后根据序列顺序进行串行处理。

根据具体的保序ID以保证先进先出原则,实现保序输出,即使串行处理之前存在头阻塞问题,但是在访问内存的时间上(并行处理过程中)相互重叠,cache未命中时,总延迟的时间明显降低。

作为一种优选的实施例,对应地串行处理流程至少包括MR校验及地址转换处理流程、净荷报文写内存处理流程、CQ/CEQ/AEQ上报处理流程。

本地的虚拟-物理地址转换表等MR相关的信息,校验整个字段的合法性,存储器区域(Memory Region,MR),指的是由RDMA软件层在内存中规划出的一片区域,用于存放收发的数据。IB协议中,用户在申请完用于存放数据的内存区域之后,都需要通过调用IB框架提供的API注册MR,才能让RDMA网卡访问这片内存区域。注册MR以实现虚拟地址与物理地址的转换。

净荷是所传输的“真实”数据,可以是关于设备的广播数据,或者是发给一定区域内所有设备的服务数据;可以是主动扫描响应的附加数据,如设备名称,实现的服务;可以是建立或保持连接所需要的信息;可以是从一个设备到另一个设备的应用层数据。

本发明实施例提供的一种基于RDMA的数据传输方法,包括:获取多个接收包,并对多个接收包进行预处理得到对应的请求包操作类型;根据多个接收包与对应的请求包操作类型进行对应的请求包处理以实现多个接收包的并行处理,其中RDMA的数据传输处理流程包括并行处理和串行处理;根据预设周期汇总并行处理后的多个接收包,并根据序列顺序对汇总的多个接收包进行串行处理以便完成数据传输。该方法通过预处理确定接收包对应的请求包操作类型,根据请求包操作类型的不同进行对应的请求包处理,以实现多个接收包的并行处理,在并行处理后汇总多个接收包,并根据序列顺序进行串行处理,避免现有的数据传输过程仅通过串行处理导致的头阻塞现象,通过并行处理使得访问内存的时间在时间上进行了重叠,在一定程度上减少了延迟时间,提高RDMA的处理性能。

在上述实施例的基础上,在步骤S11的对多个接收包进行预处理得到对应的请求包操作类型之前,还包括:

根据RDMA的数据传输协议分为不同的请求包操作类型,其中请求包操作类型至少包括响应包处理类型、send请求包处理类型、atomic请求包处理类型、read请求包处理类型和write请求包处理类型。

需要说明的是,在进行预处理之前需要预先设定其请求包操作类型,该请求包操作类型根据RDMA的数据传输协议进行区分得到,主要目的是基于并行处理,使得请求包类型之间的请求包处理互相解耦。

并行处理的请求包处理的数量依据请求包操作类型的数量设定,一个请求包操作类型为并行处理的一种请求包处理。

作为一种优选实施例,请求包操作类型尽可能的实现多个请求包处理的并行处理,故至少包括上述5种操作类型,还可以根据实际的情况进行添加并行处理的操作类型。

在步骤S11中,根据设置的请求包操作类型将接收包对号入座,具体地,对多个接收包进行预处理得到对应的请求包操作类型,包括:

判断当前接收包的包头信息是否正确;

若是,则根据包头信息与请求包操作类型的对应关系确定当前接收包对应的请求包操作类型。

可以理解的是,预处理过程包括常规的处理,在上述实施例中已详细论述,在此需要检测包头信息的正确性,若正确,则需要根据接收包的包头信息与预先设置的请求包操作类型以确定对应的请求包操作类型。若不正确,则可以对当前接收包作标记,暂不处理等。

本发明实施例提供的在预处理之前设定其请求包操作类型,并根据设定的请求包操作类型对接收包进行对号入座,以此分类,确定对应的请求包操作类型,便于后续的并行处理。

在上述实施例的基础上,步骤S12中的根据多个接收包与对应的请求包操作类型进行对应的请求包处理,包括:

若当前接收包对应的请求包操作类型为响应包处理类型时,识别当前接收包的丢响应信息,并对当前接收包的队列上下文、响应包的域段更新,并对更新后的当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为send请求包处理类型时,获取当前接收包的队列信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为atomic请求包处理类型时,根据当前接收包读取内存数据,向atomic上下文队列记录atomic信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为read请求包处理类型时,在接收read上下文队列中写入当前的read请求信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理;

若当前接收包对应的请求包操作类型为write请求包处理类型时,对当前接收包进行异常包识别标记以完成当前接收包的处理。

需要说明的是,预处理过程并不仅仅对接收包进行分类,还需要刷新队列上下文,本实施例的刷新队列上下文是在预处理过程中进行,不在请求包处理过程中进行,以节省等待时间,同时,实现队列上下文的一致性。

即作为一种优选地实施例,在获取到当前接收包对应的请求包操作类型时,在根据当前接收包与对应的请求包操作类型进行对应的请求包处理之前,还包括:

获取当前接收包进行对应的请求包处理的预测结果;

将预测结果刷新队列上下文以便下一个当前接收包保持队列上下文一致性。

在本实施例中,响应包处理类型,是需要在请求包处理过程中需要实际刷新,以对域段进行更新的内容,对更新后的当前接收包进行异常标记,若为异常,则异常标记,若为正常,可标记为正常标记,做完标记后完成处理,进入后续等待其他接收包在其他请求包处理的过程以便进行串行处理。

atomic请求包处理类型,基于线程安全问题,读取、更新和写入,在线程资源竞争激烈的时候依然有所保证,以实现高并发。根据当前接收包读取内存数据,向atomic上下文队列记录atomic信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理。

read请求包处理类型,RDMA读操作本质上就是Pull操作,把远程系统内存里的数据拉回到本地系统的内存里。在接收read上下文队列中写入当前的read请求信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理。

write请求包处理类型,RDMA写操作本质上就是Push操作,把本地系统内存里的数据推送到远程系统的内存里。在接收read上下文队列中写入当前的read请求信息,并对当前接收包进行异常包识别标记以完成当前接收包的处理。

需要说明的是,上述的请求包处理过程可以依据现有技术的请求包处理过程,不做具体限定。

本发明提供的根据多个接收包与对应的请求包操作类型进行对应的请求包处理,通过并行处理使得访问内存的时间在时间上进行了重叠,在一定程度上减少了延迟时间,提高RDMA的处理性能。

在上述实施例的基础上,该方法为了节省缓存空间,还包括:

建立共享缓存空间以存储多个接收包在并行处理时的存储信息。

在现有的串行处理过程中,对应每个请求包处理过程都会设置一个对应的存储空间,导致在最后的一个处理级中其存储空间较大,同时接收包每经过一次的处理级其对应的存储空间会增大一次,无疑增加了较大的存储空间,使得缓存深度以及位宽较大。

通过设置共享缓存空间,可以使得接收包随时存储随时利用,使得缓存深度和位宽较小,每一种接收包单独操作,随流数据位宽较小,并行处理后,包头共享缓存深度比依次串行时的五中操作类型的缓存深度之和小,以此节省缓存空间。

上述详细描述了基于RDMA的数据传输方法对应的各个实施例,在此基础上,本发明还公开与上述方法对应的基于RDMA的数据传输装置,图3为本发明实施例提供的一种基于RDMA的数据传输装置的结构图。如图3所示,基于RDMA的数据传输装置包括:

获取模块11,用于获取多个接收包,并对多个接收包进行预处理得到对应的请求包操作类型;

并行处理模块12,用于根据多个接收包与对应的请求包操作类型进行对应的请求包处理以实现多个接收包的并行处理,其中RDMA的数据传输处理流程包括并行处理和串行处理;

串行处理模块13,用于根据预设周期汇总并行处理后的多个接收包,并根据序列顺序对汇总的多个接收包进行串行处理以便完成数据传输。

由于装置部分的实施例与上述的实施例相互对应,因此装置部分的实施例请参照上述方法部分的实施例描述,在此不再赘述。

对于本发明提供的一种基于RDMA的数据传输装置的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述基于RDMA的数据传输方法相同的有益效果。

图4为本发明实施例提供的一种基于RDMA的数据传输方法的应用示意图,如图4所示,将请求包操作类型的五中类型进行的并行处理,包处理延迟是现有技术的1/5,现有的如图1所示,假设总线延迟为Td,RDMA接收包性能为Pa,五级流水的缓存深度Dt=5*Td*Pa。当片内Cache大量MISS时,接收包从接收包预处理模块流出到五级流水处理完成延迟约5*Td。而本申请的延迟时间为对应的Td,使得延迟时间缩短。

以上对本发明所提供的一种基于RDMA的数据传输方法、基于RDMA的数据传输装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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

相关技术
  • 一种基于RDMA的通信方法、装置及存储介质
  • 一种基于双环网的就地化保护装置数据传输方法
  • 一种数据传输方法及装置
  • 一种数据传输方法、系统、切换装置及可读存储介质
  • 一种基于RDMA的数据传输方法及RDMA网卡
  • 一种基于RDMA的数据传输方法及RDMA网卡
技术分类

06120115574307