DPDK学习(测试环境)

测试环境使用VMware Fusion虚拟机,虚拟机主要配置:一个双核CPU、两块网卡、操作系统为CentOS 7
ifconfig可以看到两块网卡(ens33、ens37)
DPDK学习(测试环境)_第1张图片

编译DPDK

执行/root/dpdk-17.08/usertools/dpdk-setup.sh后可以看到下图
DPDK学习(测试环境)_第2张图片

编译中可能遇到的问题及解决方法

问题 解决办法
找不到cc命令 yum -y install gcc
找不到numa.h文件 yum -y install numactl-devel
找不到build文件 yum -y install kernel-devel(yum安装)
rpm -ivh kernel-devel-xxx.rpm(手动安装)
rpm -Uvh --oldpackage kernel-devel-xxx.rpm(降级)
(kernel-devel版本要和/lib/modules/目录下版本一致)
DESTDIR未定义 vi /root/dpdk-17.08/usertools/dpdk-setup.sh
修改make install命令:增加DESTDIR=/root/dpdk
EAL: Error reading from file descriptor vi root/dpdk-17.08/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
注释以下3行:
if (pci_intx_mask_supported(dev)) {
}
dev_notice(&dev->dev, “PCI INTX mask not supported\n”);

1、ndo_change_mtu:http://sysight.com/index.php?qa=1325&qa_1=kni报错ndo_change_mtu-kni_net_change_mtu
cat /usr/src/kernels/3.10.0-862.el7.x86_64/include/linux/netdevice.h
RH_KABI_RENAME(int (*ndo_change_mtu), int (*ndo_change_mtu_rh74))
修改kni_net.c的ndo_change_mtu为ndo_change_mtu_rh74

2、编译pktgen-dpdk lua版本低:https://blog.csdn.net/minxihou/article/details/84024314
yum install epel-release -y
yum install https://centos7.iuscommunity.org/ius-release.rpm -y
yum install lua53u* -y

编译成功后可以看到下图
DPDK学习(测试环境)_第3张图片

主要步骤

输入 操作
13 编译DPDK
16 插入igb_uio
20 设置大页,输入1024
22 绑定网卡,输入02:01.0、02:05.0(双网卡)
26 testpmd测试,输入0x03(双核)

测试testpmd

启/停:start/stop
DPDK学习(测试环境)_第4张图片

此时ifconfig看不到两块网卡了,因为两块网卡不归ixgbe驱动管理了,而是归igb_uio驱动管理
DPDK学习(测试环境)_第5张图片

运行helloworld

在dpdk-17.08目录下执行以下命令

步骤 命令
编译DPDK make install T=x86_64-native-linuxapp-gcc DESTDIR=/root/dpdk
插入igb_uio modprobe uio
insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
(对于driver为virtio_net的网卡:
modprobe vfio enable_unsafe_noiommu_mode=1
modprobe vfio-pci)
设置大页 echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
绑定网卡 python usertools/dpdk-devbind.py --bind=igb_uio 02:01.0
python usertools/dpdk-devbind.py --bind=igb_uio 02:05.0
(对于driver为virtio_net的网卡:
python usertools/dpdk-devbind.py -b vfio-pci 02:01.0
python usertools/dpdk-devbind.py -b vfio-pci 02:05.0)
设置环境变量 export RTE_SDK=/root/dpdk-17.08
export RTE_TARGET=x86_64-native-linuxapp-gcc
运行helloworld cd examples/helloworld
make
./build/helloworld -c 3 -n 2

运行成功后可以看到下图
DPDK学习(测试环境)_第6张图片

参考资料

http://www.cnblogs.com/zzqcn/p/4024205.html
http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html#compilation-of-the-dpdk

你可能感兴趣的:(DPDK)