DPDK开发环境搭建(学会了步骤适合各版本)

摘要:
http://core.dpdk.org/doc/archives/我在CentOS 7.364位开发,最终选择了dpdk-18.11版本。至少有两个内核,以便于线程隔离和后续程序的绑定。可根据实际情况进行配置。请注意,为了运行测试用例,必须绑定至少两个端口以再次检查。发现他们已绑定到dpdk驱动程序。

一、版本的选择

首先要说明的是,对于生产来说DPDK版本不是越高越好,如何选择合适的版本?

1、要选择长期支持的版本LTS(Long Term Support)

clipboard

2、根据当前开发的系统环境选择

可以在以下文档里从高至低查看不同版本的System Requirements章节,它对kernel、glibc等限制有详细说明。

http://core.dpdk.org/doc/archives/

我开发是在CentOS7.3 64位,最后选用dpdk-18.11版本。如果你的软件需要同时在不同系统运行,选对版本后续能省不少事。

image

二、虚拟机配置要求

我使用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

clipboard

编译完提示以下信息:查资料显示没有指定安装路径,我们只是编译而不是install就不用理会。

clipboard

2)插入IGB UIO模块

clipboard

3)设置大页内存

clipboard

默认设置的是2M的大页内存,这里输入1024,表示申请2G的大页内存。由于虚拟机里只有一个node,这里只需要设置node0

clipboard

查看配置的大页内存

clipboard

clipboard

4)查看网卡/加解密设备信息,这里我们只有网卡信息

clipboard

clipboard

若报以下错误,是因为没有安装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)绑定设备

clipboard

clipboard

输入pci的地址, 输入0000冒号后面的几位输入就行了,这里将03:00.0和0b:00.0绑定。但我遇到过需要完整输入才能绑定的情况,如果绑定失败就都试试。

注:绑定的时候可以能有个错误的提示如下;

922192514909

因为是你当前的对应的网卡端口处于up状态,所以你要执行ifconfig xxx down命令将其关闭,关闭后再重新执行一下上面的绑定操作。注意为了跑测试用例至少要绑定两个端口

再次查看,发现已经绑定到dpdk驱动了。

clipboard

6)运行testpmd测试程序

clipboard

输入0xf代表程序运行在0~3核心

clipboard

如果提示以下错误,是因为大页内存分配不够,尝试分配多一些再试,若还不行重启虚拟机再试试。

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对虚网卡发包)

clipboard

stop停止抓包,并查看收发情况

clipboard

这说明dpdk收到了1000个包,同时转发出去了1000个包,已正常运行。

免责声明:文章转载自《DPDK开发环境搭建(学会了步骤适合各版本)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue中在移动端如何判断设备是安卓还是ios在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Veeam Backup &amp;amp; Replication 9.5 备份方式详解

原文:https://zhuanlan.zhihu.com/p/79254264?tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_ca Veeam Backup & Replication 9.5提供了很多种备份方式,光看它的文字说明总会有点糊涂,所以...

在Ubuntu-14.04.3配置并成功编译Android6_r1源码

在Ubuntu-14.04.3配置并成功编译Android6_r1源码 折腾了一周,终于把Android6_r1的源码编译成功。先上图,这是在ubuntu中运行的Android模拟器: 由于我是在win8中安装虚拟机VMware,然后在虚拟机中安装Ubuntu进行编译,所以遇到诸多麻烦。如果直接在linux中编译,可能会更顺利。 -----------...

KVM虚拟化简介及安装

kvm是基于图形化的linux操作的 安装图形化界面的知识点: 磁盘空间有两个词: 精简置备:我先在我系统里面去声明我要一个50G的空间,但是呢,我不会把50G都分给你,你用多少,我分给你多少,但是做多不能超过50G. 厚置备:直接把50G都分给你。 虚拟化 虚拟化的分类 什么是虚拟化:(1u是指的服务器的厚度) 10年前,他都是单独的服务器提供服务,像a...

转载:使用命令行启动VirtualBox虚拟机

使用命令行启动VirtualBox虚拟机装上VirtualBox就琢磨着如何让它开机自动启动,又或者能够通过命令行的形式直接启动指定的虚拟机。 看了下VirtualBox的官方文档,发现有一个命令可以满足我的需求,即VBoxManage。 VBoxManage提供了一系列的虚拟机管理命令,包括创建/删除/启动/修改等等,这里不一一列举。有点像Xen的XM命...

在VMware下进行的使用ssh服务管理远程主机

基于密钥的安全验证--sshd服务的配置文件解析(两台linux) 首先你有两台虚拟机 并且能够ping通(该实验的目的是通过客户端访问服务端) 打开终端进入到这个界面 看一下服务 如果有这三个服务就可以忽略下面的卸载和安装两个步骤 在本地机(客户端)    输入命令:rpm -qa | grep openssh      卸载  输入命令:  y...

实验二:Linux下Xen环境的安装

实验名称:   Linux下Xen环境的安装(centOS7) 实验环境:   本次实验基本是在centOS7的环境下完成,系统内核和系统版本如下: 实验要求:   为centOS7的环境下安装Xen的平台,能够正常使用Xen下的轻量级管理工具--xl 实验配置:   1、查看虚拟机是否启动硬件辅助虚拟化技术(HVM)     一般intel支持的硬件辅...