目录

Mellanox网卡配置

概述

本文主要介绍,如何在 OpenEuler 系统安装 Mellanox 网卡驱动。

安装驱动

可以在 OFED下载地址,找到对应版本的 OFED。安装是否成功有几个因素,跟操作系统的发行版本有关,另外就是也跟内核版本有关,因为安装脚本里会根据 OS 类型,也会指定内核版本,如果内核版本不满足安装脚本的要求,会要求你在本地环境,以当前内核版本重新编译 OFED,之后才会进行安装。

1
2
3
4
5
yum install -y createrepo libtool autoconf rpm-build kernel-rpm-macros automake
yum install -y kernel-modules-extra tcsh gcc-gfortran tk
./mlnxofedinstall --skip-distro-check --add-kernel-support

/tmp/MLNX_OFED_LINUX-5.9-0.5.6.0-4.18.0-240.el8.x86_64/MLNX_OFED_LINUX-5.9-0.5.6.0-rhel8.3-ext/mlnxofedinstall --force --skip-distro-check

创建虚拟网卡

1
2
3
4
# 确认设备是否支持sriov
mlxconfig -d /dev/mst/mt4117_pciconf0 q
# 注意vf也不适宜设置太大,有可能会导致系统内存无法分配,测试可以少创建一点
mstconfig -d 41:00.0 set SRIOV_EN=1 NUM_OF_VFS=4

关于Kubernetes的应用

mellanox/k8s-rdma-shared-dev-plugin 跟 SR-IOV 本身关系不算太大。

问题收集

无法安装OFED

1
2
/tmp/MLNX_OFED_LINUX-5.8-2.0.3.0-4.18.0-240.el8.x86_64/MLNX_OFED_LINUX-5.8-2.0.3.0-rhel8.3-ext/RPMS/libxpmem-2.6.4-1.58203.rhel8u3.x86_64.rpm does not exist
Failed to install MLNX_OFED_LINUX-5.8-2.0.3.0-rhel8.3-ext for 4.18.0-240.el8.x86_64

可能需要降低几个版本。

无法找到网卡

OFED 安装过程中,会对网卡的接口名进行修改,这里的修改与初始化机器的脚本不兼容,会导致重新 bond 网卡的时候会找不到合适的 slave 网卡,修改的方法可以将原来的 eth0/eth1 的接口文件的名字按照 OFED 默认的网络接口重命名,然后再重新执行网络初始化,最好关闭 NetworkManager,否则会有一些奇怪的问题产生。

libvma无法正常通信

不过,虽然 RDMA 性能优异,但是由于 RDMA 使用的 IB verbs 接口和常用的 POSIX socket 接口存在巨大的差异,普通应用要使用 RDMA 将面临着大量的业务改造,高效的将 RDMA 应用于现有业务存在较高的技术门槛。所以,历史上存在一些将 RDMA 的 IB verbs 语义封装成 socket 接口的尝试,典型如 rsocket、libvma。其中,libvma 通过 LD_PRELOAD 拦截 socket 接口,转而使用用户态 verbs 完成数据传输。但这些方案存在一些缺陷:由于转换发生在用户态,一方面缺少内核统一资源管理,另一方面在兼容性上也存在一些问题。从资源管理和兼容的角度上看,在内核中实现 socket 接口相比于用户态来说有着天然的优势。

socketperf

1
yum group install "Development Tools"

tcpdump无法抓包RoceV2

需要升级 libpcap 和 tcpdump,具体的步骤如下:

网络配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-ens5f0
cat > /etc/sysconfig/network-scripts/ifcfg-ens5f0 <<EOF
TYPE=Ethernet
NAME=ens5f0
UUID=18a2d929-6d75-4197-9c0f-3cf49a888878
DEVICE=ens5f0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
EOF

cp /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-ens5f1
cat > /etc/sysconfig/network-scripts//ifcfg-ens5f1 <<EOF
TYPE=Ethernet
NAME=ens5f1
UUID=e31f7996-1c69-4577-82a2-a2a1f2bf5fc9
DEVICE=ens5f1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
EOF

cat > ifcfg-ens6f0.1000 <<EOF
VLAN=yes
TYPE=Vlan
PHYSDEV=ens6f0
VLAN_ID=1000
REORDER_HDR=yes
GVRP=no
MVRP=no
HWADDR=
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.199.100.35
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens6f0.1000
UUID=43b69873-d49b-46a4-bac2-b1eb86e89d59
DEVICE=ens6f0.1000
ONBOOT=yes
EOF

参考资料

  1. 【RDMA】降CPU除RDMA (vbers)还有VMA ?|使用socket进行RDMA编程?
  2. RDMA网络最新技术-关于阿里巴巴的eRDMA技术
  3. MLNX VMA (消息加速) 模块-包含一些测试的案例和抓包的展示
  4. 基于可编程网卡的高性能数据中心系统-一篇对基础知识扫盲的博士论文
  5. 运行VMA-官网资料
  6. 《RDMA杂谈》专栏索引-全网最佳的RDMA中文文章
  7. RDMA 用什么抓包工具分析帧?-解答了一些基本的疑问
  8. ConnectX®-4 Lx EN Card官方说明书
警告
本文最后更新于 2023年1月20日,文中内容可能已过时,请谨慎参考。