一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于RDMA用于有损网络的多路径数据传输方法和装置与流程

2022-02-20 00:06:49 来源:中国专利 TAG:

基于rdma用于有损网络的多路径数据传输方法和装置
技术领域
1.本发明涉及数据传输相关技术领域,尤其涉及一种基于rdma用于有损网络的多路径数据传输方法和装置。


背景技术:

2.远程直接内存访问(rdma,remote direct memory access)技术具有低延迟、高吞吐量和低cpu占用率的特点。rdma通过网络在两个端点的应用程序之间实现数据的直接传递,无需操作系统内核和tcp/ip网络协议栈的过多介入。rdma的三大特性如下:cpu卸载、内核旁路、零复制。
3.现有技术中,在基于rdma技术进行数据传输时,往往只能使用一条路径进行数据的传输,当数据量过大时,受限于该路径的数据传输速度,数据传输时间较长。


技术实现要素:

4.本发明实施例提供一种基于rdma用于有损网络的多路径数据传输方法、装置、电子设备和存储介质,用以解决现有的方案中,基于rdma技术进行数据传输时,往往只能使用一条路径进行一个数据包的传输,当该数据包数据量过大时,受限于该路径的数据传输速度,数据传输时间较长的问题。
5.第一方面,本发明实施例提供一种基于rdma用于有损网络的多路径数据传输方法,包括:
6.发送所述数据发送终端的可用数据发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
7.获取对应的数据接收终端发送的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
8.基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
9.通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端;其中,所述数据接收终端基于预设的内存管理方式接收所述待传输数据。
10.优选地,所述通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端,包括:
11.向所述数据接收终端发送数据大小信息;
12.对所述待传输数据进行分段,得到多个待传输数据段落;所述多个待传输数据段落包括多个预设大小的数据段落和一个末端数据段落;所述末端数据段落为所述待传输数据的末端数据且大小不大于预设大小;
13.对各所述待传输数据段落设置请求标识;所述请求标识用于指示所述传输数据段落的信息;
14.通过各所述数据传输路径,将各所述待传输数据段落和对应的所述请求标识发送
至对应的数据接收终端,以供所述数据接收终端基于所述数据大小信息、所述请求标识和所述待传输数据段落合成所述待传输数据。
15.优选地,所述通过各所述数据传输路径,将各所述待传输数据段落和对应的所述请求标识发送至对应的数据接收终端,包括:
16.基于所述待传输数据段落和各所述数据传输路径,确定各条数据传输路径的数据传输队列;所述数据传输队列包括各所述传输数据段落的传输请求;
17.通过各所述数据传输路径,基于对应的数据传输队列,进行待传输数据段落和对应请求标识的传输;
18.所述基于rdma用于有损网络的多路径数据传输方法,还包括:
19.当存在一个数据传输路径完成对应的数据传输队列中的传输请求时,重新确定各所述数据传输路径的数据传输队列。
20.优选地,所述通过各所述数据传输路径,基于对应的数据传输队列,进行待传输数据段落和对应请求标识的传输,包括:
21.基于所述数据传输队列,向所述数据接收终端发送待传输数据段落和对应请求标识;
22.确定所述待传输数据段落和对应请求标识的发送完成后,向所述数据接收终端发送检验请求;所述检验请求用于指示所述数据接收终端进行此次待传输数据段落和对应请求标识的传输是否丢包的校验并向所述数据发送终端发送校验结果;
23.接收所述校验结果,当所述校验结果为未丢包时,此次待传输数据段落和对应请求标识的传输完成,当所述校验结果为丢包时,重新进行此次待传输数据段落和对应请求标识的传输。
24.第二方面,本发明实施例提供一种基于rdma用于有损网络的多路径数据传输方法,应用于数据接收终端,所述方法包括:
25.发送所述数据接收终端的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
26.获取对应的数据发送终端发送的可用数据接发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
27.基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
28.通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据。
29.优选地,所述通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据,包括:
30.获取所述数据发送终端发送的数据大小信息;
31.基于所述数据大小信息,创建以预设大小为单位的连续的虚拟内存;
32.基于各所述数据传输路径,获取所述数据发送终端发送的待传输数据段落和对应的请求标识,并基于所述请求标识将所述待传输数据段落存储在对应的虚拟内存中;
33.将虚拟内存中的数据写入物理内存中;
34.其中,所述待传输数据段落为所述数据发送终端将所述待传输数据进行划分得到的;多个待传输数据段落包括多个预设大小的数据段落和一个末端数据段落;所述末端数
据段落为所述待传输数据的末端数据且大小不大于预设大小。
35.优选地,还包括:
36.获取所述数据发送终端发送的检验请求;所述检验请求由所述数据发送终端在执行一次所述待传输数据段落和对应请求标识的发送后发出;
37.基于所述检验请求,校验此次待传输数据段落和对应请求标识的发送过程中是否丢包,得到校验结果;
38.向所述数据发送终端发送校验结果,以指示所述数据发送终端,若丢包,重新发送所述待传输数据段落和对应请求标识。
39.第三方面,本发明实施例提供一种基于rdma用于有损网络的多路径数据传输装置,应用于数据发送终端,包括:
40.第一发送模块,用于发送所述数据发送终端的可用数据发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
41.第一获取模块,用于获取对应的数据接收终端发送的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
42.第一确定模块,用于基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
43.第二发送模块,用于通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。
44.第四方面,本发明实施例提供一种基于rdma用于有损网络的多路径数据传输装置,应用于数据接收终端,包括:
45.第三发送模块,用于发送所述数据接收终端的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
46.第二获取模块,用于获取对应的数据发送终端发送的可用数据接发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
47.第二确定模块,用于基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
48.接收模块,用于通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据。
49.第五方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明提供的基于rdma用于有损网络的多路径数据传输方法的步骤。
50.本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法,在进行数据传输时,不是仅仅通过一条路径进行数据传输,而是优先确定数据发送终端和数据接收终端的可用数据发送路径和可用数据接收路径,之后确定当前可用的多条的数据传输路径进行数据的传输,如此设置,可以至少一定程度上加快数据传输的速度。
51.进一步的,其中,所述数据接收终端基于预设的内存管理方式接收所述待传输数据。即,数据发送终端对所述待传输数据进行分段,得到多个待传输数据段落;所述多个待传输数据段落包括多个预设大小的数据段落和一个末端数据段落;所述末端数据段落为所述待传输数据的末端数据且大小不大于预设大小;对各所述待传输数据段落设置请求标
识;所述请求标识用于指示所述传输数据段落的信息;通过各所述数据传输路径,将各所述待传输数据段落和对应的所述请求标识发送至对应的数据接收终端,以供所述数据接收终端基于所述数据大小信息、所述请求标识和所述待传输数据段落合成所述待传输数据。数据接收终端,获取所述数据发送终端发送的数据大小信息;基于所述数据大小信息,创建以预设大小为单位的连续的虚拟内存;基于各所述数据传输路径,获取所述数据发送终端发送的待传输数据段落和对应的请求标识,并基于所述请求标识将所述待传输数据段落存储在对应的虚拟内存中;将虚拟内存中的数据写入物理内存中;数据发送和接收终端分别通过多路径内存管理方式解决了多路径数据传输时固有的数据包乱序问题,实现了roce流量在不使用pfc技术的有损网络中可靠高效的传输。
附图说明
52.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
53.图1为本发明一实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图;
54.图2为本发明另一实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图;
55.图3为本发明另一实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图;
56.图4为本发明另一实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图;
57.图5为本发明另一实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图;
58.图6为本发明另一实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图;
59.图7为本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法的示意图;
60.图8为本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法的部分流程示意图;
61.图9为本发明一实施例提供的基于rdma用于有损网络的多路径数据传输装置的结构示意图;
62.图10为本发明另一实施例提供的基于rdma用于有损网络的多路径数据传输装置的结构示意图
63.图11为本发明实施例提供的电子设备的结构示意图。
具体实施方式
64.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
65.在传统的tcp/ip网络通信过程中,发送方将数据从用户空间复制到内核空间,内核tcp/ip协议栈对数据进行层层封装,然后数据被送到网卡中的缓存进行网络传输。接收方收到数据包后进行相反的处理过程。对于万兆/十万兆以太网,对数据包的封包、解包、校验等处理会占用很多cpu能力,这些都是比较费时的i/o操作,并且涉及到多次内存复制、中断处理、进程上下文切换等,导致cpu无法将其强大的计算能力用于用户的业务逻辑处理上面。这种情况在高性能计算中心(hpc)、数据中心、分布式系统等大数据量传输应用场景中是无法接受的。远程直接内存访问(rdma,remote direct memory access)技术可以解决这些问题,rdma具有低延迟、高吞吐量和低cpu占用率的特点。rdma通过网络在两个端点的应用程序之间实现数据的直接传递,无需操作系统内核和tcp/ip网络协议栈的过多介入。rdma的三大特性:cpu卸载、内核旁路、零复制。
66.rdma允许本端应用程序直接读写远端内存。rdma支持单边和双边通信。单边rdma操作直接访问远端内存,而不涉及远端cpu。双边rdma操作向远程节点通知传递的消息。rdma支持可靠的连接(rc)、不可靠的连接(uc)和不可靠的数据报(ud)。rdma使用各种类型的队列来实现通信。通过在两个节点之间构建一对队列对(qp,queue pair)来建立rc通信。在基于rdma技术进行数据传输时,往往只能使用一条路径进行数据的传输,当数据量过大时,受限于该路径的数据传输速度,数据传输时间较长。针对这一问题,本发明实施例提供了一种基于rdma用于有损网络的多路径数据传输方法。图1为本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图,本实施例以数据发送终端的执行流程为例。
67.如图1所示,该方法包括:
68.步骤110,发送所述数据发送终端的可用数据发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
69.一些实施例中,在进行数据的传输时,一个数据发送端往往具有多条数据发送路径,且一般情况下,部分的条数据发送路径是处于被占用的情况下的,本发明实施例提供的方案中,主要使用的是当前可用的数据发送路径。在实际应用中,为数据发送终端在于数据发送终端进行通信连接后,基于ip地址创建qp;并向数据接收终端发送qp列表(即可用的数据发送路径);
70.步骤120,获取对应的数据接收终端发送的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
71.同样的,数据接收终端也在与数据发送终端进行通信连接后,基于ip地址创建qp;并向数据发送终端发送qp列表(即可用的数据接收路径);
72.步骤130,基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
73.当数据发送终端接收到数据接收终端发送的qp列表、此时可以结合自身的qp列表,基于预设的规则构建数据传输路径。当数据接收终端接收到数据发送终端发送的qp列表、此时可以结合自身的qp列表,基于预设的规则构建数据传输路径。当二者均完成数据传
输路径的构建后,便可以进行数据的传输。
74.步骤140,通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。
75.其中,其中,所述数据接收终端基于预设的内存管理方式接收所述待传输数据。
76.本发明实施例提供的方案中,可以通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。相较于现有技术中通过一条数据传输路径进行数据的传输,本发明实施例提供方案中在进行数据传输时,优先确定数据发送终端和数据接收终端的可用数据发送路径和可用数据接收路径,之后确定当前可用的多条的数据传输路径进行数据的传输,如此设置,可以至少一定程度上加快数据传输的速度。
77.进一步的,如图2所示,步骤140,通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端,包括:
78.步骤141,向所述数据接收终端发送数据大小信息;
79.步骤142,对所述待传输数据进行分段,得到多个待传输数据段落;所述多个待传输数据段落包括多个预设大小的数据段落和一个末端数据段落;所述末端数据段落为所述待传输数据的末端数据且大小不大于预设大小;
80.步骤143,对各所述待传输数据段落设置请求标识;所述请求标识用于指示所述传输数据段落的信息;
81.步骤144,通过各所述数据传输路径,将各所述待传输数据段落和对应的所述请求标识发送至对应的数据接收终端,以供所述数据接收终端基于所述数据大小信息、所述请求标识和所述待传输数据段落合成所述待传输数据。
82.上述对于步骤140的表述中,提供了一种基于多条数据传输路径进行数据传输的具体方案,即:将待传输数据进行分段,得到多个待传输数据段落。
83.实际应用中,划分待传输数据的方式及相关步骤如下:
84.首先以1gb-8mb(在此使用默认值len=1kb-8b=1016b)为单位将要发送的数据所在的虚拟内存进行分段(在实际拆分中,最后一个数据段落的大小可能不满足1gb-8mb的大小),通过多据传输路径进行各个分段的传输。每一段再分2
20
份,每份大小为len=1kb-8b=1016b(在此使用默认值,目的是为了避免ip分段)。每个分段对应一个wqe(rdma写请求),每个wqe中有一个sga(scatter/gather abstract,分散聚合摘要),sga中的addr表示分段的起始地址,size为011表示1kb-8b(在此使用默认值len=1kb-8b=1016b),num表示分段中包含的数据份数(包数),key为读写权限。智能网卡能够同时处理qp1和qp2中的多个wqe(多路径),根据每个wqe的内容,循环2
20
次(如果是最后一个段,可能小于2
20
),将本端1gb-8mb(如果是最后一个段,可能小于1gb-8mb)的数据写入远端的内存中。
85.进一步的,如图3所示,步骤144中,通过各所述数据传输路径,将各所述待传输数据段落和对应的所述请求标识发送至对应的数据接收终端,包括:
86.步骤1441,基于所述待传输数据段落和各所述数据传输路径,确定各条数据传输路径的数据传输队列;所述数据传输队列包括各所述传输数据段落的传输请求;
87.步骤1442,通过各所述数据传输路径,基于对应的数据传输队列,进行待传输数据段落和对应请求标识的传输;
88.步骤1443,当存在一个数据传输路径完成对应的数据传输队列中的传输请求时,
重新确定各所述数据传输路径的数据传输队列。
89.需要说明的是,本发明实施例中部分关键点在于数据传输队列的建立,数据传输队列可以将待传输数据的传输任务,拆分为多个子任务(即:各个待传输数据段落的传输任务),之后控制多条数据传输路径逐个执行这些子任务,使得最终完成传输数据的传输任务。为了保证整体的传输效率,可以采用近似均等的方式划分各个数据传输队列,使得各条数据传输路径需要传输的数据量近似均等。进一步的,在实际应用的过程中,各条数据传输路径的传输效率不一定相同,所以可能会出现的一条数据传输路径已经完成了数据传输任务,但是其他的数据传输路径还有多个数据传输任务(即待传输数据段落)未进行传输,此时可以重新规划数据传输队列,重新划分未传输的数据传输任务,使得所有的数据传输路径均处于数据传送状态,加快待传输数据的整体传输进程。
90.进一步的,在数据传输的过程中,可能存在丢包的情况,为了不免因为丢包的情况导致整个待传输数据不可以使用。本发明实施例提供的方案中,所述通过各所述数据传输路径,基于对应的数据传输队列,进行待传输数据段落和对应请求标识的传输,具体包括如下步骤:
91.基于所述数据传输队列,向所述数据接收终端发送待传输数据段落和对应请求标识;
92.确定所述待传输数据段落和对应请求标识的发送完成后,向所述数据接收终端发送检验请求;所述检验请求用于指示所述数据接收终端进行此次待传输数据段落和对应请求标识的传输是否丢包的校验并向所述数据发送终端发送校验结果;
93.接收所述校验结果,当所述校验结果为未丢包时,此次待传输数据段落和对应请求标识的传输完成,当所述校验结果为丢包时,重新进行此次待传输数据段落和对应请求标识的传输。
94.如此设置可以避免因为数据传输过程中发生丢包,导致传输的数据出错。
95.图4为本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图,本实施例以数据发送终端的执行流程为例。如图4所示,该方法应用于数据接收终端,包括:
96.步骤410,发送所述数据接收终端的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
97.步骤420,获取对应的数据发送终端发送的可用数据接发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
98.步骤430,基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
99.步骤440,通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据。
100.本发明实施例提供的方案中,可以以所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。相较于现有技术中的通过一条数据传输路径进行数据的传输,本发明实施例提供方案中在进行数据传输时,优先确定数据发送终端和数据接收终端的可用数据发送路径和可用数据接收路径,之后确定当前可用的多条的数据传输路径进行数据的传输,如此设置,可以至少一定程度上加快数据传输的速度。
101.具体的,如图5所示,步骤440通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据,包括:
102.步骤441,获取所述数据发送终端发送的数据大小信息;
103.步骤442,基于所述数据大小信息,创建以预设大小为单位的连续的虚拟内存;
104.步骤443,基于各所述数据传输路径,获取所述数据发送终端发送的待传输数据段落和对应的请求标识,并基于所述请求标识将所述待传输数据段落存储在对应的虚拟内存中;
105.步骤444,将虚拟内存中的数据写入内存中;
106.其中,所述待传输数据段落为将所述待传输数据进行划分得到的;多个待传输数据段落包括多个预设大小的数据段落和一个末端数据段落;所述末端数据段落为所述待传输数据的末端数据且大小不大于预设大小。
107.需要说明的是虚拟内存的建立,使得各个待传输数据段落直接写入虚拟内存中,如此只要依据分割的顺序,将所述待传输数据段落填充进入对应的虚拟内存之中,那么便可以在虚拟内存之中形成完整的待传输数据。
108.实际应用中,数据的传输基于执行主体的不同包括:读取和写入:针对这两种情况,设置虚拟内存及相关步骤如下:如果节点a向节点b写数据,则节点a通过控制面告知节点b数据量。节点b以1gb为单位分配连续的虚拟内存,最大值50gb(比如在此考虑100gb智能网卡,可以根据实际内存大小进行调整)。节点a通过数据面向节点b写数据,每次写完一个1gb-8mb的数据块或丢失包,则通过控制面告知节点b。节点b使用红黑树对1gb虚拟内存块中的1024个数据单元根据psn进行排序(数据包被插入红黑树时,它的u字段的值由0变更为1,fe字段的值为01表示处理的是当前1g数据段中的最后一个数据包),如果没有丢包,则通过控制面告知节点a这一个1gb-8mb的数据块接收成功,否则将丢包的psn通过控制面告知节点a进行重发。节点a收到来自节点b的一个1gb-8mb的数据块接收成功通知,则对相应的wr进行后续处理;
109.如果节点a从节点b读数据,则节点b通过控制面告知节点a数据量和数据在虚拟内存的起始地址。节点a以1gb为单位分配连续的虚拟内存,最大值50gb(比如在此考虑100gb智能网卡,可以根据实际内存大小进行调整)。节点a通过数据面从节点b读数据,每次读完一个1gb-8mb的数据块或丢失包,则进行后续处理。节点a使用红黑树对1gb虚拟内存块中的1024个数据单元根据psn进行排序(数据包被插入红黑树时,它的u字段的值由0变更为1,fe字段的值为01表示处理的是当前1g数据段中的最后一个数据包),如果没有丢包,则进行后续处理。节点a收到来自节点b的一个1gb-8mb的数据块接收成功通知,则对相应的wr进行后续处理。
110.如此设置,数据发送和接收终端分别通过多路径内存管理方式解决了多路径数据传输时固有的数据包乱序问题,实现了roce流量在不使用pfc技术的有损网络中可靠高效的传输。
111.具体的,本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法,应用于数据接收终端,还包括:
112.获取所述数据发送终端发送的检验请求;所述检验请求由所述数据发送终端在执行一次所述待传输数据段落和对应请求标识的发送后发出;
113.基于所述检验请求,校验此次待传输数据段落和对应请求标识的发送过程中是否丢包,得到校验结果;
114.向所述数据发送终端发送校验结果,以指示所述数据发送终端,若丢包,重新发送所述待传输数据段落和对应请求标识。
115.综上所述,本发明具有以下三方面的创新技术优点:
116.(1)多路径建立方法:通信双方节点通过控制面建立本端与远端之间的多路径,本端与远端各自根据自己已经关联可访问ip地址的gid创建qp。双方节点将各自qp列表发送给对方,然后根据对方发来的qp列表建立qp集合(qps)以及相关队列和数据结构,用于支持数据的多路径传输。
117.(2)多路径数据读写方法:本端和远端应用程序首先以固定大小(1gb或1gb-8mb)对所用的虚拟内存进行分段,通过各个数据传输路径分别进行各个待传输数据段落的传输。每一段再分2
20
份,每份大小为len=1kb-8b=1016b(目的是为了避免ip分段)。每个分段对应一个wqe(rdma读或写请求),每个wqe中有一个sga(分散聚合摘要),sga中的addr表示分段的起始地址,size为011表示1kb或1kb-8b,num表示分段中包含的数据份数(包数),key为读写权限。智能网卡能够同时处理qp1和qp2中的多个wqe(多路径),根据每个wqe的内容,循环2
20
次(如果是最后一个段,可能小于2
20
),完成对数据的读写;
118.(3)多路径读写内存管理方法:通信双方节点通过控制面告知需要传递的总数据量。接收方以1gb为单位分配连续的虚拟内存,最大值50gb(比如在此考虑100gb智能网卡,可以根据实际内存大小进行调整)。发送方通过数据面向接收方写数据,每次写完一个1gb-8mb的数据块或丢失包,则通过控制面告知接收方。接收方使用红黑树对1gb虚拟内存块中的1024个数据单元根据psn进行排序(数据包被插入红黑树时,它的u字段的值由0变更为1,fe字段的值为01表示处理的是当前1g数据段中的最后一个数据包),如果没有丢包,则通过控制面告知发送方这一个1gb-8mb的数据块接收成功,否则将丢包的psn通过控制面告知发送方进行重发。发送方收到来自接收方的一个1gb-8mb的数据块接收成功通知,则对相应的wr进行处理,接着通过数据面读写下一个1gb-8mb的数据块。多路径读写内存管理方法解决了多路径数据传输时固有的数据包乱序问题,实现了roce流量在不使用pfc技术的有损网络中可靠高效的传输。
119.图6为本发明另一实施例提供的基于rdma用于有损网络的多路径数据传输方法的流程示意图;图7为本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法的示意图;参照图6和图7,本发明实施例提供的基于rdma用于有损网络的多路径数据传输方法包括:
120.步骤601,进行多条数据传输路径的确立;
121.具体的,通信双方节点通过控制面建立本端与远端之间的多路径,本端与远端各自根据自己已经关联可访问ip地址的gid创建qp(gid是global id,roce网络下必须使用gid来建立qp)。双方节点将各自qp列表(qp1在前,qp2在后)发送给对方,然后根据对方发来的qp列表建立qp集合(qps)以及相关队列和数据结构,为数据的多路径传输做准备。
122.步骤602,发送待传输数据的基本信息;
123.具体的,发送数据待传输数据的基本信息,可以为虚拟内存的创建提供参考。为进一步的数据传输进行准备。
124.步骤603,对所述待传输数据进行分段,得到多个待传输数据段落;
125.步骤604,基于所述数据大小信息,创建以预设大小为单位的连续的虚拟内存;
126.步骤605,通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。
127.为了描述简洁又不失完整性,在此以两条路径为例。参照图7,数据接收终端的应用程序首先根据要读取数据量分配虚拟内存,然后以1gb为单位将虚拟内存进行分段,奇数段由与qp1相关的路径来写入,偶数段由与qp2相关的路径来写入。每一段再分2
20
份,每份大小为1kb(目的是为了避免ip分段)。每个分段对应一个wqe(rdma读请求),每个wqe中有一个sga(scatter/gather abstract,分散聚合摘要),sga中的addr表示分段的起始地址,size为011表示1kb(在此使用默认值),num表示分段中包含的数据份数(包数),key为读写权限。本端智能网卡能够同时处理qp1和qp2中的多个wqe(多路径),根据每个rdma读请求,远端智能网卡中有个循环程序根据对方发来的信息(addr、size、num和key)循环2
20
次(如果是最后一个段,可能小于2
20
),将虚拟地址转换为物理地址,将1gb-8mb(如果是最后一个段,可能小于1gb-8mb)的数据发送到本端智能网卡;本端智能网卡中的一个循环程序循环2
20
次(如果是最后一个段,可能小于2
20
),将虚拟地址转换为物理地址,将接收到的1gb(如果是最后一个段,可能小于1gb)的数据写入内存中。
128.进一步的,当数据传输路径为多条时,通过奇数段和偶数段的方式进行路径传输的分配已经不适用,此时,可以通过预设的规则进行各个数据传输路径的划分。
129.参照图8,以一条数据传输通路具体的待传输数据段落的传输为例进行说明:
130.步骤801,数据发送终端依照数据传输队列,进行一个待传输数据段落的发送;
131.数据发送终端具有多条数据传输通路,本发明实施例中仅仅以一条数据传输通路进行说明,一条数据传输通路首先需要按照预设的数据传输队列进行一个又一个的待传输数据段落的传输。
132.步骤802,是否丢包;
133.数据接收终端进行丢包检测,使用红黑树对虚拟内存块中的数据单元根据psn进行排序,如果没有丢包,说明成功完成一个待传输数据段落的传输,然后进行后续接收到对待传输数据段落的处理;如果通过红黑树检测到丢包,则根据psn重新读取丢失的数据包,即执行步骤803。
134.步骤803,重新发送该待传输数据段落;
135.步骤804,对应的数据传输队列是否已经传输完成;
136.完成一个待传输数据段落的传输之后,判断对应的数据传输队列是否已经传输完成,如果没有完成,则执行步骤801,进行数据传输队列中下一个待传输数据段落的发送。如果已经完成,则执行步骤805。
137.步骤805,其他数据传输队列是否均完成传输;
138.当前数据传输通道完成自己的数据传输队列中的任务后,若还存在其他的通道未完成数据传输,那么该通道可以辅助其他通道进行数据的传输,以加快数据传输速率。即:判断其他数据传输队列是否均完成,如果均已完成,则数据传输结束,如果其他数据传输队列未完成传输完成,则执行步骤806。
139.步骤806,重新制定数据传输队列;
140.通过上述实施例以一条数据传输通路对本发明实施例提供的方案进行说明。
141.参照图9,本发明实施例提供基于rdma用于有损网络的多路径数据传输装置,应用于数据发送终端,包括:
142.第一发送模块91,用于发送所述数据发送终端的可用数据发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
143.第一获取模块92,用于获取对应的数据接收终端发送的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
144.第一确定模块93,用于基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
145.第二发送模块94,用于通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。
146.可选的,所述通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端,包括:
147.向所述数据接收终端发送数据大小信息;
148.对所述待传输数据进行分段,得到多个待传输数据段落;所述多个待传输数据段落包括多个预设大小的数据段落和一个末端数据段落;所述末端数据段落为所述待传输数据的末端数据且大小不大于预设大小;
149.对各所述待传输数据段落设置请求标识;所述请求标识用于指示所述传输数据段落的信息;
150.通过各所述数据传输路径,将各所述待传输数据段落和对应的所述请求标识发送至对应的数据接收终端,以供所述数据接收终端基于所述数据大小信息、所述请求标识和所述待传输数据段落合成所述待传输数据。
151.可选的,所述通过各所述数据传输路径,将各所述待传输数据段落和对应的所述请求标识发送至对应的数据接收终端,包括:
152.基于所述待传输数据段落和各所述数据传输路径,确定各条数据传输路径的数据传输队列;所述数据传输队列包括各所述传输数据段落的传输请求;
153.通过各所述数据传输路径,基于对应的数据传输队列,进行待传输数据段落和对应请求标识的传输;
154.当存在一个数据传输路径完成对应的数据传输队列中的传输请求时,重新确定各所述数据传输路径的数据传输队列。
155.可选的,所述通过各所述数据传输路径,基于对应的数据传输队列,进行待传输数据段落和对应请求标识的传输,包括:
156.基于所述数据传输队列,向所述数据接收终端发送待传输数据段落和对应请求标识;
157.确定所述待传输数据段落和对应请求标识的发送完成后,向所述数据接收终端发送检验请求;所述检验请求用于指示所述数据接收终端进行此次待传输数据段落和对应请求标识的传输是否丢包的校验并向所述数据发送终端发送校验结果;
158.接收所述校验结果,当所述校验结果为未丢包时,此次待传输数据段落和对应请求标识的传输完成,当所述校验结果为丢包时,重新进行此次待传输数据段落和对应请求
标识的传输。
159.参照图10,本发明实施例提供基于rdma用于有损网络的多路径数据传输装置,应用于数据接收终端,所述装置包括:
160.第三发送模块95,用于发送所述数据接收终端的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;
161.第二获取模块96,用于获取对应的数据发送终端发送的可用数据接发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;
162.第二确定模块97,用于基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;
163.接收模块98,用于通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据。
164.可选的,所述通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据,包括:
165.获取所述数据发送终端发送的数据大小信息;
166.基于所述数据大小信息,创建以预设大小为单位的连续的虚拟内存;
167.基于各所述数据传输路径,获取所述数据发送终端发送的待传输数据段落和对应的请求标识,并基于所述请求标识将所述待传输数据段落存储在对应的虚拟内存中;
168.将虚拟内存中的数据写入物理内存中;
169.其中,所述待传输数据段落为所述数据发送终端将所述待传输数据进行划分得到的;多个待传输数据段落包括多个预设大小的数据段落和一个末端数据段落;所述末端数据段落为所述待传输数据的末端数据且大小不大于预设大小。
170.可选的,还包括:获取所述数据发送终端发送的检验请求;所述检验请求由所述数据发送终端在执行一次所述待传输数据段落和对应请求标识的发送后发出;
171.基于所述检验请求,校验此次待传输数据段落和对应请求标识的发送过程中是否丢包,得到校验结果;
172.向所述数据发送终端发送校验结果,以指示所述数据发送终端,若丢包,重新发送所述待传输数据段落和对应请求标识。
173.图11为本发明实施例提供的电子设备的结构示意图,如图11所示,该电子设备可以包括:处理器(processor)1110、通信接口(communications interface)1120、存储器(memory)1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信。处理器1110可以调用存储器1130中的逻辑命令,以执行如下方法:发送所述数据发送终端的可用数据发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;获取对应的数据接收终端发送的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。或执行如下方法:发送所述数据接收终端的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;获取对应的数据发送终端发送的可用数据接发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据
传输路径;通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据。
174.此外,上述的存储器1130中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
175.本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:发送所述数据发送终端的可用数据发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;获取对应的数据接收终端发送的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;通过所述多条数据传输路径,将待传输数据发送至对应的数据接收终端。或包括:发送所述数据接收终端的可用数据接收路径;其中,所述可用数据接收路径,至少包括两条数据接收路径;获取对应的数据发送终端发送的可用数据接发送路径;其中,所述可用数据发送路径,至少包括两条数据发送路径;基于所述可用数据发送路径和所述可用数据接收路径,确定用于传输数据的多条数据传输路径;通过所述多条数据传输路径,基于预设的内存管理方式,接收待传输数据。。
176.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
177.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
178.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献