一、版本的选择

首先要说明的是,对于生产来说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开发环境搭建(学会了步骤适合各版本)的更多相关文章

  1. Qt开发环境搭建 - Windows + VS2010 + VS插件

    Qt 开发环境搭建 - Windows+VS2010+VS插件 1.Qt在Windows平台下的三种开发环境 方案 编辑器 编译器 调试器 一 Qt Creator MinGW GDB 二 Qt Cr ...

  2. Java基本开发环境搭建(适合第一次使用)

    Java基本开发环境搭建(适合第一次使用) 编写人:cc 阿爸 2013-10-17 一.开发工具获取 1.开发工具包JDK l  下载地址: 到ORACLE公司官方网站(http://www.ora ...

  3. 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)

    用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...

  4. [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)

    MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)   网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...

  5. Android开发环境搭建步骤-【Android】

    本教程是android开发环境在windows下的安装配置,经本人测试完全正确无误.这个教程是史上最详细的android开发环境搭建教程. 工具/原料 Eclipse 3.7.0.Java Jdk6. ...

  6. HBase、Hive、MapReduce、Hadoop、Spark 开发环境搭建后的一些步骤(export导出jar包方式 或 Ant 方式)

    步骤一 若是,不会HBase开发环境搭建的博文们,见我下面的这篇博客. HBase 开发环境搭建(Eclipse\MyEclipse + Maven) 步骤一里的,需要补充的.如下: 在项目名,右键, ...

  7. Android开发环境搭建相关文章列表(转载)

    Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...

  8. 转:Qt 嵌入式开发环境搭建

    地址: http://www.cnblogs.com/lishixian/articles/3013897.html         作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅 ...

  9. GTK+开发环境搭建

    GTK+开发环境搭建 "工欲善其事,必先利其器"首先介绍一下GTK+开发环境的搭建,网上很多所谓的GTK的开发环境的搭建基本都是抄来抄去,也不知道有没有人使用他们介绍的方法搭建并编 ...

随机推荐

  1. Windows Server挂载NFS共享

    NFS:即为网络文件系统. 主要功能:通过网络(局域网)让不同的主机系统之间可以共享文件或目录. 主要用途:NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件. 关于端口使用说明: 1 ...

  2. 汉字编码对照表(gb2312/Big5/GB2312)

    一.汉字编码的种类 1.GB2312又称国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆.新加坡等地也使用此编码.它是一个简化字的编码规范,当然也包括其他的符号.字母.日文假名等,共74 ...

  3. IT服务,共享经济的下一个风口?

    前两天,在上千名CIO参加.释放10亿采购需求的2017华南CIO大会暨信息技术交易会上,一款"一站式IT工程师共享平台"成为大会关注焦点--这就是神州数码旗下的神州邦邦. 其实最 ...

  4. web前端项目中遇到的一些问题总结(08.23更新)

    个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 写一些最近工作中Vue项目中遇到的问题. 巴啦啦小魔仙,污卡拉,全身变,小 ...

  5. #Week6 Neural Networks : Representation

    一.Non-linear Hypotheses 线性回归和逻辑回归在特征很多时,计算量会很大. 一个简单的三层神经网络模型: \[a_i^{(j)} = \text{"activation& ...

  6. Python基础01 集合

    初始化 # python3 # coding = utf-8 mylist = [] for item in range(10): mylist.append(item * 10 + 3) myset ...

  7. Spring官网阅读(十)Spring中Bean的生命周期(下)

    文章目录 生命周期概念补充 实例化 createBean流程分析 doCreateBean流程分析 第一步:factoryBeanInstanceCache什么时候不为空? 第二步:创建对象(crea ...

  8. 关于Cookie的一点简单认识

    1.Cookie Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器,是在客户端保持状态的方案.通常每个 Cookie 的大小不能超过4KB.客户端每次向服务器发出请求,就 ...

  9. asp.net mvc entityframework sql server 迁移至 mysql方法以及遇到的问题

    背景: 我原来的项目是asp.net mvc5 + entityframework 6.4 for sql server(localdb,sql server),现在需要把数据库切换成mysql,理论 ...

  10. Android 开发技术周报 Issue#279

    新闻 丧心病狂or形势所迫?谈谈Android奇葩的"链式启动" 传闻称Android TV将更名为Google TV 谷歌官宣Android 11 Beta发布会:6月3日见 教 ...