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 键)、历史记录(上下箭头)和行编辑功能。
交互模式下的基本操作流程如下:
- 查看端口状态:输入
page 0或page 1切换显示页面,查看端口统计、速率、丢包等信息。 - 配置流量参数:使用
set命令族配置包大小、速率、源/目的 MAC 和 IP 等。 - 启动/停止发包:
start 0启动端口 0 发包,stop 0停止。 - 实时调整:在发包过程中动态修改参数,无需重启。
⚠️ 常见误区:初学者容易混淆
page 命令和 set 命令。page 仅用于切换显示视图,不会改变任何配置;set 才是真正的配置命令。
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 命令。重启需要分两步完成:
- 退出当前会话:使用
quit命令。 - 重新启动:在 Shell 中再次执行启动命令。
⚠️ 重要提醒:在退出前,建议先执行
stop all 停止所有端口的发包,然后执行 port 0 确认端口状态为 STOPPED。直接 quit 或 Ctrl+C 可能导致 DPDK 端口处于 UP 状态,下次启动时出现端口占用错误。
4.5 本章小结
- 启动:掌握交互式(
-P -m)和脚本式(-f)两种启动方式,理解 EAL 参数和 Pktgen 应用参数的区别。 - 交互:熟悉
page、set、start/stop三大核心操作,形成“查看→配置→启停”的工作流。 - 帮助:善用
help命令,特别是help set等子命令,这是最快捷的参考文档。 - 退出与重启:养成先
stop all再quit的习惯,避免端口残留问题。
📌 课后练习:
1. 启动 Pktgen,使用
2. 启动后执行
3. 练习完整的退出流程:
1. 启动 Pktgen,使用
help 命令找出所有与“rate”相关的命令。2. 启动后执行
page 0,观察默认的端口统计信息。3. 练习完整的退出流程:
stop all → port 0 确认 → quit。