DPDK-Pktgen的使用

本文详细介绍DPDK测试中常用的pktgen工具使用方法及命令,包括如何运行pktgen,设置端口协议、MAC地址、发包速率等,以及启动、停止发包的操作指南。

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

pktgen(收发包工具)

本博文主要介绍DPDK测试过程中常用pktgen工具的使用教程和常用命令

打开pktgen

[root@localhost ~]# cd /root/DPDK/dpdk_src/pktgen-3.7.2/
[root@localhost pktgen-3.7.2]# ls
app               dnet-echo   lib          meson_options.txt  Pktgen.lua  test
cfg               docs        LICENSE      mk_meson           README.md   themes
changelog.txt     gui         Makefile     pcap               scripts     tools
CONTRIBUTING.TXT  INSTALL.md  meson.build  PktgenGUI.lua      style

运行pktgen

[root@localhost pktgen-3.7.2]# ./tools/pktgen-run.sh 

执行界面

./app/x86_64-native-linuxapp-gcc/pktgen -l 1,2-29 -n 4 --proc-type auto --log-level 7 --socket-mem 2048,2048,2048 --file-prefix pg -b 0000:83:00.1 -b 0000:83:00.0 -b 0000:41:00.0 -b 0000:41:00.1 -- -T -P --crc-strip -m [3:4].0 -m [5:6].1 -f themes/black-yellow.theme

Copyright (c) <2010-2019>, Intel Corporation. All rights reserved. Powered by DPDK
EAL: Detected 80 lcore(s)
EAL: Detected 4 NUMA nodes
EAL: Auto-detected process type: PRIMARY
EAL: Multi-process socket /var/run/dpdk/pg/mp_socket
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:01:00.0 on NUMA socket 0
EAL:   probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:01:00.1 on NUMA socket 0
EAL:   probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:04:00.0 on NUMA socket 0
EAL:   probe driver: 15b3:1017 net_mlx5
EAL: PCI device 0000:04:00.1 on NUMA socket 0
EAL:   probe driver: 15b3:1017 net_mlx5
EAL: PCI device 0000:41:00.0 on NUMA socket 1
EAL:   Device is blacklisted, not initializing
EAL: PCI device 0000:41:00.1 on NUMA socket 1
EAL:   Device is blacklisted, not initializing
EAL: PCI device 0000:83:00.0 on NUMA socket 2
EAL:   Device is blacklisted, not initializing
EAL: PCI device 0000:83:00.1 on NUMA socket 2
EAL:   Device is blacklisted, not initializing
Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio
>>> Strip CRC in hardware is the default

*** Copyright (c) <2010-2019>, Intel Corporation. All rights reserved.
*** Pktgen created by: Keith Wiles -- >>> Powered by DPDK <<<

 Port: Name         IfIndex Alias        NUMA  PCI
    0: net_mlx5        4                   0   15b3:1017/04:00.0
    1: net_mlx5        5                   0   15b3:1017/04:00.1

Initialize Port 0 -- TxQ 1, RxQ 1,  Src MAC b8:59:9f:3a:c9:7e
Initialize Port 1 -- TxQ 1, RxQ 1,  Src MAC b8:59:9f:3a:c9:7f

Port  0: Link Up - speed 100000 Mbps - full-duplex <Enable promiscuous mode>
Port  1: Link Up - speed 100000 Mbps - full-duplex <Enable promiscuous mode>

WARNING: Nothing to do on lcore 2: exiting
WARNING: Nothing to do on lcore 7: exiting
WARNING: Nothing to do on lcore 8: exiting
WARNING: Nothing to do on lcore 9: exiting
WARNING: Nothing to do on lcore 11: exiting
WARNING: Nothing to do on lcore 12: exiting
WARNING: Nothing to do on lcore 13: exiting
WARNING: Nothing to do on lcore 10: exiting
WARNING: Nothing to do on lcore 15: exiting
WARNING: Nothing to do on lcore 16: exiting
WARNING: Nothing to do on lcore 17: exiting
WARNING: Nothing to do on lcore 14: exiting
WARNING: Nothing to do on lcore 20: exiting
WARNING: Nothing to do on lcore 19: exiting
WARNING: Nothing to do on lcore 21: exiting
WARNING: Nothing to do on lcore 18: exiting
WARNING: Nothing to do on lcore 24: exiting
WARNING: Nothing to do on lcore 23: exiting
WARNING: Nothing to do on lcore 25: exiting
WARNING: Nothing to do on lcore 26: exiting
WARNING: Nothing to do on lcore 27: exiting
WARNING: Nothing to do on lcore 29: exiting
WARNING: Nothing to do on lcore 28: exiting
WARNING: Nothing to do on lcore 22: exiting
  RX processing lcore:   3 rx:  1 tx:  0
  TX processing lcore:   4 rx:  0 tx:  1
  RX processing lcore:   5 rx:  1 tx:  0
  TX processing lcore:   6 rx:  0 tx:  1

** Version: DPDK 18.11.2, Command Line Interface without timers
Pktgen:/> theme default white white off
Pktgen:/> theme top.spinner cyan none bold
Pktgen:/> theme top.ports green none bold
Pktgen:/> theme top.page white none bold
Pktgen:/> theme top.copyright yellow none off
Pktgen:/> theme top.poweredby blue none bold
Pktgen:/> theme sep.dash blue none off
Pktgen:/> theme sep.text white none off
Pktgen:/> theme stats.port.label blue none bold
Pktgen:/> theme stats.port.flags blue none bold
Pktgen:/> theme stats.port.data blue none off
Pktgen:/> theme stats.port.status green none off
Pktgen:/> theme stats.port.linklbl green none bold
Pktgen:/> theme stats.port.link green none off
Pktgen:/> theme stats.port.ratelbl white none bold
Pktgen:/> theme stats.port.rate white none off
Pktgen:/> theme stats.port.sizelbl cyan none bold
Pktgen:/> theme stats.port.sizes cyan none off
Pktgen:/> theme stats.port.errlbl red none bold
Pktgen:/> theme stats.port.errors red none off
Pktgen:/> theme stats.port.totlbl blue none bold
Pktgen:/> theme stats.port.totals blue none off
Pktgen:/> theme stats.dyn.label blue none bold
Pktgen:/> theme stats.dyn.values green none off
Pktgen:/> theme stats.stat.label magenta none off
Pktgen:/> theme stats.stat.values white none off
Pktgen:/> theme stats.total.label red none bold
Pktgen:/> theme stats.total.data blue none bold
Pktgen:/> theme stats.colon blue none bold
Pktgen:/> theme stats.rate.count blue none bold
Pktgen:/> theme stats.bdf blue none off
Pktgen:/> theme stats.mac green none off
Pktgen:/> theme stats.ip cyan none off
Pktgen:/> theme pktgen.prompt green none off
Pktgen:/> cls

pktgen显示界面
在这里插入图片描述
常用设置命令

  • 设置所有端口协议数据包协议:set all proto udp
  • 为特定端口设置src/dst mac:set 0 dst mac 00:30:64:58:8B:3A
  • 为特定端口设置src/dst mac:set 1 src mac 00:30:64:58:8B:3A
  • 设置所有端口发包速率(40Gbps):set all rate 40
  • 启动特定端口发包:start 0
  • 关闭端口发包:stp
  • 清屏:clr

在这里插入图片描述

range设置

  • 设置range所有端口数据包协议:range all proto udp

  • 设置range所有端口数据包大小:range all size 1326 1326 1326 0

  • 设置特定端口的srcip地址range:range 0 src ip 192.168.0.1 192.168.0.1 192.168.0.3 0.0.0.1

  • 启动range:enable all range

  • 退出pktgen:quit
    在这里插入图片描述

欢迎学习交流,如有疑问请指出!

### 如何使用 DPDK-Pktgen 进行性能测试 #### 1. 环境准备 为了能够顺利运行 DPDKPktgen,需要完成一系列初始化工作。这包括设置环境变量、加载大页内存、绑定网卡到用户空间驱动以及安装必要的依赖项。 以下是具体的准备工作: - 设置环境变量并启用大页支持[^2]。 - 将目标网卡绑定至 `uio_pci_generic` 或其他适合的用户空间驱动程序[^3]。 ```bash modprobe uio insmod $RTE_SDK/build/kmod/igb_uio.ko echo "options hugepages nr_hugepages=1024" | sudo tee /etc/modprobe.d/hugepages.conf mount -t hugetlbfs nodev /mnt/huge ``` #### 2. 编译与安装 Pktgen 的构建依赖于已成功编译的 DPDK 库。因此,在编译 Pktgen 前需先确认 DPDK 已经正确安装。 具体命令如下所示[^5]: ```bash export RTE_SDK=/path/to/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc cd /path/to/pktgen-dpdk make ``` #### 3. 启动 Pktgen 并配置参数 启动 Pktgen 需要指定 EAL 参数(Environment Abstraction Layer),这些参数定义了应用程序使用的硬件资源和行为模式。常见的启动脚本可能类似于以下形式: ```bash ./build/app/pktgen -c 0xf -n 4 --proc-type auto \ --file-prefix pg --socket-mem 1024,1024 \ -- -T -m "[1:2].0,[3:4].1" ``` 上述命令解释: - `-c 0xf`: CPU 核心掩码,表示哪些核心被分配给应用。 - `-n 4`: 指定 NUMA 节点数。 - `--socket-mem`: 分配每颗 NUMA 上的大页数量。 - `-T`: 表示开启统计功能。 - `-m "[1:2].0,[3:4].1"`: 映射逻辑核到物理端口。 #### 4. 发送数据包 通过 Web UI 或 CLI 控制台发送流量。例如,可以通过以下方式设定速率和持续时间: ```text set all rate 10 # 设定所有端口以 10% 的线速发送 start all # 开始传输 stop all # 停止传输 show all stats # 查看实时统计数据 ``` #### 5. 数据分析 收集来自控制台输出的结果或者保存日志文件以便进一步处理。通常关注的关键指标有吞吐量 (Throughput),延迟 (Latency) 和丢包率 (Packet Loss Rate)[^4]。 --- ### 示例代码片段展示如何自动化部署流程 下面提供一段简单的 Bash 脚本来实现部分自动化的部署过程: ```bash #!/bin/bash # Define paths and variables DPDK_DIR="/devel/dpdk" PKTGEN_DIR="/devel/pktgen-dpdk" # Install dependencies yum install -y gcc libpcap-devel kernel-devel kernel-headers # Clone repositories if not existent yet if [ ! -d "$DPDK_DIR" ]; then git clone http://dpdk.org/git/dpdk $DPDK_DIR fi if [ ! -d "$PKTGEN_DIR" ]; then git clone http://dpdk.org/git/apps/pktgen-dpdk $PKTGEN_DIR fi # Build DPDK SDK cd $DPDK_DIR && make config T=x86_64-native-linuxapp-gcc && make # Export environment variable & build pktgen application export RTE_SDK=$DPDK_DIR export RTE_TARGET=x86_64-native-linuxapp-gcc cd $PKTGEN_DIR && make ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值