基于制造技术

技术编号:39826865 阅读:7 留言:0更新日期:2023-12-29 16:02
本公开的实施方式提供了一种基于

【技术实现步骤摘要】
基于RDMA的数据发送方法、装置、电子设备及存储介质


[0001]本公开的实施方式涉及通信
,更具体地,本公开的实施方式涉及一种基于
RDMA
的数据发送方法

装置

电子设备及存储介质


技术介绍

[0002]本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文

此处的描述不因为包括在本部分中就承认是现有技术

[0003]RDMA(Remote Direct Memory Access
,远程直接内存访问
)
是一种计算机网络技术,允许两台计算机之间直接访问彼此内存中的数据,而无需通过操作系统的参与

这种直接内存访问技术可以大大提高数据传输的效率和吞吐量

[0004]相关技术中,运用
RDMA
技术传输数据的方案主要有三种:
verbs API、UCX API、SMC

R。
其中,
verbs API

UCX API
这两种方案都需要对应用程序进行侵入修改

因为当前的应用程序或库均使用
socket API
进行数据传输,而
socket API

verbs API
不存在包含或被包含关系,也就是说,原本使用
socket API
进行数据传输的应用程序或库需要进行大量的代码重写,才可能实现使用
verbs API
进行数据传输
。UCX API
同理

可见,
verbs API

UCX API
对应用程序的侵入性过强,此缺点也严重阻碍了
verbs API

UCX API
的推广使用


SMC

R
是一种兼容
socket API
的网络协议,其使用内核态的
verbs API
实现
RDMA
网络传输,所以,
SMC

R
方案无需对应用程序进行侵入修改

但是,由于
SMC

R
的协议层均在内核态空间实现,有可能发生由于操作系统版本过低而无法使用
SMC

R
的情况

并且,后续如若想更新
SMC

R
只能通过升级内核来实现,而升级内核容易使得升级后的内核与某些硬件或软件不兼容,导致操作系统功能失效或操作系统不稳定甚至崩溃的问题

[0005]综上,上述方案均存在一定的限制,难以推广使用


技术实现思路

[0006]在本公开实施方式的第一方面中,提供了一种基于
RDMA
的数据发送方法,所述方法应用于运行有用户应用程序的发送方节点,所述方法包括:
[0007]劫持所述用户应用程序发起的向其他节点发送数据的数据发送请求,所述数据发送请求携带有用于指示调用第一
API
的虚拟文件描述符,所述第一
API
区别于基于
RDMA

API
,所述其他节点区别于所述发送方节点;
[0008]基于所述数据发送请求,确定与所述虚拟文件描述符相匹配的真实文件描述符,所述真实文件描述符用于指示调用所述基于
RDMA

API

[0009]基于所述真实文件描述符调用所述基于
RDMA

API
向所述其他节点发送所述数据

[0010]可选的,所述方法还包括:劫持所述用户应用程序针对所述第一
API
的调用请求,并基于所述调用请求向所述用户应用程序返回所述虚拟文件描述符;基于所述调用请求创建所述真实文件描述符,并将所述真实文件描述符存储在本地

[0011]可选的,所述方法还包括:劫持所述用户应用程序发起的与所述其他节点的目标用户应用程序建立通信连接的原始连接请求;基于所述原始连接请求生成目标连接请求,并将所述目标连接请求发送至所述其他节点,以与所述目标用户应用程序建立第一连接通道;基于所述第一连接通道与所述目标用户应用程序交换用于建立
RDMA
连接通道的目标信息,并基于所述目标信息建立所述
RDMA
连接通道

[0012]可选的,所述方法还包括:基于所述真实文件描述符,确定所述用户应用程序与所述目标用户应用程序之间的目标
RDMA
连接通道;基于连接通道与存储区域的对应关系,将所述数据存储至对应于所述目标
RDMA
连接通道的目标存储区域;
[0013]所述基于所述真实文件描述符调用所述基于
RDMA

API
向所述其他节点发送所述数据,包括:从所述目标存储区域获取所述数据,并调用所述基于
RDMA

API
将所述数据通过所述目标
RDMA
连接通道发送至所述其他节点

[0014]在本公开实施方式的第二方面中,提供了一种基于
RDMA
的数据接收方法,所述方法应用于运行有用户应用程序的接收方节点,所述方法包括:
[0015]劫持所述用户应用程序发起的数据接收操作,所述数据接收操作携带有用于指示调用第一
API
的虚拟文件描述符,所述第一
API
区别于基于
RDMA

API

[0016]基于所述数据接收操作,确定与所述虚拟文件描述符相匹配的真实文件描述符,所述真实文件描述符用于指示调用所述基于
RDMA

API

[0017]基于所述真实文件描述符调用所述基于
RDMA

API
接收数据

[0018]可选的,所述方法还包括:劫持所述用户应用程序发起的用于轮询所述用户应用程序是否存在待接收数据的轮询请求,所述轮询请求携带有用于指示所述用户应用程序中用于接收数据的各线程的目标虚拟文件描述符;基于所述轮询请求确定与所述目标虚拟文件描述符相匹配的目标真实文件描述符,所述目标真实文件描述符用于指示调用所述基于
RDMA

API
进行轮询;基于所述目标真实文件描述符调用所述基于
RDMA

API
进行轮询,并在轮询结果表明存在所述待接收数据的情况下,向所述用户应用程序返回存在所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
RDMA
的数据发送方法,其特征在于,所述方法应用于运行有用户应用程序的发送方节点,所述方法包括:劫持所述用户应用程序发起的向其他节点发送数据的数据发送请求,所述数据发送请求携带有用于指示调用第一
API
的虚拟文件描述符,所述第一
API
区别于基于
RDMA

API
,所述其他节点区别于所述发送方节点;基于所述数据发送请求,确定与所述虚拟文件描述符相匹配的真实文件描述符,所述真实文件描述符用于指示调用所述基于
RDMA

API
;基于所述真实文件描述符调用所述基于
RDMA

API
向所述其他节点发送所述数据
。2.
根据权利要求1所述的方法,其特征在于,所述方法还包括:劫持所述用户应用程序针对所述第一
API
的调用请求,并基于所述调用请求向所述用户应用程序返回所述虚拟文件描述符;基于所述调用请求创建所述真实文件描述符,并将所述真实文件描述符存储在本地
。3.
根据权利要求1所述的方法,其特征在于,所述方法还包括:劫持所述用户应用程序发起的与所述其他节点的目标用户应用程序建立通信连接的原始连接请求;基于所述原始连接请求生成目标连接请求,并将所述目标连接请求发送至所述其他节点,以与所述目标用户应用程序建立第一连接通道;基于所述第一连接通道与所述目标用户应用程序交换用于建立
RDMA
连接通道的目标信息,并基于所述目标信息建立所述
RDMA
连接通道
。4.
根据权利要求3所述的方法,其特征在于,所述方法还包括:基于所述真实文件描述符,确定所述用户应用程序与所述目标用户应用程序之间的目标
RDMA
连接通道;基于连接通道与存储区域的对应关系,将所述数据存储至对应于所述目标
RDMA
连接通道的目标存储区域;所述基于所述真实文件描述符调用所述基于
RDMA

API
向所述其他节点发送所述数据,包括:从所述目标存储区域获取所述数据,并调用所述基于
RDMA

API
将所述数据通过所述目标
RDMA
连接通道发送至所述其他节点
。5.
一种基于
RDMA
的数据接收方法,其特征在于,所述方法应用于运行有用户应用程序的接收方节点,所述方法包括:劫持所述用户应用程序发起的数据接收操作,所述数据接收操作携带有用于指示调用第一
API
的虚拟文件描述符,所述第一
API
区别于基于
RDMA

API
;基于所述数据接收操作,确定与所述虚拟文件描述符相匹配的真实文件描述符,所述真实文件描述符用于指示调用所述基于
RDMA

API
;基于所述真实文件描述符调...

【专利技术属性】
技术研发人员:刘亚灿汪翰林陈启钧张晓龙陈谔
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1