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
- 输入带有以太网网络设备的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
- 为 mlx5_0 设备创建一个目录:
~]# mkdir mlx5_0
- 在
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
- 更改默认 RoCE 模式:
~]# echo "RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
- 查看更改:
~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v1