| CPU Architecture | x86_64、aarch64 |
| CPU MHz: | 2000以上 |
| Memory | 每个node空闲内存超过2G |
| 硬盘 | 剩余空间大于100M |
| OS | Ubuntu,centos,银河麒麟,UOS等Linux |
| Linux kernel version | 3.10.0及其以上 |
| Boot setting | isolcpus=1-8nohz_full=1-8rcu_nocbs=1-8 |
| root权限 | 使用dpdk尽量使用root权限 |
centos系统预先安装依赖库,命令如下:
- yum install numactl-devel
- yum install libpcap-devel
ubuntu系统预先安装依赖库,命令如下:
- apt-get install libnuma-dev
- apt-get install libpcap-dev
- tar zxf anntec-<version>-<dpdkversion>.tar.gz
- cd anntec -<version>-< dpdkversion >
- make
- make install
4.1设置大页内存
- x86
- echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
- arm
- echo 20 > /sys/devices/system/node/node0/hugepages/hugepages-524288kB/nr_hugepages
4.2导入igb_uio驱动
- modprobeuio
- insmod ./kmod/igb_uio.ko
4.3绑定网卡
Ethernet 类型卡,绑定方式如下:
- ./usertools/dpdk-devbind.py --bind=igb_uio<pci bus>
- 注:pci bus 可以通过命令:lspci -n|grep 1e92|awk '{print $1}'查看例如:./usertools/dpdk-devbind.py --bind=igb_uio 01:00.0
查看是否绑定成功
./usertools/dpdk-devbind.py -s
绑定成功会在DPDK-compatible driver下面看见相应的pci信息,如下图: 
非Ethernet 类型卡,绑定方式如下:
- echo 1e92 <devid> >/sys/bus/pci/drivers/igb_uio/new_id
- 注: devid 可以通过命令:lspci -n|grep 1e92|awk -F: '{print $4}'查看
- 例如:echo 1e92 0022 >/sys/bus/pci/drivers/igb_uio/new_id
查看是否绑定成功 :
ls -l /sys/bus/pci/drivers/igb_uio/
绑定成功会在/sys/bus/pci/drivers/igb_uio/目录下看见pci的链接信息,如下图: 
解除绑定
- echo <pci bus> > /sys/bus/pci/drivers/igb_uio/unbind
- 例如:echo 0000:0c:00.0 > /sys/bus/pci/drivers/igb_uio/unbind
5.1设置共享库路径
- x86
- export LD_LIBRARY_PATH=/XXX/anntec-<version>-<dpdkversion>/build/x86_64/lib
- arm
- export LD_LIBRARY_PATH=/XXX/anntec-<version>-<dpdkversion>/build/aarch64/lib
- 注:xxx表示存放anntec-<version>-<dpdkversion>的根路径
5.2使用testpmd x86
- x86
- ./build/x86_64/app/testpmd -d ./build/x86_64/lib/librte_pmd_xnic.so -d ./build/x86_64/lib/librte_pmd_xnic2.so -d ./build/x86_64/lib/librte_mempool_ring.so -cff -n4 -w <pci bus> -w <pci bus>,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 -rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144
- arm
- ./build/aarch64/app/testpmd -d ./build/aarch64/lib/librte_pmd_xnic.so -d ./build/aarch64/lib/librte_pmd_xnic2.so -d ./build/aarch64/lib/librte_mempool_ring.so -cff -n4 w <pci bus> -w <pci bus>,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 --rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144
- 注:除了pci bus是需要根据实际环境变化的,其他参数尽量别修改
5.2.1使用testpmd开始收发数据
testpmd> start
5.2.2使用testpmd查看收发数据状态
testpmd> show port stats all

5.2.3使用testpmd结束收发数据
testpmd>quit
5.2.4使用testpmd只发数据
- ./build/x86_64/app/testpmd -d ./build/x86_64/lib/librte_pmd_xnic.so d ./build/x86_64/lib/librte_pmd_xnic2.so -d ./build/x86_64/lib/librte_mempool_ring.so -cff -n4 -w <pci bus> -w <pci bus>,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 -rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144
- testpmd> set fwd txonly
- testpmd> set txpkts 1024 /设置发包大小,默认64
- testpmd> start
- testpmd> show port stats all
- testpmd> quit
5.2.5使用testpmd只接收数据
- ./build/x86_64/app/testpmd -d ./build/x86_64/lib/librte_pmd_xnic.so d ./build/x86_64/lib/librte_pmd_xnic2.so -d ./build/x86_64/lib/librte_mempool_ring.so -cff -n4 -w <pci bus> -w <pci bus>,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 -rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144
- testpmd> set fwd rxonly
- testpmd> start
- testpmd> show port stats all
- testpmd> quit
5.2.6 批处理运行
- nicarg=" "
-
- nic_pci=`lspci -nn|grep -E '1e92|0022'|awk '{print $1}'`
- for i in $nic_pci
- do
- nicarg="$nicarg -w $i"
- done
-
- pwd=`pwd`
- arch=`uname -m`
- export LD_LIBRARY_PATH=$pwd/build/$arch/lib
- echo $LD_LIBRARY_PATH
-
- ./build/$arch/app/testpmd -d ./build/$arch/lib/librte_pmd_xnic.so -d ./build/$arch/lib/librte_pmd_xnic2.so -d ./build/$arch/lib/librte_mempool_ring.so -c3 -n4 $nicarg -- -i --nb-cores=1 --rxq=1 --txq=1 --rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144
5.3 虚拟NET_TAP网卡使用
- export LD_LIBRARY_PATH=/opt/anntec-1.2.1-dpdk19.11.3gcc4.8.5/build/x86_64/lib
- 网闸模式
- ./build/x86_64/app/testpmd -d./build/x86_64/lib/librte_pmd_anntec.so -d ./build/x86_64/lib/librte_mempool_ring.so -cf -n4 -w 04:00.1 -w 04:00.0,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 --rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144
- 虚拟网卡模式
- ./build/x86_64/app/testpmd -d ./build/x86_64/lib/librte_pmd_anntec.so -d ./build/x86_64/lib/librte_pmd_tap.so -d ./build/x86_64/lib/librte_mempool_ring.so -cf -n4 -w 01:00.0 --vdev=net_tap0,iface=enp1s0f0,mac='00:64:74:61:70:12' -- -i --txq=1 --rxq=1 --txd=2048 --rxd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144