官方手册:http://pktgen-dpdk.readthedocs.io/en/latest/getting_started.html

过程

  1. 开机(重启)
  2. 把DPDK那一套流程走一遍(环境变量设置、设置userspace I/O态、挂载大页、绑定网卡)
  3. 按照官方手册上编译。pktgen就是基于dpdk开发的应用,所以只要能成功编译dpdk就可以编译pktgen。官方手册上一些依赖项可以跳过不看。

我用到的指令:

export RTE_SDK=/home/chang/dpdk
export RTE_TARGET=x86_64-native-linuxapp-gcc # 编译DPDK
cd $RTE_SDK
make install T=x86_64-native-linuxapp-gcc # 设置userspace I/O态、挂载大页、绑定网卡
cd /home/chang/dpdk/usertools
./dpdk-setup.py # 编译pktgen
cd ~
git clone git://dpdk.org/apps/pktgen-dpdk
cd pktgen-dpdk
make

4.接下来要做的是修改配置文件。在/pktgen-dpdk/cfg

# 备份
cp default.cfg backup
vim default.cfg

这是官方给我们的示例 default.cfg

description = 'A Pktgen default simple configuration'

# Setup configuration
setup = {
'exec': (
'sudo',
'-E'
), 'devices': (
'81:00.0 81:00.1 81:00.2 81:00.3',
'85:00.0 85:00.1 85:00.2 85:00.3'
), 'opts': (
'-b igb_uio'
)
} # Run command and options
run = {
'exec': (
'sudo',
'-E'
), # Application name and use app_path to help locate the app
'app_name': 'pktgen', # using (sdk) or (target) for specific variables
# add (app_name) of the application
# Each path is tested for the application
'app_path': (
'./app/%(target)s/%(app_name)s',
'%(sdk)s/%(target)s/app/%(app_name)s',
), 'dpdk': (
'-l 14,15-22',
'-n 4',
'--proc-type auto',
'--log-level 7',
'--socket-mem 2048,2048',
'--file-prefix pg'
), 'blacklist': (
#'-b 81:00.0 -b 81:00.1 -b 81:00.2 -b 81:00.3',
#'-b 85:00.0 -b 85:00.1 -b 85:00.2 -b 85:00.3',
'-b 81:00.0 -b 81:00.1',
'-b 85:00.0 -b 85:00.1',
'-b 83:00.0'
), 'app': (
'-T',
'-P',
'--crc-strip',
'-m [15:16].0',
'-m [17:18].1',
'-m [19:20].2',
'-m [21:22].3'
), 'misc': (
'-f', 'themes/black-yellow.theme'
)
}

需要修改的地方有三处:

  1. 网卡设备的PCI号,可以用dpdk的usertools查看。
  2. DPDK EAL 的 command line arguments。改成与你系统对应的参数。参照DPDK的文档。
  3. pktgen 的 command line arguments,参照pktgen的文档。

贴上我的版本作为参考:

# 只贴有修改的部分
# ……
'devices': (
'02:01.0 02:02.0' # 只绑定了两个网卡到DPDK做实验
),
# …… 'dpdk': (
'-l 0-3',
'-n 4',
'--proc-type auto',
'--log-level 7',
#'--socket-mem 2048,2048',
'--socket-mem 2048', # 只有一个socket
'--file-prefix pg',
), # ....... 'app': (
'-T',
'-P',
'--crc-strip',
'-m [1].0', # 查看官方手册了解 -m 用法,用于提供lcore到port的映射
'-m [2].1'
#'-m [19:20].2',
#'-m [21:22].3'
),

修改完后即可执行。

cd pktgen-dpdk
./tools/run.py -s default
./tools/run.py default

执行情况

(我终于第一次看到DPDK的超过120Mbit/s的转发速率到底是啥样子的了……)

pktgen-dpdk 实战-LMLPHP

参考

https://blog.csdn.net/jonlylinux/article/details/76474542

05-13 14:39