VMware半虚拟化RDMA(vRDMA)方案介绍

介绍

RDMA(remote direct memory access)中文全称远程内存直接访问技术,具有高带宽、低延迟、零拷贝、操作系统bypass和cpu卸载功能。RDMA实现需要特定硬件支持,主要有三种:Infiniband、iWARP和RoCE。RDMA技术常应用于高性能计算(HPC)、集群数据库、金融系统、分布式环境和大数据。

本文主要介绍VMware虚拟化环境RDMA解决方案,主要内容包括虚拟化RDMA实现方式、vSphere基于VMCI的vRDMA、vRDMA主要组成部分、vRDMA性能和功能特性。

虚拟化RDMA实现方式

RDMA是在网络I/O虚拟化非常完善之后提供一项新的虚拟化I/O方案。虚拟化RDMA实现方式主要有三种:第一种是VMM/Hypervisor通过PCI-Passtrough技术将RDMA物理设备透传给虚拟机,该方式可以让虚拟机RDMA获得最佳性能,但是RDMA物理设备只能被一台虚拟机独自占用;第二种就是基于SR-IOV的PCI-Passthrough,RDMA物理设备支持SR-IOV,VMM/Hypervisor为每个虚拟机分配一个VF,该方式可以让多台虚拟机共享一个RDMA物理设备,虚拟机性能基本等价于RDMA物理设备。 第三种是SoftRoCE,这种方案底层采用聚合以太网络(Converged Ethernet),VMM/Hypervisor为虚拟机提供的是一个全仿真的RDMA虚拟设备。

第一种和第二种解决方案性能最好;由于RDMA物理设备通过透传方式分配给虚拟机,是的VMM/Hypervisor很多软件功能特性无法支持。比如:虚拟机在线迁移、虚拟机快照、虚拟机高可用等等。第三种是软件仿真方式,VMM/Hypervisor性能开销大,而且虚拟机实际复杂。

如何既能为虚拟机提供较好的RDMA性能,同时又能保证跟现有VMM/Hypervisor软件功能特性兼容?VMware提出vRDMA方案。vRDMA借鉴网络I/O半虚拟化方案思想,为虚拟机提供半虚拟化RDMA支持。

vRDMA over vSphere VMCI

VMCI(Virtual Machine Communication Interface)是VMware vSphere半虚拟化I/O解决方案框架。VMCI框架有两部分组成,一部分位于VMM/Hypervisor,另外一部分位于虚拟机(虚拟机需要安装VMCI驱动特能支持)。VMCI实现基于TCP的Socket(主要有伯克利Socket和微软Winsock两种)。VMCI数据通信都直接通过内存访问实现。

vRDMA基于VMCI实现,主要包括两部分:一部分位于虚拟机,另外一部分位于VMkernel(VMware虚拟化的VMM/Hypervisor)。VMCI为虚拟机提供RDMA虚拟机设备,虚拟机通过安装vRDMA驱动与VMkernel通信。vRDMA位于VMkernel部分负责虚拟机RDMA请求转发处理和物理RDMA设备管理。

vRDMA架构示意图如下:

vRDMA主要组成部分

vRDMA为虚拟机提供一个整体半虚拟机RDMA解决方案。主要包括以下主要部分

Libvrdma & Libibverbs

Libvrdma和libibverbs是虚拟机使用的RDMA用户态库文件,可供应用程序直接调用。libibverbs是libvrdma的软连接,用户程序通过libibverbs访问libvrdma。

虚拟机内核vRDMA驱动

基于ib verb实现的虚拟机RDMA驱动。虚拟机应用程序RMDA请求通过该驱动转化为与ib verb兼容的调用请求。

ESXi/ESX RDMA协议栈

位于VMkernel,基于OFED驱动。负责物理RDMA设备管理,并为vMotion和FT提供RDMA设备访问支持。

vRDMA VMCI

vRDMAVMCI负责虚拟机RDMA请求接受和处理,并负责与RDMA协议栈通信。

vRDMA数据通信过程

vRDMA数据通信过程主要分两大类:一种同一台ESX/ESXI主机的虚拟机通信;另外一种是不同ESX/ESXi主机的虚拟机通信。vRDMAVMCI通过LID与QP号确认通信双方是否位于同一台ESX/ESXi主机。如果是,所有数据交互都直接通过vRDMA VMCI在内存里面完成;如果不是,vRDMA VMCI需要将请求先转发给ESX/ESXi RDMA协议栈。vRDMAVMCI提供缓存功能,部分后续通信数据可以直接由vRDMAVMCI从缓存取得并返回为虚拟机。

vRDMA性能和功能特性

根据测试,虚拟机vRDMA的half-roundtrip延迟在5微妙左右,低于SoftRoCE而高于PCI-Passthrough方式。

vRDMA其他软件功能特性有:

· 同一台ESX/ESXi主机的虚拟机可以在没有物理RDMA设备情况下进行RDMA通信。

· 支持虚拟机快照和虚拟机在线迁移。

· Subnet Management(SM)

参考

· Toward a Paravirtual vRDMA Device for VMware ESXiGuests

应用于

· VMware vSphere