2

This is my setup to benchmark my server Diagram

enter image description here

Trex version v2.88

Trex server MAC

ens2f0: f8:f2:1e:5c:bf:78
ens2f1: f8:f2:1e:5c:bf:79

DUT server MAC

eth0: fa:16:3e:1c:be:82
eth1: fa:16:3e:d5:37:b1

trex_cfg.yaml

cat /etc/trex_cfg.yaml
Config file generated by dpdk_setup_ports.py
- version: 2
  #interfaces: ['07:00.0', '07:00.1']
  interfaces: ['ens2f0', 'ens2f1']
  port_info:
      - ip: 10.66.0.100
        default_gw: 10.66.1.33
      - ip: 10.68.0.100
        default_gw: 10.68.3.217

  platform:
      master_thread_id: 0
      latency_thread_id: 8
      dual_if:
        - socket: 0
          threads: [1,2,3,4,5,6,7,16,17,18,19,20,21,22,23]

My scenario file

- duration : 5
  generator :
          distribution : "seq"
          clients_start : "16.0.0.1"
          clients_end   : "16.0.0.255"
          servers_start : "48.0.0.1"
          servers_end   : "48.0.255.255"
          clients_per_gb : 10
          min_clients    : 10
          dual_port_mask : "1.0.0.0"
          tcp_aging      : 0
          udp_aging      : 0
  cap_info :
     - name: cap2/rtp_160k.pcap
       cps : 10.0
       ipg : 10000
       rtt : 10000
       w   : 4
     - name: cap2/rtp_250k_rtp_only_1.pcap
       cps : 10.0
       ipg : 10000
       rtt : 10000
       w   : 4
     - name: cap2/rtp_250k_rtp_only_2.pcap
       cps : 10.0
       ipg : 10000
       rtt : 10000
       w   : 4 

Run command

./t-rex-64 --cfg /etc/trex_cfg.yaml -f /tmp/sfr.yaml -d 10 -m 1 -c 1 -k 2 --nc

In Test i am seeing Trex sending UDP stream but RX end not receiving any data and result is 100% packet drops. when i run tcpdump on my DUT device i can see its sending UDP stream to Trex RX end using correct MAC address. fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79

DUT server tcpdump

   16.0.0.17.58005 > 48.0.0.17.1024: [no cksum] UDP, length 1231
15:38:34.237250 fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79, ethertype IPv4 (0x0800), length 378: (tos 0x0, ttl 125, id 11822, offset 0, flags [none], proto UDP (17), length 364)
    16.0.0.18.9873 > 48.0.0.18.1026: [no cksum] UDP, length 336
15:38:34.237260 fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79, ethertype IPv4 (0x0800), length 1492: (tos 0x0, ttl 125, id 11852, offset 0, flags [none], proto UDP (17), length 1478)
    16.0.0.15.23195 > 48.0.0.15.1026: [no cksum] UDP, length 1450
15:38:34.237266 fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79, ethertype IPv4 (0x0800), length 434: (tos 0x0, ttl 125, id 11832, offset 0, flags [none], proto UDP (17), length 420)

As soon as test start i am seeing correct ARP entry mac-ip but in 2 second it get incomplete even my test is running and keep sending data.

[root@dut-2 ~]# arp -a | grep 10.68.0.100
? (10.68.0.100) at f8:f2:1e:5c:bf:79 [ether] on eth1
[root@dut-2 ~]# arp -a | grep 10.68.0.100
? (10.68.0.100) at <incomplete> on eth1
Any idea why ARP getting incomplete in 2 second?

UPDATE:

When i run tcpdump on DUT server then i found Trex RX side interface ask for ARP and DUI replied back but when DUT ask for ask then Trex not replying back (10.68.3.217 is eth1 IP of DUT server)

[root@dut-1 ~]# tcpdump -i eth1 -nn arp -e -vv
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
16:03:26.527165 f8:f2:1e:5c:bf:79 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Ethernet (len 6), IPv4 (len 4), Request who-has 10.68.0.100 (01:03:05:07:09:00) tell 10.68.0.100, length 46
16:03:26.527192 f8:f2:1e:5c:bf:79 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Ethernet (len 6), IPv4 (len 4), Request who-has 10.68.3.217 (01:03:05:07:09:01) tell 10.68.0.100, length 46
16:03:26.527201 fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Reply 10.68.3.217 is-at fa:16:3e:d5:37:b1, length 28
16:03:32.107249 fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Request who-has 10.68.0.100 tell 10.68.3.217, length 28
16:03:33.131245 fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Request who-has 10.68.0.100 tell 10.68.3.217, length 28
16:03:34.155245 fa:16:3e:d5:37:b1 > f8:f2:1e:5c:bf:79, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Request who-has 10.68.0.100 tell 10.68.3.217, length 28
16:03:35.183759 fa:16:3e:d5:37:b1 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Request who-has 10.68.0.100 tell 10.68.3.217, length 28
16:03:36.203260 fa:16:3e:d5:37:b1 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Request who-has 10.68.0.100 tell 10.68.3.217, length 28
16:03:37.227240 fa:16:3e:d5:37:b1 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 

For experiment if i run t-rex in server mode with command: ./t-rex-64 -i --astf

Then i can see it creating namespace and i can ping DUT ip address and also able to verify 16.0.0.0/8 and 48.0.0.0/8 routing also everything looks good so far.

[root@Trex v2.86]# ip netns list
trex-a-1-0 (id: 1)
trex-a-0-0 (id: 0)
[root@Trex v2.86]# ip netns exec trex-a-1-0 ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
43: trex-a-1-0-L@if44: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9280 qdisc noqueue state UP group default qlen 1000
    link/ether f8:f2:1e:5c:bf:79 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.68.0.100/32 scope global trex-a-1-0-L
       valid_lft forever preferred_lft forever

But when i run with regular command its not creating any network namespace so does that normal?

./t-rex-64 --cfg /etc/trex_cfg.yaml -f /tmp/spatel-sfr.yaml -d 60 -m 1 -c 1 -k 2 --nc
1
  • Did any answer help you? if so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you could post and accept your own answer. – Ron Maupin Dec 31 '20 at 4:25
1

I forgot to mention that my DUT server/application was running on Openstack cloud.

Solution:

Disable port_security_enabled option on neutron port because it had lots of anti-spoofing rules blocking multiple IP/Mac flow (No matter you have security-group allow all or not)

Reference Doc: http://kimizhang.com/neutron-ml2-port-security/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.