13.2. 使用 RoCE 传输数据
RDMA over Converged Ethernet(RoCE)是一个网络协议,它允许通过以太网网络进行远程直接内存访问(RDMA)。RoCE v1 和 RoCE v2 有两个版本,具体取决于所使用的网络适配器。
- RoCE v1
RoCE v1协议是一个带有 ethertype0x8915的以太网链路层协议,它允许同一以太网广播域中任何两个主机之间进行通信。使用 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 v1和RoCE 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 传输数据”
| 客户端 | Server | 默认设置 |
|---|---|---|
| RoCE v1 | RoCE v1 | 连接 |
| RoCE v1 | RoCE v2 | 连接 |
| RoCE v2 | RoCE v2 | 连接 |
| RoCE v2 | RoCE v1 | 无连接 |
客户端上的 RoCE v2 和服务器上的 RoCE v1 不兼容。要解决这个问题,请强制服务器和客户端环境通过 RoCE v1 进行通信。这意味着强制支持 RoCE v2 使用 RoCE v1 的硬件:
过程 13.1. 当在 Roce v2 中运行的硬件 Already 时更改默认 RoCE 模式
- 进入
/sys/kernel/config/rdma_cm目录,使其具有 RoCE 模式:cd /sys/kernel/config/rdma_cm
~]# cd /sys/kernel/config/rdma_cmCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 输入带有以太网网络设备的ibstat 命令显示状态。例如,对于 mlx5_0:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 为 mlx5_0 设备创建一个目录:
mkdir mlx5_0
~]# mkdir mlx5_0Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在
default_roce_mode文件中以树格式显示 RoCE 模式:cd mlx5_0
~]# cd mlx5_0Copy to Clipboard Copied! Toggle word wrap Toggle overflow tree
~]$ tree └── ports └── 1 ├── default_roce_mode └── default_roce_tosCopy to Clipboard Copied! Toggle word wrap Toggle overflow ~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v2~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 更改默认 RoCE 模式:
echo "RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
~]# echo "RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_modeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 查看更改:
~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v1~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v1Copy to Clipboard Copied! Toggle word wrap Toggle overflow