目录

RDMA-02-容器测试

概述

实验的条件是机器有 Mellanox 的 RDMA 网卡,并且支持 RoCEv2,通过 Docker HostNetwork 以及 Macvlan 的方式测试,实验都是分别在两台物理机上分别创建一个容器来测试跨机通信的场景,测试的镜像 mofed421_docker 来自官方提供。

具体步骤

HostNetwork

这里的测试目的是让不同主机上的容器分别挂载主机的网卡(PF),测试 OFED 容器的 ib_write_bw。

1
2
3
4
# 容器1
docker run --rm --net=host --privileged -it mellanox/mofed421_docker:latest bash
# 容器2
docker run --rm --net=host --privileged -it mellanox/mofed421_docker:latest bash

创建容器之后检查一下相关的资源。

/rdma-02-%E5%AE%B9%E5%99%A8%E6%B5%8B%E8%AF%95/img.png
1
2
3
# 需要提前配置IP
ib_write_bw -d mlx5_0
ib_write_bw -d mlx5_0 -F --report_gbits 10.199.100.34
/rdma-02-%E5%AE%B9%E5%99%A8%E6%B5%8B%E8%AF%95/img_1.png

Macvlan

除了 HostNetwork 再另外测试一下其他虚拟网卡的方案,Macvlan 的细节不详解了。Macvlan 模式允许 Docker 容器直接连接到物理网络,从而实现对 SR-IOV 网卡的测试。先创建 Macvlan 网络,注意父网卡因为之前解了 bond,因此父网卡名是 eth0.1000,这里不做其他调整。

/rdma-02-%E5%AE%B9%E5%99%A8%E6%B5%8B%E8%AF%95/img_3.png /rdma-02-%E5%AE%B9%E5%99%A8%E6%B5%8B%E8%AF%95/img_6.png

subnet 和 gateway 分别为物理网络的子网和网关地址。

1
docker network create -d macvlan --subnet=10.199.100.0/24 --gateway=10.199.100.1 -o parent=eth0.1000 mynet

Macvlan 模式的网络配置需要按照物理网络的要求进行,包括子网、网关、IP 地址、MAC 地址等参数。经过 CMDB 检查,10.199.100.249和10.199.100.250两个 IP 没有分配出去,因此给两个容器分配这两个 IP。

1
2
docker run --privileged --net=mynet --ip 10.199.100.249 -it docker.xxx.com/public/mofed421_docker:latest bash
docker run --privileged --net=mynet --ip 10.199.100.250 -it docker.xxx.com/public/mofed421_docker:latest bash
1
2
3
4
# 在A容器启动服务端
ib_write_bw -d mlx5_0
# 在B容器启动客户端
ib_write_bw -d mlx5_0 -F --report_gbits 10.199.100.34
/rdma-02-%E5%AE%B9%E5%99%A8%E6%B5%8B%E8%AF%95/img_2.png

SR-IOV

测试 Docker 的 docker-sriov-plugin,测试的目的是让容器挂载 VF,然后验证 ofed 容器的 ib_write_bw。

1
2
docker network create -d sriov --subnet=194.168.1.0/24 -o netdevice=ens5f0v0 sriovnet
docker run --net=mynet --ip 10.199.100.250 --device=/dev/infiniband -it docker.xxx.com/public/mofed421_docker:latest bash

总结

分别测试了 HostNetwork/Macvlan/SR-IOV 挂载 PF/VF 的基础测试,证明了容器在测试机器下,可以正常使用到这些 RDMA 设备。

参考资料

  1. DOCKER ROCE MACVLAN NETWORKING WITH CONNECTX4/CONNECTX5
  2. 容器的SR-IOV
警告
本文最后更新于 2023年4月9日,文中内容可能已过时,请谨慎参考。