Trex 流量测试¶
Cisco 开源的高性能流量生成器,用于网络设备测试、性能评估与负载测试。
flowchart LR
A[选择三元组<br/>源IP / 目的IP / 源端口] --> B[基于 pcap 改报文]
B --> C[按 cps 生成多条流]
C --> D[按 ipg 控制包间隔]
D --> E[Trex server 打流]
E --> F[接收侧统计 Rx/PPS/丢包]
🚀运行模式¶
无状态 · 有状态 pcap · ASTF。类 IXIA 发包、pcap 模板与脚本化三种模式。
类似 IXIA 发包仪:构造报文按指定速率发送,可用官方 GUI 配置报文。 仓库:https://github.com/cisco-system-traffic-generator/trex-stateless-gui.git
以 pcap 为基础改 IP/端口形成多条流,多个 pcap 即可发混合流量。
更高级,需写 Python 脚本。
📦安装 server¶
推荐 CentOS 7 / Ubuntu 22.04。二进制包:trex-server.tar.gz
最小配置 /root/trex_cfg.yaml(前三行必填;无 DPDK 驱动时 interfaces 直接写网卡名):
| /root/trex_cfg.yaml | |
|---|---|
- 端口数,与
interfaces一致。 - PCIE 号或网卡名;无 DPDK 驱动时直接写网卡名。
- 每对网口使用的 CPU 核数。
启动:
不同类型网卡可启动多个实例(用不同 --prefix 与 cfg)。
⚙️常用参数¶
| 参数 | 作用 |
|---|---|
-c |
每个接口对使用的 CPU 核数 |
--cfg |
配置文件,默认 /etc/trex_cfg.yaml |
-d |
测试时长(秒) |
-f |
流量配置文件 |
--ipv6 |
模板转 IPv6 |
-l |
测试同时做延迟测试 |
--lo |
仅做延迟测试 |
-v |
日志等级 |
-m <num> |
流量模板 cps 乘以该数,提高并发会话数 |
CLI 运行示例(SFR 35Gb/sec):
Windows GUI 下载:trex-stateless-gui releases,指定版本 trex-stateless-gui-v4.5.6.exe。
GUI 报 Java 错误
改用 jdk-20_windows-x64_bin.exe。
📊运行字段¶
Total-Tx · Total-Rx · Total PPS · drop-rate。控制台常见字段含义。
| 字段 | 说明 |
|---|---|
| Total-Tx | 总发送速率 Mbps |
| opackets / obytes | 发送报文数 / 字节数 |
| ipackets / ibytes | 接收报文数 / 字节数 |
| ierrors / oerrors | 接收 / 发送错误报文数 |
| Total-Rx | 总接收速率 Mbps |
| Total PPS | 当前发送 pps |
| active-flows / open-flows | 活跃会话数 / 启动后创建的总会话数 |
| drop-rate | 丢包率 |
📄流量模板参数¶
Trex 发送时先选一个三元组(源 IP、目的 IP、源端口),再基于它修改 pcap 报文。
flowchart LR
A["选择三元组<br/>源 IP / 目的 IP / 源端口"] --> B["修改 pcap 报文"]
B --> C["按 cps 生成多条流"]
C --> D["按 ipg 控制包间隔"]
| 参数 | 说明 |
|---|---|
cps |
每秒选择的三元组个数,即每秒新建会话数 |
ipg |
pcap 内两个报文的时间间隔(微秒),一般 10000(10ms) |
w |
三元组选择策略,w=3 时连续三次源 IP/目的 IP 不变、源端口变化 |
limit |
限制会话数,limit=3 即 3 条流重复发送,此时 cps 等价 pps,可模拟 stateless |
duration |
测试时间,也可由命令行 -d 指定 |
- duration : 10.0
generator:
distribution : "seq" # seq / random
clients_start : "16.0.0.1"
clients_end : "16.0.0.255"
servers_start : "48.0.0.1"
servers_end : "48.0.0.255"
cap_ipg : true # 使用 pcap 内的时间间隔(建议打开)
cap_info:
- name: cap2/dns.pcap
cps : 10.0
ipg : 10000
rtt : 10000 # 需与 ipg 一致
w : 1
limit: 10
one_app_server : true
server_addr : "48.0.0.7"
❓FAQ¶
dummy 虚拟接口 · low_end · dpdk_setup_ports.py。组网与性能相关问题。
发包机器性能较差
配置中加 low_end: true。
📚官方手册¶
Trex 官方文档。完整参数与示例。