以下是 pktgen 常用命令的分类整理和详细说明:
一、基本配置命令
命令格式 | 说明 |
pktgen.set("all", "count", 0) |
设置发送包数(0=无限发送) |
pktgen.set("0", "size", 64) |
设置端口0的包大小为64字节 |
pktgen.set_ipaddr("0", "dst", "10.0.0.2") |
设置端口0的目标IP地址 |
pktgen.set_mac("0", "dst", "00:11:22:33:44:55") |
设置端口0的目标MAC地址 |
pktgen.vlan("0", "enable") |
在端口0启用VLAN标签 |
二、流量控制命令
命令格式 | 说明 |
pktgen.start("0") |
启动端口0的流量发送 |
pktgen.stop("all") |
停止所有端口的流量发送 |
pktgen.set("0", "rate", 50) |
设置端口0的发送速率为最大能力的50% |
pktgen.pause("Message", 2000) |
显示消息并暂停2秒 |
三、统计信息命令
命令格式 | 说明 |
pktgen.port_stats("all", "port") |
显示所有端口的实时统计(包数/带宽) |
pktgen.portStats(0, "port") |
获取端口0的统计对象(Lua脚本中使用) |
pktgen.clr() |
清除所有端口的统计计数器 |
pktgen.link_state() |
显示所有端口的链路状态 |
四、范围(Range)功能命令
命令格式 | 说明 |
pktgen.range.dst_ip("0", "start", "10.0.0.1") |
设置端口0的目标IP起始地址 |
pktgen.range.src_port("0", "min", 1000) |
设置端口0的源UDP端口起始值 |
pktgen.range.proto("tcp") |
设置生成流量的协议类型 |
pktgen.range("0", "on") |
启用端口0的范围模式(生成多样化流量) |
五、协议栈配置命令
命令格式 | 说明 |
pktgen.arp("all", "enable") |
在所有端口启用ARP协议 |
pktgen.set_proto("0", "udp") |
设置端口0使用UDP协议 |
pktgen.set_type("0", "ipv4") |
设置端口0生成IPv4报文 |
六、调试与信息命令
命令格式 | 说明 |
pktgen.screen("off") |
关闭屏幕刷新(提升性能) |
pktgen.delay(500) |
延迟500毫秒(Lua脚本中使用) |
pktgen.page("0") |
切换到主信息页面 |
pktgen.help() |
显示内置命令帮助 |
七、高级功能命令
命令格式 | 说明 |
pktgen.load("test.lua") |
加载并执行Lua脚本 |
pktgen.set("all", "burst", 64) |
设置突发包数量为64 |
pktgen.mac_from_arp("enable") |
自动从ARP表获取MAC地址 |
八、退出命令
命令格式 | 说明 |
pktgen.quit() |
安全退出pktgen程序 |
典型使用场景示例:
- 快速启动测试:
pktgen -l 0-3 -n 4 -- -P -m "[1:2].0" # 绑定CPU核心
set 0 rate 30 # 设置端口0速率为30%
start 0 # 开始发送
- 查看实时统计:
page stats # 切换到统计页面
page port 0 # 查看端口0详细信息
- Lua脚本控制:
pktgen.set("all", "burst", 128)
pktgen.delay(1000) -- 延迟1秒
重点说明:
- 速率单位:
set rate
命令的百分比基于理论最大值(如10G端口100%=10Gbps)
- 突发传输:较大的
burst
值可以提高吞吐量,但会增加延迟
- 范围模式:通过
range
命令生成多IP/多端口的流量模式,用于:
- 测试负载均衡设备
- 模拟真实网络流量
- 绕过交换机的流表限制
建议结合-f
参数使用预定义流配置文件,或通过Lua脚本实现复杂测试逻辑。