Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13.2. 使用 RoCE 传输数据

RDMA over Converged Ethernet(RoCE)是一个网络协议,它允许通过以太网网络进行远程直接内存访问(RDMA)。RoCE v1 和 RoCE v2 有两个版本,具体取决于所使用的网络适配器。

RoCE v1
RoCE v1 协议是一个带有 ethertype 0x8915 的以太网链路层协议,它允许同一以太网广播域中任何两个主机之间进行通信。使用 ConnectX-3 网络适配器时,RoCE v1 是 RDMA 连接管理器(RDMA_CM)的默认版本。
RoCE v2
RoCE v2 协议在 IPv4 或 IPv6 协议的 UDP 上存在。RoCE v2 保留 UDP 目的地端口号 4791。从 Red Hat Enterprise Linux 7.5 开始,RoCE v2 是 RDMA_CM 的默认版本,在使用 ConnectX-3 Pro、ConnectX-4、ConnectX-4 Lx 和 ConnectX-5 网络适配器时。硬件支持 RoCE v1RoCE v2
RDMA 连接管理器(RDMA_CM)用于在客户端和服务器之间设置可靠连接以传输数据。RDMA_CM 为建立连接提供了一个与 RDMA 传输相关的接口。通信通过特定的 RDMA 设备,数据传输基于消息。

先决条件

RDMA_CM 会话需要以下之一:
  • 客户端和服务器都支持相同的 RoCE 模式。
  • 客户端支持 RoCE v1 和服务器 RoCE v2。
由于客户端决定连接模式,因此可以出现以下情况:
连接成功:
如果客户端处于 RoCE v1 或 RoCE v2 模式,取决于使用的网卡和驱动程序,对应的服务器必须具有相同的版本才能创建连接。另外,如果客户端处于 RoCE v1,并且服务器采用 RoCE v2 模式,则连接会成功。
连接失败:
如果客户端在 RoCE v2 中,并且对应的服务器在 RoCE v1 中,则无法建立连接。在本例中,更新对应服务器的驱动程序或网络适配器,请参考 第 13.2 节 “使用 RoCE 传输数据”

表 13.1. 使用 RDMA_CM 的 RoCE 版本默认值

客户端Server默认设置
RoCE v1RoCE v1连接
RoCE v1RoCE v2连接
RoCE v2RoCE v2连接
RoCE v2RoCE v1无连接
客户端上的 RoCE v2 和服务器上的 RoCE v1 不兼容。要解决这个问题,请强制服务器和客户端环境通过 RoCE v1 进行通信。这意味着强制支持 RoCE v2 使用 RoCE v1 的硬件:

过程 13.1. 当在 Roce v2 中运行的硬件 Already 时更改默认 RoCE 模式

  1. 进入 /sys/kernel/config/rdma_cm 目录,使其具有 RoCE 模式:
    ~]# cd /sys/kernel/config/rdma_cm
  2. 输入带有以太网网络设备的ibstat 命令显示状态。例如,对于 mlx5_0:
    ~]$ ibstat mlx5_0
        CA 'mlx5_0'
            CA type: MT4115
            Number of ports: 1
            Firmware version: 12.17.1010
            Hardware version: 0
            Node GUID: 0x248a0703004bf0a4
            System image GUID: 0x248a0703004bf0a4
            Port 1:
                State: Active
                Physical state: LinkUp
                Rate: 40
                Base lid: 0
                LMC: 0
                SM lid: 0
                Capability mask: 0x04010000
                Port GUID: 0x268a07fffe4bf0a4
                Link layer: Ethernet
  3. mlx5_0 设备创建一个目录:
    ~]# mkdir mlx5_0
  4. default_roce_mode 文件中以树格式显示 RoCE 模式:
    ~]# cd mlx5_0
    ~]$ tree
    └── ports
        └── 1
            ├── default_roce_mode
            └── default_roce_tos
    ~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
        RoCE v2
  5. 更改默认 RoCE 模式:
    ~]# echo "RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
  6. 查看更改:
    ~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
        RoCE v1