4. Pktgen 命令行基础:启动、交互、帮助与退出

Pktgen 是 DPDK 生态中最常用的高速发包工具,其命令行界面(CLI)提供了从简单流量构造到复杂压力场景的全部控制能力。本章将带你掌握 Pktgen 的启动方式、交互模式、帮助系统以及退出与重启操作,为后续的流量构造和性能测试打下坚实基础。

4.1 启动 Pktgen:两种典型方式

Pktgen 的启动依赖于 DPDK 环境抽象层(EAL)的初始化。根据是否使用配置文件,启动方式分为以下两种:

启动方式 命令示例 适用场景
交互式启动 ./app/x86_64-native-linuxapp-gcc/pktgen -l 0-3 -n 4 -- -P -m "[1:2].0" 调试、快速验证、教学演示
脚本式启动 ./app/x86_64-native-linuxapp-gcc/pktgen -l 0-3 -n 4 -- -f test.lua 自动化测试、回归测试、批量场景
关键参数解析:
-l 0-3:指定逻辑核 0~3 用于 DPDK 运行。
-n 4:指定内存通道数为 4(需与硬件匹配)。
-P:启用混杂模式(Promiscuous Mode),确保所有端口接收所有报文。
-m "[1:2].0":将逻辑核 1 和 2 绑定到端口 0 的 TX/RX 队列。
-f test.lua:启动后自动执行 Lua 脚本。
💡 实战建议:首次使用建议采用交互式启动,配合 -P 和 -m 参数,可以直观地观察端口状态和流量变化。

4.2 命令行交互:核心操作模式

启动成功后,Pktgen 会进入一个基于 readline 库的交互式命令行界面。该界面支持命令补全(Tab 键)、历史记录(上下箭头)和行编辑功能。

交互模式下的基本操作流程如下:

  1. 查看端口状态:输入 page 0 或 page 1 切换显示页面,查看端口统计、速率、丢包等信息。
  2. 配置流量参数:使用 set 命令族配置包大小、速率、源/目的 MAC 和 IP 等。
  3. 启动/停止发包:start 0 启动端口 0 发包,stop 0 停止。
  4. 实时调整:在发包过程中动态修改参数,无需重启。
⚠️ 常见误区:初学者容易混淆 page 命令和 set 命令。page 仅用于切换显示视图,不会改变任何配置;set 才是真正的配置命令。
Pktgen 交互式命令行操作流程 Pktgen 交互式命令行操作流程 1. 启动 Pktgen 2. page 0 查看端口状态 3. set 命令配置流量参数 4. start 0 启动发包

4.3 help 命令:内置文档系统

Pktgen 提供了完善的 help 系统,是学习和排查问题的最佳入口。掌握 help 命令的使用,可以让你在脱离外部文档的情况下独立完成大部分配置。

4.3.1 基本用法

# 显示所有可用命令的简要列表
pktgen> help

# 显示特定命令的详细用法
pktgen> help set
pktgen> help start
pktgen> help page

4.3.2 命令分类速查表

命令类别 常用命令 功能描述
显示与控制 page, theme, cls 切换显示页面、主题、清屏
流量配置 set, range, pkt 配置包大小、速率、协议字段、范围
启停控制 start, stop, quit 启动/停止指定端口发包、退出程序
统计与诊断 stats, port, load 查看端口统计、CPU 负载、内存使用
脚本与自动化 script, run, save 执行 Lua 脚本、保存配置
💡 高效技巧:使用 help set 后,Pktgen 会列出所有 set 子命令,如 set size、set rate、set src ip 等。这是快速了解某个命令族全部能力的最佳方式。

4.4 退出与重启:优雅地管理会话

在长时间的压力测试或调试过程中,正确退出和重启 Pktgen 可以避免端口残留、内存泄漏等问题。

4.4.1 退出 Pktgen

# 方式一:交互式退出(推荐)
pktgen> quit

# 方式二:Ctrl+C 中断(紧急情况)
# 注意:可能导致端口未释放,建议先 stop 所有端口

4.4.2 重启 Pktgen

Pktgen 本身没有内置的 restart 命令。重启需要分两步完成:

  1. 退出当前会话:使用 quit 命令。
  2. 重新启动:在 Shell 中再次执行启动命令。
⚠️ 重要提醒:在退出前,建议先执行 stop all 停止所有端口的发包,然后执行 port 0 确认端口状态为 STOPPED。直接 quit 或 Ctrl+C 可能导致 DPDK 端口处于 UP 状态,下次启动时出现端口占用错误。
Pktgen 退出与重启流程 Pktgen 退出与重启流程 1. stop all 2. port 0 确认 STOPPED 3. quit 4. Shell: ./pktgen -l 0-3 -n 4 -- -P 5. Pktgen 重新就绪

4.5 本章小结

  • 启动:掌握交互式(-P -m)和脚本式(-f)两种启动方式,理解 EAL 参数和 Pktgen 应用参数的区别。
  • 交互:熟悉 page、set、start/stop 三大核心操作,形成“查看→配置→启停”的工作流。
  • 帮助:善用 help 命令,特别是 help set 等子命令,这是最快捷的参考文档。
  • 退出与重启:养成先 stop all 再 quit 的习惯,避免端口残留问题。
📌 课后练习:
1. 启动 Pktgen,使用 help 命令找出所有与“rate”相关的命令。
2. 启动后执行 page 0,观察默认的端口统计信息。
3. 练习完整的退出流程:stop all → port 0 确认 → quit。