测试环境使用VMware Fusion虚拟机,虚拟机主要配置:一个双核CPU、两块网卡、操作系统为CentOS 7
ifconfig可以看到两块网卡(ens33、ens37)
编译DPDK
执行/root/dpdk-17.08/usertools/dpdk-setup.sh后可以看到下图
编译中可能遇到的问题及解决方法
问题 | 解决办法 |
---|---|
找不到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(手动安装) (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
编译成功后可以看到下图
主要步骤
输入 | 操作 |
---|---|
13 | 编译DPDK |
16 | 插入igb_uio |
20 | 设置大页,输入1024 |
22 | 绑定网卡,输入02:01.0、02:05.0(双网卡) |
26 | testpmd测试,输入0x03(双核) |
测试testpmd
启/停:start/stop
此时ifconfig看不到两块网卡了,因为两块网卡不归ixgbe驱动管理了,而是归igb_uio驱动管理
运行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 |
运行成功后可以看到下图
阿里云ECS使用Pktgen压测
ECS实例如何使用Pktgen测试网络性能:
https://help.aliyun.com/document_detail/260258.html
参考资料
http://www.cnblogs.com/zzqcn/p/4024205.html
http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html#compilation-of-the-dpdk