DPDK开发环境搭建(学会了步骤适合各版本)
一、版本的选择
首先要说明的是,对于生产来说DPDK版本不是越高越好,如何选择合适的版本?
1、要选择长期支持的版本LTS(Long Term Support)
2、根据当前开发的系统环境选择
可以在以下文档里从高至低查看不同版本的System Requirements章节,它对kernel、glibc等限制有详细说明。
http://core.dpdk.org/doc/archives/
我开发是在CentOS7.3 64位,最后选用dpdk-18.11版本。如果你的软件需要同时在不同系统运行,选对版本后续能省不少事。

二、虚拟机配置要求
我使用vmware虚拟机,调研了几款虚拟机发现在windows下只能vmware能模拟出多队列的网卡,如果有发现其他虚拟机能模拟请给我留言。
1、核心:我配置4个。至少有2个以上核心,方便后续程序做线程孤立和绑定。
2、内存:我一般配置3G,为了配置hugepage,多分点比较好。可根据实际情况配置。
3、网卡:需要支持dpdk,我选择vmnet3,它支持多队列。端口至少2个以上,且要求驱动为dpdk支持的,
三、dpdk的安装
1、下载源码
http://fast.dpdk.org/rel/dpdk-18.11.7.tar.xz
2、设置环境变量(18.11版本不需要)
旧版本安装时需要在dpdk根目录执行t以下命令,如果重新登录需要再执行一次,18.11版本不需要,安装脚本里写好了,这里只是记录以下。
64位系统:
export RTE_SDK=`pwd`
export RTE_TARGET=x86_64-native-linuxapp-gcc
32位系统:
export RTE_SDK=`pwd`
export RTE_TARGET=i686-default-linuxapp-gcc
3、利用setup.sh进行配置
cd dpdk-stable-18.11.7/usertools
source ./dpdk-setup.sh
1)编译dpdk
编译完提示以下信息:查资料显示没有指定安装路径,我们只是编译而不是install就不用理会。
2)插入IGB UIO模块
3)设置大页内存
默认设置的是2M的大页内存,这里输入1024,表示申请2G的大页内存。由于虚拟机里只有一个node,这里只需要设置node0
查看配置的大页内存
4)查看网卡/加解密设备信息,这里我们只有网卡信息
若报以下错误,是因为没有安装lspci导致,安装解决:yum install pciutils -y
Traceback (mostrecent call last):
File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 576, in <module>
main()
File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 572, in main
get_nic_details()
File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 248, inget_nic_details
dev_lines =check_output(["lspci", "-Dvmmn"]).splitlines()
File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 125, in check_output
stderr=stderr).communicate()[0]
File "/usr/lib64/python2.7/ subprocess.py", line 711, in__init__
errread, errwrite)
File"/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2]No such file or directory
5)绑定设备
输入pci的地址, 输入0000冒号后面的几位输入就行了,这里将03:00.0和0b:00.0绑定。但我遇到过需要完整输入才能绑定的情况,如果绑定失败就都试试。
注:绑定的时候可以能有个错误的提示如下;
因为是你当前的对应的网卡端口处于up状态,所以你要执行ifconfig xxx down命令将其关闭,关闭后再重新执行一下上面的绑定操作。注意为了跑测试用例至少要绑定两个端口
再次查看,发现已经绑定到dpdk驱动了。
6)运行testpmd测试程序
输入0xf代表程序运行在0~3核心
如果提示以下错误,是因为大页内存分配不够,尝试分配多一些再试,若还不行重启虚拟机再试试。
testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=171456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc EAL: Error - exiting with code: 1 Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate memory
start开始抓包, 用发包工具对网卡发包(我在windows下使用xcap对虚网卡发包)
stop停止抓包,并查看收发情况
这说明dpdk收到了1000个包,同时转发出去了1000个包,已正常运行。
DPDK开发环境搭建(学会了步骤适合各版本)的更多相关文章
- Qt开发环境搭建 - Windows + VS2010 + VS插件
Qt 开发环境搭建 - Windows+VS2010+VS插件 1.Qt在Windows平台下的三种开发环境 方案 编辑器 编译器 调试器 一 Qt Creator MinGW GDB 二 Qt Cr ...
- Java基本开发环境搭建(适合第一次使用)
Java基本开发环境搭建(适合第一次使用) 编写人:cc 阿爸 2013-10-17 一.开发工具获取 1.开发工具包JDK l 下载地址: 到ORACLE公司官方网站(http://www.ora ...
- 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)
用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...
- [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题) 网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...
- Android开发环境搭建步骤-【Android】
本教程是android开发环境在windows下的安装配置,经本人测试完全正确无误.这个教程是史上最详细的android开发环境搭建教程. 工具/原料 Eclipse 3.7.0.Java Jdk6. ...
- HBase、Hive、MapReduce、Hadoop、Spark 开发环境搭建后的一些步骤(export导出jar包方式 或 Ant 方式)
步骤一 若是,不会HBase开发环境搭建的博文们,见我下面的这篇博客. HBase 开发环境搭建(Eclipse\MyEclipse + Maven) 步骤一里的,需要补充的.如下: 在项目名,右键, ...
- Android开发环境搭建相关文章列表(转载)
Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...
- 转:Qt 嵌入式开发环境搭建
地址: http://www.cnblogs.com/lishixian/articles/3013897.html 作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅 ...
- GTK+开发环境搭建
GTK+开发环境搭建 "工欲善其事,必先利其器"首先介绍一下GTK+开发环境的搭建,网上很多所谓的GTK的开发环境的搭建基本都是抄来抄去,也不知道有没有人使用他们介绍的方法搭建并编 ...
随机推荐
- 解决Oracle在命令行下无法使用del等键问题
前言: Oracle使用Linux命令行进行编辑? 有PL/SQL development,SQL development等工具,为何用Linux命令行? 但也免不了有用的的时候 以下是解决在Linu ...
- ReportEventA 错误 ERROR_CRC
如果 level 的宏弄错了,就会出现这种奇怪的现象.
- 虚拟化KVM之安装(二)
安装KVM虚拟化 1.系统基础环境: [root@linux-node1 ~]# ip addr | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' ...
- Spring Boot @EnableAutoConfiguration和 @Configuration的区别
Spring Boot @EnableAutoConfiguration和 @Configuration的区别 在Spring Boot中,我们会使用@SpringBootApplication来开启 ...
- KVM虚拟化平台环境部署
一:安装依赖包 二:配置网卡 三:配置环境 实验环境: KVM01 192.168.200.10 关闭防火墙及相关的安全机制 [root@KVM01 ~]# systemctl stop fire ...
- C语言实现数组循环左移
c语言实现数组左移: 例如输入: 8 3 1 2 3 4 5 6 7 8 输出: 4 5 6 7 8 1 2 3 #include <stdio.h> int main(int argc, ...
- 定了,这个vue.js开源项目,面试时,一定会考问
因为现在的网店,都是用的商城系统, 而实体店都是入座后,扫码打开网上商城进行选购(餐饮,超市等),所以,vue.js迅速开发网上购物商城系统成为了香饽饽, 本人开源2020年4月开发的购物商城系统, ...
- 网课应该这么刷(油猴Tampermonkey脚本自动刷课)
懒人福利 首先有些人不想学怎么用脚本,满足你们,压缩包解压之后直接登录即可.戳我下载 脚本已经集成好了,登录即可刷课.章节测试还会自动答题呦,正确率高达97%呦. 油猴及脚本安装 油猴的脚本不知可以刷 ...
- C++ 快读快写
inline int read() { int s=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; c ...
- 谷歌OKR指导手册 (译)
这是一本关于 OKR 迷你小册子,名为<google OKR playbook>,由 www.whatMatters.com 网站发布. 该网站由John Doerr 团队经营, 而Joh ...