技术新讯 > 电子通信装置的制造及其应用技术 > 一种基于RDMA的虚拟机通信方法、系统、装置、设备及存储介质与流程  >  正文

一种基于RDMA的虚拟机通信方法、系统、装置、设备及存储介质与流程

  • 国知局
  • 2024-08-22 14:41:21

本发明涉及云计算,具体涉及一种基于远程直接数据存取(remotedirect memory access,rdma)的虚拟机通信方法、系统、装置、设备及存储介质。

背景技术:

1、在当前云计算大规模应用的背景下,云计算中虚拟机之间的通信性能一直是业界广泛关注的问题。其中,通信性能可以体现在虚拟机之间的报文接收或报文发送。

2、现有的云平台宿主机上,一般都会存在数十台虚拟机或者容器,业务都是在虚拟机或者容器上运行。现有的虚拟机之间通常是通过内核协议栈的通信方式或通过网络驱动组件(intel data plane development kit,dpdk)旁路的通信方式,进行报文接收或报文发送。但通过内核协议栈的通信方式,耗时较长,且在报文数据大时会存在丢包。通过网络驱动组件dpdk旁路的通信方式,虽然可以绕过内核协议栈,提升网络性能,但是由于dpdk本身的实现方式,使得系统的cpu一直处于轮询状态,使得cpu使用率较高,对云平台宿主机有一定的要求。

技术实现思路

1、有鉴于此,本发明提供了一种基于rdma的虚拟机通信方法、系统、装置、设备及存储介质,以解决不同虚拟机之间进行数据传输时,耗时较长或容易丢失数据或系统cpu使用率过高的问题。

2、第一方面,本发明提供了一种基于rdma的虚拟机通信方法,应用于第一宿主机,第一宿主机对应第一虚拟机,第一宿主机配置有第一远程直接数据存取rdma网卡;该方法包括:从第一虚拟机的共享内存资源池中获取第一报文,第一报文由第一虚拟机生成和存储;通过第一内存映射表,将第一报文存储在第一rdma网卡的发送队列,第一内存映射表用于指示将来自共享资源池的第一报文存储在发送队列;通过发送队列将第一报文发送至第二宿主机配置的第二rdma网卡,第二rdma网卡用于将第一报文传输至第二宿主机对应的第二虚拟机。

3、基于上述第一方面提供的方法,可以从第一虚拟机的共享内存资源池中获取第一虚拟机生成和存储的第一报文,通过第一内存映射表,将第一报文存储在第一rdma网卡的发送队列,通过发送队列将第一报文发送至第二宿主机配置的第二rdma网卡,以使得将第一报文传输至第二宿主机对应的第二虚拟机。

4、由于第一宿主机配置有第一rdma网卡,第二宿主机也配置有第二rdma网卡,因此,第一虚拟机可以通过第一rdma网卡与第二虚拟机进行通信。这种通信方式,相比于通过内核协议栈或dpdk旁路的通信方式,既能绕过内核协议栈,缩短通信耗时,避免在通信过程中丢失数据;又能降低系统cpu使用率,提升系统的性能。

5、在一种可选的实施方式中,通过第一内存映射表, 将第一报文存储在第一rdma网卡的发送队列,包括:基于第一内存映射表和第一报文在共享内存资源池中的第一共享内存地址, 确定第一报文在发送队列的第一内存地址,第一内存映射表为第一共享内存地址与第一内存地址之间的对应关系表; 基于第一内存地址,将第一报文存储在第一rdma网卡的发送队列对应的内存中。

6、基于上述方法,可以通过第一内存映射表,进行第一虚拟机的共享内存资源池(即虚拟内存)与第一rdma网卡的发送队列的内存(即物理内存)之间的映射,使得将第一报文直接存储在第一rdma网卡的发送队列,实现第一报文从第一虚拟机到第一rdma网卡的传输。

7、在一种可选的实施方式中,第一宿主机通过第一rdma网卡连接物理交换机;第二宿主机通过第二rdma网卡连接物理交换机;通过发送队列将第一报文发送至第二宿主机配置的第二rdma网卡,包括:响应于第一rdma网卡将第一报文转换为预设格式报文,通过发送队列将预设格式报文经过物理交换机发送至第二rdma网卡。

8、基于上述方法,可以通过发送队列将预设格式报文经过物理交换机发送至第二rdma网卡,使得第一虚拟机的第一报文传输到第二rdma网卡,便于后续第二rdma网卡将第一报文发送给第二虚拟机。

9、在一种可选的实施方式中,该方法还包括:接收第一rdma网卡返回的响应报文,并释放发送队列对应的内存,响应报文用于通知第一虚拟机第一报文发送完成。

10、基于上述方法,可以在第一rdma网卡的发送队列发送完第一报文后,及时接收第一rdma网卡返回的响应报文,即刻通知第一虚拟机第一报文发送完成,可以继续发送报文,无需等待第一报文完全被接收,提升发送效率。

11、第二方面,本发明提供了一种基于rdma的虚拟机通信方法,应用于第二宿主机,第二宿主机对应第二虚拟机;第二宿主机配置有第二远程直接数据存取rdma网卡;方法包括:通过第二rdma网卡接收来自第一宿主机的第一报文,并将第一报文存储在第二rdma网卡的接收队列中,第一报文由第一宿主机对应的第一虚拟机生成和存储;通过第二内存映射表,将第一报文存储在第二虚拟机的共享内存资源池中,第二内存映射表用于指示将来自接收队列的第一报文存储在第二虚拟机的共享内存资源池中。

12、基于上述第二方面提供的方法,可以通过第二rdma网卡接收来自第一宿主机的第一报文,并将第一报文存储在第二rdma网卡的接收队列中,通过第二内存映射表,将第一报文存储在第二虚拟机的共享内存资源池中。

13、由于第一宿主机配置有第一rdma网卡,第二宿主机也配置有第二rdma网卡,因此,第二虚拟机可以通过第二rdma网卡接收第一虚拟机发送的报文,与第一虚拟机进行通信。这种通信方式,相比于通过内核协议栈或dpdk旁路的通信方式,既能绕过内核协议栈,缩短通信耗时,避免在通信过程中丢失数据;又能降低系统cpu使用率,提升系统的性能。

14、在一种可选的实施方式中,通过第二内存映射表,将第一报文存储在第二虚拟机的共享内存资源池中,包括:基于第二内存映射表和第一报文在接收队列中的第二内存地址, 确定第一报文在第二虚拟机的共享内存资源池的第二共享内存地址,第二内存映射表为第二内存地址与第二共享内存地址之间的对应关系表; 基于第二内存地址,将第一报文存储在第二r虚拟机的共享内存资源池中。

15、基于上述方法,可以通过第二内存映射表,进行第二虚拟机的共享内存资源池(即虚拟内存)与第二rdma网卡的接收队列的内存(即物理内存)之间的映射,使得将第一报文直接存储在第二虚拟机的共享内存资源池,实现第一报文从第二rdma网卡到第二虚拟机的传输。

16、在一种可选的实施方式中,在第二rdma网卡的接收队列接收完成后,接收来自第二rdma网卡的第一消息,第一消息用于通知第二虚拟机第一报文接收完成。

17、基于上述方法,可以在第二rdma网卡的接收队列接收完第一报文后,及时接收第二rdma网卡的第一消息,以通知第二虚拟机第一报文接收完成,可以将第一报文存入第二虚拟机的共享内存资源池中。

18、第三方面,本发明提供了一种基于rdma的虚拟机通信系统,虚拟机通信系统包括云管理平台、至少两个宿主机、至少两个虚拟机;

19、云管理平台用于生成并发送第一内存映射表和第二内存映射表;

20、至少两个宿主机包括第一宿主机;第一宿主机配置有第一远程直接数据存取rdma网卡;第一宿主机对应至少两个虚拟机中的第一虚拟机;

21、第一内存映射表为第一虚拟机的共享内存资源池的第一共享内存地址与第一rdma网卡的发送队列的第一内存地址之间的对应关系表,第一内存映射表用于指示将来自共享资源池的第一报文存储在发送队列;

22、第一宿主机用于从第一虚拟机的共享内存资源池中获取第一报文,第一报文由第一虚拟机生成和存储;通过第一内存映射表,将第一报文存储在第一rdma网卡的发送队列;通过发送队列将第一报文发送至第二rdma网卡;

23、至少两个宿主机包括第二宿主机;

24、第二宿主机配置有第二rdma网卡;第二宿主机对应至少两个虚拟机中的第二虚拟机;

25、第二内存映射表为第二rdma网卡的接收队列的第二内存地址与第二虚拟机的共享内存资源池的第二共享内存地址之间的对应关系表,第二内存映射表用于指示将来自接收队列的第一报文存储在第二虚拟机的共享内存资源池中;

26、第二宿主机用于通过第二rdma网卡接收第一报文,并将第一报文存储在第二rdma网卡的接收队列对应的内存中;通过第二内存映射表,将第一报文存储在第二虚拟机的共享内存资源池中。

27、基于上述第三方面提供的系统,第一宿主机配置有第一rdma网卡,第二宿主机也配置有第二rdma网卡,虚拟机通信系统中云管理平台纳管的至少两个虚拟机之间可以进行高效率的数据传输。这种通信方式,相比于通过内核协议栈或dpdk旁路的通信方式,既能绕过内核协议栈,缩短通信耗时,避免在通信过程中丢失数据;又能降低系统cpu使用率,提升系统的性能。

28、在一种可选的实施方式中,云管理平台还用于为第一虚拟机分配对应的共享内存资源池;发送第一命令到第一宿主机,第一命令用于为第一rdma网卡的发送队列分配对应的内存;建立第一虚拟机的共享内存资源池的第一共享内存地址和第一rdma网卡的发送队列的第一内存地址之间的对应关系,得到第一内存映射表。

29、基于上述系统,云管理平台可以建立第一内存映射表,便于后续第一虚拟机和第二虚拟机之间数据传输。

30、在一种可选的实施方式中,云管理平台还用于发送第二命令,第二命令用于关闭第一虚拟机,并销毁第一虚拟机的共享内存资源池和第一rdma网卡的发送队列对应的内存。

31、基于上述系统,云管理平台可以在第一虚拟机不需要进行数据传输或第一虚拟机损坏的情况下,释放或销毁第一虚拟机的共享内存资源池和第一rdma网卡的发送队列对应的内存,避免第一虚拟机占用共享内存资源以及第一rdma网卡的发送队列占用物理内存。

32、第四方面,本发明提供了一种基于rdma的虚拟机通信方法装置,应用于第一宿主机,第一宿主机对应第一虚拟机,第一宿主机配置有第一远程直接数据存取rdma网卡;装置包括:收发模块一,用于从第一虚拟机的共享内存资源池中获取第一报文,第一报文由第一虚拟机生成和存储;处理模块一,用于通过第一内存映射表,将第一报文存储在第一rdma网卡的发送队列,第一内存映射表用于指示将来自共享资源池的第一报文存储在发送队列;收发模块一,还用于通过发送队列将第一报文发送至第二宿主机配置的第二rdma网卡,第二rdma网卡用于将第一报文传输至第二宿主机对应的第二虚拟机。

33、第五方面,本发明提供了一种基于rdma的虚拟机通信方法装置,应用于第二宿主机,第二宿主机对应第二虚拟机;第二宿主机配置有第二远程直接数据存取rdma网卡;装置包括:收发模块二,用于通过第二rdma网卡接收来自第一宿主机的第一报文,并将第一报文存储在第二rdma网卡的接收队列中,第一报文由第一宿主机对应的第一虚拟机生成和存储;处理模块二,用于通过第二内存映射表,将第一报文存储在第二虚拟机的共享内存资源池中,第二内存映射表用于指示将来自接收队列的第一报文存储在第二虚拟机的共享内存资源池中。

34、第六方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的基于rdma的虚拟机通信方法,或者执行上述第二方面或其对应的任一实施方式的基于rdma的虚拟机通信方法。

35、第七方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的基于rdma的虚拟机通信方法,或者执行上述第二方面或其对应的任一实施方式的基于rdma的虚拟机通信方法。

36、第八方面,本技术还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本文地址:https://www.jishuxx.com/zhuanli/20240822/279499.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。