dpdk版本、网卡驱动版本、网卡固件版本、网卡型号之间有着强依赖的关系。特别是一些新网卡,容易出现一些版本不匹配的问题。我们可以先通过ethtool -i eth0命令和lspci -vvv -s [bus-info] | grep -i product命令来查看网卡的型号和固件版本。然后到mlx官网查看ofed各版本支持的网卡型号,如ofed-5.0只支持较低版本的cx6 dx固件。
对于cx6 dx网卡,建议还是使用ofed-5.4版本,不然可能会出现各种各样的问题。确定好ofed版本之后,再去dpdk官网确定dpdk版本即可。特别需要注意的是dpdk-19.11开始支持cx6 dx网卡,所以如果用小于19.11的版本部署在cx6网卡上,dpdk将无法接管网卡。
所以理论上,cx6 dx网卡搭配ofed-5.4和dpdk19.11就可以了,但是实际上咨询过mlx官方人员,建议ofed-5.4搭配dpdk-20.11使用,可能是19.11有一些bug吧。dpdk-20.11编译方式跟之前的版本差别挺大的,20.11编译需要使用meson和ninja,meson需要python3.5以上的版本,3.7当然也可以,我准备使用python3.7,由于线上环境复杂,我想实现一个自动化脚本,可以从python3开始自动化编译dpdk,实现过程中遇到了很多坑,在这里记录一下。
- 编译python3.7.8之后,使用pip3会报pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available,原因是python3.7和低版本的openssl不兼容,需要更新openssl到1.1以上
- 安装新版本的openssl后,执行openssl version报version `OPENSSL_1_1_1’ not found (required by openssl),原因是openssl动态库找不到了,需要将LD_LIBRARY_PATH重新指向新编译的openssl库。
- 编译python3.7之前,需要安装apt-get install libffi-dev,否则python3后面使用的时候会报No module named ‘_ctypes’ when using Value from module multiprocessing
#! /bin/bash
set -x
DPDK_VERSION=20.11.1
HOME_DIR=/root/
DPDK_XZ=dpdk-${DPDK_VERSION}.tar.xz
DPDK_TAR=dpdk-${DPDK_VERSION}.tar
DPDK_DIR=dpdk-stable-${DPDK_VERSION}
OPENSSL_TAR=OpenSSL_1_1_1d.tar.gz
OPENSSL_DIR=openssl-OpenSSL_1_1_1d
PY3_VERSION=3.7.8
PY3_XZ=Python-${PY3_VERSION}.tar.xz
PY3_TAR=Python-${PY3_VERSION}.tar
PY3_DIR=Python-${PY3_VERSION}
log_path="/var/log/build.log"
function logger() {
local msg=$1
local DATE=`date +"%F %T"`
echo -e "[DPDK] ${DATE}: ${msg}" >> ${log_path}
echo "[DPDK] ${DATE}: ${msg}"
}
function download_pkg() {
# 可以把安装包上传到公司内部的存储服务器上
}
function install_openssl() {

最低0.47元/天 解锁文章
1241

被折叠的 条评论
为什么被折叠?



