弹性RDMA网卡(ERI)是一种可以绑定到ECS实例的虚拟网卡,ERI必须依附于弹性网卡(ENI)开启RDMA设备。ERI完全复用了弹性网卡所属的网络,让您无需改变业务组网,即可在原有网络下使用RDMA功能,体验RDMA带来的超低延迟。本文介绍如何在ECS实例上配置ERI。

背景信息

ERI基于神龙架构,使用ERI具有以下优势:
  • 超低延迟:RDMA功能绕过内核协议栈,将数据直接从用户态程序转移到HCA中进行网络传输,极大地降低了CPU负载和延迟。ERI使弹性网卡具有传统RDMA网卡的优点,您可以在阿里云VPC中体验超低的延迟。
  • 规模部署:传统的RDMA功能依赖于网络的无损特性,在规模部署时难度高且成本高。而ERI采用了自研的拥塞控制(CC)算法,容忍VPC网络中的传输质量变化(例如延迟、丢包等),在有损的网络环境中依然拥有良好的性能表现。
  • 弹性扩展:ERI依附于弹性网卡,您可以随时创建支持ERI的弹性网卡并绑定到ECS实例,轻松实现弹性扩展。

ERI是标准的RDMA设备,您可以通过Libfabric运行MPI、AI等应用程序,也可以使用eRDMA运行您或者其他组织开发的RDMA应用程序。

操作步骤

  1. 创建支持ERI的ECS实例。
    具体操作,请参见使用向导创建实例。在创建支持ERI的ECS实例时,请注意下表中的配置项。
    配置项 说明
    地域及可用区 支持选择华北2(北京)、华东2(上海)、华东1(杭州)和华南1(深圳)及对应的可用区。
    实例规格 支持ERI的实例规格如下:
    镜像 从以下镜像中选择一款镜像:
    • Alibaba Cloud Linux 3(推荐)
    • CentOS 7.9
    • Ubuntu 18.04/20.04
  2. 创建启用ERI的弹性网卡。
    • 创建启用ERI的主网卡
      说明 弹性网卡分为主网卡和辅助网卡。主网卡不支持从实例解绑,只能随实例一起创建和释放。
      在创建ECS实例过程中,在网络和安全组配置向导页面配置弹性网卡时,在主网卡右侧选中弹性RDMA接口主网卡开启ERI
    • 创建启用ERI的辅助弹性网卡
      说明 辅助弹性网卡只能在单独创建时启用ERI并绑定至支持ERI的实例上使用,不支持在随实例创建辅助弹性网卡时或者修改辅助弹性网卡时启用ERI。
      1. 创建辅助弹性网卡。具体操作,请参见创建弹性网卡
        在创建启用ERI的辅助弹性网卡时,打开增加弹性RDMA接口开关。ERI会共用该辅助弹性网卡的设置,包括弹性网卡的IP、应用于弹性网卡的安全组规则等。创建RDMA网卡
      2. 将辅助弹性网卡绑定至ECS实例。具体操作,请参见绑定弹性网卡
        说明
        • 单台实例最多绑定一个启用ERI的辅助弹性网卡。
        • 绑定辅助网卡至实例前,请确认目标实例的主网卡和辅助网卡不在同一子网内,否则可能因为默认路由导致辅助网卡的RDMA功能在某些情况下不可用。如果您知道如何解决并确定要这样使用,请忽略本提示。

        将启用ERI的辅助弹性网卡绑定至实例后,如需解绑,必须先停止实例。停止实例的具体操作,请参见停止实例

  3. 远程连接ECS实例。
  4. 在实例内配置弹性网卡。
    部分镜像无法自动识别新绑定的辅助弹性网卡。您可以执行ifconfig命令查看,如果不能显示该网卡,请手动配置弹性网卡。具体操作,请参见配置辅助弹性网卡
  5. 在实例内安装ERI驱动。
    1. 运行以下命令,更新前置软件包。
      • Alibaba Cloud Linux 3、CentOS:
        yum update -y
      • Ubuntu:无需更新
    2. 可选:如果涉及kernel子版本的更新,需要重启实例生效,重启后请重新远程连接实例。
      查看是否涉及kernel子版本的更新方法:
      1. 执行rpm -qa | grep kernel命令查看最新的kernel包版本。
      2. 执行uname -r命令查看操作系统的内核版本。
      如果二者的版本不一致,说明涉及kernel子版本的更新,则需要重启实例。
    3. 运行以下命令,安装依赖的软件包。
      • 对于x86实例,请执行以下操作:
        • Alibaba Cloud Linux 3、CentOS:
          yum install gcc-c++ dkms cmake kernel-devel kernel-headers libnl3 libnl3-devel
        • Ubuntu:
          apt-get install dkms cmake libnl-3-dev libnl-route-3-dev kernel-headers
      • 对于arm实例,因为需要基于源码执行构建任务,相关的软件依赖包较多并且可能发生变化,可以忽略本步骤,直接运行安装脚本。如果安装脚本失败,脚本会提示您需要安装的软件依赖包,请根据提示完成后,再重新执行软件安装即可。
    4. 运行以下命令,下载驱动安装包。
      wget https://elastic-rdma.oss-cn-hangzhou.aliyuncs.com/erdma_installer.tar.gz
    5. 运行以下命令,解压安装包并进入文件目录。
      tar -xvf erdma_installer.tar.gz && cd erdma_installer
    6. 运行以下命令,安装驱动。
      • 安装过程需要手动确认相关卸载步骤及自动下载步骤
        sh install.sh
      • 安装过程无需手动确认相关卸载步骤及自动下载步骤
        sh install.sh  --batch
    7. 确认安装结果。
      • 当出现如下信息时,表示安装成功。安装成功
        此外,您也可以运行以下命令,通过eadm工具来确认驱动是否正常安装。
        eadm ver
        当前实例规格应当返回0.2.34。如果提示没有本命令或者执行失败,请重新安装驱动或者提交工单寻求技术支持。
      • 如果提示安装失败,并且提示您应该执行的下一个步骤,请按照提示信息操作完成后,重新尝试安装驱动。安装失败
        说明 如果您使用的是CentOS 7系统,并且安装过程中提示缺少软件包,但您无法通过yum获取到,您可能需要执行以下命令,先安装epel-release仓库,然后才能获取到对应的软件包。
        yum install -y epel-release