如何在VMWare虚拟机里把DPDK跑起来?

本文详细介绍如何在Ubuntu 16.04 Server版上通过VMware安装并配置双网卡,实现DPDK的环境搭建及测试流程。涵盖网卡配置、系统启动参数调整、DPDK编译安装、环境变量设定等关键步骤。

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


一、环境准备

VMware + Ubuntu 16.04 Server版本


二、DPDK环境搭建

2.1 vmware 添加两块网卡

在这里插入图片描述
要把DPDK运行起来,需要两块网卡,因此我们需要查看我们的虚拟机是否已经有了两块网卡,如果没有则添加;添加网卡的时候建议把网卡网络连接设置为“桥接模式(B)”。

桥接网卡作为 DPDK运行的网卡。 NAT网卡作为ssh连接的网卡。


2.2 修改网卡配置信息

在这里插入图片描述
1)找到我们虚拟机上的.vmx文件,并打开文件;
2)把ethernet0.virtualDev由e1000修改为vmxnet3,因为VMware的vmxnet3支持多队列网卡;
3)把ethernet0.vwakeOnPcktRcv修改为TRUE。


修改完成后,我们使用 ifconfig来查看添加的网卡是否已经在列表中:
在这里插入图片描述

如果不在,我们需要在文件中添加新增的网卡信息,使用命令vim /etc/network/interfaces打开文件添加:
在这里插入图片描述

interfaces文件,只有一个网卡时默认只有eth0,如果新增后,需要添加新的配置,比如上图增加了3块网卡就需要配置eth1,eth2,eth3。

说明:如果使用 ifconfig命令查看网卡信息的时候,显示的不是eth0,而是es33(或者是其他名字),那么我们可以通过修改配置文件把es33改为eth0。

具体操作为:
1)使用 vim /etc/default/grub打开grub文件;
2)在 GRUB_CMDLINE_LINUX参数,添加 net.ifnames=0 biosdevname=0,使得网卡名称从0开始命名。

在这里插入图片描述


2.3 修改 ubuntu 系统的启动参数

在这里插入图片描述
1)物理机

default_hugepages=1G hugepagesz=1G hugepages=20 isolcpus=0-7


2)虚拟机

default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2


2.4 查看系统是否支持多队列网卡

可以通过执行cat /proc/interrupts查看系统是否支持多队列网卡。
在这里插入图片描述
如果有看到类似上图红框内的eth1列表,表示支持多队列网卡。


三、编译DPDK

1)DPDK下载网址: https://core.dpdk.org/download/
在这里插入图片描述

2)随便挑选版本,不同版本直接子系统接口会有差异,这里我们建议选择 dpdk 19.08.2。不过,需要注意的是,DPDK不同版本间的接口差异还是比较大的。
在这里插入图片描述


3)可以通过 ./usertools/dpdk-setup.sh进行编译
在这里插入图片描述
64 位系统选择 39.
在这里插入图片描述
编译完会多出 x86_64-native-linux-gcc 的文件夹。


四、设置DPDK的环境变量

#export RTE_SDK=/home/dpdk
#export RTE_TARGET=x86_64-native-linux-gcc


五、执行testpmd测试

执行:# /usertools/dpdk-setup.sh
在这里插入图片描述
然后:
1)选择 43 插入 IGB_UIO 模块, 选择网卡为 vmxnet3 会加载此模;
2)选择 44 插入 VFIO 模块,选择网卡为 e1000 会加载此模块;
3)选择 49 绑定 igb_uio 模块, 也可以退出;

如果执行49的时候,提示如下图信息:
在这里插入图片描述
在这里插入图片描述

可以通过后面的命令来解决:

# ifconfig eth0 down
# /usertools/dpdk-devbind.py --bind=igb_uio eth0

4)选择 53 运行 testpmd
在这里插入图片描述
> show port info 0
**加粗样式**


六、编译DPDK程序

1)进入example/helloworld;
2)可以直接执行 make进行编译,也可以通下面的gcc命令编译:

# gcc -o helloword main.c -I /usr/local/include/dpdk/ -ldpdk -lpthread -lnuma -ldl

在这里插入图片描述
编译后,直接执行 ./helloworld 就可以把程序跑起来了。

七、运行DPDK案例

Kni 运行:

./build/kni -l 4-7 -n 4 -- -P -p 0x3 -m --config="(0, 4, 6),(1, 5, 7)"

L3fwd 运行

# ./build/l3fwd -l 4-7 -n 4 -- -p 0x3 --config="(0, 0, 4),(1, 0, 5)" --parse-ptype

在这里插入图片描述

八、常见错误

错误信息:
在这里插入图片描述
原因:没有设置环境变量;请查看本篇《设置 dpdk 的环境变量》
在这里插入图片描述
bitmask 请选择 7, bit:111
在这里插入图片描述

<think>好的,我现在需要回答用户关于在CentOS虚拟机上配置DPDK的方法和步骤的问题。首先,我得仔细回顾用户提供的引用内容,确保回答准确。用户引用了三个资源,其中引用[2]详细介绍了使用dpdk-setup.sh安装DPDK的步骤,而引用[3]提到了安装CentOS虚拟机的步骤,引用[1]则涉及DPDK环境的目录结构。 首先,我需要确认用户的需求是在已经安装好的CentOS虚拟机上配置DPDK,所以可能需要先确认虚拟机的安装是否正确,不过引用[3]是关于安装虚拟机的基本步骤,但用户可能已经完成了这一步。因此,重点应放在DPDK的配置上,特别是使用dpdk-setup.sh脚本的方法,如引用[2]所述。 接下来,我需要整理DPDK配置的主要步骤。根据引用[2],步骤包括下载DPDK、安装依赖项、解压并进入目录、运行dpdk-setup.sh脚本、配置大页内存、绑定网卡驱动等。同时,引用[1]提到目标环境目录的结构,可能需要说明编译后的文件位置,如build/app目录下的测试程序。 需要注意用户可能的环境差异,比如CentOS版本是否为7,是否需要特定的内核模块或驱动。此外,用户可能对某些步骤不熟悉,比如绑定网卡到vfio-pci驱动,可能需要详细说明或注意事项,例如如何避免网络中断,或者如何恢复原有驱动。 另外,引用[3]中提到的虚拟机设置可能需要配置足够的内存和CPU资源,特别是大页内存的设置,这在虚拟机环境中可能需要额外的步骤,比如在VMware或VirtualBox中启用大页内存支持。不过用户提供的引用中没有详细说明这部分,可能需要根据通用知识补充。 需要检查步骤之间的逻辑顺序,确保先安装依赖,再编译DPDK,然后配置环境。同时,测试步骤如testpmd的使用,应指导用户如何验证DPDK是否正常工作。 可能遇到的问题包括依赖包安装失败、编译错误、网卡绑定失败等,应在回答中适当加入常见问题解决建议,比如确保所有依赖已安装,检查内核版本兼容性,或者使用合适的驱动绑定工具。 最后,生成的相关问题需要围绕DPDK配置的后续步骤、优化方法或应用场景,例如性能调优、多线程配置或具体应用案例。 总结回答的结构:先概述步骤,再分步详细说明,包含代码块和命令示例,注意使用正确的LaTeX格式,最后生成相关问题。需要确保所有技术术语准确,步骤清晰,并正确引用提供的资料。</think>### 在 CentOS 虚拟机中配置 DPDK 的方法和步骤 #### **1. 环境准备** - **操作系统**: CentOS 7(需已安装虚拟机,参考引用[3]中虚拟机创建步骤) - **硬件要求**: 至少 2 核 CPU、2GB 内存,建议开启虚拟化支持(如 Intel VT-x/AMD-V) - **网络配置**: 至少一个虚拟网卡(建议使用 Virtio 驱动) #### **2. 安装依赖项** ```bash sudo yum groupinstall "Development Tools" sudo yum install -y kernel-devel numactl-devel python3 pciutils ``` #### **3. 下载并解压 DPDK** 从 [DPDK官网](https://core.dpdk.org/download/) 下载最新稳定版(如 22.11.2): ```bash wget https://fast.dpdk.org/rel/dpdk-22.11.2.tar.xz tar xf dpdk-22.11.2.tar.xz && cd dpdk-22.11.2 ``` #### **4. 编译 DPDK** 使用 `dpdk-setup.sh` 脚本自动化配置(参考引用[2]): ```bash export RTE_SDK=$(pwd) export RTE_TARGET=x86_64-native-linuxapp-gcc make config T=$RTE_TARGET make -j$(nproc) ``` #### **5. 配置大页内存** - 修改内核参数: ```bash echo "vm.nr_hugepages=1024" | sudo tee -a /etc/sysctl.conf sudo sysctl -p ``` - 挂载大页内存: ```bash sudo mkdir -p /mnt/huge echo "nodev /mnt/huge hugetlbfs defaults 0 0" | sudo tee -a /etc/fstab sudo mount -a ``` #### **6. 绑定网卡到 DPDK 驱动** - 查看网卡 PCI 地址: ```bash lspci | grep Ethernet ``` - 解绑内核驱动并绑定 `vfio-pci`: ```bash sudo modprobe vfio-pci sudo ./usertools/dpdk-devbind.py --bind=vfio-pci <PCI_ADDRESS> ``` #### **7. 验证环境** 进入编译目录并运行测试程序: ```bash cd build/app sudo ./testpmd -l 0-1 -- -i ``` 若输出显示端口初始化成功,则配置完成[^1][^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值