一、快速使用
官网下载DPDK。
解压:
tar –xf dpdk.tar
cd dpdk
配置:
make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config
make
配置巨页:
mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
编译时候会出现这个错误:
make: ***/lib/modules/3.10.0-123.el7.x86_64/build: No such file or directory.
解决:cd /lib/modules/3.10.0-123.el7.x86_64/
ln-s /usr/src/kernels/3.10.0-327.36.3.el7.x86_64/ build
如果/usr/src/ 没有3.10.0-327.36.3.el7.x86_64/,需要先安装对应版本的开发工具.
Rpm包路径:https://buildlogs.centos.org/c7-updates/kernel/3.10.0-123.el7/20140630120647/
安装PCI组件:yum install pciutils –y
到这里,dpdk可以使用,接下来用 /tools/下的脚本去加载UIO驱动。
脚本运行如下:
按照脚本提示一步步执行,就可以完成绑定网卡和加载驱动的工作。
二、运行例子
执行example/下的例子要先绑定网卡。
Helloworld,testpmd,skeleton的测试例子就不说了,l3fwd还不懂怎么构建拓扑,这里
详细说一下l2fwd二层转发的例子:
模型
这里用二张网卡测试,以上面的模型收发包。
运行:./build/l2fwd -c 0x50 -n 4 -- -p 0x0c -q 1
参数分为两部分,以 -- 分隔,前面部分是配置EAL环境的,后面是程序的参数
-c 0x50 是指用4,6两个核,-n 4指的是用4个内存通道。0x50是core的16进制掩码。
-p 0x0c 是指网卡的16进制掩码,即2,3两个口。
-q 1 是用一个无锁队列。
由于网卡是由DPDK接管的,是没有IP地址的,所以是以MAC地址通信。确定好各自的源MAC和目的MAC,类似于二层交换机的功能。