################################################################################ # HOST 配置 ################################################################################
#vim /etc/grub2.cfg #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #linux16 /vmlinuz-3.10.0-1127.19.1.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto vconsole.keymap=us rhgb LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200n8 iommu=pt intel_iommu=on default_hugepagesz=1G hugepagesz=1G hugepages=6 #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # #vim ~/.bash_profile #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #MYTOOLS=/home/liufeng/workspace/tools #export MYTOOLS # #DPDK_SDK=/home/liufeng/workspace/src/ovs-dpdk/dpdk/sdk #export DPDK_SDK # #PATH=$MYTOOLS/bin:$MYTOOLS/sbin:$MYTOOLS/libexec:$PATH:$HOME/.local/bin:$HOME/bin #export PATH # #C_INCLUDE_PATH=$MYTOOLS/include:$C_INCLUDE_PATH #export C_INCLUDE_PATH # #LD_LIBRARY_PATH=$DPDK_SDK/lib:$MYTOOLS/lib:$MYTOOLS/libexec:$LD_LIBRARY_PATH #export LD_LIBRARY_PATH #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #source ~/.bash_profile # # #su #vim ~/.bash_profile #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #MYTOOLS=/home/liufeng/workspace/tools #export MYTOOLS # #DPDK_SDK=/home/liufeng/workspace/src/ovs-dpdk/dpdk/sdk #export DPDK_SDK # #PATH=$MYTOOLS/bin:$MYTOOLS/sbin:$MYTOOLS/libexec:$PATH:$HOME/bin #export PATH # #C_INCLUDE_PATH=$MYTOOLS/include:$C_INCLUDE_PATH #export C_INCLUDE_PATH # #LD_LIBRARY_PATH=$DPDK_SDK/lib:$MYTOOLS/lib:$MYTOOLS/libexec:$LD_LIBRARY_PATH #export LD_LIBRARY_PATH #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #source ~/.bash_profile # #sudo yum install kernel-devel.x86_64 #yum provides '*/applydeltarpm' #yum install deltarpm #sudo yum install meson.noarch #yum install ninja-build.x86_64 #yum install cmake.x86_64 #yum install cmake3.x86_64 #yum install -y numactl-devel gcc readline-devel lua-devel libpcap-devel gcc-g++ net-tools numactl-devel readline epel-release
################################################################################ # 编译DPDK ################################################################################
## #git clone git@github.com:DPDK/dpdk.git #cd dpdk ##git checkout v19.11 -b v19.11 #git checkout v18.08 -b v18.08 #make config T=x86_64-native-linuxapp-gcc #sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config #mkdir /home/liufeng/workspace/src/ovs-dpdk/dpdk/sdk #make install T=x86_64-native-linuxapp-gcc DESTDIR=/home/liufeng/workspace/src/ovs-dpdk/dpdk/sdk #sudo make install T=x86_64-native-linuxapp-gcc DESTDIR=/home/liufeng/workspace/tools/
su
modprobe vfio modprobe vfio-pci chmod a+x /dev/vfio chmod 0666 /dev/vfio/*
modprobe uio_pci_generic
pushd /home/liufeng/workspace/src/ovs-dpdk/dpdk insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko insmod x86_64-native-linuxapp-gcc/kmod/rte_kni.ko popd
dpdk-devbind --status ifconfig enp4s0f0 down ifconfig enp4s0f1 down ifconfig enp4s0f2 down ifconfig enp4s0f3 down
dpdk-devbind --bind=vfio-pci enp4s0f0 dpdk-devbind --bind=vfio-pci enp4s0f1 dpdk-devbind --bind=vfio-pci enp4s0f2 dpdk-devbind --bind=vfio-pci enp4s0f3
dpdk-devbind --status
################################################################################ # 编译 LUA ################################################################################ #tar xvf lua-5.4.0.tar.gz #cd lua-5.4.0 #make linux #sudo make install #make local
################################################################################ # 编译 PKTGEN-DPDK ################################################################################
git clone git://dpdk.org/apps/pktgen-dpdk cd /home/liufeng/workspace/src/ovs-dpdk/pktgen-dpdk #git checkout pktgen-3.7.2 -b pktgen-3.7.2 #export RTE_SDK=/home/liufeng/workspace/src/ovs-dpdk/dpdk/ #export RTE_TARGET=x86_64-native-linuxapp-gcc #make
################################################################ # USAGE ################################################################ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Usage: ./app/x86_64-native-linuxapp-gcc/pktgen [EAL options] -- [-h] [-v] [-P] [-G] [-T] [-f cmd_file] [-l log_file] [-s P:PCAP_file] [-m <string>] -s P:file PCAP packet stream file, 'P' is the port number -s P:file0,file1,... list of PCAP packet stream files per queue, 'P' is the port number -f filename Command file (.pkt) to execute or a Lua script (.lua) file -l filename Write log to filename -P Enable PROMISCUOUS mode on all ports -g address Optional IP address and port number default is (localhost:0x5606) If -g is used that enable socket support as a server application -G Enable socket support using default server values localhost:0x5606 -N Enable NUMA support -T Enable the color output -v Verbose output --no-crc-strip Do not strip CRC on all ports, (Default is to strip crc) -m <string> matrix for mapping ports to logical cores BNF: (or kind of BNF) <matrix-string> := """ <lcore-port> { "," <lcore-port>} """ <lcore-port> := <lcore-list> "." <port-list> <lcore-list> := "[" <rx-list> ":" <tx-list> "]" <port-list> := "[" <rx-list> ":" <tx-list>"]" <rx-list> := <num> { "/" (<num> | <list>) } <tx-list> := <num> { "/" (<num> | <list>) } <list> := <num> { "/" (<range> | <list>) } <range> := <num> "-" <num> { "/" <range> } <num> := <digit>+ <digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 1.0, 2.1, 3.2 - core 1 handles port 0 rx/tx, core 2 handles port 1 rx/tx core 3 handles port 2 rx/tx 1.[0-2], 2.3, ... - core 1 handle ports 0,1,2 rx/tx, core 2 handle port 3 rx/tx [0-1].0, [2/4-5].1, ... - cores 0-1 handle port 0 rx/tx, cores 2,4,5 handle port 1 rx/tx [1:2].0, [4:6].1, ... - core 1 handles port 0 rx, core 2 handles port 0 tx, [1:2].[0-1], [4:6].[2/3], ... - core 1 handles port 0 & 1 rx, core 2 handles port 0 & 1 tx [1:2-3].0, [4:5-6].1, ... - core 1 handles port 0 rx, cores 2,3 handle port 0 tx core 4 handles port 1 rx & core 5,6 handles port 1 tx [1-2:3].0, [4-5:6].1, ... - core 1,2 handles port 0 rx, core 3 handles port 0 tx core 4,5 handles port 1 rx & core 6 handles port 1 tx [1-2:3-5].0, [4-5:6/8].1, ... - core 1,2 handles port 0 rx, core 3,4,5 handles port 0 tx core 4,5 handles port 1 rx & core 6,8 handles port 1 tx [1:2].[0:0-7], [3:4].[1:0-7], - core 1 handles port 0 rx, core 2 handles ports 0-7 tx core 3 handles port 1 rx & core 4 handles port 0-7 tx BTW: you can use "{}" instead of "[]" as it does not matter to the syntax. -h Display the help information <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
./app/x86_64-native-linuxapp-gcc/pktgen -l 1-3 -n 1 -- -P -m "[2].0,[3].1"
start 0,1 stop 0,1 quit
################################################################################ # Test PMD ################################################################################
su sudo modprobe vfio sudo modprobe vfio-pci chmod a+x /dev/vfio chmod 0666 /dev/vfio/*
modprobe uio_pci_generic
dpdk-devbind --status sudo ifconfig enp1s0f0 down sudo ifconfig enp1s0f1 down sudo ifconfig enp1s0f2 down sudo ifconfig enp1s0f3 down
sudo dpdk-devbind --bind=vfio-pci enp1s0f0 sudo dpdk-devbind --bind=vfio-pci enp1s0f1 sudo dpdk-devbind --bind=vfio-pci enp1s0f2 sudo dpdk-devbind --bind=vfio-pci enp1s0f3
dpdk-devbind --status
# 进入交互模式 # 测试的前提是port0和port1是联通的 testpmd -l 1,2,3 --socket-mem 1024 -n 4 --log-level=8 -- -i >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> set nbcore 2 show config fwd #set fwd txonly show port stats all start show port stats all stop quit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<