vSphere 6.5 及更高版本支持在具有准虚拟化 RDMA(PVRDMA) 网络适配器的虚拟机之间进行远程直接内存访问 (RDMA) 通信。

RDMA 概览

RDMA 允许从一台计算机内存到另一台计算机内存的直接内存访问,不会涉及操作系统或 CPU。内存的传输卸载至支持 RDMA 的主机通道适配器 (Host Channel Adapter, HCA)。PVRDMA 网络适配器在虚拟环境中提供远程直接内存访问。

在 vSphere 中使用 RDMA

在 vSphere 中,虚拟机可以使用 PVRDMA 网络适配器与其他拥有 PVRDMA 设备的虚拟机进行通信。虚拟机必须连接到同一 vSphere Distributed Switch。

PVRDMA 设备自动选择两个虚拟机之间的通信方法。对于相同 ESXi 主机上运行的虚拟机(无论是否具有物理 RDMA 设备),两个虚拟机之间的数据传输是一种内存复制。这种情况下不使用物理 RDMA 硬件。

对于不同 ESXi 主机上运行的虚拟机(具有物理 RDMA 连接),物理 RDMA 设备必须是 Distributed Switch 上的上行链路。在这种情况下,两个虚拟机之间的 PVRDMA 通信使用底层物理 RDMA 设备。

对于不同 ESXi 主机上运行的两个虚拟机(至少一个虚拟机没有物理 RDMA 设备),通信回退到基于 TCP 的通道,且性能减弱。

向虚拟机分配 PVRDMA 适配器

要使虚拟机使用 RDMA 交换数据,您必须将该虚拟机与 PVRDMA 网络适配器关联。

使用 vSphere 7.0.2 及更高版本时,最多可向虚拟机添加 10 个 PVRDMA 网络适配器。

前提条件

  • 确认运行该虚拟机的主机配置了 RDMA。请参见为 ESXi 主机配置 PVRDMA
  • 确认主机已连接到 vSphere Distributed Switch。
  • 确认虚拟机使用虚拟硬件版本 13 及更高版本。
  • 确认客户机操作系统为 Linux 64 位发行版。

过程

  1. vSphere Client 中找到虚拟机。
    1. 选择数据中心、文件夹、集群、资源池或主机,然后单击虚拟机选项卡。
    2. 单击虚拟机,然后从列表中单击虚拟机。
  2. 关闭虚拟机电源。
  3. 从“操作”菜单中,选择“编辑设置”。
  4. 在显示设置的对话框中选择虚拟硬件选项卡。
  5. 添加新设备下拉菜单中,选择网络适配器
    “新网络”部分将添加到 虚拟硬件选项卡下的列表中。
  6. 展开“新建网络”部分并将虚拟机连接到分布式端口组。
  7. 适配器类型下拉菜单中,选择 PVRDMA。
  8. 展开内存部分,选择预留所有客户机内存 (全部锁定),然后单击确定
  9. 打开虚拟机电源。

配置虚拟机以使用 PVRDMA 原生端点

PVRDMA 原生端点可用作高级虚拟机配置。

从 vSphere 7.0 Update 1 及更高版本开始,虚拟机硬件版本 18 及更高版本支持 PVRDMA 原生端点。要使用 PVRDMA 原生端点,必须启用 PVRDMA 命名空间。要了解如何在环境的特定硬件上启用 PVRDMA 命名空间,请参阅供应商文档。

可以使用 vSphere Client 配置原生端点,也可以编辑虚拟机的 VMX 文件。如果直接编辑 VMX 文件,请添加参数 vrdmax.nativeEndpointSupport = "TRUE",其中 x 是 PVRDMA 适配器的索引。以下过程使用 vSphere Client 配置原生端点。

前提条件

确认您的环境支持 PVRDMA。请参见PVRDMA 支持

过程

  1. vSphere Client 中,浏览到虚拟机。
    1. 要查找虚拟机,请选择数据中心、文件夹、集群、资源池或主机。
    2. 单击虚拟机选项卡。
  2. 右键单击虚拟机,然后选择编辑设置
  3. 单击虚拟机选项
  4. 展开高级
  5. 在“配置参数”下,单击编辑配置按钮。
  6. 在显示的对话框中,单击添加行以输入新参数及其值。
  7. 输入参数 vrdmax.nativeEndpointSupport(其中 x 是 PVRDMA 适配器的索引),并将值设置为 TRUE
    索引 x 是 PVRDMA 适配器编号减去 1 所得的值。例如,如果要启用原生端点的 PVRDMA 适配器标记为“网络适配器 2”,则索引为 1。

将虚拟机配置为使用 PVRDMA 异步模式

了解如何将虚拟机配置为使用 PVRDMA 异步模式。高级虚拟机配置中提供此设置。

在 vSphere 8.0 及更高版本上运行的虚拟机可以使用 PVRDMA 异步模式。异步模式可能会提高虚拟机中运行的 RDMA 工作负载的吞吐量和延迟。启用异步模式后,可能会在主机中看到 CPU 使用率增加。使用异步模式时,建议将虚拟机配置为高延迟敏感度。

前提条件

确认您的环境支持 PVRDMA。请参见PVRDMA 支持

过程

  1. vSphere Client 中找到虚拟机。
    1. 选择数据中心、文件夹、集群、资源池或主机,然后单击虚拟机选项卡。
    2. 单击虚拟机,然后从列表中单击虚拟机。
  2. 右键单击虚拟机,然后选择编辑设置
  3. 单击虚拟机选项
  4. 展开高级
  5. 在“配置参数”下,单击编辑配置按钮。
  6. 在显示的对话框中,单击添加行以输入新参数及其值。
  7. 输入参数 vrdma.asyncMode,并将值设置为 TRUE.

聚合以太网 RDMA 的网络要求

聚合以太网 RDMA 可确保在以太网网络上实现低延迟、高吞吐量的轻量 RDMA 通信。RoCE 需要配置为单独在第 2 层或同时在第 2 层和第 3 层上无损传输信息流量的网络。

聚合以太网 RDMA (RDMA over Converged Ethernet, RoCE) 是一种网络协议,使用 RDMA 为网络密集型应用程序提供更快的数据传输。RoCE 可以在主机之间实现直接的内存传输,而无需使用主机的 CPU。

RoCE 协议有两个版本。RoCE v1 在链接网络层(第 2 层)上运行。RoCE v2 在 Internet 网络层(第 3 层)上运行。RoCE v1 和 RoCE v2 都需要无损网络配置。RoCE v1 需要第 2 层无损网络,而 RoCE v2 则要求为第 2 层和第 3 层均配置无损操作。

第 2 层无损网络

要确保第 2 层无损环境,您必须能够控制流量。可以通过在整个网络上启用全局暂停或使用数据中心桥接组 (Data Center Bridging, DCB) 定义的优先级流量控制 (Priority Flow Control, PFC) 协议来实现流量控制。PFC 是第 2 层协议,使用 802.1Q VLAN 标记的服务类字段设置各个流量的优先级。它会根据各个服务类优先级暂停到某个接收方的数据包传输。这样,将由一个链接同时承载无损 RoCE 流量和其他有损但尽力保留的流量。如果发生流量拥堵,可能会影响到重要的有损流量。要隔离不同的流量,可以在启用了 PFC 优先级的 VLAN 中使用 RoCE。

第 3 层无损网络

RoCE v2 要求在第 3 层路由设备中保留无损数据传输。要跨第 3 层路由器实现第 2 层 PFC 无损优先级传输,可以对路由器进行相应配置,把数据包的接收优先级设置映射到第 3 层的相应差异化服务代码点 (Differentiated Serviced Code Point, DSCP) QoS 设置。传输的 RDMA 数据包标记了第 3 层 DSCP、第 2 层优先级代码点 (Priority Code Point, PCP) 或同时标记了这二者。要从数据包路由器中提取优先级信息,请使用 DSCP 或 PCP。如果使用 PCP,数据包必须带有 VLAN 标记,且路由器必须复制标记的 PCP 位并将其转发到下一个网络。如果数据包标记了 DSCP,则路由器必须保持 DSCP 位不变。

与 RoCE v1 一样,RoCE v2 必须在启用了 PFC 优先级的 VLAN 上运行。

注: 如果要在 RoCE 网卡上使用 RDMA,切勿绑定这些网卡。

有关供应商特定的配置信息,请参阅相应设备或交换机供应商的官方文档。