DPDK-19.05在CentOS7.4.1708上环境搭建

DPDK-19.05在CentOS7.4.1708上环境搭建

我安装的是CentOS7.4.1708 64位,使用的dpdk19.05版本
在这里插入

(一)配置环境要求

1.安装CentOS7时,要求至少4个核心(可以2个CPU,2个Core,或者1个CPU,4个Core)
2.内存至少1G(为了配置hugepage,多分点比较好)
3. 网卡至少两个
安装虚拟机网卡:
(1)先将虚拟机shutdown;
(2)光标放到虚拟机上,右击设置,选中网络适配器添加两个网卡,配置如下
DPDK-19.05在CentOS7.4.1708上环境搭建_第1张图片
3. dpdk版本配置环境要求:如果使用不同的dpdk版本,最好看一下官方dpdk的pdf要求,dpdk16.07要求内核•Kernel version >= 2.6.34(使用uname –r查看),glibc>=2.7,(ldd –version查看)。CentOS7 64位kernel version是3.10.0,glibc是2.17(2.17大于2.7)

4.有关于CentOS7的其它配置安装(后面进行要用)

1、内核文件的安装:因为dpdk涉及到驱动编译,驱动编译涉及到内核所以需要安装内核文件:yum install –y kernel-devel kernel-headers,然后yum install kernel.x86_64 -y
建议安装和系统内核版本一致。
yum install “kernel-devel-uname-r == $(uname -r)”
yum install “kernel-headers-uname-r == $(uname -r)”
DPDK-19.05在CentOS7.4.1708上环境搭建_第2张图片(uname -a ; rpm -qa kernel* | sort)
如果失败了,在网上找自行下载。

2、make的安装:yum install make
2、ifconfig的配置:yuminstall net-tools.x86_64 按照提示进行安装
3、libnuma-dev的安装:yum install numactl libnuma-dev
4、gcc的安装:yum –y intallgcc
5、c++的安装:yum –y installgcc-c++
6.这次一定要重启系统。

(二)dpdk的安装

1)、下载源码: wget http://fast.dpdk.org/rel/dpdk-19.05.tar.gz
解压: tar -zxvf dpdk-19.05.tar.gz
进入 dpdk-19.05: cd dpdk-19.05
2)、设置环境变量
vi dpdk.rc 写入如下内容

export DPDK_DIR=/home/zxing/dpdk-19.05
export DPDK_TARGET=x86_64-native-linuxapp-gcc
export DPDK_BUILD= D P D K D I R / DPDK_DIR/ DPDKDIR/DPDK_TARGET
export RTE_SDK=/home/zxing/dpdk-19.05
export LD_LIBRARY_PATH= R T E S D K / {RTE_SDK}/ RTESDK/{DPDK_TARGET}/lib:/usr/local/lib:/usr/lib:

然后用source启用这几个环境变量,生效;
source dpdk.rc
在这里插入图片描述
注意,你以后如果重新登陆终端,进入这个目录,都要source一下这个文件,才能正常运行dpdk的程序;
3)、利用setup.sh进行配置
(1)命令:./dpdk-setup.sh (进入dpdk19.05下的usertools,运行dpdk-setup.sh)出现下面的信息:

Step 1: Select the DPDK environment to build

[1] arm64-armv8a-linuxapp-clang
[2] arm64-armv8a-linuxapp-gcc
[3] arm64-armv8a-linux-clang
[4] arm64-armv8a-linux-gcc
[5] arm64-bluefield-linuxapp-gcc
[6] arm64-bluefield-linux-gcc
[7] arm64-dpaa2-linuxapp-gcc
[8] arm64-dpaa2-linux-gcc
[9] arm64-dpaa-linuxapp-gcc
[10] arm64-dpaa-linux-gcc
[11] arm64-octeontx2-linuxapp-gcc
[12] arm64-octeontx2-linux-gcc
[13] arm64-stingray-linuxapp-gcc
[14] arm64-stingray-linux-gcc
[15] arm64-thunderx2-linuxapp-gcc
[16] arm64-thunderx2-linux-gcc
[17] arm64-thunderx-linuxapp-gcc
[18] arm64-thunderx-linux-gcc
[19] arm64-xgene1-linuxapp-gcc
[20] arm64-xgene1-linux-gcc
[21] arm-armv7a-linuxapp-gcc
[22] arm-armv7a-linux-gcc
[23] i686-native-linuxapp-gcc
[24] i686-native-linuxapp-icc
[25] i686-native-linux-gcc
[26] i686-native-linux-icc
[27] ppc_64-power8-linuxapp-gcc
[28] ppc_64-power8-linux-gcc
[29] x86_64-native-bsdapp-clang
[30] x86_64-native-bsdapp-gcc
[31] x86_64-native-freebsd-clang
[32] x86_64-native-freebsd-gcc
[33] x86_64-native-linuxapp-clang
[34] x86_64-native-linuxapp-gcc
[35] x86_64-native-linuxapp-icc
[36] x86_64-native-linux-clang
[37] x86_64-native-linux-gcc
[38] x86_64-native-linux-icc
[39] x86_x32-native-linuxapp-gcc
[40] x86_x32-native-linux-gcc


Step 2: Setup linux environment

[41] Insert IGB UIO module
[42] Insert VFIO module
[43] Insert KNI module
[44] Setup hugepage mappings for non-NUMA systems
[45] Setup hugepage mappings for NUMA systems
[46] Display current Ethernet/Crypto device settings
[47] Bind Ethernet/Crypto device to IGB UIO module
[48] Bind Ethernet/Crypto device to VFIO module
[49] Setup VFIO permissions


Step 3: Run test application for linux environment

[50] Run test application ( R T E T A R G E T / a p p / t e s t ) [ 51 ] R u n t e s t p m d a p p l i c a t i o n i n i n t e r a c t i v e m o d e ( RTE_TARGET/app/test) [51] Run testpmd application in interactive mode ( RTETARGET/app/test)[51]Runtestpmdapplicationininteractivemode(RTE_TARGET/app/testpmd)


Step 4: Other tools

[52] List hugepage info from /proc/meminfo


Step 5: Uninstall and system cleanup

[53] Unbind devices from IGB UIO or VFIO driver
[54] Remove IGB UIO module
[55] Remove VFIO module
[56] Remove KNI module
[57] Remove hugepage mappings

[58] Exit Script

(2)Option: 34 (我的是64位,32位的选择39)

如果报错:make: *** /lib/modules/3.10.0-693.el7.x86_64/build: No such file or directory. Stop.
这是因为是由于build链接出错,没有所链接的那个地址,修改一下就好了

		 1. # cd /lib/modules/3.10.0-693.el7.x86_64/
		 2. # rm -rfv build
		 3. # ln -s /usr/src/kernels/3.10.0-693.11.6.el7.x86_64 build

Ctrl+C可退出,或新开一个Terminal做以上操作。
如果还报错,提示没有pcap。,则安装一下sudo yum install libpcaplibcap-devel就可以通过了.
如果出现:make: *** No targets specified and no makefile found. Stop.解决方法

		 1. wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.1.tar.gz
		 2. tar zxvf ncurses-6.1.tar.gz
		 3. cd ncurses-6.1
		 4. ./configure -prefix=/usr/local -with-shared-without-debug
		 5. make
		 6. make install

(3)Option:41
**(4)Option:45,**64位的虚拟机建议使用1G的hugepage,输入128.执行完后可以在Option上输入52就行显示
在这里插入图片描述

(5)Option:46 显示网卡状态,但是报错,如下:

Traceback (mostrecent call last):

File"/root/dpdk-16.07/tools/dpdk-devbind.py", line 576, in

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

这是由于CentOS7中没有lspci的原因,安装一下就可以解决:yum install pciutils -y

然后再执行一次Option:46 显示网卡状态
DPDK-19.05在CentOS7.4.1708上环境搭建_第3张图片查看网卡信息:
./dpdk-19.05/usertools/dpdk-devbind.py --status

(6)绑定网卡,Option:47
DPDK-19.05在CentOS7.4.1708上环境搭建_第4张图片
让你输入pci的地址, 3你只要将0000:02:03.0 中的,0000冒号后面的几位输入就行了, 如 02:03.0 记得标点也要输。

注意绑定的时候可以能有个错误的提示如下;
DPDK-19.05在CentOS7.4.1708上环境搭建_第5张图片
因为是你当前的对应的网卡处于up状态,所以你要执行down命令将其关闭;
例如我的网卡是eno50332184

ifconfig eno50332184 down;关闭后再重新执行一下上面的绑定操作;注意要绑定两个

这样就网卡绑定成功了,然后option50和51是测试。

(三)dpdk的测试

【测试51】测试Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)
一开始需要输入的bitmask表示你需要使用的核心数
如:f 代表 1111 使用四个核心
命令:

start开始包转发
stop停止包转发

结果如下图所示
4.DPDK测试(4.1)配置环境变量,RTE_TARGET是我们上面step1 中编译选择的目录。export RTE_SDK=“你的dpdk路径”,我这里是/opt/dpdk-stable-18.05.1export RTE_SDK=/opt/dpdk-stable-18.05.1export RTE_TARGET=x86_64-native-linuxapp-gcc(4.2)切换到测试目录:cd …/examples/helloworldmake
在这里插入图片描述
执行 ./build/helloworld,如果出现hello from core x 说明已经测试成功。
在这里插入图片描述
可以参考其他文章
https://blog.csdn.net/Illina/article/details/85101516
https://blog.csdn.net/qwe13182912113/article/details/79260331

你可能感兴趣的:(DPDK-19.05在CentOS7.4.1708上环境搭建)