Understand, I am still learning how to use trex, so I maybe using the system wrong, hence why I see the problem I do. Below are details on the problem, my system, troubleshooting, and configs.
trex has very high drop rates when using IPs in the trex-cfg.yaml for stateful, astf, and stateless. Communication is all L2 (same subnet).
- Physical host, 2 physical 10Gbps ports connected to Juniper QFX5100, 2 ports looped to each other 10Gbps, running rhel 7.9.
- Clients receiving packets from trex, are virtual machines on vmware esxi running rhel7.9 as well.
- Default gateway configured on the QFX5100, confirmed I can access via L2 (So this should not be needed)
- Confirmed L2 works from Linux kernel by rebooting with out configuring dpdk, can ping and forwarding tables are populated.
- Tried putting the system in to astf mode and perform service, then arp, arp resolves.
- Performed traces on hosts sending packets to, they receive packets. From the examples below they receive a TCP handshake, as well as the HTTP packets, but trex still shows major drop rates.
My config file:
### Config file generated by dpdk_setup_ports.py ###
- version: 2
interfaces: ['5e:00.2', '5e:00.3']
port_info:
- ip: 172.16.90.65
default_gw: 172.16.90.1
- ip: 172.16.90.66
default_gw: 172.16.90.1
platform:
master_thread_id: 0
latency_thread_id: 1
dual_if:
- socket: 0
threads: [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]
Interfaces:
Network devices using DPDK-compatible driver
============================================
0000:5e:00.2 'Ethernet Controller X710 for 10GbE SFP+' drv=igb_uio unused=i40e,vfio-pci,uio_pci_generic
0000:5e:00.3 'Ethernet Controller X710 for 10GbE SFP+' drv=igb_uio unused=i40e,vfio-pci,uio_pci_generic
Network devices using kernel driver
===================================
0000:19:00.0 'I350 Gigabit Network Connection' if=em1 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic
0000:19:00.1 'I350 Gigabit Network Connection' if=em2 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic
0000:19:00.2 'I350 Gigabit Network Connection' if=em3 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic
0000:19:00.3 'I350 Gigabit Network Connection' if=em4 drv=igb unused=igb_uio,vfio-pci,uio_pci_generic *Active*
Other network devices
=====================
0000:5e:00.0 'Ethernet Controller X710 for 10GbE SFP+' unused=i40e,igb_uio,vfio-pci,uio_pci_generic
0000:5e:00.1 'Ethernet Controller X710 for 10GbE SFP+' unused=i40e,igb_uio,vfio-pci,uio_pci_generic
0000:86:00.0 'Ethernet Controller X710 for 10GbE SFP+' unused=i40e,igb_uio,vfio-pci,uio_pci_generic
0000:86:00.1 'Ethernet Controller X710 for 10GbE SFP+' unused=i40e,igb_uio,vfio-pci,uio_pci_generic
0000:86:00.2 'Ethernet Controller X710 for 10GbE SFP+' unused=i40e,igb_uio,vfio-pci,uio_pci_generic
0000:86:00.3 'Ethernet Controller X710 for 10GbE SFP+' unused=i40e,igb_uio,vfio-pci,uio_pci_generic
portattr in astf mode:trex>portattr
Port Status
port | 0 | 1
----------------+----------------------+---------------------
driver | net_i40e | net_i40e
description | Ethernet Controlle | Ethernet Controlle
link status | UP | UP
link speed | 10 Gb/s | 10 Gb/s
port status | LOADED | LOADED
promiscuous | off | off
multicast | off | off
flow ctrl | none | none
vxlan fs | - | -
-- | |
layer mode | IPv4 | IPv4
src IPv4 | 172.16.90.65 | 172.16.90.66
IPv6 | off | off
src MAC | f8:f2:1e:bc:f4:d2 | f8:f2:1e:bc:f4:d3
--- | |
Destination | 172.16.90.1 | 172.16.90.1
ARP Resolution | 88:d9:8f:af:34:60 | 88:d9:8f:af:34:60
---- | |
VLAN | - | -
----- | |
PCI Address | 0000:5e:00.2 | 0000:5e:00.3
NUMA Node | 0 | 0
RX Filter Mode | hardware match | hardware match
RX Queueing | off | off
Grat ARP | every 120 seconds | every 120 seconds
------ | |
Config file I tried using in stateful mode:- duration : 0.1
generator :
distribution : "seq"
clients_start : "172.16.90.100"
clients_end : "172.16.90.101"
servers_start : "172.16.90.62"
servers_end : "172.16.90.62"
clients_per_gb : 201
min_clients : 101
dual_port_mask : "1.0.0.0"
tcp_aging : 0
udp_aging : 0
cap_ipg : true
cap_info :
- name: avl/delay_10_http_browsing_0.pcap
cps : 2.776
#cps : 1
ipg : 10000
rtt : 10000
w : 1
Config file I tried using in astf mode:from trex.astf.api import *
class Prof1():
def __init__(self):
pass
def get_profile(self, **kwargs):
# ip generator
ip_gen_c = ASTFIPGenDist(ip_range=["172.16.90.65", "172.16.90.66"], distribution="seq")
ip_gen_s = ASTFIPGenDist(ip_range=["172.16.90.62", "172.16.90.62"], distribution="seq")
ip_gen = ASTFIPGen(glob=ASTFIPGenGlobal(ip_offset="1.0.0.0"),
dist_client=ip_gen_c,
dist_server=ip_gen_s)
return ASTFProfile(default_ip_gen=ip_gen,
cap_list=[ASTFCapInfo(file="../avl/delay_10_http_browsing_0.pcap",
cps=2.776)])
def register():
return Prof1()
example output of stateful mode running this command"./t-rex-64 -f cap2/http_simple.yaml -c 1 -d 100"
-Per port stats table
ports | 0 | 1
-----------------------------------------------------------------------------------------
opackets | 420 | 690
obytes | 34170 | 1003020
ipackets | 46 | 46
ibytes | 2944 | 2944
ierrors | 0 | 0
oerrors | 0 | 0
Tx Bw | 24.41 Kbps | 682.61 Kbps
-Global stats enabled
Cpu Utilization : 0.0 %
Platform_factor : 1.0
Total-Tx : 707.02 Kbps
Total-Rx : 4.22 Kbps
Total-PPS : 95.64 pps
Total-CPS : 2.92 cps
Expected-PPS : 102.71 pps
Expected-CPS : 2.78 cps
Expected-BPS : 767.80 Kbps
Active-flows : 0 Clients : 2 Socket-util : 0.0000 %
Open-flows : 30 Servers : 1 Socket : 0 Socket/Clients : 0.0
drop-rate : 702.80 Kbps
current time : 12.3 sec
test duration : 87.7 sec