我安装的是CentOS7.4.1708 64位,使用的dpdk19.05版本
1.安装CentOS7时,要求至少4个核心(可以2个CPU,2个Core,或者1个CPU,4个Core)
2.内存至少1G(为了配置hugepage,多分点比较好)
3. 网卡至少两个
安装虚拟机网卡:
(1)先将虚拟机shutdown;
(2)光标放到虚拟机上,右击设置,选中网络适配器添加两个网卡,配置如下
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)”
(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.这次一定要重启系统。
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:
[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
[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
[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)
[52] List hugepage info from /proc/meminfo
[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/usertools/dpdk-devbind.py --status
(6)绑定网卡,Option:47
让你输入pci的地址, 3你只要将0000:02:03.0 中的,0000冒号后面的几位输入就行了, 如 02:03.0 记得标点也要输。
注意绑定的时候可以能有个错误的提示如下;
因为是你当前的对应的网卡处于up状态,所以你要执行down命令将其关闭;
例如我的网卡是eno50332184
ifconfig eno50332184 down;关闭后再重新执行一下上面的绑定操作;注意要绑定两个
这样就网卡绑定成功了,然后option50和51是测试。
【测试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