虚拟化的RDMA方法、系统、存储介质及电子设备技术方案

技术编号:31679210 阅读:32 留言:0更新日期:2022-01-01 10:24
本公开涉及一种虚拟化的RDMA方法、系统、存储介质及电子设备,该方法应用于数据处理系统,该数据处理系统包括宿主机、物理网卡以及依附于该宿主机上的虚拟机,该方法包括:该虚拟机响应于运行在该虚拟机上的应用程序发起API请求,通过虚拟库劫持该API请求;该虚拟机通过该虚拟库将该API请求发送至该虚拟机与该宿主机共享的共享内存区;该宿主机通过服务从该共享内存区获取该API请求,并将该API请求发送至该物理网卡;该物理网卡响应于接收到该API请求,执行该API请求,得到目标数据并将该目标数据发送至该宿主机;该宿主机接收该目标数据,将该目标数据发送至该共享内存区;该虚拟机从该共享内存区获取该目标数据,并将该目标数据返回至该应用程序。标数据返回至该应用程序。标数据返回至该应用程序。

【技术实现步骤摘要】
虚拟化的RDMA方法、系统、存储介质及电子设备


[0001]本公开涉及虚拟化系统领域,具体地,涉及一种虚拟化的RDMA方法、系统、存储介质及电子设备。

技术介绍

[0002]目前,高性能、分布式计算和存储使用越发广泛,结合云计算的成熟发展,越来越多的分布式算力、分布式存储等数据由虚拟化环境(虚拟云主机)支撑,这对高性能的虚拟网络提出了极大的挑战。在非虚拟化场景,物理机可以使用成熟的RDMA(Remote Direct Memory Access,远程直接内存访问)技术。RDMA技术依赖于物理网卡硬件的支持,它允许应用程序在用户态(kernel by

pass)直接读/写跨节点应用程序的内存,以超低时延、超高吞吐、近乎零CPU消耗,高效处理来自于分布式计算和分布式存储生产的巨量网络数据包。
[0003]而在大型数据中心中,每秒网络数据流量已经超过TB级别,巨量网络数据对虚拟主机的冲击,催生了虚拟RDMA(vRDMA)的产生,即在虚拟机内部使用RDMA技术。
[0004]在相关技术通过软件实现虚拟RDMA的方案中,有基于Socket转换的Verbs API语义的方法,该方法性能较差;也有通过大量修改虚拟机内核OpenFabrics网络栈的方法,该方法可移植性和普适性不佳。

技术实现思路

[0005]为了解决相关技术中存在的问题,本公开提供一种虚拟化的RDMA方法、系统、存储介质及电子设备。
[0006]为了实现上述目的,本公开第一方面提供一种虚拟化的RDMA方法,所述方法应用于数据处理系统,所述数据处理系统包括宿主机、物理网卡以及依附于所述宿主机上的虚拟机,所述方法包括:所述虚拟机响应于运行在所述虚拟机上的应用程序发起Verbs API请求,通过虚拟RDMA库劫持所述API请求;所述虚拟机通过所述虚拟RDMA库将所述API请求发送至所述虚拟机与所述宿主机共享的共享内存区;所述宿主机通过RDMA服务从所述共享内存区获取所述API请求,并将所述API请求发送至所述物理网卡;所述物理网卡响应于接收到所述API请求,根据所述API请求的参数信息执行所述API请求,得到目标数据并将所述目标数据发送至所述宿主机;所述宿主机通过所述RDMA服务接收所述目标数据,将所述目标数据发送至所述共享内存区;所述虚拟机通过所述虚拟RDMA库从所述共享内存区获取所述目标数据,并将所述目标数据返回至所述应用程序。
[0007]可选地,所述方法包括:
所述虚拟机创建与所述宿主机共享的共享内存区,得到所述共享内存区的GVA地址,并根据所述GVA地址得到GPA地址;所述虚拟机通过虚拟RDMA库发起与所述宿主机的RDMA服务的vsock连接,在所述vsock连接形成后,通过所述vsock连接建立的vsock数据通道,将所述GPA地址发送至所述宿主机;所述宿主机通过虚拟机监视器接收所述GPA地址;所述宿主机响应于接收到所述GPA地址,基于vhost协议根据所述GPA地址得到HPA地址,并通过所述RDMA服务根据所述HPA地址重映射得到HVA地址。
[0008]可选地,所述方法包括:所述虚拟机基于所述共享内存区,构建第一环形队列以及第二环形队列;所述虚拟机通过所述虚拟RDMA库将所述API请求发送至所述虚拟机与所述宿主机共享的共享内存区;所述宿主机通过RDMA服务从所述共享内存区获取所述API请求;所述宿主机通过RDMA服务接收所述目标数据,将所述目标数据发送至所述共享内存区;所述虚拟机通过所述虚拟RDMA库从所述共享内存区获取所述目标数据,包括:所述虚拟机通过所述虚拟RDMA库将所述API请求序列化得到序列化请求,并将所述序列化请求发送至所述第一环形队列;所述宿主机通过RDMA服务消费所述第一环形队列中的序列化请求,将所述序列化请求反序列化为所述API请求;所述宿主机通过RDMA服务接收所述目标数据,将所述目标数据序列化得到序列化数据,并将所述序列化数据发送至所述第二环形队列;所述虚拟机通过所述虚拟RDMA库消费所述第二环形队列中的序列化数据,将所述序列化数据反序列化为所述目标数据。
[0009]可选地,所述数据处理系统包括依附于所述宿主机上的多个虚拟机,所述虚拟机基于所述共享内存区,构建第一环形队列以及第二环形队列;所述宿主机通过RDMA服务消费所述第一环形队列中的序列化请求,将所述序列化请求反序列化为所述API请求;所述物理网卡响应于接收到所述API请求,根据所述API请求的参数信息执行所述API请求,得到目标数据并将所述目标数据发送至所述宿主机;所述宿主机通过RDMA服务接收所述目标数据,将所述目标数据序列化得到序列化数据,并将所述序列化数据发送至第二环形队列,包括:所述虚拟机基于所述多个虚拟机与所述宿主机共享的多个共享内存区构建多个第一环形队列以及多个第二环形队列,所述多个第一环形队列、所述多个第二环形队列、所述多个虚拟机以及所述多个共享内存区之间一一对应;所述宿主机通过RDMA服务消费目标第一环形队列中的序列化请求,将所述序列化请求反序列化为包括所述目标第一环形队列的唯一标识的API请求,所述目标第一环形队列为所述多个第一环形队列中的任意一个第一环形队列;所述物理网卡响应于接收到包括所述唯一标识的API请求,根据所述包括唯一标识的API请求的参数信息执行该API请求,得到包括所述唯一标识的目标数据并将所述包括所述唯一标识的目标数据发送至所述宿主机;所述宿主机通过RDMA服务接收所述包括所述唯一标识的目标数据,将所述包括所
述唯一标识的目标数据序列化得到包括所述唯一标识的序列化数据,并将所述包括所述唯一标识的序列化数据发送至目标第二环形队列,以使得目标虚拟机获取所述目标数据,所述目标虚拟机、所述目标第二环形队列以及所述目标第一环形队列对应。
[0010]本公开第二方面提供一种数据处理系统,所述数据处理系统包括宿主机、物理网卡以及依附于所述宿主机上的虚拟机;所述虚拟机用于响应于运行在所述虚拟机上的应用程序发起Verbs API请求,通过虚拟RDMA库劫持所述API请求;所述虚拟机用于通过所述虚拟RDMA库将所述API请求发送至所述虚拟机与所述宿主机共享的共享内存区;所述宿主机用于通过所述RDMA服务从所述共享内存区获取所述API请求,并将所述API请求发送至所述物理网卡;所述物理网卡用于响应于接收到所述API请求,根据所述API请求的参数信息执行所述API请求,得到目标数据并将所述目标数据发送至所述宿主机;所述宿主机用于通过RDMA服务接收所述目标数据,将所述目标数据发送至所述共享内存区;所述虚拟机用于通过所述虚拟RDMA库从所述共享内存区获取所述目标数据,并将所述目标数据返回至所述应用程序。
[0011]可选地,所述虚拟机用于创建与所述宿主机共享的共享内存区,得到所述共享内存区的GVA地址,并根据所述GVA地址得到GPA地址;所述虚拟机用于通过虚拟RDMA库发起与所述宿主机的RDMA服务的vsock连接,在所述vsock连接形成后,通过所述vsock连接建立的vsock本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种虚拟化的RDMA方法,其特征在于,所述方法应用于数据处理系统,所述数据处理系统包括宿主机、物理网卡以及依附于所述宿主机上的虚拟机,所述方法包括:所述虚拟机响应于运行在所述虚拟机上的应用程序发起Verbs API请求,通过虚拟RDMA库劫持所述API请求;所述虚拟机通过所述虚拟RDMA库将所述API请求发送至所述虚拟机与所述宿主机共享的共享内存区;所述宿主机通过RDMA服务从所述共享内存区获取所述API请求,并将所述API请求发送至所述物理网卡;所述物理网卡响应于接收到所述API请求,根据所述API请求的参数信息执行所述API请求,得到目标数据并将所述目标数据发送至所述宿主机;所述宿主机通过所述RDMA服务接收所述目标数据,将所述目标数据发送至所述共享内存区;所述虚拟机通过所述虚拟RDMA库从所述共享内存区获取所述目标数据,并将所述目标数据返回至所述应用程序。2.根据权利要求1所述的方法,其特征在于,所述方法包括:所述虚拟机创建与所述宿主机共享的共享内存区,得到所述共享内存区的GVA地址,并根据所述GVA地址得到GPA地址;所述虚拟机通过虚拟RDMA库发起与所述宿主机的RDMA服务的vsock连接,在所述vsock连接形成后,通过所述vsock连接建立的vsock数据通道,将所述GPA地址发送至所述宿主机;所述宿主机通过虚拟机监视器接收所述GPA地址;所述宿主机响应于接收到所述GPA地址,基于vhost协议根据所述GPA地址得到HPA地址,并通过所述RDMA服务根据所述HPA地址重映射得到HVA地址。3.根据权利要求1所述的方法,其特征在于,所述方法包括:所述虚拟机基于所述共享内存区,构建第一环形队列以及第二环形队列;所述虚拟机通过所述虚拟RDMA库将所述API请求发送至所述虚拟机与所述宿主机共享的共享内存区;所述宿主机通过RDMA服务从所述共享内存区获取所述API请求;所述宿主机通过RDMA服务接收所述目标数据,将所述目标数据发送至所述共享内存区;所述虚拟机通过所述虚拟RDMA库从所述共享内存区获取所述目标数据,包括:所述虚拟机通过所述虚拟RDMA库将所述API请求序列化得到序列化请求,并将所述序列化请求发送至所述第一环形队列;所述宿主机通过RDMA服务消费所述第一环形队列中的序列化请求,将所述序列化请求反序列化为所述API请求;所述宿主机通过RDMA服务接收所述目标数据,将所述目标数据序列化得到序列化数据,并将所述序列化数据发送至所述第二环形队列;所述虚拟机通过所述虚拟RDMA库消费所述第二环形队列中的序列化数据,将所述序列化数据反序列化为所述目标数据。4.根据权利要求3所述的方法,其特征在于,所述数据处理系统包括依附于所述宿主机上的多个虚拟机,
所述虚拟机基于所述共享内存区,构建第一环形队列以及第二环形队列;所述宿主机通过RDMA服务消费所述第一环形队列中的序列化请求,将所述序列化请求反序列化为所述API请求;所述物理网卡响应于接收到所述API请求,根据所述API请求的参数信息执行所述API请求,得到目标数据并将所述目标数据发送至所述宿主机;所述宿主机通过RDMA服务接收所述目标数据,将所述目标数据序列化得到序列化数据,并将所述序列化数据发送至第二环形队列,包括:所述虚拟机基于所述多个虚拟机与所述宿主机共享的多个共享内存区构建多个第一环形队列以及多个第二环形队列,所述多个第一环形队列、所述多个第二环形队列、所述多个虚拟机以及所述多个共享内存区之间一一对应;所述宿主机通过RDMA服务消费目标第一环形队列中的序列化请求,将所述序列化请求反序列化为包括所述目标第一环形队列的唯一标识的API请求,所述目标第一环形队列为所述多个第一环形队列中的任意一个第一环形队列;所述物理网卡响应于接收到包括所述唯一标识的API请求,根据所述包括唯一标识的API请求的参数信息执行该API请求,得到包括所述唯一标识的目标数据并将所述包括所述唯一标识的目标数据发送至所述宿主机;所述宿主机通过RDMA服务接收所述包括所述唯一标识的目标数据,将所述包括所述唯一标识的目标数据序列化得到包括所述唯一标识的序...

【专利技术属性】
技术研发人员:姜哓庆陈飞邹懋王鲲
申请(专利权)人:维塔科技北京有限公司
类型:发明
国别省市:

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

1