1、虚拟机用了4个核,2G内存,2个网卡
2、安装了
apt-get install numactl
apt-get install libnuma-dev
3、去http://core.dpdk.org/download/下载了17.11.10
4、解压后,进入usertools,运行dpdk-setup.sh。我选的是8,因为我的是32位系统。否则,会碰到一些错误。
编译成功则如下:
5、选择,安装IGB UIO
6、设置hugepages,虚拟机需要设置512
7、绑定网卡
8、运行testpmd
注意:
添加的网卡需要是intel的,否则testpmd不成功。查看网卡 lspci(第3块是intel的)
如果网卡不是intel的,需要对虚拟机的配置文件进行编辑,添加ethernet2.virtualDev = "e1000",ethernet2是添加的网卡的名字,e1000是intel网卡中的千兆网卡。
可能的错误:
(1)DPDK运行出现EAL Error reading from file descriptor 23 Input output error
原因:pdk不支持该网卡导致,需要修改dpdk目录下的lib/librte_eal/linuxapp/igb_uio/igb_uio.c,将
- 将文件中该行修改
pci_intx_mask_supported(dev)
- 修改为
pci_intx_mask_supported(dev)||true
再重新编译。
(2)没有数据发送的问题。
两个intel网卡都是nat模式。
我刚开始没有数据发送,但是后来在testpmd下start了一段时间,有数据结果了,很奇怪。
运行helloworld
1、进入examples文件夹下的helloworld文件夹,make出可执行文件
2、
echo 512 >/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
sudo modprobe uio
sudo insmod kmod/igb_uio.ko
./helloworld -c 3 -n 1
注意kmod在dpdk安装目录下对应的gcc目录下;运行helloworld,如果出现“AL: Cannot obtain physical addresses:”的错误,需要使用sudo命令
(这里我没有绑定网卡也成功运行了helloworld)