- DPDK-21编译
1.1前置条件
下载开源的dpdk21代码
1.2依赖安装:
yum install meson
yum install python3-pyelftools
yum install ninja-build
pip3 install ninja meson
1.3进入DPDK-21目录,按如下编译:
mkdir x86_64-native-linuxapp-gcc
mkdir build
meson -Denable_kmods=true -Dprefix=`pwd`/x86_64-native-linuxapp-gcc build
ninja -C build
cd build; ninja install
export PKG_CONFIG_PATH=$(pwd)/../x86_64-native-linuxapp-gcc/lib64/pkgconfig/libdpdk.pc
编译最后打印如下
二.编译pktgen
2.1依赖安装:
yum install luajit -y
yum install lua-devel -y
yum install lua-devel -y
yum install luajit-devel -y
yum install protobuf-c -y
2.2进入pktgen目录
chmod 755 app/../tools/*
make RTE_SDK=/root/xxx/xxx/dpdk-21.11 RTE_TARGET=x86_64-native-linuxapp-gcc(RTE_SDK中目录使用dpdk21的绝对路径)
三.pktgen使用
3.1 绑定/解绑dpdk端口,同dpdk绑定/解绑端口,配置大页内存
/root/xxx/xxx/pktgen-dpdk-pktgen-3.7.2
cp ../dpdk-21.11/usertools/dpdk-devbind.py ./
cp ../dpdk-21.11/build/kernel/linux/igb_uio/igb_uio.ko ./
ifconfig ens35f0 down
ifconfig ens47f0 down
modprobe uio
insmod igb_uio.ko
./dpdk-devbind.py --bind=igb_uio 0000:3b:00.0
./dpdk-devbind.py --bind=igb_uio 0000:af:00.0
./dpdk-devbind.py -s
解绑dpdk
./dpdk-devbind.py -s
./dpdk-devbind.py -u 0000:3b:00.0
./dpdk-devbind.py -u 0000:af:00.0
./dpdk-devbind.py -b ice 0000:3b:00.0
./dpdk-devbind.py -b ice 0000:af:00.0
配置大页内存
注意:先查看服务器大页内存大小:cat /proc/meminfo 文件中大页大小Hugepagesize
大页大小一般为2M,某些服务器可能很大
再配置大页内存页数,根据自己需求配置,大小*页数 需要远远小于物理内存,
大页配置命令:echo "vm.nr_hugepages=20000" >> /etc/sysctl.conf
3.2 pktgen使用命令
启动pktgen:
./app/pktgen -l 0,1,2,3,25,26,27 -n 4 --proc-type auto --socket-mem 256 --file-prefix pg -- -P -m "[1-3:1-3].0,[25-27:25-27].1"
命令解释:
-l:需要用来发包的cpu核心,与lscpu的核心对应
-m:[1-3:1-3].0--前面的1-3表示收,后面的1-3表示发,以冒号分隔,.0表示端口0
先查看网卡端口和numa绑定关系:
cat /sys/bus/pci/devices/0000\:21\:00.0/numa_node
如果端口0属于numa1,端口1属于numa2,则:
-l和-m的cpu核心要与网卡接口的numa与cpu对应
NUMA node0 CPU(s): 0,2,4,6
NUMA node1 CPU(s): 1,3,5,7
加载测试流量配置文件:
loadinner ./xxx.yaml (
配置文件内容如下,主要涉及IP,MAC配置,一行的三个数据表示最小值,最大值,增量,
根据组网情况修改)
---
pkt-size: 100 1500 200
outer-cfg:
l2-type: ipv4
l3-proto: udp
smac: b4:96:91:cc:fb:f4 b4:96:91:cc:fb:f4 00:00:00:00:00:00
dmac: 00:00:5e:00:01:a2 00:00:5e:00:01:a2 00:00:00:00:00:00
sip: 10.24.8.132 10.24.40.254 0.0.0.1
dip: 10.24.73.73 10.24.73.73 0.0.0.0
sport: 10001 10001 0
dport: 10000 10000 0
xxx.yaml----配置文件内容
)
3.3 设置端口参数
#开启端口离散,vlan解析
enable 0 range
disable 0 vlan
enable 1 range
disable 1 vlan
#设置发包带宽百分比
set 0 rate 100
set 1 rate 100
#设置报文ttl值
range 0 ttl 128 128 128 0
range 1 ttl 128 128 128 0
#查看报文配置是否正常
page range
3.4开始/停止发包
page range
start 0
page main
start 1