pktgen-dpdk 实战

本文详细介绍了如何安装和配置DPDK及基于其上的pktgen应用,包括环境变量设置、编译步骤、配置文件修改等内容,并提供了实际操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方手册: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的转发速率到底是啥样子的了……)

1092156-20180718145559181-1519819695.png

参考

https://blog.youkuaiyun.com/jonlylinux/article/details/76474542

转载于:https://www.cnblogs.com/ZCplayground/p/9329133.html

### 如何使用 Pktgen-DPDK 进行性能测试 为了利用 Pktgen-DPDK 执行高效的网络性能测试,需遵循一系列特定的操作流程来确保环境配置得当并能够顺利运行该应用。 #### 准备工作 安装必要的软件包对于构建和部署至关重要。通过命令 `yum install gcc libpcap-devel kernel-devel kernel-headers` 可以获取所需的依赖库[^4]。这一步骤为后续的源码编译提供了基础支持。 创建一个目录作为项目的根路径,并克隆 DPDKPktgen 的仓库到此位置: ```bash TOPDIR=/devel mkdir -p $TOPDIR cd $TOPDIR git clone http://dpdk.org/git/dpdk git clone http://dpdk.org/git/apps/pktgen-dpdk ``` 设定环境变量以便于识别 SDK 路径以及目标架构: ```bash export RTE_SDK=$TOPDIR/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc ``` 接着,在指定的目标环境下编译 DPDK 库文件: ```bash $ cd $RTE_SDK $ make install T=x86_64-native-linuxapp-gcc ``` 完成上述步骤之后,进入 Pktgen 项目文件夹继续其自身的编译过程: ```bash $ cd $TOPDIR/pktgen-dpdk $ make ``` #### 绑定网卡与启动服务 在实际操作前,还需将物理网卡绑定至用户空间驱动程序 igb_uio 上,从而允许应用程序直接访问硬件资源而无需经过内核层处理。具体做法是在终端中输入如下指令: ```bash dpdk-devbind -b igb_uio 0000:00:03.0 ``` 这里使用的 PCI 地址可以通过执行 `dpdk-devbind.py -s` 来查询当前系统的设备列表获得确切值[^3]。 最后,启动 Pktgen 工具本身即可开始发送数据流进行压力测试或其他形式的功能验证活动。 #### 配置实例展示 假设现在要向某一台服务器发起流量冲击,则可以在命令行界面里键入下面这段话来初始化会话: ```bash ./build/app/pktgen -c f -n 4 --proc-type auto \ -- -T -m "[1:3].0" -f themes/gray-theme.lua ``` 在此基础上调整参数 `-c`, `-n`, 或者其他选项来自定义线程数、内存通道数目等细节;同时也可以加载不同的主题样式改变图形化界面外观[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值