CN103763173B - 数据传输方法和计算节点 - Google Patents

数据传输方法和计算节点 Download PDF

Info

Publication number
CN103763173B
CN103763173B CN201310752021.4A CN201310752021A CN103763173B CN 103763173 B CN103763173 B CN 103763173B CN 201310752021 A CN201310752021 A CN 201310752021A CN 103763173 B CN103763173 B CN 103763173B
Authority
CN
China
Prior art keywords
rdma
data sending
sending requests
mentioned
network interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310752021.4A
Other languages
English (en)
Other versions
CN103763173A (zh
Inventor
章晓峰
杨杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Gezhi Data Technology Co.,Ltd.
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310752021.4A priority Critical patent/CN103763173B/zh
Publication of CN103763173A publication Critical patent/CN103763173A/zh
Application granted granted Critical
Publication of CN103763173B publication Critical patent/CN103763173B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了数据传输方法及计算节点和通信系统。一种数据传输方法可包括:向源计算节点上部署的宿主机Host中的后端实例BE发送,源计算节点上部署的虚拟机之中的前端实例FE待向BE发送的第一远程直接内存读取RDMA数据发送请;在BE接收到第一RDMA数据发送请求后,得到携带于第一RDMA数据发送请求中的源虚拟机物理内存地址所对应的第一主机物理内存地址;向N个RDMA网卡中的第一RDMA网卡发送,BE待向第一RDMA网卡发送的第二RDMA数据发送请求。本发明实施例的方案有利于在虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据。

Description

数据传输方法和计算节点
技术领域
本发明涉及计算机技术领域,具体涉及数据传输方法和计算节点及通信系统。
背景技术
虚拟化技术是一种将底层硬件设备与上层操作系统、应用程序分离的去耦合技术,如图1所示,引入虚拟机监控器(VMM,Virtual Machine Monitor)层直接管理底层硬件资源,创建与底层硬件无关的虚拟机(VM,Virtual Machine)供上层操作系统和应用程序使用。
虚拟化技术作为当前流行的云计算(Cloud Computing)平台的底层重要支撑技术之一,可以极大的提高物理设备的资源使用效率。与传统的物理服务器相比,虚拟机具有更好的隔离性和封装性。
在传统的计算机上,发送数据包基本都是通过协议栈。所有的数据包都需要在用户缓冲区与内核缓冲区之间进行拷贝,这种数据包复制操作需极大的内存带宽,降低了中央处理器(CPU,Central Processing Unit)效率,同时也造成了一定的时延。
远程直接内存读取(RDMA,Remote Direct Memory Access)技术可不需要CPU的参与,直接把数据复制到远程机器的内存指定地址,大幅度提高网络传输时的CPU性能和时延性能。正是由于RDMA拥有低时延、高带宽、低CPU占用等性能优势,因此RDMA正被广泛应用于高性能计算、高速集群和服务区域网络、网络存储等领域。
目前,随着虚拟化技术的迅速发展,虚拟机的网络传输性能要求也变得越来越高。现有技术中,在虚拟化架构中还没有基于RDMA技术实现不同物理主机上的虚拟机之间传递数据的有效方案。
发明内容
本发明实施例提供数据传输方法及计算节点和通信系统,以在虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据。
本发明实施例第一方面提供一种数据传输方法,可包括:
源计算节点中的处理器向所述源计算节点上部署的宿主机Host中的后端实例BE发送所述源计算节点上部署的虚拟机之中的前端实例FE待向所述BE发送的第一远程直接内存读取RDMA数据发送请求,其中,所述第一RDMA数据发送请求携带目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址,所述后端实例为与所述源计算节点中的N个RDMA网卡对应的后端实例,所述前端实例为与所述源计算节点中的所述N个RDMA网卡对应的前端实例,所述N为正整数;
在所述BE接收到所述第一RDMA数据发送请求后,所述处理器基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述源虚拟机物理内存地址所对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求,以便于所述第一RDMA网卡在接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址所对应的内存空间读取待发送的数据,若确定所述源计算节点和所述目的计算节点为不同的计算节点,则基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包,其中,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址。
结合第一方面,在第一种可能的实施方式中,
所述方法还包括:
所述处理器将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列;其中,所述基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述源虚拟机物理内存地址所对应的第一主机物理内存地址,包括:当轮到所述第一RDMA数据发送请求从所述队列出队,所述处理器从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址所对应的第一主机物理内存地址。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,
所述将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列包括:将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
结合第一方面,在第一方面的第三种可能的实施方式中,
所述方法还包括:所述处理器将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列;
其中,所述向所述N个RDMA网卡中的第一RDMA网卡发送,所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求,包括:当轮到所述第二RDMA数据发送请求从所述队列出队,所述处理器从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,
所述将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列,包括:将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式中,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式或第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式中,所述方法还包括:
所述第一RDMA网卡若确定所述源计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据。
本发明实施例第二方面提供一种数据传输方法,包括:
源计算节点上部署的宿主机Host中的后端实例BE,接收所述源计算节点上部署的虚拟机之中的前端实例FE发送的第一远程直接内存读取RDMA数据发送请求,其中,所述第一RDMA数据发送请求携带目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址,所述后端实例为与所述源计算节点中的N个RDMA网卡对应的后端实例,所述前端实例为与所述源计算节点中的所述N个RDMA网卡对应的前端实例,所述N为正整数;
所述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到所述源虚拟机物理内存地址对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址;
所述第一RDMA网卡接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址对应的内存空间读取待发送的数据,若确定所述源计算节点和所述目的计算节点为不同的计算节点,则基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包。
结合第二方面,在第二方面的第一种可能的实施方式中,所述方法还包括:
所述BE将所述第一RDMA数据发送请求写入所述BE所管理的队列;
其中,所述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到所述源虚拟机物理内存地址对应的第一主机物理内存地址,包括:
当轮到所述第一RDMA数据发送请求从所述队列出队,所述BE从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,
所述将所述第一RDMA数据发送请求写入所述BE所管理的队列包括:将所述第一RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
结合第二方面,在第二方面的第三种可能的实施方式中,
所述方法还包括:
所述BE将所述第二RDMA数据发送请求写入所述BE所管理的队列;
其中,所述向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,包括:
当轮到所述第二RDMA数据发送请求从所述队列出队,所述BE从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,
所述将所述第二RDMA数据发送请求写入所述BE所管理的队列包括:将所述第二RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式或第二方面的第四种可能的实施方式,在第二方面的第五种可能的实施方式中,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式或第二方面的第四种可能的实施方式或第二方面的第五种可能的实施方式,在第二方面的第六种可能的实施方式中,所述方法还包括:
所述第一RDMA网卡若确定所述源计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据。
本发明实施例第三方面提供一种数据传输方法,可包括:
向源计算节点上部署的宿主机Host中的后端实例BE发送所述源计算节点上部署的虚拟机之中的前端实例FE待向所述BE发送的第一远程直接内存读取RDMA数据发送请求,其中,所述第一RDMA数据发送请求携带目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址,所述后端实例为与所述源计算节点中的N个RDMA网卡对应的后端实例,所述前端实例为与所述源计算节点中的所述N个RDMA网卡对应的前端实例,其中,所述N为正整数;
在所述BE接收到所述第一RDMA数据发送请求后,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述源虚拟机物理内存地址所对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求,以便于所述第一RDMA网卡在接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址所对应的内存空间读取待发送的数据,若确定所述源计算节点和所述目的计算节点为不同的计算节点,则基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包,其中,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址。
结合第三方面,在第一种可能的实施方式中,
所述方法还包括:
将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列;其中,所述基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述源虚拟机物理内存地址所对应的第一主机物理内存地址,包括:当轮到所述第一RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址所对应的第一主机物理内存地址。
结合第三方面的第一种可能的实施方式,在第三方面的第二种可能的实施方式中,
所述将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列包括:将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
结合第三方面,在第三方面的第三种可能的实施方式中,
所述方法还包括:将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列;
其中,所述向所述N个RDMA网卡中的第一RDMA网卡发送,所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求,包括:当轮到所述第二RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
结合第三方面的第三种可能的实施方式,在第三方面的第四种可能的实施方式中,
所述将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列,包括:将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
结合第三方面或第三方面的第一种可能的实施方式或第三方面的第二种可能的实施方式或第三方面的第三种可能的实施方式或第三方面的第四种可能的实施方式,在第三方面的第五种可能的实施方式中,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
结合第三方面或第三方面的第一种可能的实施方式或第三方面的第二种可能的实施方式或第三方面的第三种可能的实施方式或第三方面的第四种可能的实施方式或第三方面的第五种可能的实施方式,在第三方面的第六种可能的实施方式中,所述方法还包括:
所述第一RDMA网卡若确定所述源计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据。
本发明第四方面提供一种计算节点,可包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的m1个虚拟机,
其中,所述硬件层包括N个远程直接内存读取RDMA网卡,所述宿主机中部署有与所述N个RDMA网卡对应的后端实例BE,所述m1虚拟机中的第一虚拟机中部署有与所述N个RDMA网卡对应的前端实例FE,所述N和所述m1为正整数;
所述FE,用于向所述BE发送第一RDMA数据发送请求,所述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址和目的计算节点对应的通信地址;
所述BE,用于接收来自所述FE的所述第一RDMA数据发送请求;基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,其中,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址;
所述第一RDMA网卡用于接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址对应的内存空间读取待发送的数据,若确定所述计算节点和所述目的计算节点为不同的计算节点,基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包。
结合第四方面,在第四方面的第一种可能的实施方式中,
所述第一RDMA网卡还用于:若确定所述源计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据
结合第四方面或者第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施方式中,所述BE还用于,将所述第一RDMA数据发送请求写入所述BE所管理的队列;
其中,在基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到所述源虚拟机物理内存地址对应的第一主机物理内存地址的方面,所述BE具体用于,当轮到所述第一RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址。
结合第四方面的第二种可能的实施方式,在第四方面的第三种可能的实施方式中,在所述将所述第一RDMA数据发送请求写入所述BE所管理的队列的方面,所述BE具体用于,将所述第一RDMA数据发送请求写入所述BE所管理的,且与所述第一虚拟机对应的队列;或将所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
结合第四方面或者第四方面的第一种可能的实施方式,在第四方面的第四种可能的实施方式中,所述BE还用于,将所述第二RDMA数据发送请求写入所述BE所管理的队列;
其中,在所述向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求的方面,所述BE具体用于,当轮到所述第二RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
结合第四方面的第四种可能的实施方式,在第四方面的第五种可能的实施方式中,在所述将所述第二RDMA数据发送请求写入所述BE所管理的队列的方面,所述BE具体用于将所述第二RDMA数据发送请求写入所述BE所管理的,且与所述第一虚拟机对应的队列;或将所述第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
结合第四方面或第四方面的第一种可能的实施方式或第四方面的第二种可能的实施方式或第四方面的第四种可能的实施方式或第四方面的第四种可能的实施方式或第四方面的第五种可能的实施方式,在第四方面的第六种可能的实施方式中,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
本发明实施例第五方面提供一种通信系统,包括:
源计算节点和目的计算节点;
其中,所述源计算节点包括:第一硬件层、运行在所述第一硬件层之上的第一宿主机Host、以及运行在所述第一Host之上的m1个虚拟机,其中,所述第一硬件层包括N个远程直接内存读取RDMA网卡,所述第一宿主机中部署有与所述N个RDMA网卡对应的第一后端实例BE,其中,所述m1个虚拟机中的第一虚拟机中部署有与所述N个RDMA网卡对应的第一前端实例FE,所述m1和N为正整数;
所述目的计算节点包括:第二硬件层、运行在所述第二硬件层之上的第二Host、以及运行在所述第二Host之上的m2个虚拟机;其中,所述第二硬件层包括第二网卡,所述m2和N为正整数;
所述第一FE,用于向所述第一BE发送第一RDMA数据发送请求,所述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址和目的计算节点对应的通信地址;
所述第一BE,用于接收来自所述第一FE的所述第一RDMA数据发送请求;基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,其中,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址;
所述第一RDMA网卡用于接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址对应的内存空间读取待发送的数据,基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包;
所述第二网卡用于接收所述数据包,映射得到所述数据包包含的所述目的虚拟机内存地址所对应的所述第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据包中包含的所述数据。
结合第五方面,在第五方面的第一种可能的实施方式中,
所述第二硬件层包括N2个RDMA网卡,所述第二宿主机中部署有与所述N2个RDMA网卡对应的第二BE,所述m2个虚拟机中的第二虚拟机中部署有与所述N个RDMA网卡对应的第二FE,其中,所述第二网卡为所述N2个RDMA网卡中的一个,所述N2为正整数;
所述第二BE用于将所述目的虚拟机内存地址通知所述第二FE。
结合第五方面或第五方面的第一种可能的实施方式,在第五方面的第二种可能的实施方式中,所述第一BE还用于将所述第一RDMA数据发送请求写入所述第一BE所管理的队列;
在所述基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到所述源虚拟机物理内存地址对应的第一主机物理内存地址的方面,所述第一BE具体用于,当轮到所述第一RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址。
结合第五方面的第二种可能的实施方式,在第五方面的第三种可能的实施方式中,
在所述将所述第一RDMA数据发送请求写入所述第一BE所管理的队列的方面,所述第一BE具体用于,将所述第一RDMA数据发送请求写入所述第一BE所管理的且与所述第一虚拟机对应的队列;或将所述第一RDMA数据发送请求写入所述第一BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
结合第五方面或者第五方面的第一种可能的实施方式,在第五方面的第四种可能的实施方式中,所述BE还用于,将所述第二RDMA数据发送请求写入所述BE所管理的队列;
其中,在所述向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求的方面,所述BE具体用于,当轮到所述第二RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
结合第五方面的第四种可能的实施方式,在第五方面的第五种可能的实施方式中,在所述将所述第二RDMA数据发送请求写入所述BE所管理的队列的方面,所述BE具体用于将所述第二RDMA数据发送请求写入所述BE所管理的,且与所述第一虚拟机对应的队列;或将所述第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
结合第五方面或第五方面的第一种可能的实施方式或第五方面的第二种可能的实施方式或第五方面的第四种可能的实施方式或第五方面的第四种可能的实施方式或第五方面的第五种可能的实施方式,在第五方面的第六种可能的实施方式中,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
本发明实施例第六方面提供一种计算节点,包括:
至少一个处理器、至少一个网络接口、存储器和至少一个通信总线,所述通信总线用于实现所述至少一个处理器、所述至少一个网络接口和存储器之间的连接通信,所述至少一个网络接口包括N个RDMA网卡;
其中,通过调用所述存储器存储的程序或指令,所述处理器可用于,向所述计算节点上部署的宿主机Host中的后端实例BE发送所述计算节点上部署的虚拟机之中的前端实例FE待向所述BE发送的第一远程直接内存读取RDMA数据发送请求,其中,所述第一RDMA数据发送请求携带目的计算节点对应的通信地址,虚拟机物理内存地址和目的虚拟机内存地址,所述后端实例为与所述计算节点中的N个RDMA网卡对应的后端实例,所述前端实例为与所述计算节点中的所述N个RDMA网卡对应的前端实例,所述N为正整数;
在所述BE接收到所述第一RDMA数据发送请求后,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述虚拟机物理内存地址所对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求;
其中,所述第一RDMA网卡用于,在接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址所对应的内存空间读取待发送的数据,若确定所述计算节点和所述目的计算节点为不同的计算节点,则基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包,其中,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址。
结合第六方面,在第一种可能的实施方式中,
所述处理器还用于,将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列;其中,在所述基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述虚拟机物理内存地址所对应的第一主机物理内存地址的方面,所述处理器具体用于,当轮到所述第一RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述虚拟机物理内存地址所对应的第一主机物理内存地址。
结合第六方面的第一种可能的实施方式,在第六方面的第二种可能的实施方式中,
在所述将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列的方面,所述处理器具体用于:将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
结合第六方面,在第六方面的第三种可能的实施方式中,
所述处理器还用于,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列;
其中,在所述向所述N个RDMA网卡中的第一RDMA网卡发送,所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求的方面,所述处理器具体用于,当轮到所述第二RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
结合第六方面的第三种可能的实施方式,在第六方面的第四种可能的实施方式中,在所述将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列的方面,所述处理器具体用于:将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
结合第六方面或第六方面的第一种可能的实施方式或第六方面的第二种可能的实施方式或第六方面的第三种可能的实施方式或第六方面的第四种可能的实施方式,在第六方面的第五种可能的实施方式中,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
结合第六方面或第六方面的第一种可能的实施方式或第六方面的第二种可能的实施方式或第六方面的第三种可能的实施方式或第六方面的第四种可能的实施方式或第六方面的第五种可能的实施方式,在第六方面的第六种可能的实施方式中,所述方法还包括:
所述第一RDMA网卡还用于,若确定所述计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据。
可以看出,本发明实施例的技术方案中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。且由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的虚拟化架构示意图;
图2是本发明实施例提供的另一种计算节点的架构示意图;
图3-a是本发明实施例提供的一种数据传输方法的流程示意图;
图3-b是本发明实施例提供的另一种数据传输方法的流程示意图;
图4-a是本发明实施例提供的另一种数据传输方法的流程示意图;
图4-b是本发明实施例提供的一种通信系统的结构示意图;
图5是本发明实施例提供的另一种数据传输方法的流程示意图;
图6-a是本发明实施例提供的另一种数据传输方法的流程示意图;
图6-b是本发明实施例提供的另一种计算节点的结构示意图;
图7是本发明实施例提供的另一种数据传输方法的流程示意图;
图8是本发明实施例提供的另一种计算节点的结构示意图;
图9是本发明实施例提供的另一种计算节点的结构示意图;
图10是本发明实施例提供的一种通信系统的结构示意图;
图11是本发明实施例提供的另一种计算节点的结构示意图。
具体实施方式
本发明实施例提供数据传输方法及计算节点和通信系统,以在虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素;
虚拟机VM:
通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层:
虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的硬件层可包括CPU和内存,还可以包括网卡、存储器等等高速/低速输入/输出(I/O,Input/Output)设备及具有特定处理功能的其它设备。
宿主机(Host):
作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);此外,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机则运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。
参见图2,图2是本发明实施例提出的一种计算节点的虚拟化体系架构的示意图,该体系架构主要包括三个层次:硬件层、Host和虚拟机(VM)。硬件层包括网卡。Host中部署有与网卡对应的后端实例(BE,Back-End),VM中具有网卡对应的前端实例(FE,Front-End);其中,VM中的BE可以看成是网卡的前端驱动,Host中的FE可以看成是网卡的后端驱动。其中,硬件层中同种类型的多个网卡可对应同一个BE和FE,而硬件层中不同类型的网卡通常对应不同的BE和FE。图2中以网卡为RDMA网卡为例。
本发明数据传输方法的一个实施例,一种数据传输方法可以包括:源计算节点上部署的Host中的后端实例BE,接收上述源计算节点上部署的虚拟机之中的前端实例FE发送的第一远程直接内存读取RDMA数据发送请求,上述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址和目的计算节点对应的通信地址,其中,上述BE为与上述源计算节点中的N个RDMA网卡对应的后端实例,上述FE为与上述源计算节点中的上述N个RDMA网卡对应的前端实例,其中,上述N为正整数。上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址;向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,上述第二RDMA数据发送请求携带上述第一主机物理内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址;上述第一RDMA网卡接收到上述第二RDMA数据发送请求之后,从上述第一主机物理内存地址对应的内存空间读取待发送的数据,上述第一RDMA网卡若确定上述源计算节点和上述目的计算节点为不同的计算节点,基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。
请参见图3-a,图3-a为本发明的一个实施例所提供的一种数据传输方法的流程示意图。如图3-a所示,本发明的一个实施例提供的一种数据传输方法可包括以下内容:
301、源计算节点上部署的Host中的BE,接收上述源计算节点上部署的虚拟机之中的FE发送的第一远程直接内存读取数据发送请求。
其中,上述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址(其中,该目的虚拟机内存地址可以是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址)和目的计算节点对应的通信地址。上述后端实例为与上述源计算节点中的N个RDMA网卡对应的后端实例。上述前端实例为与上述源计算节点中的上述N个RDMA网卡对应的前端实例,其中,上述N为正整数。
其中,本发明各实施例中的RDMA网卡为具有RDMA功能的网卡,RDMA网卡实际的产品名称可能存在多种多样的,例如具有RDMA功能的InfiniBand网卡和RoCE网卡都可称之为RDMA网卡。
其中,本发明各实施例中提及的计算节点可以是个人电脑、服务器、移动终端、平板电脑、交换机、路由器或者是可以进行数据包收发的其它类型的计算节点。
在本发明一些实施例中,上述FE例如可以在接收到部署于上述虚拟机中的用户态应用发送的第三RDMA数据发送请求之后,向上述BE发送上述第一RDMA数据发送请求。其中,第三RDMA数据发送请求可携带源虚拟机虚拟内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址,上述源虚拟机物理内存地址和上述源虚拟机虚拟内存地址之间具有映射关系。
302、上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到上述源虚拟机物理内存地址对应的第一主机物理内存地址。
其中,主机物理内存地址亦可称之为实际物理地址。
303、上述BE向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求。
其中,上述第二RDMA数据发送请求中可以携带上述目的计算节点对应的通信地址、上述第一主机物理内存地址和上述目的虚拟机内存地址。例如可将第一RDMA数据发送请求中携带的源虚拟机物理内存地址替换为上述第一主机物理内存地址以得到第二RDMA数据发送请求。
304、第一RDMA网卡接收到上述第二RDMA数据发送请求之后,从上述第一主机物理内存地址对应的内存空间读取待发送的数据,若确定上述源计算节点和上述目的计算节点为不同的计算节点(其中,例如可基于上述目的计算节点对应的通信地址,来确定上述源计算节点和上述目的计算节点是否为同一计算节点),基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。
相应的,上述目的计算节点中的第二网卡可接收上述数据包,并基于虚拟机内存地址和主机物理内存地址的映射关系,得到上述数据包包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据包中包含的上述数据。由上可见,上述方案在虚拟化架构下基于第一RDMA网卡可实现不同计算节点上的虚拟机之间传递数据。
此外,上述第一RDMA网卡若确定上述源计算节点和上述目的计算节点为同一计算节点,则上述第一RDMA网卡可基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述目的虚拟机内存地址对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据。
在本发明一些实施例中,上述BE还可引入队列来对接收到的RDMA数据发送请求进行缓冲管理。例如上述BE可将上述第一RDMA数据发送请求写入上述BE所管理的队列。其中,上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到上述源虚拟机物理内存地址对应的第一主机物理内存地址可包括:当轮到上述第一RDMA数据发送请求从上述队列出队,上述BE从上述队列中读取出上述第一RDMA数据发送请求,从上述第一RDMA数据发送请求中获得上述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址。
在本发明的一些实施例中,上述将上述第一RDMA数据发送请求写入上述BE所管理的队列可以包括:将上述第一RDMA数据发送请求写入上述BE所管理的,且与上述虚拟机对应的队列(即不同虚拟机可对应不同队列,或者不同队列可对应不同的虚拟机);或者,将上述第一RDMA数据发送请求写入上述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列(即不同优先级可对应不同队列,或不同队列对应不同优先级,对应优先级越高的队列中的元素越优先出队)。或者,可将上述第一RDMA数据发送请求插入上述BE所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。或者,可将上述第一RDMA数据发送请求插入上述BE所管理队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间(其中统一队列中越靠前的RDMA数据发送请求越先出队),其中,第四RDMA数据发送请求对应的优先级高于或者等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于上述第一RDMA数据发送请求的优先级。
在本发明的另一些实施例中,上述BE还可以将上述第二RDMA数据发送请求写入上述BE所管理的队列。其中,上述向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,可包括:当轮到上述第二RDMA数据发送请求从上述队列出队,上述BE从上述队列中读取出上述第二RDMA数据发送请求,向上述N个RDMA网卡中的第一RDMA网卡发送读取出的上述第二RDMA数据发送请求。
在本发明另一些实施例中,上述将上述第二RDMA数据发送请求写入上述BE所管理的队列,可包括:将上述第二RDMA数据发送请求写入上述BE所管理的,且与上述虚拟机对应的队列;或将上述第二RDMA数据发送请求写入上述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列。或者可将上述第一RDMA数据发送请求插入上述BE所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列之中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。或可将上述第一RDMA数据发送请求插入上述BE所管理的统一队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间(统一队列中越靠前的RDMA数据发送请求越先出队),其中第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。
可以理解的是,不同优先级的队列可以具有不同的出队优先级,例如优先级越高的队列中元素的出队优先级越高,而优先级越低的队列中元素的出队优先级越低,这样就利于利用不同优先级的队列,来尽量保证高优先级业务的服务质量。
在本发明一些实施例中,上述N可大于1,上述第一RDMA网卡为上述N个RDMA网卡中的任意一个RDMA网卡,或上述目的计算节点对应的通信地址属于上述第一RDMA网卡的工作网段,或上述第一RDMA网卡与上述第二RDMA数据发送请求对应的业务优先级匹配,或者,上述第一主机物理内存地址所对应的内存空间属于注册到上述第一RDMA网卡的内存空间范围(其中,注册到上述第一RDMA网卡的内存空间范围是第一RDMA网卡可以远程直接内存读取的内存空间,读取过程可无需CPU参与)。
在本发明一些实施例中,用户态应用可发起将某内存空间范围注册到某个RDMA网卡的内存空间注册流程。用户态应用也可发起注销被注册到某RDMA网卡的内存空间范围的流程。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE可利用与不同优先级对应的队列来对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
本发明数据传输方法的一个实施例,一种数据传输方法可以包括:源计算节点中的处理器向上述源计算节点上部署的宿主机Host中的后端实例BE发送,上述源计算节点上部署的虚拟机之中的前端实例FE待向上述BE发送的第一远程直接内存读取RDMA数据发送请求,其中,上述第一RDMA数据发送请求携带目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址,上述后端实例为与上述源计算节点中的N个RDMA网卡对应的后端实例,上述前端实例为与上述源计算节点中的上述N个RDMA网卡对应的前端实例,其中,上述N为正整数;在上述BE接收到上述第一RDMA数据发送请求后,上述处理器基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于上述第一RDMA数据发送请求中的上述源虚拟机物理内存地址所对应的第一主机物理内存地址;上述处理器向上述N个RDMA网卡中的第一RDMA网卡发送,上述BE待向上述第一RDMA网卡发送的第二RDMA数据发送请求,以便于上述第一RDMA网卡在接收到上述第二RDMA数据发送请求之后,从上述第一主机物理内存地址所对应的内存空间读取待发送的数据,若确定上述源计算节点和上述目的计算节点为不同的计算节点,则基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包,其中,上述第二RDMA数据发送请求携带上述第一主机物理内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址。
请参见图3-b,图3-b为本发明的另一个实施例所提供的另一种数据传输方法的流程示意图。如图3-b所示,本发明的另一个实施例提供的另一种数据传输方法可包括以下内容:
S301、源计算节点中的处理器向上述源计算节点上部署的宿主机Host中的BE发送,上述源计算节点上部署的虚拟机之中的FE待向上述BE发送的第一远程直接内存读取RDMA数据发送请求。
其中,上述第一RDMA数据发送请求可以携带有目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址。上述BE为与上述源计算节点中的N个RDMA网卡对应的后端实例,上述FE为与上述源计算节点中的上述N个RDMA网卡对应的前端实例,上述N为正整数。
S302、上述处理器在上述BE接收到上述第一RDMA数据发送请求后,上述处理器基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于上述第一RDMA数据发送请求中的上述源虚拟机物理内存地址所对应的第一主机物理内存地址。
S303、上述处理器向上述N个RDMA网卡中的第一RDMA网卡发送,上述BE待向上述第一RDMA网卡发送的第二RDMA数据发送请求,以便于上述第一RDMA网卡在接收到上述第二RDMA数据发送请求之后,从上述第一主机物理内存地址所对应的内存空间读取待发送的数据,若确定上述源计算节点和上述目的计算节点为不同的计算节点,则上述第一RDMA网卡基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。其中,上述第二RDMA数据发送请求携带上述第一主机物理内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址。
相应的,上述目的计算节点中的第二网卡可接收上述数据包,并基于虚拟机内存地址和主机物理内存地址的映射关系,得到上述数据包包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据包中包含的上述数据。由上可见,上述方案在虚拟化架构下基于第一RDMA网卡可实现不同计算节点上的虚拟机之间传递数据。
此外,上述第一RDMA网卡若确定上述源计算节点和上述目的计算节点为同一计算节点,则上述第一RDMA网卡可基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述目的虚拟机内存地址对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据。
在本发明的一些实施例中,上述方法还可进一步包括:
上述处理器将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的队列。
其中,上述处理器基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于上述第一RDMA数据发送请求中的上述源虚拟机物理内存地址所对应的第一主机物理内存地址,包括:当轮到上述第一RDMA数据发送请求从上述队列出队,上述处理器从上述队列中读取出上述第一RDMA数据发送请求,从第一RDMA数据发送请求中获得上述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址所对应的第一主机物理内存地址。
在本发明的一些实施例中,上述将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的队列包括:将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的,且与上述虚拟机对应的队列;或将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将上述BE接收到的上述第一RDMA数据发送请求插入上述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,上述第五RDMA数据发送请求对应的优先级低于上述第一RDMA数据发送请求对应的优先级;或者,将上述BE接收到的上述第一RDMA数据发送请求插入上述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,上述第四RDMA数据发送请求对应的优先级高于或者等于上述第一RDMA数据发送请求对应的优先级,上述第五RDMA数据发送请求对应的优先级低于上述第一RDMA数据发送请求对应的优先级。
在本发明的另一些实施例中,上述方法还可包括:上述处理器将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的队列;
其中,上述向上述N个RDMA网卡中的第一RDMA网卡发送,上述BE待向上述第一RDMA网卡发送的第二RDMA数据发送请求,包括:当轮到上述第二RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第二RDMA数据发送请求,向上述N个RDMA网卡中的第一RDMA网卡发送读取出的上述第二RDMA数据发送请求。
在本发明的一些实施例中,上述将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的队列,包括:将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的,且与上述虚拟机对应的队列;或将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入上述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,上述第五RDMA数据发送请求对应的优先级低于上述第二RDMA数据发送请求对应的优先级;或者,将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入上述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,上述第四RDMA数据发送请求对应的优先级高于或者等于上述第二RDMA数据发送请求对应的优先级,其中,上述第五RDMA数据发送请求对应的优先级低于上述第二RDMA数据发送请求对应的优先级。
在本发明的一些实施例中,上述N大于1,上述第一RDMA网卡为上述N个RDMA网卡中的任意一个RDMA网卡,或上述目的计算节点对应的通信地址属于上述第一RDMA网卡的工作网段,或者,上述第一RDMA网卡与上述第二RDMA数据发送请求对应的业务优先级匹配,或者上述第一主机物理内存地址所对应的内存空间属于注册到上述第一RDMA网卡的内存空间范围。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。且在处理器协助下,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则可直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,在处理器协助下,Host中的BE可利用与不同优先级对应的队列来对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
为便于更好的理解和实施本发明实施例的上述方案,下面通过一些具体例子进行举例说明。
参见图4-a和图4-b,其中,图4-a为本发明的另一个实施例提供的另一种数据传输方法的流程示意图。图4-b为本发明实施例提供的一种可用于实施如图4-a所示数据传输方法的通信系统架构的示意图。当然Host和虚拟机亦可具有区别于图4-b举例的其它内部逻辑架构。本实施例中主要以在图4-b所示架构下实施数据传输方法为例进行描述。
其中,源计算节点和目的计算节点不同。
如图4-a所示,本发明的另一个实施例提供的另一种数据传输方法可包括以下内容:
401、若部署于源计算节点中的第一虚拟机之中用户态应用APP1需发送数据D1,用户态应用APP1向第一虚拟机的FE(该FE为与RDMA网卡对应的FE)发送RDMA数据发送请求q1。其中,上述RDMA数据发送请求q1可携带源虚拟机虚拟内存地址、目的虚拟机内存地址(该目的虚拟机内存地址可以是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址等)和目的计算节点对应的通信地址等。其中,上述源虚拟机虚拟内存地址为待发送的数据D1对应的虚拟机虚拟内存地址。
其中,RDMA数据发送请求q1还携带优先级标识。
402、上述FE接收到RDMA数据发送请求q1后,基于虚拟机物理内存地址和虚拟机虚拟内存地址之间的映射关系得到与上述源虚拟机虚拟内存地址对应的源虚拟机物理内存地址。
上述FE将RDMA数据发送请求q1中携带的上述源虚拟机虚拟内存地址替换为上述源虚拟机物理内存地址以得到RDMA数据发送请求q2。FE向部署于源计算节点中的Host中的BE(该BE为与RDMA网卡对应的BE)发送RDMA数据发送请求q2。
403、部署于Host中的上述BE接收RDMA数据发送请求q2。上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述RDMA数据发送请求q2携带的源虚拟机物理内存地址对应的第一主机物理内存地址。
其中,部署于Host中的上述BE可将上述RDMA数据发送请求q2中携带的源虚拟机物理内存地址替换为上述第一主机物理内存地址,以得到RDMA数据发送请求q3。
上述BE将RDMA数据发送请求q3写入上述BE管理的统一队列中。
在本发明的一些实施例中,上述BE将RDMA数据发送请求q3插入上述BE所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列之中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于RDMA数据发送请求q3的优先级。或者,上述BE也可将上述第一RDMA数据发送请求,插入到上述BE管理的统一队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。
404,当轮到RDMA数据发送请求q3从统一队列之中出对时,上述BE从统一队列中读取出RDMA数据发送请求q3,通过RDMA网卡原生驱动向第一RDMA网卡发送RDMA数据发送请求q3。
405、第一RDMA网卡接收到RDMA数据发送请求q3之后,从上述RDMA数据发送请求q3携带的上述第一主机物理内存地址对应的内存空间,读取待发送的数据D1,若确定源计算节点和目的计算节点为不同计算节点,基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据D1和上述目的虚拟机内存地址的数据包Pd1。
406、上述目的计算节点中的第二RDMA网卡可接收上述数据包Pd1。
其中,第二RDMA网卡基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述数据包Pd1包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址。向上述第二主机物理内存地址对应的内存空间写入上述数据包Pd1中包含的上述数据D1。第二RDMA网卡通过其网卡原生驱动,向部署于目的计算节点中的Host中的BE(其中,该BE为RDMA网卡对应的BE)发送数据接收完成通知,其中,数据接收完成通知中携带上述数据包Pd1中包含的上述目的虚拟机内存地址或与该目的虚拟机内存地址对应的地址指示(通过该地址指示可以确定该目的虚拟机内存地址)。
407、目的计算节点中的Host中的BE根据上述目的虚拟机内存地址(不同虚拟机对应使用不同的虚拟机内存地址范围),向部署于目的计算节点中的第二虚拟机中的FE(RDMA网卡对应的FE)发送上述数据接收完成通知。
408、第二虚拟机中的上述FE可向第二虚拟机中的用户态应用APP2发送数据接收完成通知,以通知第二虚拟机中的用户态应用APP2从上述目的虚拟机内存地址获取上述数据D1。
在本发明的其它一些实施例中,第二虚拟机中的FE亦可不通知用户态应用APP2获取数据D1,由用户态应用APP2监测特定内存空间(该特定内存空间包括目的虚拟机内存地址对对应的内存空间)是否有新接收数据写入,当检测到特定内存空间中写入了新接收到的数据D1之后,用户态应用APP2再从上述目的虚拟机内存地址获取上述数据D1。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE通过统一队列,基于RDMA数据发送请求的优先级对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
参见图5和图4-b,其中,图5为本发明的另一个实施例提供的另一种数据传输方法的流程示意图。图4-b为本发明实施例提供的一种可用于实施如图5所示数据传输方法的通信系统架构的示意图。当然Host和虚拟机亦可具有区别于图4-b举例的其它内部逻辑架构。本实施例中主要以在图4-b所示架构下实施数据传输方法为例进行描述。
其中,源计算节点和目的计算节点不同。
如图5所示,本发明的另一个实施例提供的另一种数据传输方法可包括以下内容:
501、若部署于源计算节点中的第一虚拟机之中用户态应用APP1需发送数据D1,用户态应用APP1向第一虚拟机的FE(该FE为与RDMA网卡对应的FE)发送RDMA数据发送请求q1。其中,上述RDMA数据发送请求q1可携带源虚拟机虚拟内存地址、目的虚拟机内存地址(该目的虚拟机内存地址可以是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址等)和目的计算节点对应的通信地址等。其中,上述源虚拟机虚拟内存地址为待发送的数据D1对应的虚拟机虚拟内存地址。
其中,RDMA数据发送请求q1还携带优先级标识。
502、上述FE接收到RDMA数据发送请求q1后,基于虚拟机物理内存地址和虚拟机虚拟内存地址之间的映射关系得到与上述源虚拟机虚拟内存地址对应的源虚拟机物理内存地址。
上述FE将RDMA数据发送请求q1中携带的上述源虚拟机虚拟内存地址替换为上述源虚拟机物理内存地址以得到RDMA数据发送请求q2。FE向部署于源计算节点中的Host中的BE(该BE为与RDMA网卡对应的BE)发送RDMA数据发送请求q2。
503、部署于Host中的BE接收RDMA数据发送请求q2。上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述RDMA数据发送请求q2携带的源虚拟机物理内存地址对应的第一主机物理内存地址。
其中,部署于Host中的上述BE可将上述RDMA数据发送请求q2中携带的源虚拟机物理内存地址替换为上述第一主机物理内存地址,以得到RDMA数据发送请求q3。
上述BE基于RDMA数据发送请求q3中携带的优先级标识,将RDMA数据发送请求q3写入与上述优先级标识所表示优先级对应的队列中。
在本发明的一些实施例中,即不同优先级可对应不同队列,或不同队列对应不同优先级,对应优先级越高的队列中的元素越优先出队。例如假设有五个优先级,则可对应有五个队列,每个队列对应一个优先级,当然也可以至少3个队列,其中,队列1对应优先级1和优先级2,队列2对应优先级3,队列3对应优先级4和优先级5。队列1中元素的出队优先级高于队列2,而队列2中元素的出队优先级高于队列3。以此类推。
504,上述BE可基于出队优先级轮流的从各队列中读取出RDMA数据发送请求。当轮到RDMA数据发送请求q3从队列之中出对时,上述BE从队列中读取出RDMA数据发送请求q3,通过RDMA网卡原生驱动向第一RDMA网卡发送RDMA数据发送请求q3。
505、第一RDMA网卡接收到RDMA数据发送请求q3之后,从上述RDMA数据发送请求q3携带的上述第一主机物理内存地址对应的内存空间,读取待发送的数据D1,若确定源计算节点和目的计算节点为不同计算节点,基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据D1和上述目的虚拟机内存地址的数据包。
506、上述目的计算节点中的第二RDMA网卡可接收上述数据包Pd1。
其中,第二RDMA网卡基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述数据包Pd1包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址。向上述第二主机物理内存地址对应的内存空间写入上述数据包Pd1中包含的上述数据D1。第二RDMA网卡通过其网卡原生驱动,向部署于目的计算节点中的Host中的BE(其中,该BE为RDMA网卡对应的BE)发送数据接收完成通知,其中,数据接收完成通知中携带上述数据包Pd1中包含的上述目的虚拟机内存地址或与该目的虚拟机内存地址对应的地址指示(其中,通过该地址指示可以确定该目的虚拟机内存地址)。
507、目的计算节点中的Host中的BE根据上述目的虚拟机内存地址(不同虚拟机对应使用不同的虚拟机内存地址范围),向部署于目的计算节点中的第二虚拟机中的FE(RDMA网卡对应的FE)发送上述数据接收完成通知。
508、第二虚拟机中的上述FE可向第二虚拟机中的用户态应用APP2发送数据接收完成通知,以通知第二虚拟机中的用户态应用APP2从上述目的虚拟机内存地址获取上述数据D1。
在本发明的其它一些实施例中,第二虚拟机中的FE亦可不通知用户态应用APP2获取数据D1,由用户态应用APP2监测特定内存空间(该特定内存空间包括目的虚拟机内存地址对对应的内存空间)是否有新接收数据写入,当检测到特定内存空间中写入了新接收到的数据D1之后,用户态应用APP2再从上述目的虚拟机内存地址获取上述数据D1。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE通过对应不同优先级的队列,基于RDMA数据发送请求的优先级对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
本发明的另一个实施例提供的另一种数据传输方法可包括以下内容:
S501、若部署于源计算节点中的第一虚拟机之中用户态应用APP1需发送数据D1,用户态应用APP1向第一虚拟机的FE(该FE为与RDMA网卡对应的FE)发送RDMA数据发送请求q1。其中,上述RDMA数据发送请求q1可携带源虚拟机虚拟内存地址、目的虚拟机内存地址(该目的虚拟机内存地址可以是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址等)和目的计算节点对应的通信地址等。其中,上述源虚拟机虚拟内存地址为待发送的数据D1对应的虚拟机虚拟内存地址。
S502、上述FE接收到RDMA数据发送请求q1后,基于虚拟机物理内存地址和虚拟机虚拟内存地址之间的映射关系得到与上述源虚拟机虚拟内存地址对应的源虚拟机物理内存地址。
上述FE将RDMA数据发送请求q1中携带的上述源虚拟机虚拟内存地址替换为上述源虚拟机物理内存地址以得到RDMA数据发送请求q2。FE向部署于源计算节点中的Host中的BE(该BE为与RDMA网卡对应的BE)发送RDMA数据发送请求q2。
S503、部署于Host中的BE接收RDMA数据发送请求q2。上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述RDMA数据发送请求q2携带的源虚拟机物理内存地址对应的第一主机物理内存地址。
其中,部署于Host中的上述BE可将上述RDMA数据发送请求q2中携带的源虚拟机物理内存地址替换为上述第一主机物理内存地址,以得到RDMA数据发送请求q3。
上述BE将RDMA数据发送请求q3写入队列中。
其中,队列之中的各个RDMA数据发送请求q3优先级相同,或者也可认为各个RDMA数据发送请求均无优先级。
S504,当轮到RDMA数据发送请求q3从队列之中出对时,上述BE从队列中读取出RDMA数据发送请求q3,通过RDMA网卡原生驱动向第一RDMA网卡发送RDMA数据发送请求q3。
S505、第一RDMA网卡接收到RDMA数据发送请求q3之后,从上述RDMA数据发送请求q3携带的上述第一主机物理内存地址对应的内存空间,读取待发送的数据D1,若确定源计算节点和目的计算节点为不同计算节点,基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据D1和上述目的虚拟机内存地址的数据包。
S506、上述目的计算节点中的第二RDMA网卡可接收上述数据包Pd1。
其中,第二RDMA网卡基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述数据包Pd1包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址。向上述第二主机物理内存地址对应的内存空间写入上述数据包Pd1中包含的上述数据D1。第二RDMA网卡通过其网卡原生驱动,向部署于目的计算节点中的Host中的BE(其中,该BE为RDMA网卡对应的BE)发送数据接收完成通知,其中,数据接收完成通知中携带上述数据包Pd1中包含的上述目的虚拟机内存地址或与该目的虚拟机内存地址对应的地址指示(其中,通过该地址指示可以确定该目的虚拟机内存地址)。
S507、目的计算节点中的Host中的BE根据上述目的虚拟机内存地址(不同虚拟机对应使用不同的虚拟机内存地址范围),向部署于目的计算节点中的第二虚拟机中的FE(RDMA网卡对应的FE)发送上述数据接收完成通知。
S508、第二虚拟机中的上述FE可向第二虚拟机中的用户态应用APP2发送数据接收完成通知,以通知第二虚拟机中的用户态应用APP2从上述目的虚拟机内存地址获取上述数据D1。
在本发明的其它一些实施例中,第二虚拟机中的FE亦可不通知用户态应用APP2获取数据D1,由用户态应用APP2监测特定内存空间(该特定内存空间包括目的虚拟机内存地址对对应的内存空间)是否有新接收数据写入,当检测到特定内存空间中写入了新接收到的数据D1之后,用户态应用APP2再从上述目的虚拟机内存地址获取上述数据D1。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
参见图6-a和图6-b,其中,图6-a为本发明的另一个实施例提供的另一种数据传输方法的流程示意图。图6-b为本发明实施例提供的一种可用于实施如图6-a所示数据传输方法的计算节点的架构示意图。当然Host和虚拟机亦可具有区别于图6-b举例的其它内部逻辑架构。本实施例中主要以在图6-b所示架构下实施数据传输方法为例进行描述。
其中,源计算节点和目的计算节点相同。
如图6-a所示,本发明的另一个实施例提供的另一种数据传输方法可包括以下内容:
601、若部署于源计算节点中的第一虚拟机之中用户态应用APP1需发送数据D2,用户态应用APP1向第一虚拟机的FE(该FE为与RDMA网卡对应的FE)发送RDMA数据发送请求q1。其中,上述RDMA数据发送请求q1可携带源虚拟机虚拟内存地址、目的虚拟机内存地址(该目的虚拟机内存地址可以是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址等)和目的计算节点对应的通信地址等。其中,上述源虚拟机虚拟内存地址为待发送的数据D2对应的虚拟机虚拟内存地址。
其中,RDMA数据发送请求q1还携带优先级标识。
602、上述FE接收到RDMA数据发送请求q1后,基于虚拟机物理内存地址和虚拟机虚拟内存地址之间的映射关系得到与上述源虚拟机虚拟内存地址对应的源虚拟机物理内存地址。
上述FE将RDMA数据发送请求q1中携带的上述源虚拟机虚拟内存地址替换为上述源虚拟机物理内存地址以得到RDMA数据发送请求q2。FE向部署于源计算节点中的Host中的BE(该BE为与RDMA网卡对应的BE)发送RDMA数据发送请求q2。
603、部署于Host中的BE接收RDMA数据发送请求q2。上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述RDMA数据发送请求q2携带的源虚拟机物理内存地址对应的第一主机物理内存地址。
其中,部署于Host中的上述BE可将上述RDMA数据发送请求q2中携带的源虚拟机物理内存地址替换为上述第一主机物理内存地址,以得到RDMA数据发送请求q3。
上述BE将RDMA数据发送请求q3写入上述BE管理的统一队列中。
在本发明的一些实施例中,上述BE将RDMA数据发送请求q3插入上述BE所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列之中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于RDMA数据发送请求q3的优先级。或者,上述BE也可将上述第一RDMA数据发送请求,插入到上述BE管理的统一队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。
604,当轮到RDMA数据发送请求q3从统一队列之中出对时,上述BE从统一队列中读取出RDMA数据发送请求q3,通过RDMA网卡原生驱动向第一RDMA网卡发送RDMA数据发送请求q3。
605、第一RDMA网卡接收到RDMA数据发送请求q3之后,发现目的计算节点的通信地址和源计算节点的通信地址相同,因此确定是源计算节点上的不同虚拟机之间传递数据。
其中,第一RDMA网卡基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述数据包包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址。
第一RDMA网卡从上述RDMA数据发送请求q3携带的上述第一主机物理内存地址对应的内存空间,读取待发送的数据D2,向上述第二主机物理内存地址对应的内存空间写入上述数据D2。
606、第一RDMA网卡向上述的BE发送数据接收完成通知,其中数据接收完成通知中携带上述目的虚拟机内存地址或与该目的虚拟机内存地址对应的地址指示(其中,通过该地址指示可以确定该目的虚拟机内存地址)。
607、上述BE根据上述目的虚拟机内存地址(不同虚拟机对应使用不同的虚拟机内存地址范围),向部署于计算节点中的第三虚拟机中的FE(RDMA网卡对应的FE)发送上述数据接收完成通知。
608、第三虚拟机中的上述FE可进一步向第三虚拟机中的用户态应用APP3发送上述数据接收完成通知,以通知第三虚拟机中的用户态应用APP3从上述目的虚拟机内存地址获取上述数据D2。
在本发明的其它一些实施例中,第三虚拟机中的FE亦可不通知用户态应用APP3获取数据D2,由用户态应用APP3监测特定内存空间(该特定内存空间包括目的虚拟机内存地址对对应的内存空间)是否有新接收数据写入,当检测到特定内存空间中写入了新接收到的数据D2之后,用户态应用APP2再从上述目的虚拟机内存地址获取上述数据D2。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,向本计算节点上的第二主机物理内存地址对应的内存空间写入上述数据包中包含的上述数据D2。即提出了虚拟化架构下基于RDMA技术实现同一计算节点上的不同虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据进行DMA内存拷贝,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的本计算节点上的不同虚拟机的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE通过统一队列,基于RDMA数据发送请求的优先级对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
参见图7和图6-b,其中,图7为本发明的另一个实施例提供的另一种数据传输方法的流程示意图。图6-b为本发明实施例提供的一种可用于实施如图7所示数据传输方法的计算节点的架构示意图。当然Host和虚拟机亦可具有区别于图6-b举例的其它内部逻辑架构。本实施例中主要以在图6-b所示架构下实施数据传输方法为例进行描述。
其中,源计算节点和目的计算节点相同。
如图7所示,本发明的另一个实施例提供的另一种数据传输方法可包括以下内容:
701、若部署于源计算节点中的第一虚拟机之中用户态应用APP1需发送数据D2,用户态应用APP1向第一虚拟机的FE(该FE为与RDMA网卡对应的FE)发送RDMA数据发送请求q1。其中,上述RDMA数据发送请求q1可携带源虚拟机虚拟内存地址、目的虚拟机内存地址(该目的虚拟机内存地址可以是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址等)和目的计算节点对应的通信地址等。其中,上述源虚拟机虚拟内存地址为待发送的数据D2对应的虚拟机虚拟内存地址。
其中,RDMA数据发送请求q1还携带优先级标识。
702、上述FE接收到RDMA数据发送请求q1后,基于虚拟机物理内存地址和虚拟机虚拟内存地址之间的映射关系得到与上述源虚拟机虚拟内存地址对应的源虚拟机物理内存地址。
上述FE将RDMA数据发送请求q1中携带的上述源虚拟机虚拟内存地址替换为上述源虚拟机物理内存地址以得到RDMA数据发送请求q2。FE向部署于源计算节点中的Host中的BE(该BE为与RDMA网卡对应的BE)发送RDMA数据发送请求q2。
703、部署于Host中的BE接收RDMA数据发送请求q2。上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述RDMA数据发送请求q2携带的源虚拟机物理内存地址对应的第一主机物理内存地址。
其中,部署于Host中的上述BE可将上述RDMA数据发送请求q2中携带的源虚拟机物理内存地址替换为上述第一主机物理内存地址,以得到RDMA数据发送请求q3。
上述BE基于RDMA数据发送请求q3中携带的优先级标识,将RDMA数据发送请求q3写入与上述优先级标识所表示优先级对应的队列中。
在本发明的一些实施例中,即不同优先级可对应不同队列,或不同队列对应不同优先级,对应优先级越高的队列中的元素越优先出队。例如假设有五个优先级,则可对应有五个队列,每个队列对应一个优先级,当然也可以至少3个队列,其中,队列1对应优先级1和优先级2,队列2对应优先级3,队列3对应优先级4和优先级5。队列1中元素的出队优先级高于队列2,而队列2中元素的出队优先级高于队列3。以此类推。
704,上述BE可基于出队优先级轮流的从各队列中读取出RDMA数据发送请求。当轮到RDMA数据发送请求q3从队列之中出对时,上述BE从队列中读取出RDMA数据发送请求q3,通过RDMA网卡原生驱动向第一RDMA网卡发送RDMA数据发送请求q3。
705、第一RDMA网卡接收到RDMA数据发送请求q3之后,发现目的计算节点的通信地址和本计算节点的通信地址相同,因此确定是本计算节点上的不同虚拟机之间传递数据。
其中,第一RDMA网卡基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述数据包包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址。
第一RDMA网卡从上述RDMA数据发送请求q3携带的上述第一主机物理内存地址对应的内存空间,读取待发送的数据D2,向上述第二主机物理内存地址对应的内存空间写入上述数据D2。
706、第一RDMA网卡向上述的BE发送数据接收完成通知,其中数据接收完成通知中携带上述目的虚拟机内存地址或与该目的虚拟机内存地址对应的地址指示(其中,通过该地址指示可以确定该目的虚拟机内存地址)。
707、上述BE根据上述目的虚拟机内存地址(不同虚拟机对应使用不同的虚拟机内存地址范围),向部署于计算节点中的第三虚拟机中的FE(RDMA网卡对应的FE)发送上述数据接收完成通知。
708、第三虚拟机中的上述FE可进一步向第三虚拟机中的用户态应用APP3发送上述数据接收完成通知,以通知第三虚拟机中的用户态应用APP3从上述目的虚拟机内存地址获取上述数据D2。
在本发明的其它一些实施例中,第三虚拟机中的FE亦可不通知用户态应用APP3获取数据D2,由用户态应用APP3监测特定内存空间(该特定内存空间包括目的虚拟机内存地址对对应的内存空间)是否有新接收数据写入,当检测到特定内存空间中写入了新接收到的数据D2之后,用户态应用APP2再从上述目的虚拟机内存地址获取上述数据D2。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,向本计算节点上的第二主机物理内存地址对应的内存空间写入上述数据包中包含的上述数据D2。即提出了虚拟化架构下基于RDMA技术实现同一计算节点上的不同虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据进行DMA内存拷贝,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的本计算节点上的不同虚拟机的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE通过对应不同优先级的队列,基于RDMA数据发送请求的优先级对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
本发明的另一个实施例提供的另一种数据传输方法可包括以下内容:
S701、若部署于源计算节点中的第一虚拟机之中用户态应用APP1需发送数据D2,用户态应用APP1向第一虚拟机的FE(该FE为与RDMA网卡对应的FE)发送RDMA数据发送请求q1。其中,上述RDMA数据发送请求q1可携带源虚拟机虚拟内存地址、目的虚拟机内存地址(该目的虚拟机内存地址可以是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址等)和目的计算节点对应的通信地址等。其中,上述源虚拟机虚拟内存地址为待发送的数据D2对应的虚拟机虚拟内存地址。
S702、上述FE接收到RDMA数据发送请求q1后,基于虚拟机物理内存地址和虚拟机虚拟内存地址之间的映射关系得到与上述源虚拟机虚拟内存地址对应的源虚拟机物理内存地址。
上述FE将RDMA数据发送请求q1中携带的上述源虚拟机虚拟内存地址替换为上述源虚拟机物理内存地址以得到RDMA数据发送请求q2。FE向部署于源计算节点中的Host中的BE(该BE为与RDMA网卡对应的BE)发送RDMA数据发送请求q2。
S703、部署于Host中的BE接收RDMA数据发送请求q2。上述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述RDMA数据发送请求q2携带的源虚拟机物理内存地址对应的第一主机物理内存地址。
其中,部署于Host中的上述BE可将上述RDMA数据发送请求q2中携带的源虚拟机物理内存地址替换为上述第一主机物理内存地址,以得到RDMA数据发送请求q3。
上述BE将RDMA数据发送请求q3写入上述BE管理的队列中。
S704,当轮到RDMA数据发送请求q3从队列之中出对时,上述BE从队列中读取出RDMA数据发送请求q3,通过RDMA网卡原生驱动向第一RDMA网卡发送RDMA数据发送请求q3。
S705、第一RDMA网卡接收到RDMA数据发送请求q3之后,发现目的计算节点的通信地址和本计算节点的通信地址相同,因此确定是本计算节点上的不同虚拟机之间传递数据。
其中,第一RDMA网卡基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述数据包包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址。
第一RDMA网卡从上述RDMA数据发送请求q3携带的上述第一主机物理内存地址对应的内存空间,读取待发送的数据D2,向上述第二主机物理内存地址对应的内存空间写入上述数据D2。
S706、第一RDMA网卡向上述的BE发送数据接收完成通知,其中数据接收完成通知中携带上述目的虚拟机内存地址或与该目的虚拟机内存地址对应的地址指示(其中,通过该地址指示可以确定该目的虚拟机内存地址)。
S707、上述BE根据上述目的虚拟机内存地址(不同虚拟机对应使用不同的虚拟机内存地址范围),向部署于计算节点中的第三虚拟机中的FE(RDMA网卡对应的FE)发送上述数据接收完成通知。
S708、第三虚拟机中的上述FE可进一步向第三虚拟机中的用户态应用APP3发送上述数据接收完成通知,以通知第三虚拟机中的用户态应用APP3从上述目的虚拟机内存地址获取上述数据D2。
在本发明的其它一些实施例中,第三虚拟机中的FE亦可不通知用户态应用APP3获取数据D2,由用户态应用APP3监测特定内存空间(该特定内存空间包括目的虚拟机内存地址对对应的内存空间)是否有新接收数据写入,当检测到特定内存空间中写入了新接收到的数据D2之后,用户态应用APP2再从上述目的虚拟机内存地址获取上述数据D2。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,向本计算节点上的第二主机物理内存地址对应的内存空间写入上述数据包中包含的上述数据D2。即提出了虚拟化架构下基于RDMA技术实现同一计算节点上的不同虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据进行DMA内存拷贝,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的本计算节点上的不同虚拟机的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
为便于更好的实施本发明实施的上方案,下面还提供用于实施上述方案的相关装置。
参见图8,本发明实施例提供的一种计算节点800,可包括:
硬件层810、运行在上述硬件层810之上的宿主机820、以及运行在上述宿主机820之上的m1个虚拟机。
其中,上述硬件层810包括N个远程直接内存读取RDMA网卡811,上述宿主机中部署有与上述N个RDMA网卡对应的后端实例821,上述m1虚拟机中的第一虚拟机830中部署有与上述N个RDMA网卡对应的前端实例831,上述N和上述m1为正整数。
上述前端实例831,用于向上述后端实例821发送第一RDMA数据发送请求,上述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址和目的计算节点对应的通信地址。
上述后端实例821,用于接收来自上述前端实例831的上述第一RDMA数据发送请求;基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址;向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,其中,上述第二RDMA数据发送请求携带上述第一主机物理内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址。
第一RDMA网卡811,用于接收到上述第二RDMA数据发送请求后,从上述第一主机物理内存地址对应的内存空间读取待发送的第一数据,若确定计算节点800和目的计算节点为不同计算节点,基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述第一数据和上述目的虚拟机内存地址的数据包。
在本发明的一些实施例中,上述后端实例821还可用于,将上述第一RDMA数据发送请求写入上述后端实例821所管理的队列。
其中,在基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到上述源虚拟机物理内存地址对应的第一主机物理内存地址的方面,上述后端实例821具体用于,当轮到上述第一RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第一RDMA数据发送请求,从上述第一RDMA数据发送请求中获得上述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址。
在本发明的一些实施例中,在上述将上述第一RDMA数据发送请求写入上述后端实例821所管理的队列的方面,上述后端实例821具体用于,将上述第一RDMA数据发送请求写入上述后端实例821所管理的,且与上述第一虚拟机对应的队列;或者,将上述第一RDMA数据发送请求写入上述后端实例821所管理的,且与第一RDMA数据发送请求的优先级对应的队列。或者可将上述第一RDMA数据发送请求插入上述后端实例821所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列之中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。或可将上述第一RDMA数据发送请求插入上述后端实例821所管理的统一队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间(统一队列中越靠前的RDMA数据发送请求越先出队),其中第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。
在本发明的一些实施例中,上述后端实例821还用于,将上述第二RDMA数据发送请求写入上述后端实例821所管理的队列。
其中,在上述向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求的方面,上述后端实例821具体用于,当轮到上述第二RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第二RDMA数据发送请求,向上述N个RDMA网卡中的第一RDMA网卡发送读取出的上述第二RDMA数据发送请求。
在本发明的一些实施例中,在上述将上述第二RDMA数据发送请求写入上述后端实例821所管理的队列的方面,上述后端实例821具体用于将上述第二RDMA数据发送请求写入上述后端实例821所管理的,且与上述第一虚拟机对应的队列;或者,将上述第二RDMA数据发送请求写入上述后端实例821所管理的,且与第二RDMA数据发送请求的优先级对应的队列。或者,可将上述第一RDMA数据发送请求插入上述BE所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。或者可将上述第一RDMA数据发送请求插入上述BE所管理队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间(其中统一队列中越靠前的RDMA数据发送请求越先出队),其中,第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于上述第一RDMA数据发送请求的优先级。
在本发明的一些实施例中,上述N大于1,上述第一RDMA网卡为上述N个RDMA网卡中的任意一个RDMA网卡,或上述目的计算节点对应的通信地址属于上述第一RDMA网卡的工作网段,或者,上述第一RDMA网卡与上述第二RDMA数据发送请求对应的业务优先级匹配,或者上述第一主机物理内存地址所对应的内存空间属于注册到上述第一RDMA网卡的内存空间范围。
此外,第一RDMA网卡811还可用于,若确定计算节点800和上述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述目的虚拟机内存地址对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据。
可以理解的是,本实施例中的计算节点800各个模块的功能可根据上述方法实施例介绍的方法具体实现,其具体实现过程可以参见上述实施例中的相关描述,在此不再赘述。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE可利用与不同优先级对应的队列来对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
图9描述了本发明实施例提供的一种计算节点900的结构,该计算节点900包括:至少一个处理器901,例如CPU,至少一个网络接口904或者其他用户接口903,存储器905,至少一个通信总线902。通信总线902用于实现这些组件之间的连接通信。该计算节点900可选的包含用户接口903,包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。存储器905例如可能包含高速RAM存储器,当然也可能还包括:非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器905可选的可以包含至少一个处于远离前述处理器901的存储装置。其中,网络接口904包括N个RDMA网卡等。
在本发明一些的实施方式中,存储器905存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:宿主机9051和m1个虚拟机9052。其中,上述宿主机9051中部署有与上述N个RDMA网卡对应的后端实例,上述m1虚拟机中的第一虚拟机中部署有与上述N个RDMA网卡对应的前端实例,上述N和上述m1为正整数。
其中,受处理器901的调用,宿主机9051可具有如上述实施例所描述宿主机的部分或全部功能,受处理器901的调用,虚拟机9052可以具有如上述实施例所描述虚拟机的部分或全部功能。
其中,在本发明的实施例中,受处理器901的调用,上述前端实例,用于向上述后端实例发送第一RDMA数据发送请求,上述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址和目的计算节点对应的通信地址;
受处理器901的调用,上述后端实例,用于接收来自上述前端实例的上述第一RDMA数据发送请求;基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址;向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,其中,上述第二RDMA数据发送请求携带上述第一主机物理内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址;
受处理器901的调用,第一RDMA网卡用于接收到上述第二RDMA数据发送请求后,从上述第一主机物理内存地址对应的内存空间读取待发送的第一数据,若确定计算节点900和上述目的计算节点为不同计算节点,基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述第一数据和上述目的虚拟机内存地址的数据包。
此外,受处理器901的调用,第一RDMA网卡811还可用于,若确定计算节点900和上述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述目的虚拟机内存地址对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据。
在本发明的一些实施例中,受处理器901的调用,上述后端实例还可用于将上述第一RDMA数据发送请求写入上述后端实例所管理的队列;
其中,在基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到上述源虚拟机物理内存地址对应的第一主机物理内存地址的方面,受处理器901的调用,上述后端实例具体用于,当轮到上述第一RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第一RDMA数据发送请求,从上述第一RDMA数据发送请求中获得上述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址。
在本发明的一些实施例中,在上述将上述第一RDMA数据发送请求写入上述后端实例所管理的队列的方面,受处理器901的调用,上述后端实例具体用于,将上述第一RDMA数据发送请求写入上述后端实例所管理的,且与上述第一虚拟机对应的队列;或者,将上述第一RDMA数据发送请求写入上述后端实例所管理的,且与第一RDMA数据发送请求的优先级对应的队列;或者可将上述第一RDMA数据发送请求插入上述后端实例所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列之中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。或可将上述第一RDMA数据发送请求插入上述后端实例所管理的统一队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间(统一队列中越靠前的RDMA数据发送请求越先出队),其中第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。
在本发明的一些实施例中,受处理器901的调用,上述后端实例还用于将上述第二RDMA数据发送请求写入上述后端实例所管理的队列。
其中,在上述向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求的方面,受处理器901的调用,上述后端实例具体用于,当轮到上述第二RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第二RDMA数据发送请求,向上述N个RDMA网卡中的第一RDMA网卡发送读取出的上述第二RDMA数据发送请求。
在本发明的一些实施例中,在上述将上述第二RDMA数据发送请求写入上述后端实例所管理的队列的方面,受处理器901的调用,上述后端实例具体用于将上述第二RDMA数据发送请求写入上述后端实例所管理的,且与上述第一虚拟机对应的队列;或者,将上述第二RDMA数据发送请求写入上述后端实例所管理的,且与第二RDMA数据发送请求的优先级对应的队列。或者,可将上述第一RDMA数据发送请求插入上述BE所管理的统一队列中的第五RDMA数据发送请求之前(统一队列中越靠前的RDMA数据发送请求越先出队),其中上述第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。或者可将上述第一RDMA数据发送请求插入上述BE所管理队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间(其中统一队列中越靠前的RDMA数据发送请求越先出队),其中,第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于上述第一RDMA数据发送请求的优先级。
在本发明的一些实施例中,上述N大于1,上述第一RDMA网卡为上述N个RDMA网卡中的任意一个RDMA网卡,或上述目的计算节点对应的通信地址属于上述第一RDMA网卡的工作网段,或者,上述第一RDMA网卡与上述第二RDMA数据发送请求对应的业务优先级匹配,或者上述第一主机物理内存地址所对应的内存空间属于注册到上述第一RDMA网卡的内存空间范围。
可以理解的是,本实施例中的计算节点900各个模块的功能可根据上述方法实施例介绍的方法具体实现,其具体实现过程可以参见上述实施例中的相关描述,在此不再赘述。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE可利用与不同优先级对应的队列来对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
参见图10、本发明实施例还提供一种通信系统,包括:
源计算节点1100和目的计算节点1200。
其中,上述源计算节点110包括:第一硬件层1110、运行在上述第一硬件层1110之上的第一宿主机1120、以及运行在上述第一Host1120之上的m1个虚拟机,上述第一硬件层1110包括N个远程直接内存读取RDMA网卡1111,上述第一宿主机1120中部署有与上述N个RDMA网卡1111对应的第一后端实例1121,其中,上述m1个虚拟机中的第一虚拟机1130中部署有与上述N个RDMA网卡1111对应的第一前端实例1131,上述m1和N为正整数。
其中,上述目的计算节点1200包括:第二硬件层1210、运行在上述第二硬件层1210之上的第二Host1220、以及运行在上述第二Host1220之上的m2个虚拟机1230;其中,上述第二硬件层1210包括第二网卡1211,上述m2和N为正整数。
上述第一前端实例1131,用于向上述第一后端实例1121发送第一RDMA数据发送请求,上述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址和目的计算节点对应的通信地址。
上述第一后端实例1121,用于接收来自上述第一前端实例1131的上述第一RDMA数据发送请求;基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址;向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,上述第二RDMA数据发送请求携带上述第一主机物理内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址。
其中,上述第一RDMA网卡1111用于,接收到上述第二RDMA数据发送请求后,从上述第一主机物理内存地址对应的内存空间读取待发送的数据,基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。
在本发明的一些实施例中,上述N大于1,上述第一RDMA网卡为上述N个RDMA网卡中的任意一个RDMA网卡,或上述目的计算节点对应的通信地址属于上述第一RDMA网卡的工作网段,或者,上述第一RDMA网卡与上述第二RDMA数据发送请求对应的业务优先级匹配,或者上述第一主机物理内存地址所对应的内存空间属于注册到上述第一RDMA网卡的内存空间范围。
上述第二网卡1211用于接收上述数据包,映射得到上述数据包包含的上述目的虚拟机内存地址所对应的上述第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据包中包含的上述数据。
在本发明一些实施例中,上述第二硬件层1210包括N2个RDMA网卡,上述第二宿主机1220中部署有与上述N2个RDMA网卡对应的第二BE1221,上述m2个虚拟机中的第二虚拟机1230中部署有与上述N个RDMA网卡对应的第二FE1231,其中,上述第二网卡1211为上述N2个RDMA网卡中的一个,上述N2为正整数。
上述第二BE1221用于将目的虚拟机内存地址通知上述第二FE1231。
例如,上述第二BE1221可向第二FE1231发送数据接收完成通知,其中数据接收完成通知中携带上述数据包中包含的上述目的虚拟机内存地址或与该目的虚拟机内存地址对应的地址指示(其中,通过该地址指示可以确定该目的虚拟机内存地址)。
在本发明一些实施例中,上述第一后端实例1121还用于将上述第一RDMA数据发送请求写入上述第一后端实例1121所管理的队列。
在上述基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到上述源虚拟机物理内存地址对应的第一主机物理内存地址的方面,上述第一后端实例1121具体用于,当轮到上述第一RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第一RDMA数据发送请求,从上述第一RDMA数据发送请求中获得上述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址对应的第一主机物理内存地址。
在本发明一些实施例中,在上述将上述第一RDMA数据发送请求写入上述第一后端实例1121所管理的队列的方面,上述第一后端实例1121具体用于,将上述第一RDMA数据发送请求写入上述第一后端实例1121所管理的且与上述第一虚拟机对应的队列;或将上述第一RDMA数据发送请求写入上述第一后端实例1121所管理的,且与第一RDMA数据发送请求的优先级对应的队列;或者可将上述第一RDMA数据发送请求插入上述后端实例所管理的统一队列中的第五RDMA数据发送请求之前(其中,统一队列之中越靠前的RDMA数据发送请求越先出队),其中,上述第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。或可将上述第一RDMA数据发送请求插入上述后端实例所管理的统一队列中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间(统一队列中越靠前的RDMA数据发送请求越先出队),其中第四RDMA数据发送请求对应的优先级高于或等于第一RDMA数据发送请求的优先级,而第五RDMA数据发送请求对应的优先级低于第一RDMA数据发送请求的优先级。
在本发明另一些实施例中,上述第一后端实例1121还用于将上述第二RDMA数据发送请求写入上述BE所管理的队列;
其中,在向上述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求的方面,第一后端实例1121具体用于,当轮到上述第二RDMA数据发送请求从上述队列出队,上述BE从上述队列中读取出上述第二RDMA数据发送请求,向上述N个RDMA网卡中的第一RDMA网卡发送读取出的上述第二RDMA数据发送请求。
在本发明一些实施例中,在上述将上述第二RDMA数据发送请求写入上述BE所管理的队列的方面,第一后端实例1121具体用于,将上述第二RDMA数据发送请求写入上述BE所管理的,且与上述虚拟机对应的队列;或将上述第二RDMA数据发送请求写入上述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列。
可以理解的是,本实施例中的通信系统中各个计算节点的功能可根据上述方法实施例介绍的方法具体实现,其具体实现过程可以参见上述实施例中的相关描述,在此不再赘述。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。并且,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,Host中的BE可利用与不同优先级对应的队列来对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
图11描述了本发明实施例提供的一种计算节点1300的结构,该计算节点1300包括:至少一个处理器1301,例如CPU,至少一个网络接口1304或者其他用户接口1303,存储器1305,至少一个通信总线1302。通信总线1302用于实现这些组件之间的连接通信。该计算节点1300可选的包含用户接口1303,包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。存储器1305例如可能包含高速RAM存储器,当然也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1305可选的可以包含至少一个处于远离前述处理器1301的存储装置。其中,网络接口1304包括N个RDMA网卡等。
在本发明一些的实施方式中,存储器1305存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:宿主机13051和m1个虚拟机13052。其中,上述宿主机13051中部署有与上述N个RDMA网卡对应的后端实例,上述m1虚拟机中的第一虚拟机中部署有与上述N个RDMA网卡对应的前端实例,上述N和上述m1为正整数。
其中,受处理器1301的调用,宿主机13051可具有如上述实施例所描述宿主机的部分或全部功能,受处理器1301的调用,虚拟机13052可以具有如上述实施例所描述虚拟机的部分或全部功能。
其中,在本发明实施例中,通过调用存储器1305存储的程序或指令,处理器1301可用于,向源计算节点上部署的宿主机Host中的后端实例BE发送,上述源计算节点上部署的虚拟机之中的前端实例FE待向上述BE发送的第一远程直接内存读取RDMA数据发送请求,上述第一RDMA数据发送请求携带目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址,上述后端实例为与上述源计算节点中的N个RDMA网卡对应的后端实例,上述前端实例为与上述源计算节点中的上述N个RDMA网卡对应的前端实例,上述N为正整数;在上述BE接收到上述第一RDMA数据发送请求后,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于上述第一RDMA数据发送请求中的上述源虚拟机物理内存地址所对应的第一主机物理内存地址;向上述N个RDMA网卡中的第一RDMA网卡发送,上述BE待向上述第一RDMA网卡发送的第二RDMA数据发送请求,以便于上述第一RDMA网卡在接收到上述第二RDMA数据发送请求之后,从上述第一主机物理内存地址所对应的内存空间读取待发送的数据,若确定上述源计算节点和上述目的计算节点为不同的计算节点,则基于上述目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包,其中,上述第二RDMA数据发送请求携带上述第一主机物理内存地址、上述目的虚拟机内存地址和上述目的计算节点对应的通信地址。
相应的,上述目的计算节点中的第二网卡可接收上述数据包,并基于虚拟机内存地址和主机物理内存地址的映射关系,得到上述数据包包含的上述目的虚拟机内存地址所对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据包中包含的上述数据。由上可见,上述方案在虚拟化架构下基于第一RDMA网卡可实现不同计算节点上的虚拟机之间传递数据。
此外,上述第一RDMA网卡还可进一步用于,若确定上述源计算节点和上述目的计算节点为同一计算节点,则上述第一RDMA网卡可基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到上述目的虚拟机内存地址对应的第二主机物理内存地址,向上述第二主机物理内存地址对应的内存空间写入上述数据。
在本发明的一些实施例中,上述处理器1301还可用于,将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的队列。
其中,在基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于上述第一RDMA数据发送请求中的上述源虚拟机物理内存地址所对应的第一主机物理内存地址的方面,上述处理器1301具体用于,当轮到上述第一RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第一RDMA数据发送请求,从第一RDMA数据发送请求中获得上述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到上述源虚拟机物理内存地址所对应的第一主机物理内存地址。
在本发明的一些实施例中,在上述将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的队列的方面,上述处理器1301具体用于,将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的,且与上述虚拟机对应的队列;或将上述BE接收到的上述第一RDMA数据发送请求写入上述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将上述BE接收到的上述第一RDMA数据发送请求插入上述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,上述第五RDMA数据发送请求对应的优先级低于上述第一RDMA数据发送请求对应的优先级;或者,将上述BE接收到的上述第一RDMA数据发送请求插入上述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,上述第四RDMA数据发送请求对应的优先级高于或者等于上述第一RDMA数据发送请求对应的优先级,上述第五RDMA数据发送请求对应的优先级低于上述第一RDMA数据发送请求对应的优先级。
在本发明的另一些实施例中,上述处理器1301还可用于,将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的队列。
其中,在上述向上述N个RDMA网卡中的第一RDMA网卡发送,上述BE待向上述第一RDMA网卡发送的第二RDMA数据发送请求的方面,上述处理器1301具体用于,当轮到上述第二RDMA数据发送请求从上述队列出队,从上述队列中读取出上述第二RDMA数据发送请求,向上述N个RDMA网卡中的第一RDMA网卡发送读取出的上述第二RDMA数据发送请求。
在本发明的一些实施例中,在上述将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的队列的方面,上述处理器1301可具体用于,将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的,且与上述虚拟机对应的队列;或将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入上述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入上述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,上述第五RDMA数据发送请求对应的优先级低于上述第二RDMA数据发送请求对应的优先级;或者,将上述BE待向上述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入上述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,上述第四RDMA数据发送请求对应的优先级高于或者等于上述第二RDMA数据发送请求对应的优先级,其中,上述第五RDMA数据发送请求对应的优先级低于上述第二RDMA数据发送请求对应的优先级。
在本发明的一些实施例中,上述N大于1,上述第一RDMA网卡为上述N个RDMA网卡中的任意一个RDMA网卡,或上述目的计算节点对应的通信地址属于上述第一RDMA网卡的工作网段,或者,上述第一RDMA网卡与上述第二RDMA数据发送请求对应的业务优先级匹配,或者上述第一主机物理内存地址所对应的内存空间属于注册到上述第一RDMA网卡的内存空间范围。
可以看出,本实施例的技术方案之中,在具有虚拟化架构的计算节点中引入RDMA网卡,其中,RDMA网卡对应的FE部署于虚拟机之中,该FE通过部署于Host中的对应BE来传递RDMA数据发送请求,而上述FE和BE之间却不直接传递待发送数据,RDMA网卡接收到RDMA数据发送请求后,基于该RDMA数据发送请求携带的主机物理内存地址,从该主机物理内存地址对应的内存空间读取待发送的数据,基于RDMA数据发送请求携带的目的计算节点对应的通信地址,向上述目的计算节点发送包含上述数据和上述目的虚拟机内存地址的数据包。即提出了虚拟化架构下基于RDMA技术实现不同计算节点上的虚拟机之间传递数据的机制。且在处理器协助下,由于FE通过BE向RDMA网卡传递的是RDMA数据发送请求,FE并不直接向RDMA网卡传递待发送数据,RDMA网卡则可直接从相应主机物理内存地址读取出待发送数据来向目的计算节点发送,这就使得数据发送对缓存占用相对少、待发送数据的读取对CPU占用相对少,有利于较大幅度的提升虚拟架构下的数据发送性能,有利于使虚拟机使用RDMA技术获得近似物理机的高网络性能。
进一步的,在处理器协助下,Host中的BE可利用与不同优先级对应的队列来对RDMA数据发送请求进行缓冲管理,这就可有利于一定程度上实现基于RDMA数据发送请求的优先级来进行相应转发调度,进而有利于尽量保证虚拟机中用户态应用的高优先级业务的服务质量。RDMA数据发送请求无需通过虚拟机内的RDMA协议栈即可直接下发到Host。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的数据传输方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以处于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备或者与内存连接的处理器等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上上述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (21)

1.一种数据传输方法,其特征在于,包括:
源计算节点中的处理器向所述源计算节点上部署的宿主机Host中的后端实例BE发送所述源计算节点上部署的虚拟机之中的前端实例FE待向所述BE发送的第一远程直接内存读取RDMA数据发送请求,其中,所述第一RDMA数据发送请求携带目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址,所述后端实例为与所述源计算节点中的N个RDMA网卡对应的后端实例,所述前端实例为与所述源计算节点中的所述N个RDMA网卡对应的前端实例,所述N为正整数,其中,所述目的虚拟机内存地址是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址;
在所述BE接收到所述第一RDMA数据发送请求后,所述处理器基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述源虚拟机物理内存地址所对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求,以便于所述第一RDMA网卡在接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址所对应的内存空间读取待发送的数据,若确定所述源计算节点和所述目的计算节点为不同的计算节点,则基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包,其中,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址。
2.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
所述第一RDMA网卡若确定所述源计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据。
3.根据权利要求1或2所述的方法,其特征在于,
所述方法还包括:
所述处理器将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列;
其中,所述基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到携带于所述第一RDMA数据发送请求中的所述源虚拟机物理内存地址所对应的第一主机物理内存地址,包括:当轮到所述第一RDMA数据发送请求从所述队列出队,所述处理器从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址所对应的第一主机物理内存地址。
4.根据权利要求3所述的方法,其特征在于,所述将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的队列包括:将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE接收到的所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述BE接收到的所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
5.根据权利要求1或2所述的方法,其特征在于,
所述方法还包括:所述处理器将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列;
其中,所述向所述N个RDMA网卡中的第一RDMA网卡发送,所述BE待向所述第一RDMA网卡发送的第二RDMA数据发送请求,包括:当轮到所述第二RDMA数据发送请求从所述队列出队,所述处理器从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
6.根据权利要求5所述的方法,其特征在于,所述将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的队列,包括:将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述BE待向所述N个RDMA网卡中的第一RDMA网卡发送的第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
7.根据权利要求1、2、4或6所述的方法,其特征在于,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
8.一种数据传输方法,其特征在于,包括:
源计算节点上部署的宿主机Host中的后端实例BE,接收所述源计算节点上部署的虚拟机之中的前端实例FE发送的第一远程直接内存读取RDMA数据发送请求,其中,所述第一RDMA数据发送请求携带目的计算节点对应的通信地址,源虚拟机物理内存地址和目的虚拟机内存地址,所述后端实例为与所述源计算节点中的N个RDMA网卡对应的后端实例,所述前端实例为与所述源计算节点中的所述N个RDMA网卡对应的前端实例,所述N为正整数,其中所述目的虚拟机内存地址是目的虚拟机虚拟内存地址或目的虚拟机物理内存地址;
所述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到所述源虚拟机物理内存地址对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址;
所述第一RDMA网卡接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址对应的内存空间读取待发送的数据,若确定所述源计算节点和所述目的计算节点为不同的计算节点,则基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包。
9.根据权利要求8所述的方法,其特征在于,
所述方法还包括:
所述第一RDMA网卡若确定所述源计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据。
10.根据权利要求8或9所述的方法,其特征在于,
所述方法还包括:
所述BE将所述第一RDMA数据发送请求写入所述BE所管理的队列;
其中,所述BE基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到所述源虚拟机物理内存地址对应的第一主机物理内存地址,包括:
当轮到所述第一RDMA数据发送请求从所述队列出队,所述BE从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址。
11.根据权利要求10所述的方法,其特征在于,所述将所述第一RDMA数据发送请求写入所述BE所管理的队列包括:将所述第一RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
12.根据权利要求8或9所述的方法,其特征在于,
所述方法还包括:
所述BE将所述第二RDMA数据发送请求写入所述BE所管理的队列;
其中,所述向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,包括:
当轮到所述第二RDMA数据发送请求从所述队列出队,所述BE从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
13.根据权利要求12所述的方法,其特征在于,所述将所述第二RDMA数据发送请求写入所述BE所管理的队列包括:将所述第二RDMA数据发送请求写入所述BE所管理的,且与所述虚拟机对应的队列;或将所述第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,其中,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
14.根据权利要求8、9、11或13所述的方法,其特征在于,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
15.一种计算节点,其特征在于,包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的m1个虚拟机,
其中,所述硬件层包括N个远程直接内存读取RDMA网卡,所述宿主机中部署有与所述N个RDMA网卡对应的后端实例BE,所述m1虚拟机中的第一虚拟机中部署有与所述N个RDMA网卡对应的前端实例FE,所述N和所述m1为正整数;
所述FE,用于向所述BE发送第一RDMA数据发送请求,所述第一RDMA数据发送请求携带源虚拟机物理内存地址、目的虚拟机内存地址和目的计算节点对应的通信地址;
所述BE,用于接收来自所述FE的所述第一RDMA数据发送请求;基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址;向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求,其中,所述第二RDMA数据发送请求携带所述第一主机物理内存地址、所述目的虚拟机内存地址和所述目的计算节点对应的通信地址;
所述第一RDMA网卡用于接收到所述第二RDMA数据发送请求之后,从所述第一主机物理内存地址对应的内存空间读取待发送的数据,若确定所述计算节点和所述目的计算节点为不同的计算节点,基于所述目的计算节点对应的通信地址,向所述目的计算节点发送包含所述数据和所述目的虚拟机内存地址的数据包。
16.根据权利要求15所述的计算节点,其特征在于,
所述第一RDMA网卡还用于:若确定所述计算节点和所述目的计算节点为同一计算节点,基于虚拟机内存地址和主机物理内存地址之间的映射关系,得到所述目的虚拟机内存地址对应的第二主机物理内存地址,向所述第二主机物理内存地址对应的内存空间写入所述数据。
17.根据权利要求15或16所述的计算节点,其特征在于,
所述BE还用于:将所述第一RDMA数据发送请求写入所述BE所管理的队列;
其中,在基于虚拟机物理内存地址和主机物理内存地址之间的映射关系得到所述源虚拟机物理内存地址对应的第一主机物理内存地址的方面,所述BE具体用于,当轮到所述第一RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第一RDMA数据发送请求,从所述第一RDMA数据发送请求中获得所述源虚拟机物理内存地址,基于虚拟机物理内存地址和主机物理内存地址之间的映射关系,得到所述源虚拟机物理内存地址对应的第一主机物理内存地址。
18.根据权利要求17所述的计算节点,其特征在于,在所述将所述第一RDMA数据发送请求写入所述BE所管理的队列的方面,所述BE具体用于,将所述第一RDMA数据发送请求写入所述BE所管理的,且与所述第一虚拟机对应的队列;或将所述第一RDMA数据发送请求写入所述BE所管理的,且与第一RDMA数据发送请求的优先级对应的队列,或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级;或者,将所述第一RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第一RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第一RDMA数据发送请求对应的优先级。
19.根据权利要求15或16所述的计算节点,其特征在于,
所述BE还用于,将所述第二RDMA数据发送请求写入所述BE所管理的队列;其中,在所述向所述N个RDMA网卡中的第一RDMA网卡发送第二RDMA数据发送请求的方面,所述BE具体用于,当轮到所述第二RDMA数据发送请求从所述队列出队,从所述队列中读取出所述第二RDMA数据发送请求,向所述N个RDMA网卡中的第一RDMA网卡发送读取出的所述第二RDMA数据发送请求。
20.根据权利要求19所述的计算节点,其特征在于,在所述将所述第二RDMA数据发送请求写入所述BE所管理的队列的方面,所述BE具体用于将所述第二RDMA数据发送请求写入所述BE所管理的,且与所述第一虚拟机对应的队列;或将所述第二RDMA数据发送请求写入所述BE所管理的,且与第二RDMA数据发送请求的优先级对应的队列,或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中的第五RDMA数据发送请求之前,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级;或者,将所述第二RDMA数据发送请求插入所述BE所管理的队列之中处于相邻位置的第四RDMA数据发送请求和第五RDMA数据发送请求之间,其中,所述第四RDMA数据发送请求对应的优先级高于或者等于所述第二RDMA数据发送请求对应的优先级,所述第五RDMA数据发送请求对应的优先级低于所述第二RDMA数据发送请求对应的优先级。
21.根据权利要求15、16、18或20所述的计算节点,其特征在于,
所述N大于1,所述第一RDMA网卡为所述N个RDMA网卡中的任意一个RDMA网卡,或所述目的计算节点对应的通信地址属于所述第一RDMA网卡的工作网段,或者,所述第一RDMA网卡与所述第二RDMA数据发送请求对应的业务优先级匹配,或者所述第一主机物理内存地址所对应的内存空间属于注册到所述第一RDMA网卡的内存空间范围。
CN201310752021.4A 2013-12-31 2013-12-31 数据传输方法和计算节点 Active CN103763173B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310752021.4A CN103763173B (zh) 2013-12-31 2013-12-31 数据传输方法和计算节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310752021.4A CN103763173B (zh) 2013-12-31 2013-12-31 数据传输方法和计算节点

Publications (2)

Publication Number Publication Date
CN103763173A CN103763173A (zh) 2014-04-30
CN103763173B true CN103763173B (zh) 2017-08-25

Family

ID=50530336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310752021.4A Active CN103763173B (zh) 2013-12-31 2013-12-31 数据传输方法和计算节点

Country Status (1)

Country Link
CN (1) CN103763173B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9904627B2 (en) * 2015-03-13 2018-02-27 International Business Machines Corporation Controller and method for migrating RDMA memory mappings of a virtual machine
US10055381B2 (en) 2015-03-13 2018-08-21 International Business Machines Corporation Controller and method for migrating RDMA memory mappings of a virtual machine
CN107615259B (zh) * 2016-04-13 2020-03-20 华为技术有限公司 一种数据处理方法及系统
CN108733506B (zh) 2017-04-17 2022-04-12 伊姆西Ip控股有限责任公司 用于数据同步的方法、设备和计算机可读介质
CN115344551A (zh) * 2017-06-26 2022-11-15 华为技术有限公司 一种数据迁移的方法以及数据节点
CN107592361B (zh) * 2017-09-20 2020-05-29 郑州云海信息技术有限公司 一种基于双ib网络的数据传输方法、装置、设备
CN109582592B (zh) * 2018-10-26 2021-06-15 华为技术有限公司 资源管理的方法和装置
CN112243046B (zh) 2019-07-19 2021-12-14 华为技术有限公司 通信方法和网卡
CN112350842B (zh) * 2019-08-08 2023-04-07 深圳致星科技有限公司 一种重置分布式训练任务训练过程中数据传输网络的方法
CN113535319A (zh) * 2020-04-09 2021-10-22 深圳致星科技有限公司 一种实现多rdma网卡虚拟化的方法、设备及存储介质
CN113886295A (zh) * 2020-07-02 2022-01-04 北京瀚海云星科技有限公司 一种标签数据高效且低延时的传输方法及相关装置、系统
CN115374024A (zh) * 2021-05-21 2022-11-22 华为技术有限公司 一种内存数据排序方法及相关设备
CN114301641B (zh) * 2021-12-15 2024-03-19 中国科学院深圳先进技术研究院 一种适用于rdma网络的虚拟化安全网关系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7554976B2 (en) * 2005-05-13 2009-06-30 Microsoft Corporation Method and system for transferring a packet stream to RDMA
US7702826B2 (en) * 2005-12-28 2010-04-20 Intel Corporation Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
CN102591702A (zh) * 2011-12-31 2012-07-18 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
CN103384551A (zh) * 2013-01-04 2013-11-06 华为技术有限公司 一种基于pcie网络的虚拟机通信方法、服务器及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7554976B2 (en) * 2005-05-13 2009-06-30 Microsoft Corporation Method and system for transferring a packet stream to RDMA
US7702826B2 (en) * 2005-12-28 2010-04-20 Intel Corporation Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
CN102591702A (zh) * 2011-12-31 2012-07-18 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
CN103384551A (zh) * 2013-01-04 2013-11-06 华为技术有限公司 一种基于pcie网络的虚拟机通信方法、服务器及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Toward a ParavirtualvRDMA Device for VMware ESXi Guests;Ranadive A;《VMWARE TECHNICAL JOURNAL》;20121231;第1卷(第2期);正文第3小节倒数第2段 *

Also Published As

Publication number Publication date
CN103763173A (zh) 2014-04-30

Similar Documents

Publication Publication Date Title
CN103763173B (zh) 数据传输方法和计算节点
US10325343B1 (en) Topology aware grouping and provisioning of GPU resources in GPU-as-a-Service platform
CN105549904B (zh) 一种应用于存储系统中的数据迁移方法及存储设备
CN106415513B (zh) 用于分组发送的优化的信用返回机制
CN103414535B (zh) 数据发送方法和数据接收方法及相关装置
CN105282135B (zh) 采用软件定义联网中的虚拟机和虚拟化容器实现本地服务链接的方法和装置
CN103647807B (zh) 一种信息缓存方法、装置和通信设备
CN105723338B (zh) 构建虚拟主板和虚拟存储设备
CN103942087B (zh) 虚拟机热迁移方法及相关装置和集群系统
CN104428752B (zh) 将虚拟机流卸载至物理队列
CN107111576A (zh) 发布的中断架构
CN102915285B (zh) 虚拟化环境中的应用加速
CN104094229B (zh) 用于基于扩展的主机信道适配器(hca)模型支持虚拟机的动态迁移的系统和方法
CN107995129A (zh) 一种nfv报文转发方法和装置
US20120066460A1 (en) System and method for providing scatter/gather data processing in a middleware environment
CN104346240B (zh) 用于在迁移操作期间利用多个存储器池的方法和装置
CN107690622A (zh) 实现硬件加速处理的方法、设备和系统
CN105993009A (zh) 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置
CN103827842B (zh) 向控制器存储器空间写入消息
CN107967180B (zh) 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统
CN101430674B (zh) 一种分布式虚拟机监控器内连通信方法
CN106415515A (zh) 使用不具有sfence的优化的pio写入序列来发送分组
CN109739618A (zh) 虚拟机迁移方法及装置
US11874785B1 (en) Memory access operation in distributed computing system
CN103927216B (zh) 用于管理虚拟装置的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200721

Address after: 518000 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee after: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Effective date of registration: 20200721

Address after: 315000 Room 716, Building C4, Lane 299, Guanghua Road, Ningbo High-tech Zone, Zhejiang Province

Patentee after: NINGBO JIETI EDUCATION TECHNOLOGY Co.,Ltd.

Address before: 518000 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee before: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230915

Address after: Room 402-2, No. 218 Dieyuan Road, Yinzhou District, Ningbo City, Zhejiang Province, 315199

Patentee after: Zhejiang Gezhi Data Technology Co.,Ltd.

Address before: 315000 room 716, building C4, Lane 299, Guanghua Road, high tech Zone, Ningbo City, Zhejiang Province

Patentee before: NINGBO JIETI EDUCATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right