searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

开源dpdk21-pktgen使用

2023-04-28 06:26:13
275
0

 

  • 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

 

0条评论
0 / 1000
c****n
2文章数
0粉丝数
c****n
2 文章 | 0 粉丝
c****n
2文章数
0粉丝数
c****n
2 文章 | 0 粉丝
原创

开源dpdk21-pktgen使用

2023-04-28 06:26:13
275
0

 

  • 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

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0