介绍
RDMA(remotedirectmemoryaccess)中文全称远程内存直接访问技术,具有高带宽、低延迟、零拷贝、操作系统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,这种方案底层采用聚合以太网络(ConvergedEthernet),VMM/Hypervisor为虚拟机提供的是一个全仿真的RDMA虚拟设备。
第一种和第二种解决方案性能最好;由于RDMA物理设备通过透传方式分配给虚拟机,是的VMM/Hypervisor很多软件功能特性无法支持。比如:虚拟机在线迁移、虚拟机快照、虚拟机高可用等等。第三种是软件仿真方式,VMM/Hypervisor性能开销大,而且虚拟机实际复杂。
如何既能为虚拟机提供较好的RDMA性能,同时又能保证跟现有VMM/Hypervisor软件功能特性兼容?VMware提出vRDMA方案。vRDMA借鉴网络I/O半虚拟化方案思想,为虚拟机提供半虚拟化RDMA支持。
vRDMAovervSphereVMCI
VMCI(VirtualMachineCommunicationInterface)是VMwarevSphere半虚拟化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驱动
基于ibverb实现的虚拟机RDMA驱动。虚拟机应用程序RMDA请求通过该驱动转化为与ibverb兼容的调用请求。
ESXi/ESXRDMA协议栈
位于VMkernel,基于OFED驱动。负责物理RDMA设备管理,并为vMotion和FT提供RDMA设备访问支持。
vRDMAVMCI
vRDMAVMCI负责虚拟机RDMA请求接受和处理,并负责与RDMA协议栈通信。
vRDMA数据通信过程
vRDMA数据通信过程主要分两大类:一种同一台ESX/ESXI主机的虚拟机通信;另外一种是不同ESX/ESXi主机的虚拟机通信。vRDMAVMCI通过LID与QP号确认通信双方是否位于同一台ESX/ESXi主机。如果是,所有数据交互都直接通过vRDMAVMCI在内存里面完成;如果不是,vRDMAVMCI需要将请求先转发给ESX/ESXiRDMA协议栈。vRDMAVMCI提供缓存功能,部分后续通信数据可以直接由vRDMAVMCI从缓存取得并返回为虚拟机。
vRDMA性能和功能特性
根据测试,虚拟机vRDMA的half-roundtrip延迟在5微妙左右,低于SoftRoCE而高于PCI-Passthrough方式。
vRDMA其他软件功能特性有:
·同一台ESX/ESXi主机的虚拟机可以在没有物理RDMA设备情况下进行RDMA通信。
·支持虚拟机快照和虚拟机在线迁移。
·SubnetManagement(SM)
参考
·TowardaParavirtualvRDMADeviceforVMwareESXiGuests
应用于
·VMwarevSphere