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

一种RDMA多队列报文分片重组的实现方法、装置及存储介质与流程

2022-12-06 22:26:43 来源:中国专利 TAG:

一种rdma多队列报文分片重组的实现方法、装置及存储介质
技术领域
1.本发明涉及数据传输技术领域,尤其涉及一种rdma多队列报文分片重组的实现方法、装置及存储介质。


背景技术:

2.随着高性能计算技术、云技术、数据中心的发展,数据传输速率得到了极大的提升,网络拥塞的情况也随之增加,同时对网络的时延要求也越来越高。
3.远端直接内存访问(remote direct memory access,简称rdma)是一种直接进行远程内存存取的技术,即可以直接将数据从一个系统快速迁移到另一个远程系统存储器中,而不对操作系统造成任何影响,减少了中央处理器参与数据传输过程的消耗,进而提升了系统处理业务的性能,具有高带宽、低时延及低cpu占用率的特点。
4.目前市场上rdma功能的网卡一般都是采用滑动窗口(sliding window)实现分片报文的接收,滑动窗口是一种流量控制技术,现有的网络通信中,通信双方通常不会考虑网络的拥挤情况直接发送数据,采用滑动窗口实现会出现网络拥塞和时延较大的情况。


技术实现要素:

5.鉴于此,本发明的实施例提供了一种rdma多队列报文分片重组的实现方法,以消除或改善现有技术中存在的一个或更多个缺陷。
6.本发明的一个方面提供了一种rdma多队列报文分片重组的实现方法,所述方法的步骤包括:
7.接收网卡和第一存储设备的运行参数,所述网卡的运行参数包括网卡的处理速率,所述第一存储设备的运行参数包括第一存储设备的处理周期;
8.基于网卡的处理速率和第一存储设备的处理周期,计算网卡的最大包接收数;
9.基于最大包接收数构建最大包接收数的数量个第一缓存空间;
10.通过网卡接收数据包,提取数据包的包头,将数据包的包头部分存储于第一缓存空间中,若每个第一缓存空间均已存储有数据包包头,则替换第一缓存空间中的原数据包包头,将被替换的数据包包头存储至第一存储设备的第一空间中;
11.当接收到完整的数据包的包头后,从第一缓存空间或第一空间中获取数据包包头数据,解析数据包的包头,将数据包包头以及该包头对应的数据部分存储到本地进行持久化。
12.采用上述方案,本方案一方面将多个数据包的包头分别通过不同通道首先缓存到第一缓存空间,若在数据包被从第一缓存空间替换之前接收到全部数据包包头,则解析数据包的包头,将数据包包头以及该包头对应的数据部分存储到本地进行持久化,若数据包被从第一缓存空间替换至第一存储设备,则说明该数据包出现延迟或拥塞的情况,将其替换至第一存储设备,避免影响其他数据包,提高输出传输效率;另一方面,本方案基于网卡的处理速率和第一存储设备的处理周期,计算网卡的最大包接收数,精确计算若数据包包
头在第一存储设备时,在访问第一存储设备时进入的数据包数量,防止访问第一存储设备造成的延迟或拥塞。
13.在本发明的一些实施方式中,根据如下公式,计算网卡的最大包接收数:
14.最大包接收数=网卡的处理速率*第一存储设备的处理周期。
15.在本发明的一些实施方式中,在提取数据包的包头,将数据包的包头部分存储于第一缓存空间中的步骤还包括,提取数据包的数据部分,将数据部分存储到预设的第二缓存空间中。
16.在本发明的一些实施方式中,所述通过网卡接收数据包的步骤包括:
17.基于ib协议分解传入数据包的包头部分和数据部分。
18.在本发明的一些实施方式中,每个第一缓存空间在同一时间存储一个数据包的包头,若每个第一缓存空间均已存储有数据包包头,则替换第一缓存空间中的原数据包包头的步骤包括:
19.分别记录各个第一缓存空间中的数据包包头的缓存时间;
20.将缓存时间最长的数据包包头替换为新加入的数据包包头。
21.在本发明的一些实施方式中,分别记录各个第一缓存空间中的数据包包头的缓存时间,若缓存时间大于预设的缓存阈值,则将该数据包包头存储至第一存储设备的第一空间中,清空数据包包头所在的第一缓存空间。
22.在本发明的一些实施方式中,在通过网卡接收数据包的步骤中,采用分片的方式接收数据包,在接收每个数据片时,基于ib协议得到每个数据片的bth头,基于bth头在多个第一缓存空间或第一空间中搜索具有相同的bth头的数据,若存在相同bth头的数据,则将该数据片的数据包包头与相同bth头的数据存储于同一位置;若不存在相同bth头的数据,则提取该数据片中数据包的包头,将数据包的包头部分存储于第一缓存空间中,若每个第一缓存空间均已存储有数据包包头,则替换第一缓存空间中的原数据包包头,将被替换的数据包包头存储至第一存储设备的第一空间中。
23.在本发明的一些实施方式中,在基于ib协议分解传入数据包的包头部分和数据部分的步骤中,基于数据包的虚拟地址、数据包长度和远程秘钥建立链接标记,基于链接标记建立包头部分和数据部分的对应关系;
24.在将数据包包头以及该包头对应的数据部分存储到本地进行持久化的步骤中,基于链接标记将数据包包头以及该包头对应的数据部分存储到本地存储器。
25.本发明还提供一种rdma多队列报文分片重组的实现装置,该装置包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述方法的步骤。
26.本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述rdma多队列报文分片重组的实现方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、软盘、硬盘、可移动存储盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。
27.本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对
于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出并获得。
28.本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
29.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,并不构成对本发明的限定。
30.图1为本发明rdma多队列报文分片重组的实现方法第一种实施方式的示意图。
具体实施方式
31.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
32.在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
33.应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
34.在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
35.在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
36.为解决以上问题,如图1所示,本发明提出一种rdma多队列报文分片重组的实现方法,所述方法的步骤包括:
37.步骤s100,接收网卡和第一存储设备的运行参数,所述网卡的运行参数包括网卡的处理速率,所述第一存储设备的运行参数包括第一存储设备的处理周期;
38.在本发明的一些实施方式中,所述处理速率根据历史数据的处理速度计算,可以计算历史时间段内处理速度的平均值;
39.所述历史时间段可以为前10分钟、30分钟或60分钟等,若历史时间段为前10分钟,则具体可以为统计前十分钟接入的数据包总数,计算每秒处理的数据包数量作为网卡的处理速率。
40.在本发明的一些实施方式中,所述第一存储设备可以是ddr,第一存储设备的处理周期可以为ddr每次过电的反应时间,可以为40ns。
41.步骤s200,基于网卡的处理速率和第一存储设备的处理周期,计算网卡的最大包接收数(max_qp);
42.步骤s300,基于最大包接收数构建最大包接收数的数量个第一缓存空间;
43.在本发明的一些实施方式中,本方案的每个第一缓存空间用于缓存一个数据包的包头数据,由于数据包的包头可能存在于第一缓存空间或第一存储设备,基于最大包接收
数构建最大包接收数的数量个第一缓存空间,当数据包的包头存在于第一缓存空间时,处理速度较快,忽略处理消耗的时间,但当数据包的包头存在于第一存储设备时,处理速度相对较慢,则计算在该处理时间段内,所能进入的最大数据包数量,能够防止在访问第一存储设备时,导致的数据延迟或拥塞。
44.步骤s400,通过网卡接收数据包,提取数据包的包头,将数据包的包头部分存储于第一缓存空间中,若每个第一缓存空间均已存储有数据包包头,则替换第一缓存空间中的原数据包包头,将被替换的数据包包头存储至第一存储设备的第一空间中;
45.在本发明的一些实施方式中,所述网卡为rdma网卡,在上述步骤中替换的原数据包包头为存储在多个第一缓存空间的数据包包头中,缓存时间最长的。
46.采用上述方案,本方案的数据包为分片接收,若存在数据包包头长时间未收集完整的情况,则说明数据包发送过程中,可能出现断开的情况,继续占据缓存位置将降低总体的数据接收速度,将其替换,防止单个数据包影响整体速度。
47.步骤s500,当接收到完整的数据包的包头后,从第一缓存空间或第一空间中获取数据包包头数据,解析数据包的包头,将数据包包头以及该包头对应的数据部分存储到本地进行持久化。
48.在本发明的一些实施方式中,本方案设置于数据接收端,当接收到完整的数据包包头后,本方案将数据包包头以及该包头对应的数据部分存储到接收端本地进行持久化,可以存储在硬盘等设备中。
49.采用上述方案,本方案一方面将多个数据包的包头分别通过不同通道首先缓存到第一缓存空间,若在数据包被从第一缓存空间替换之前接收到全部数据包包头,则解析数据包的包头,将数据包包头以及该包头对应的数据部分存储到本地进行持久化,若数据包被从第一缓存空间替换至第一存储设备,则说明该数据包出现延迟或拥塞的情况,将其替换至第一存储设备,避免影响其他数据包,提高输出传输效率;另一方面,本方案基于网卡的处理速率和第一存储设备的处理周期,计算网卡的最大包接收数,精确计算若数据包包头在第一存储设备时,在访问第一存储设备时进入的数据包数量,防止访问第一存储设备造成的延迟或拥塞。
50.在本发明的一些实施方式中,根据如下公式,计算网卡的最大包接收数:
51.最大包接收数=网卡的处理速率*第一存储设备的处理周期。
52.在本发明的一些实施方式中,所述处理速率根据历史数据的处理速度计算,可以计算历史时间段内处理速度的平均值;所述历史时间段可以为前10分钟、30分钟或60分钟等,若历史时间段为前10分钟,则具体可以为统计前十分钟接入的数据包总数,计算每秒处理的数据包数量作为网卡的处理速率;所述第一存储设备可以是ddr,第一存储设备的处理周期可以为ddr每次过电的反应时间,可以为40ns。
53.采用上述方案,本方案可以基于上述公式计算出当数据包的包头存在于第一存储设备时,在该处理时间段内,所能进入的最大数据包数量,能够防止在访问第一存储设备时,导致的数据延迟或拥塞。
54.在本发明的一些实施方式中,在提取数据包的包头,将数据包的包头部分存储于第一缓存空间中的步骤还包括,提取数据包的数据部分,将数据部分存储到预设的第二缓存空间中。
55.在本发明的一些实施方式中,基于ib协议分解传入数据包的包头部分和数据部分,进一步提取数据包的包头部分或数据部分。
56.在本发明的一些实施方式中,本发明的第一缓存空间和第二缓存空间均可以基于随机存取存储器(random access memory,ram)构建。
57.由于本发明采用了缓存(ram),故rdma网卡在接收分片数据包时不会出现拥塞情况,ram的读写性能快,可以有效降低数据包的接收时延。
58.在本发明的一些实施方式中,所述通过网卡接收数据包的步骤包括:
59.基于ib协议(infiniband)分解传入数据包的包头部分和数据部分。
60.在本发明的一些实施方式中,每个第一缓存空间在同一时间存储一个数据包的包头,若每个第一缓存空间均已存储有数据包包头,则替换第一缓存空间中的原数据包包头的步骤包括:
61.分别记录各个第一缓存空间中的数据包包头的缓存时间;
62.将缓存时间最长的数据包包头替换为新加入的数据包包头。
63.在本发明的一些实施方式中,分别记录各个第一缓存空间中的数据包包头的缓存时间,若缓存时间大于预设的缓存阈值,则将该数据包包头存储至第一存储设备的第一空间中,清空数据包包头所在的第一缓存空间。
64.采用上述方案,本方案的数据包为分片接收,若存在数据包包头长时间未收集完整的情况,则说明数据包发送过程中,可能出现断开的情况,继续占据缓存位置将降低总体的数据接收速度,本方案可以通过采用设置缓存阈值将其转移到第一存储设备和/或采用替换的方式将其转移到第一存储设备,防止单个数据包影响整体速度。
65.在本发明的一些实施方式中,在通过网卡接收数据包的步骤中,采用分片的方式接收数据包,在接收每个数据片时,基于ib协议得到每个数据片的bth头,基于bth头在多个第一缓存空间或第一空间中搜索具有相同的bth头的数据,若存在相同bth头的数据,则将该数据片的数据包包头与相同bth头的数据存储于同一位置;若不存在相同bth头的数据,则提取该数据片中数据包的包头,将数据包的包头部分存储于第一缓存空间中,若每个第一缓存空间均已存储有数据包包头,则替换第一缓存空间中的原数据包包头,将被替换的数据包包头存储至第一存储设备的第一空间中。
66.在本发明的一些实施方式中,所述bth头即为infiniband base transport header,同一数据包的不同数据片为相同的bth头,因此,本方案采用基于bth头在多个第一缓存空间或第一空间中搜索具有相同的bth头的数据的方式,将不同数据片进行标记,方式匹配错误。
67.在本发明的一些实施方式中,在基于ib协议分解传入数据包的包头部分和数据部分的步骤中,基于数据包的虚拟地址、数据包长度length和远程秘钥key建立链接标记,基于链接标记建立包头部分和数据部分的对应关系;
68.在本发明的一些实施方式中,本方案的链接标记可以为将虚拟地址、数据包长度和远程秘钥进行顺序排列进行组合的方式得到,本方案能够确保每个数据包的链接标记不同,进而能够精准匹配包头部分和数据部分,保证组合准确度,确保存储到本地存储器时的数据完整性。
69.在将数据包包头以及该包头对应的数据部分存储到本地进行持久化的步骤中,基
于链接标记将数据包包头以及该包头对应的数据部分存储到本地存储器。
70.在本发明的一些实施方式中,基于链接标记将数据包包头以及该包头对应的数据部分存储到本地存储器的步骤还包括基于rdma网卡根据虚拟地址va,获取发送方的物理地址。
71.将获得的物理地址、数据、数据长度,通过dma(direct memory access,直接存储器访问)进行数据发送至本地存储器。
72.本发明的有益效果包括:
73.1、本方案将多个数据包的包头分别通过不同通道首先缓存到第一缓存空间,若在数据包被从第一缓存空间替换之前接收到全部数据包包头,则解析数据包的包头,将数据包包头以及该包头对应的数据部分存储到本地进行持久化,若数据包被从第一缓存空间替换至第一存储设备,则说明该数据包出现延迟或拥塞的情况,将其替换至第一存储设备,避免影响其他数据包,提高输出传输效率;
74.2、本方案基于网卡的处理速率和第一存储设备的处理周期,基于公式计算当数据包的包头存在于第一存储设备的时,需要启动第一存储设备,在该处理时间段内,网卡的最大包接收数,精确计算若数据包包头在第一存储设备时,在访问第一存储设备时进入的数据包数量,防止访问第一存储设备造成的延迟或拥塞;
75.3、本方案的数据包为分片接收,若存在数据包包头长时间未收集完整的情况,则说明数据包发送过程中,可能出现断开的情况,继续占据缓存位置将降低总体的数据接收速度,本方案可以通过采用设置缓存阈值将其转移到第一存储设备和/或采用替换的方式将其转移到第一存储设备,防止单个数据包影响整体速度;
76.4、本方案的链接标记可以为将虚拟地址、数据包长度和远程秘钥进行顺序排列进行组合的方式得到,本方案能够确保每个数据包的链接标记不同,进而能够精准匹配包头部分和数据部分,保证组合准确度,确保存储到本地存储器时的数据完整性。
77.本发明的实施例还提供一种rdma多队列报文分片重组的实现装置,该装置包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述方法的步骤。
78.本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述rdma多队列报文分片重组的实现方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、软盘、硬盘、可移动存储盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。
79.本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传
输介质或者通信链路上传送。
80.需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,做出各种改变、修改和添加,或者改变步骤之间的顺序。
81.本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
82.以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献