#DPDK安装与简单使用
###1.dpdk安装
0)为确保DPDK安装成功,程序正常编译使用,安装前应执行如下命令,安装程序依赖

yum update
yum install libpcap-devel kernel*

之后关闭虚拟机再新添加一个网卡。

1)下载dpdk安装包:(版本:DPDK17.11.2 LTS)

wget https://dpdk.org/rel/dpdk-17.11.2.tar.xz

这里写图片描述

2)解压:

xz -d dpdk-17.11.2.tar.xz
tar -xvf dpdk-17.11.2.tar

3)安装编译:

需要先修改文件:

(1)修改 dpdk-stable-17.11.2/config/common_linuxapp文件

CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y改为 CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n

CONFIG_RTE_LIBRTE_VHOST_NUMA=y改为 CONFIG_RTE_LIBRTE_VHOST_NUMA=n

CONFIG_RTE_KNI_KMOD=y改为 CONFIG_RTE_KNI_KMOD=n

(2)修改dpdk-stable-17.11.2/lib/librte_eal/linuxapp/igb_uio/igb_uio.c文件

if (pci_intx_mask_supported(udev->pdev))改为 if (pci_intx_mask_supported(udev->pdev) || 1)(在文件279行)

使用安装脚本配置:

cd dpdk-stable-17.11.2/usertools
./dpdk-setup.sh

这里写图片描述

这里写图片描述

选择14 x86_64-native-linuxapp-gcc

安装好后界面:

这里写图片描述

###2.简单使用

1)载入用户态驱动

su
modprobe uio
insmod dpdk-stable-17.11.2/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

2)绑定网卡驱动
可以使用双网卡,用另外一个类似ens37的网卡

ifconfig ens33 down
dpdk-stable-17.11.2/usertools/dpdk-devbind.py -b igb_uio ens33
或者
ifconfig ens33 down
dpdk-stable-17.11.2/usertools/dpdk-devbind.py -b igb_uio 0000:02:01.0

查看网卡信息:
dpdk-stable-17.11.2/usertools/dpdk-devbind.py --status

如修改回普通网卡模式,则使用如下命令
./dpdk-devbind.py -b e1000 0000:02:05.0
ifconfig ens33 up


这里写图片描述

3)配置巨页

mkdir /mnt/huge
echo 128  >  /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mount –t hugetlbfs nodev /mnt/huge

查看巨页信息:
cat /proc/meminfo | grep Huge

删除巨页配置:
umount nodev /mnt/huge
rm –rf /dev/hugepages/*
echo 0  >  /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

这里写图片描述

3)运行

下载如下两个文件:将文件拷贝至虚拟机中,然后运行这两个文件。(注:收包程序为trafdump,发包程序为trafgen,收发包程序分别拷贝到两个虚拟机下)

收发包程序(已失效)

1、拷贝程序文件夹,修改Makefile文件

RTE_SDK ?= /home/dpdk/dpdk-stable-17.11.2更改成自己的dpdk目录

2、进入目录,输入make命令编译

3、运行程序,收包程序命令如下:

./build/trafdump -c 0x3 -n 2 --proc-type auto -w 0000:02:01.0 -- --log 
--portmask 0x1

发包程序命令如下:

./build/trafgen -c 0x3 -n 2 --proc-type auto -w 0000:02:01.0 -- --benchmark --portmask 0x1

注意使用网卡与PCI号匹配

此处展示收包结果。

这里写图片描述

对于DPDK发包程序,修改main.c 348行 pkt_size值可对包大小进行修改,修改完成后重新编译即可

注:以上所有操作均在作者在网上搜集资料后,在个人电脑上实验成功,若读者实验时失败,可能由一些未知因素导致,可与作者联系。编写的教程可能由于疏忽出错,请与作者联系。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐