没有 Mellanox 网卡、没有 InfiniBand 交换机,也能在一台笔记本上学 RDMA?
本文用 VMware Workstation 创建两台 Ubuntu 虚拟机,通过 Soft-RoCE(RXE) 在普通虚拟网卡上模拟 RoCEv2 通信。从克隆虚拟机、加载 RDMA 内核模块、绑定 RXE 设备开始,一步步带你:
1)跑通 ibv_rc_pingpong 验证 RC QP 建链
2)用 rping 确认 RDMACM 控制面正常
3)用 ib_send_bw、ib_read_bw、ib_write_bw 实测三种 RDMA 操作的带宽
全文附带完整命令、回显截图和原理图解,帮你理解 SEND/READ/WRITE 的本质区别。读完你不仅能搭出一套可复现的 RDMA 实验环境,还能把 perftest 工具的参数含义和测试原理彻底搞清楚。
适合人群:AI 网络工程师、存储开发者、RDMA 初学者、想在笔记本上练手的任何人。
一、实验拓扑
用 VMware Workstation安装2台虚拟机:
┌──────────────┐ VMnet (Host-Only) ┌──────────────┐
│ Ubuntu A │ ens33 192.168.44.128 │ Ubuntu B │
│ rxe_0 │ <──────────────────────────────> │ rxe_0 │
│ ibv server │ RoCEv2/UDP/4791 │ ibv client │
└──────────────┘ └──────────────┘
│ │
└──────────── 宿主机 VMnet 虚拟交换机 ───────────┘
- 两台 Ubuntu 22.04/24.04 VM
- 网络适配器:Host-Only 或自定义 VMnet,能互 ping
克隆现有 Ubuntu 即可,不必重装;
右键已安装完成的系统,“管理”-》“克隆”
克隆后重新生成 MAC,改主机名和 IP。
右键克隆的系统,“设置”-》网络适配器-》高级-》生成,避免两台虚拟机mac冲突,重新生成mac地址后,IP地址会自动修改。
改完后,一台192.168.44.128,另一台为192.168.44.129
二、两台 VM 基础网络准备
Node A:
sudo hostnamectl set-hostname node-a
ip addr show ens33sudo ip addr add 192.168.44.128/24 dev ens33
ping 192.168.44.129
Node B:
sudo hostnamectl set-hostname node-bsudo ip addr add 192.168.44.129/24 dev ens33
ping 192.168.44.128
网卡名可能是 ens160 / eth0,以 ip addr 为准。
三、安装 RDMA 软件栈
两台都执行:
sudo apt updatesudo apt install -y \
rdma-core \
ibverbs-utils \
infiniband-diags \
rdmacm-utils \
perftest \
libibverbs-dev \
librdmacm-dev
检查内核支持:
grep RDMA_RXE /boot/config-$(uname -r)# 期望:CONFIG_RDMA_RXE=m 或 =y
四、加载 Soft-RoCE 并绑定网卡
两台都执行:
sudo modprobe rdma_rxe
lsmod | grep rdma_rxe
绑定到实际网卡(以 ens33 为例):
sudo rdma link add rxe_0 type rxe netdev ens33
rdma link show
正常输出类似:
link rxe_0/1 state ACTIVE physical_state LINK_UP netdev ens33
查看 verbs 层:
ibv_devices
ibv_devinfo -d rxe_0
五、跑第一个 RoCEv2 通信:ibv_rc_pingpong
1. 服务端(Node A)192.168.44.128
ibv_rc_pingpong -d rxe_0 -g 2
输出:
2. 客户端(Node B)192.168.44.129
ibv_rc_pingpong -d rxe_0 -g 2 192.168.44.128
输出:
通过pingpong测试两台虚拟机的RDMA通信正常。
七、用 rping 验证 RDMACM 建链
服务端:
rping -s -a 192.168.44.128 -v
客户端:
rping -c -a 192.168.44.128 -v -C 5
说明 RDMACM + RoCEv2 控制面也没问题。
八、跑带宽/延迟:perftest
1)ib_send_bw测试RDMA SEND 操作的带宽。
服务端:
ib_send_bw -d rxe_0 -x 2
客户端:
ib_send_bw -d rxe_0 -x 2 192.168.44.128
测试原理如下:
2)ib_read_bw测试读带宽
读带宽:
ib_read_bw -d rxe_0 -x 2
ib_read_bw -d rxe_0 -x 2 192.168.44.128
测试原理如下:
3)写带宽测试ib_write_bw:
ib_write_bw -d rxe_0 -x 2 --report_gbits
ib_write_bw -d rxe_0 -x 2 --report_gbits 192.168.44.128
测试原理如下: