当前位置: 首页 > 工具软件 > TRex > 使用案例 >

trex做网卡性能测试方法

公孙宗清
2023-12-01

TRex是cisco基于Intel dpdk开发的软件程序。推荐在CentOS/RHEL 7.6, 64bits中运行,否则connectx-4网卡不可使用。

1.下载&安装

mkdir -p /opt/trex

cd /opt/trex

wget --no-check-certificate https://trex-tgn.cisco.com/trex/release/latest

tar -xzvf latest

2.配置网卡

2.1 查看网络接口  ,我已经绑定了2个接口。

运行如提示Python3版本低,请升级版本。yum install python3 -y 

[root@localhost v2.99]# ./dpdk_setup_ports.py -s

Network devices using DPDK-compatible driver
============================================
0000:05:00.0 'I210 Gigabit Network Connection' drv=igb_uio unused=igb,vfio-pci,uio_pci_generic
0000:06:00.0 'I210 Gigabit Network Connection' drv=igb_uio unused=igb,vfio-pci,uio_pci_generic

Network devices using kernel driver
===================================
0000:04:00.0 'I210 Gigabit Network Connection' if=enp4s0 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic *Active*
0000:07:00.0 'I210 Gigabit Network Connection' if=enp7s0 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic 
0000:08:00.0 'I210 Gigabit Network Connection' if=enp8s0 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic 
0000:09:00.0 'I210 Gigabit Network Connection' if=enp9s0 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic 
0000:0a:00.0 'I210 Gigabit Fiber Network Connection' if=enp10s0 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic 
0000:0b:00.0 'I210 Gigabit Fiber Network Connection' if=enp11s0 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic 

Other network devices
=====================
<none>
[root@localhost v2.99]# 

2.2 绑定网络接口

To create a default config file (example)
[root@localhost v2.99]# ./dpdk_setup_ports.py -c 07:00.0 08:00.0 -o /etc/trex_cfg.yaml 
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| ID | NUMA |   PCI   |        MAC        |                 Name                  | Driver  | Linux IF |  Active  |
+====+======+=========+===================+=======================================+=========+==========+==========+
| 0  | -1   | 04:00.0 | 8c:1c:da:44:4a:07 | I210 Gigabit Network Connection       | igb     | enp4s0   | *Active* |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| 1  | -1   | 05:00.0 | 8c:1c:da:44:4a:08 | I210 Gigabit Network Connection       | igb_uio |          |          |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| 2  | -1   | 06:00.0 | 8c:1c:da:44:4a:09 | I210 Gigabit Network Connection       | igb_uio |          |          |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| 3  | -1   | 07:00.0 | 8c:1c:da:44:4a:0a | I210 Gigabit Network Connection       | igb     | enp7s0   |          |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| 4  | -1   | 08:00.0 | 8c:1c:da:44:4a:0b | I210 Gigabit Network Connection       | igb     | enp8s0   |          |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| 5  | -1   | 09:00.0 | 8c:1c:da:44:4a:0c | I210 Gigabit Network Connection       | igb     | enp9s0   |          |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| 6  | -1   | 0a:00.0 | 8c:1c:da:44:4a:0d | I210 Gigabit Fiber Network Connection | igb     | enp10s0  |          |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
| 7  | -1   | 0b:00.0 | 8c:1c:da:44:4a:0e | I210 Gigabit Fiber Network Connection | igb     | enp11s0  |          |
+----+------+---------+-------------------+---------------------------------------+---------+----------+----------+
Saved to /etc/trex_cfg.yaml.

2.3如需修改网卡请编辑配置文件  vim /etc/trex_cfg.yaml

### Config file generated by dpdk_setup_ports.py ###

- version: 2
  interfaces: ['05:00.0', '06:00.0']
  port_info:
      - ip: 1.1.1.1
        default_gw: 2.2.2.2
      - ip: 2.2.2.2
        default_gw: 1.1.1.1

  platform:
      master_thread_id: 0
      latency_thread_id: 1
      dual_if:
        - socket: 0
          threads: [2,3,4,5,6,7]

3. 启动trex

3.1 先启动trex主程序,本方案是用网线做的回环测试。

[root@localhost v2.99]# ./t-rex-64 -i
Starting Scapy server.... Scapy server is started
The ports are bound/configured.
Starting  TRex v2.99 please wait  ... 
 set driver name net_e1000_igb 
 driver capability  : TCP_UDP_OFFLOAD  TSO  SLRO 
 set dpdk queues mode to DROP_QUE_FILTER 
 Number of ports found: 2
zmq publisher at: tcp://*:4500
 wait 7 sec .......
port : 0 
------------
link         :  link : Link Up - speed 1000 Mbps - full-duplex
promiscuous  : 0 
port : 1 
------------
link         :  link : Link Up - speed 1000 Mbps - full-duplex
promiscuous  : 0 
 number of ports         : 2 
 max cores for 2 ports   : 1 
 tx queues per port      : 3 
 -------------------------------
RX core uses TX queue number 1 on all ports
 core, c-port, c-queue, s-port, s-queue, lat-queue
 ------------------------------------------
 1        0      0       1       0      2  
 -------------------------------

3.1 再开启TRex客户端程序

再打开一个终端运行./trex-console

[root@localhost v2.99]# ./trex-console 

Using 'python3' as Python interpeter


Connecting to RPC server on localhost:4501                   [SUCCESS]


Connecting to publisher server on localhost:4500             [SUCCESS]


Acquiring ports [0, 1]:                                      [SUCCESS]


Server Info:

Server version:   v2.99 @ STL
Server mode:      Stateless
Server CPU:       1 x Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
Ports count:      2 x 1Gbps @ I210 Gigabit Network Connection	

-=TRex Console v3.0=-

Type 'help' or '?' for supported actions

trex>

3.2 在客户端中开启流量发送


trex>start -f stl/bench.py -m 99% -d 60 -t vm=cached,size=64

Removing all streams from port(s) [0._, 1._]:                [SUCCESS]


Attaching 1 streams to port(s) [0._]:                        [SUCCESS]


Attaching 1 streams to port(s) [1._]:                        [SUCCESS]


Starting traffic on port(s) [0._, 1._]:                      [SUCCESS]

25.95 [ms]

###################################
-m 表示使用多大的带宽,对于10G网卡,90%表示发送9G左右的流量。
-d 测试时间,60秒后自动停止发包。
-f 指定脚本,脚本用于构造发送什么样的数据。
-t 这些参数会传给 -f 参数所指定的脚本,对于 stl/bench.py 我们可以使用 size 指定数据包大小。

3.3 客户端中stats可查看流量情况

trex>stats
Global Statistics

connection   : localhost, Port 4501                       total_tx_L2  : 1.42 Gbps                      
version      : STL @ v2.99                                total_tx_L1  : 1.87 Gbps                      
cpu_util.    : 4.69% @ 1 cores (1 per dual port)          total_rx     : 1.42 Gbps                      
rx_cpu_util. : 0.0% / 0 pps                               total_pps    : 2.78 Mpps                      
async_util.  : 0% / 10.2 bps                              drop_rate    : 0 bps                          
total_cps.   : 0 cps                                      queue_full   : 0 pkts                         

Port Statistics

   port    |         0         |         1         |       total       
-----------+-------------------+-------------------+------------------
owner      |              root |              root |                   
link       |                UP |                UP |                   
state      |      TRANSMITTING |      TRANSMITTING |                   
speed      |            1 Gb/s |            1 Gb/s |                   
CPU util.  |             4.69% |             4.69% |                   
--         |                   |                   |                   
Tx bps L2  |       711.11 Mbps |       711.11 Mbps |         1.42 Gbps 
Tx bps L1  |       933.34 Mbps |       933.34 Mbps |         1.87 Gbps 
Tx pps     |         1.39 Mpps |         1.39 Mpps |         2.78 Mpps 
Line Util. |           93.33 % |           93.33 % |                   
---        |                   |                   |                   
Rx bps     |       711.11 Mbps |       711.11 Mbps |         1.42 Gbps 
Rx pps     |         1.39 Mpps |         1.39 Mpps |         2.78 Mpps 
----       |                   |                   |                   
opackets   |          95222487 |          95222752 |         190445239 
ipackets   |          95222474 |          95222741 |         190445215 
obytes     |        6094239488 |        6094256384 |       12188495872 
ibytes     |        6094238656 |        6094255744 |       12188494400 
tx-pkts    |       95.22 Mpkts |       95.22 Mpkts |      190.45 Mpkts 
rx-pkts    |       95.22 Mpkts |       95.22 Mpkts |      190.45 Mpkts 
tx-bytes   |           6.09 GB |           6.09 GB |          12.19 GB 
rx-bytes   |           6.09 GB |           6.09 GB |          12.19 GB 
-----      |                   |                   |                   
oerrors    |                 0 |                 0 |                 0 
ierrors    |                 0 |                 0 |                 0 

trex>

3.4 trex主程序界面也可以看到实时流量统计

-Per port stats table 
      ports |               0 |               1 
 -----------------------------------------------------------------------------------------
   opackets |       192174862 |       192174936 
     obytes |     12299191360 |     12299196160 
   ipackets |       192174849 |       192174927 
     ibytes |     12299190656 |     12299195520 
    ierrors |               0 |               0 
    oerrors |               0 |               0 
      Tx Bw |     757.28 Mbps |     757.28 Mbps 

-Global stats enabled 
 Cpu Utilization : 6.8  %  44.2 Gb/core 
 Platform_factor : 1.0  
 Total-Tx        :       1.51 Gbps  
 Total-Rx        :       1.51 Gbps  
 Total-PPS       :       2.96 Mpps  
 Total-CPS       :       0.00  cps  

 Expected-PPS    :       0.00  pps  
 Expected-CPS    :       0.00  cps  
 Expected-BPS    :       0.00  bps  

 Active-flows    :        0  Clients :        0   Socket-util : 0.0000 %    
 Open-flows      :        0  Servers :        0   Socket :        0 Socket/Clients :  -nan 
 drop-rate       :       0.00  bps   
 current time    : 247.1 sec  
 test duration   : 0.0 sec  

 类似资料: