Centos 安装dpdk

本文详细介绍了如何下载和安装DPDK20.05,包括配置环境变量、安装必要的依赖,解决内核版本与DPDK模块版本不一致及igb_uio模块问题,以及使用dpdk-devbind.py进行接口绑定和测试。最后提供了helloworld示例的编译和运行步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 下载dpdk安装包


DPDK
下载 dpdk-20.05.tar.gz
解压到本地目录/home下: tar -xvf dpdk-20.05.tar.gz

2. 环境变量配置:


在dpdk-20.05下,创建一个dpdkenv的文件,在里面填充如下内容:

export RTE_SDK='/usr/local/dpdk-20.05'  (pwd为你dkdk的解压目录), (注意中英文符号)
export RTE_TARGET=x86_64-native-linuxapp-gcc   (对于64位机用这个命令,对于32
位机用i686-native-linuxapp-gcc)

执行一下 source dpdkenv.
查看环境变量是否设置好:env |grep RTE

3. 安装依赖

yum -y install gcc  //安装gcc环境

yum install numactl-devel*x86_64  //安装numa.h相关库即可解决

modprobe uio   //uio模块没有加载

4 遇到的问题:

1. 内核版本和dpdk的模块版本不一致导致的,修改为正确的版本

1 #cat /etc/redhat-release
2 CentOS Linux release 7.6.1810 (Core)
4 #uname -r 查看一下系统版本
5 3.10.0-957.el7.x86_64
6 #rpm -qa kernel 通过rpm命令查看我所安装的内核版本
7 kernel-3.10.0-957.el7.x86_64
8 #ls /usr/src/kernels/ 查看有没有相应的内核开发包
9 空 如果该目录下没有系统内核源码,执行以下操作
10 #yum install kernel-devel 安装内核头文件后
11 #ls /usr/src/kernels/
12 3.10.0-1062.12.1.el7.x86_64
13 两个版本号不一致,进行升级并重启
18 #yum -y update kernel kernel-devel
19 #reboot
20 再此查看,版本号一致,问题解决
21 #ls /usr/src/kernels/
22 3.10.0-1062.12.1.el7.x86_64
23 #uname -r
24 10.0-1062.12.1.el7.x86_64

2. 即使安装了uio之后有可能在执行安装脚本的时候还会遇到问题

原因:

dpdk编译后无igb_uio.ko或安装Insert IGB UIO module失败
自v20.02版本以后,DPDK就默认关闭igb_uio模块。若构建它,需要配置文件选项CONFIG_RTE_EAL_IGB_UIO设置为enabled。并且官方已计划将其移到其他项目。


解决办法:
一是配置文件dpdk/config/common_base中开启该配置CONFIG_RTE_EAL_IGB_UIO=y,注意这个文件是全局配置。如果仅修改局部的编译,可以在编译时各自文件夹dpdk/x86_64-native-linux-gcc/.config文件中对应修改该参数。本文采用v20.02版本,系统内核3.10,可以正常编译出igb_uio.ko文件。(调试DPDK可开启参数CONF_RTE_LIBRTE_CRYPTODEV_DEBUG=y)

$ vi config/common_base
#修改CONFIG_RTE_EAL_IGB_UIO=y
#:wq

3. 在dpdk接管接口时提示not modifying

解决办法:ifconfig ens33 down //需要接管的接口down掉

5 通过dpdk提供的脚本安装dpdk

到 /usr/local/dpdk-19.02/usertools目录下,执行./dpdk-setup.sh,依次选择执行以下操作:

1. 配置编译环境:

[38] x86_64-native-linuxapp-gcc

2.加载igb_uio模块

3.配置大页

4.绑定网卡:

需要使用命令查看接口信息并将接口down掉

6 验证接口接管情况

接口已经成功被dpdk接管

[root@nll-waf-dev-2 usertools]# ./dpdk-devbind.py --status

Network devices using DPDK-compatible driver
============================================
0000:00:04.0 'Virtio network device 1000' drv=igb_uio unused=virtio_pci

Network devices using kernel driver
===================================
0000:00:03.0 'Virtio network device 1000' if=eth0 drv=virtio-pci unused=virtio_pci,igb_uio *Active*

7 测试dpdk

完成以上内容环境就配置完成了,下面我们来测试一下,测试程序在/usr/local/dpdk-20.05/example/helloworld目录下:

  1. 在dpdk-20.05/目录下 配置环境变量:source dpdkenv

  2. 在dpdk-20.05/example/helloworld/目录下 编译:make,之后生成一个build目录

  3. 执行可执行文件:./build/helloworld

7 到此安装完成

### 安装配置 DPDK 的过程 #### 准备工作 为了确保顺利安装,在开始之前需要确认已经准备好必要的工具和依赖项。对于网络接口卡(NIC)的绑定操作,`<DPDK_DIR>/usertools/dpdk-devbind.py` 脚本被用来将网卡设备从默认驱动切换到适合DPDK使用的UIO或VFIO驱动[^1]。 #### 安装基础软件包 由于 `ifconfig` 工具不再预装于现代Linux发行版中,因此建议先通过命令 `yum install net-tools.x86_64` 来安装该工具以便后续使用。另外,考虑到编译需求,还需要安装GCC编译器(`yum -y install gcc`)以及C++支持组件(`yum -y install gcc-c++`)。鉴于DPDK涉及底层硬件交互,故而也需要准备相应的内核源码或者开发包以供驱动程序编译所需[^2]。 #### 下载并解压 DPDK 源代码 获取最新版本的DPDK压缩包后将其放置在一个合适的位置,接着执行如下指令完成解压缩处理: ```bash tar -xvf dpkg-xx cd dpdk-stable-20.11.3 ``` 这里假设下载的是稳定分支中的特定版本号为20.11.3的文件[^5]。 #### 构建与安装 采用Meson构建系统来进行项目初始化,并指定参数 `-Dexamples=all` 表明要一同编译所有示例应用。随后进入生成的目标环境目录 `build` 中继续下一步骤: ```bash meson -Dexamples=all build cd build sudo ninja-build install ``` 注意这里的 `ninja-build` 命令同样可以用简单的 `ninja` 替代。 #### 配置大页面内存(Hugepages) 为了让应用程序能够高效访问大量连续物理地址空间,通常会设置一定数量的大页面作为缓冲区。具体方法可参见相关文档说明。 #### 使用dpdk-setup.sh脚本简化流程 除了上述手动方式之外,还可以利用随同发布的自动化脚本 `dpdk-setup.sh` 进行快速部署。这种方式相对更加便捷直观,尤其适用于初次接触此项目的开发者们[^3]。 #### 创建目标环境后的资源位置 成功创建好目标环境之后,可以在相应路径找到一系列重要的组成部分,比如位于 `x86_64-native-linuxapp-gcc` 文件夹内的各类库文件和支持模块(PMD轮询模式驱动),还有存放在 `build/app` 子目录里的测试用途的应用实例(test, testpmd)[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值