Appearance
MXRDMA 网卡配置
安装 MXRDMA OFED、内核与用户态驱动,并配置 IP 和无损网络。
返回网卡配置索引 | 上一篇:RoCE 无损网络参数配置 | 下一篇:Kylin V11 RDMA 网卡配置
对于C600/N300自带的MXRDMA网卡,单独在这一章节进行系统说明,包括驱动安装、网卡及交换机配置。
MXRDMA网卡兼容doca_ofed/mlnx_ofed驱动,需要提前安装ofed驱动。
MXRDMA网卡和C600/N300为同一个实体卡,和GPU使用同一套驱动。
OFED安装
流程图

检测是否安装ofed
执行命令ofed_info 可看到有打印,即为已经安装,如下图。

没有安装的话,打印如图。

下载doca_ofed安装包
DOCA-OFED 下载方式可参考 Mellanox 网卡驱动安装,安装流程请参考下述章节。
注意:最新的doca3.3.0和之后的版本还在适配中,请使用doca3.2.1和之前的版本
安装doca_ofed包
注意:安装doca_ofed之前,如果安装了metax driver 需要先卸载(sudo rmmod metax_rdma metax)
sudo dpkg -i doca-host_***.deb
sudo apt update
sudo apt install doca-ofed -y
sudo rmmod metax_rdma metax
sudo /etc/init.d/openibd restart # 建议在BMC中执行此命令
sudo update-initramfs -u -k all # 重新生成initramfs
看到OK表示安装完成。
注意:如果安装完成发现机器连不上,可以等待5分钟,仍然连不上可以使用bmc进行强制重启,因为安装doca_ofed会重置某些机器的网卡
如需卸载可执行下面命令
sudo apt-get autoremove doca-ofed -yMXRDMA驱动安装
MXRDMA网卡配置
添加udev规则
bash
sudo vim /etc/udev/rules.d/70-metax-eth.rules#for metax eth
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="METAX", \
ATTRS{vendor}=="0x9999", \
PROGRAM+="/bin/bash -c 'mkdir -p /tmp/eth_$id'", \
PROGRAM+="/bin/bash -c 'lspci -Dd 9999: > /tmp/eth_$id/metax_eth0'", \
PROGRAM+="/bin/bash -c 'sort /tmp/eth_$id/metax_eth0 -k 1,1 > /tmp/eth_$id/metax_eth1'", \
PROGRAM+="/bin/bash -c 'nl -n rz -w1 -s: -v0 /tmp/eth_$id/metax_eth1 > /tmp/eth_$id/metax_eth2'", \
PROGRAM+="/bin/bash -c 'grep -n $id /tmp/eth_$id/metax_eth2 > /tmp/eth_$id/metax_eth3'", \
PROGRAM+="/bin/bash -c 'cut -d: -f2 /tmp/eth_$id/metax_eth3'", \
NAME="metax_eth_%c", \
RUN+="/usr/sbin/sysctl -w net.ipv4.conf.$name.accept_local=1", \
RUN+="/usr/sbin/sysctl -w net.ipv4.conf.$name.arp_ignore=1", \
RUN+="/usr/sbin/sysctl -w net.ipv4.conf.$name.arp_announce=2", \
RUN+="/usr/sbin/sysctl -w net.ipv6.conf.$name.disable_ipv6=1"重载入udev规则
bash
sudo udevadm control --reload-rules安装MXRDMA内核驱动
注意:使能MXRDMA功能,需要满足版本限制: SDK release >= 3.4.0.9,vbios版本>=1.4.2.0。
在获取到metax-driver安装包后,以metax-driver-3.7.1.0-deb-x86_64.run 为例:
执行安装命令:
bash
sudo bash ./metax-driver-3.7.1.0-deb-x86_64.run -- -m rdma即可安装RDMA的内核驱动模块。

若无其它限制,安装完毕后重启机器,即可正常加载相关内核模块。
若当前环境不能断电重启,则执行以下命令序列,实现手动加载内核模块。
sudo rmmod metax_rdma
sudo rmmod metax
sudo modprobe metax disable_eth=0
sudo modprobe metax_rdma- 研发使用时,如果是手动insmod 需要添加参数disable_eth=0 来开启eth功能
内核模块metax_rdma加载以后,需要检查dmesg内容,确定有无报错。
例如下图这种错误输出,则需要反馈给kmd同事

此外,在安装过程中如遇到如下报错

则可以通过执行sudo apt install autoconf automake -y 加以解决, 解决后 重新执行metax-driver 驱动安装。
安装MXRDMA用户驱动库
首先执行 ls /usr/local/lib -l 查看下图中的文件是否存在。

若文件已存在,则跳过后续操作;
若文件不存在,则表示还未安装,则依照下述说明进行处理。
操作步骤:
- 获取软件压缩包
在内网浏览器中打开https://devopsportal.metax-internal.com/#/artifactory/maca3.0/maca-master-3.0
网页,下载所需版本的MXRDMA 安装包。

- 执行安装操作
解压上述压缩包得到安装文件后,进入所属目录,执行 sudo ./mxrdma-install.sh 即可。

MXRDMA网卡IP配置
总体思想,给每个网卡分配ip地址到不同的网段。并添加路由策略使其跨网段互通。
netplan方式配置ip地址
针对Ubuntu/Debian Linux及其延伸版本系统。
ubuntu系统使用netplan配置,配置参考如下:
bash
sudo vim /etc/netplan/02-metax-eth-all.yaml- 实际配置时请替换下面脚本中的IP地址最后一段为对应机器的IP。
举例:下面的配置是给10.0.232.37机器的ETH配置文件,所有ETH网段的最后一段IP为37。
network:
ethernets:
ens43f0np0:
addresses: [10.0.232.37/24]
gateway4: 10.0.232.1
nameservers:
addresses: [10.2.129.6]
ens123np0:
dhcp4: false
addresses: [192.168.10.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.10.254
table: 200
routing-policy:
- from: 192.168.10.37
table: 200
priority: 30000
ens120np0:
dhcp4: false
addresses: [192.168.20.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.20.254
table: 201
routing-policy:
- from: 192.168.20.37
table: 201
priority: 30000
ens118np0:
dhcp4: false
addresses: [192.168.30.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.30.254
table: 202
routing-policy:
- from: 192.168.30.37
table: 202
priority: 30000
ens121np0:
dhcp4: false
addresses: [192.168.40.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.40.254
table: 203
routing-policy:
- from: 192.168.40.37
table: 203
priority: 30000
ens122np0:
dhcp4: false
addresses: [192.168.50.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.50.254
table: 204
routing-policy:
- from: 192.168.50.37
table: 204
priority: 30000
ens116np0:
dhcp4: false
addresses: [192.168.60.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.60.254
table: 205
routing-policy:
- from: 192.168.60.37
table: 205
priority: 30000
ens117np0:
dhcp4: false
addresses: [192.168.70.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.70.254
table: 206
routing-policy:
- from: 192.168.70.37
table: 206
priority: 30000
ens119np0:
dhcp4: false
addresses: [192.168.80.37/24]
mtu: 9000
routes:
- to: default
via: 192.168.80.254
table: 207
routing-policy:
- from: 192.168.80.37
table: 207
priority: 30000
version: 2配置完毕执行sudo netplan apply, 网卡才能UP
如果执行过程断网,需要bmc重启机器
NetworkManager方式配置ip地址
针对RHEL/CentOS/Rocky Linux及其延伸版本(KYLIN ALINUX3等)。
配置arp策略:
bash
sudo vim /etc/NetworkManager/dispatcher.d/pre-up.d/10-ifcfg-metax-eth-arp.sh
sudo chmod +x /etc/NetworkManager/dispatcher.d/pre-up.d/10-ifcfg-metax-eth-arp.sh添加内容如下
#!/bin/bash
if [ "$2" != "pre-up" ]; then
exit 0
fi
file_regex='^/etc/sysconfig/network-scripts/ifcfg-([^/]+)$'
[[ "$CONNECTION_FILENAME" =~ $file_regex ]] || exit 0
device_name=$(grep DEVICE $CONNECTION_FILENAME | cut -d '=' -f2)
vendor_id=$(cat /sys/class/net/$device_name/device/vendor)
case "$vendor_id" in
0x9999)
{
echo "############metax eth pre-up ############"
echo "device_name $device_name vendor_id $vendor_id"
sysctl -w net.ipv4.conf.$device_name.accept_local=1
sysctl -w net.ipv4.conf.$device_name.rp_filter=2
sysctl -w net.ipv4.conf.$device_name.arp_ignore=1
sysctl -w net.ipv4.conf.$device_name.arp_announce=2
sysctl -w net.ipv6.conf.$device_name.disable_ipv6=1
} > /dev/kmsg
;;
esac配置IP地址:
使用下面脚本配置:
脚本每次只能配置一张网卡
例如 10.0.232.37机器配置网卡metax_eth_0
bash
sudo ./set_network_manager.sh metax_eth_0 192.168.10.37/24 192.168.10.254 192.168.10.0/24 10例如 10.0.232.37机器配置网卡metax_eth_1
bash
sudo ./set_network_manager.sh metax_eth_0 192.168.20.37/24 192.168.20.254 192.168.20.0/24 20例如 10.0.232.37机器配置网卡metax_eth_2
bash
sudo ./set_network_manager.sh metax_eth_0 192.168.30.37/24 192.168.30.254 192.168.30.0/24 30#!/bin/bash
#./set_network_manager.sh netdev roce_ip roce_gateway roce_subnet route_table
#./set_network_manager.sh metax_eth_0 192.168.10.37/24 192.168.10.1 192.168.10.0/24 10
netdev=$1
roce_ip=$2
roce_gateway=$3
roce_subnet=$4
route_table=$5
connection_name="computenic_${netdev}"
nmconnections=$(nmcli -g UUID c s)
for connection in ${nmconnections}
do
nmdevice=$(nmcli c s ${connection} | grep connection.interface-name | awk '{print$2}')
if [ "$netdev" == "$nmdevice" ]; then
sudo nmcli con del ${connection}
fi
done
nmcli con add type ethernet con-name ${connection_name} ifname ${netdev}
nmcli con modify ${connection_name} ipv4.method manual ipv4.addresses ${roce_ip} ipv6.method disable connection.autoconnect yes +ipv4.routes "${roce_subnet} ${roce_gateway} table=${route_table}" +ipv4.routing-rules "priority 30000 from ${roce_subnet} table ${route_table}"
nmcli con up ${connection_name}无损参数配置
MXRDMA支持PFC/ECN功能:不支持多个优先级队列,只支持一个优先级队列。默认使用队列5,不需要配置
RDMA/PFC/ECN 使用Queue5
Ethernet Socket 使用Queue0
如果需要修改RDMA/PFC/ECN 队列,参考如下命令:
# cat /sys/class/infiniband/metax_rdma_0/pfc_ecn
pfc_enable(0 or 1):1
pfc_priority([1~7]):5
ecn_enable(0 or 1):1
ecn_dscp_priority([0~63]):40
example: echo "pfc_enable=0" > pfc_ecn
# echo "pfc_priority=1" > /sys/class/infiniband/metax_rdma_0/pfc_ecn
# echo "ecn_dscp_priority=8" > /sys/class/infiniband/metax_rdma_0/pfc_ecn注:如果配置,需要在所有的网卡metax_rdma_0-16全部配置。