Re: [trex-tgn] Client-Server mode run at the same time and QoS

562 views
Skip to first unread message
Message has been deleted

hanoh haim

unread,
May 2, 2018, 6:12:35 AM5/2/18
to Jeremy Rensen, TRex Traffic Generator
Hi  Jeremy, 

 

I'm a bit confused at the first section, you are using ASTF when there are two TRex machines (Client and Server side).

While in the last section you are using STF mode that does not support this configuration.

Do you want to use ASTF with two TRex that send DNS an HTTP?


Regarding Qos, the is only one set of ASTF counters (per client/server), we plan to add the same set per template, this case you will have the ability to know which template is affected.


thanks,

Hanoh


On Wed, May 2, 2018 at 12:35 PM, <jeremy...@gmail.com> wrote:
Hi,

** How can i run tests on the client and server at the same time?

Setup:
Client (TRex on Ubuntu) <--> Router (CSR1000v) <--> Server (TRex VM)

I started with basic DNS and HTTP traffic, using ASTF (for client and server mode), but total tx and rx are never the same because i have to start the command on the client and then on the server.

Used commands.

Client:         
“./t-rex-64 -f astf/http_simple.py -m 10 -d 60 -c 1 --astf -k 5 --astf-client-mask 0x1”

Server:         
“./t-rex-64 -f astf/http_simple.py -m 10 -d 60 -c 1 --astf -k 5 --astf-sever-only”

Used configuration.

Client:
- port_limit: 2
  version: 2
  low_end: true
  interfaces: ['eth0', 'dummy']
  port_info:
      - ip: 10.10.10.2
        default_gw: 10.10.10.1
      - ip: 1.1.1.1
        default_gw: 2.2.2.2

Server:
- port_limit: 2
  version: 2
  low_end: true
  interfaces: ['dummy', 'eth1']
  port_info:
      - ip: 1.1.1.1
        default_gw: 2.2.2.2
      - ip: 10.10.20.2
        default_gw: 10.10.20.1

** Now i would like to test a traffic mix (dns and http and other within the same file) for testing QoS. Are there any best practices or examples?

I was following the Trex manual using this in a test.yaml file:

- duration : 1.0
  generator :
          distribution : "seq"
          clients_start : "16.0.0.1"
          clients_end   : "16.0.0.10"
          servers_start : "48.0.0.1"
          servers_end   : "48.0.0.3"
          clients_per_gb : 201
          min_clients    : 101
          dual_port_mask : "1.0.0.0"
          tcp_aging      : 1
          udp_aging      : 1
  mac        : [0x00,0x00,0x00,0x01,0x00,0x00]
  cap_ipg    : true
  cap_info :
     - name: cap2/dns.pcap
       cps : 10.0                        1
       ipg : 10000
       rtt : 10000
       w   : 1
     - name: avl/delay_10_http_browsing_0.pcap
       cps : 2.0                         1
       ipg : 10000
       rtt : 10000
       w   : 1

Kind regards,
Jeremy


--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+unsubscribe@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/8c2cbbd7-f2c5-4138-9504-8ae62966623b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Hanoh
Sent from my iPhone
Message has been deleted

hanoh haim

unread,
May 2, 2018, 6:38:15 AM5/2/18
to Jeremy Rensen, TRex Traffic Generator
Hi,
What do you mean in the same time? 
the templates or the TRex machines 

thanks,
Hanoh

On Wed, May 2, 2018 at 1:34 PM, <jeremy...@gmail.com> wrote:
Hi,

Sorry for the confusion. I think i got astf mode working with DNS and HTTP traffic.
Did the following in a test file "test_dns_and_http.py" in /astf folder:

from trex_astf_lib.api import *


class Prof1():
    def __init__(self):
        pass

    def get_profile(self):
        # ip generator
        ip_gen_c = ASTFIPGenDist(ip_range=["16.0.0.1", "16.0.0.10"],distribution="seq")
        ip_gen_s = ASTFIPGenDist(ip_range=["48.0.0.1", "48.0.0.3"],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=1),
                                ASTFCapInfo(file="../cap2/dns.pcap",cps=1)
                                     ])


def register():
    return Prof1()


Commands used
Client:
./t-rex-64-o -f astf/test_dns_and_http.py -m 1 -d 60 -c 1 --astf -k 5 --astf-client-mask 0x1 --nc

Server:
./t-rex-64-o -f astf/test_dns_and_http.py -m 1 -d 60 -c 1 --astf -k 5 --astf-server-only --nc

There are no errors (by using -m 1 (to 4).
But i was wondering if there is a way that i can run them exactly at the same time?


Kind regards,
Jeremy

--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+unsubscribe@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
Message has been deleted

hanoh haim

unread,
May 2, 2018, 6:47:21 AM5/2/18
to Jeremy Rensen, TRex Traffic Generator
Hi,
Understood now.


You should run the TRex "server" side first. No packet should be sent after this step (the server waits for the client).

The TRex "client" side should be run after that, it will trigger the negotiation.



something like that 


Server:         
“./t-rex-64 -f astf/http_simple.py -m 10 -d 60 -c 1 --astf -k 5 --astf-sever-only”



WAIT.........


WAIT.........


WAIT.........

WAIT......... no packets should be sent



Client:         
“./t-rex-64 -f astf/http_simple.py -m 10 -d 60 -c 1 --astf -k 5 --astf-client-mask 0x1”



thanks,

Hanoh 



On Wed, May 2, 2018 at 1:44 PM, <jeremy...@gmail.com> wrote:
I mean when i run the commands in the cli.

I hit enter in the client cli, then hit enter in the server cli, but then there's always packet loss and the test time will not be even.

It is maybe not a big deal for what i am doing, but I thought maybe there is a way to start the tests at the same time.


Kind regards,
Jeremy

--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+unsubscribe@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
Message has been deleted
Message has been deleted

hanoh haim

unread,
May 7, 2018, 7:24:07 AM5/7/18
to Jeremy Rensen, TRex Traffic Generator

 ./astf-sim -f astf/bug1.py -o a2.pcap --full -d 10

 def create_profile(self): 
       ip_gen_c1 = ASTFIPGenDist(ip_range=["16.0.0.1", "16.0.0.1"], distribution="seq") 
       ip_gen_s1 = ASTFIPGenDist(ip_range=["48.0.0.1", "48.0.0.10"], distribution="seq") 
       ip_gen1 = ASTFIPGen(glob=ASTFIPGenGlobal(ip_offset="1.0.0.0"), 
                           dist_client=ip_gen_c1, 
                           dist_server=ip_gen_s1) 


       ip_gen_c2 = ASTFIPGenDist(ip_range=["10.0.0.1", "10.0.0.1"], distribution="seq") 
       ip_gen_s2 = ASTFIPGenDist(ip_range=["20.0.0.1", "20.0.0.10"], distribution="seq") 
       ip_gen2 = ASTFIPGen(glob=ASTFIPGenGlobal(ip_offset="1.0.0.0"), 
                           dist_client=ip_gen_c2, 
                           dist_server=ip_gen_s2) 


       profile = ASTFProfile(default_ip_gen=ip_gen1, cap_list=[ 
           #ASTFCapInfo(file="../cap2/exchange.pcap"), 
           #ASTFCapInfo(file="../cap2/dns.pcap"),
           ASTFCapInfo(file="../cap2/citrix.pcap",ip_gen=ip_gen2), 
           #ASTFCapInfo(file="../cap2/https.pcap",ip_gen=ip_gen2)
           ]) 

       return profile 


I see a valid results in this case. 

thanks,
Hanoh

On Mon, May 7, 2018 at 1:13 PM, <jeremy...@gmail.com> wrote:
Hi,

Now I used the following, but I have a question.

---------------------------------------
import os
from trex_astf_lib.api import *

class Prof1():
   def __init__(self):
       pass

   def create_profile(self):
       ip_gen_c1 = ASTFIPGenDist(ip_range=["16.0.0.1", "16.0.0.1"], distribution="seq")
       ip_gen_s1 = ASTFIPGenDist(ip_range=["48.0.0.1", "48.0.0.10"], distribution="seq")
       ip_gen1 = ASTFIPGen(glob=ASTFIPGenGlobal(ip_offset="1.0.0.0"),
                           dist_client=ip_gen_c1,
                           dist_server=ip_gen_s1)


       ip_gen_c2 = ASTFIPGenDist(ip_range=["10.0.0.1", "10.0.0.1"], distribution="seq")
       ip_gen_s2 = ASTFIPGenDist(ip_range=["20.0.0.1", "20.0.0.10"], distribution="seq")
       ip_gen2 = ASTFIPGen(glob=ASTFIPGenGlobal(ip_offset="1.0.0.0"),
                           dist_client=ip_gen_c2,
                           dist_server=ip_gen_s2)


       profile = ASTFProfile(default_ip_gen=ip_gen1, cap_list=[
           ASTFCapInfo(file="../cap2/exchange.pcap"),
           ASTFCapInfo(file="../cap2/dns.pcap"),
           ASTFCapInfo(file="../cap2/citrix.pcap",ip_gen=ip_gen2),
           ASTFCapInfo(file="../cap2/https.pcap",ip_gen=ip_gen2)
           ])

       return profile


   def get_profile(self, **kwargs):
       return self.create_profile()


def register():
    return Prof1()

---------------------------------------

When I start a capture with Wireshark I can see all the traffic, from both ranges. Good results, but when I comment out exchange, dns and https, to test only citrix with the 2nd IP range, the output after the test..

Client:         “./t-rex-64 -f astf/test_multiple.py -m 1 -d 60 -c 1 --astf --astf-client-mask 0x1”
Server:         “./t-rex-64 -f astf/test_multiple.py -m 1 -d 60 -c 1 --astf --astf-sever-only”

.. there are only zeroes as output.
When I delete ip_gen=ip_gen2, of course it's then using the first range, it will give a good output in the cli. Why is that? For wireshark there are no differences, both good, with or without ip_gen=ip_gen2.

Kind regards,
Jeremy Rensen

--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+unsubscribe@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
Message has been deleted

hanoh haim

unread,
May 7, 2018, 8:52:44 AM5/7/18
to Jeremy Rensen, TRex Traffic Generator

Hi Jeremy, 

So by zero you mean the "counters" are zero.

This means that there is no valid route to those packet (10.0.0.x ..). Try to check when in the network the traffic are dropped.


The server will answer once the  SYN packet will be seen. 


thanks,

Hanoh 



On Mon, May 7, 2018 at 3:48 PM, <jeremy...@gmail.com> wrote:
I meant output in the cli.
With Wireshark the traffic is captured, which I can see (there are a lot tcp retransmissions, but my question is about the output in the cli).


Client:

normal
-------------
 min_delta  : 10 usec
 cnt        : 0
 high_cnt   : 0
 max_d_time : 0 usec
 sliding_average    : 0 usec
 precent    : -nan %
 histogram
 -----------
 m_total_open_flows                      :      30.00  flows
 m_total_open_flows                      : 30
 m_total_close_flows                     : 30
 ---------------
port : 0
------------
 opackets                                 : 120
 obytes                                   : 9360
 ipackets                                 : 9
 ibytes                                   : 1296
 Tx :     280.78  bps
 Cpu Utilization : 2.0  %  0.0 Gb/core
 Platform_factor : 1.0
 Total-Tx        :     280.78  bps
 Total-Rx        :     611.82  bps
 Total-PPS       :       0.45  pps
 Total-CPS       :       0.02  cps

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

 Active-flows    :        0  Clients :        2   Socket-util : 0.0000 %
 Open-flows      :       30  Servers :       20   Socket :        0 Socket/Clients :  0.0
 drop-rate       :       0.00  bps
 summary stats
 --------------
 Total-pkt-drop       : 111 pkts
 Total-tx-bytes       : 9360 bytes
 Total-tx-sw-bytes    : 0 bytes
 Total-rx-bytes       : 1296 byte

 Total-tx-pkt         : 120 pkts
 Total-rx-pkt         : 9 pkts
 Total-sw-tx-pkt      : 0 pkts
 Total-sw-err         : 0 pkts
 Total ARP sent       : 2 pkts
 Total ARP received   : 1 pkts
                       |          client   |            server   |
 -----------------------------------------------------------------------------------------
       m_active_flows  |               0  |                0  |  active open flows
          m_est_flows  |               0  |                0  |  active established flows
         m_tx_bw_l7_r  |       0.00  bps  |        0.00  bps  |  tx L7 bw acked
   m_tx_bw_l7_total_r  |       0.00  bps  |        0.00  bps  |  tx L7 bw total
         m_rx_bw_l7_r  |       0.00  bps  |        0.00  bps  |  rx L7 bw acked
           m_tx_pps_r  |       0.45  pps  |        0.00  pps  |  tx pps
           m_rx_pps_r  |       0.00  pps  |        0.00  pps  |  rx pps
           m_avg_size  |         0.00  B  |          0.00  B  |  average pkt size
           m_tx_ratio  |        0.00  %%  |         0.00  %%  |  Tx acked/sent ratio
                    -  |             ---  |              ---  |
                  TCP  |             ---  |              ---  |
                    -  |             ---  |              ---  |
     tcps_connattempt  |              30  |                0  |  connections initiated
          tcps_closed  |              30  |                0  |  conn. closed (includes drops)
       tcps_segstimed  |              30  |                0  |  segs where we tried to get rtt
        tcps_sndtotal  |             120  |                0  |  total packets sent
         tcps_sndbyte  |             180  |                0  |  data bytes sent by application
         tcps_sndctrl  |             120  |                0  |  control (SYN|FIN|RST) packets sent
       tcps_conndrops  |              30  |                0  | *embryonic connections dropped
  tcps_rexmttimeo_syn  |              90  |                0  | *retransmit SYN timeouts
       tcps_keeptimeo  |              30  |                0  | *keepalive timeouts
       tcps_keepdrops  |              30  |                0  | *connections dropped in keepalive
                    -  |             ---  |              ---  |
                  UDP  |             ---  |              ---  |
                    -  |             ---  |              ---  |
                    -  |             ---  |              ---  |
           Flow Table  |             ---  |              ---  |
                    -  |             ---  |              ---  |
              err_cwf  |               8  |                0  | *client pkt without flow
       err_no_tcp_udp  |               1  |                0  |  no tcp/udp packet
       redirect_rx_ok  |               1  |                0  |  redirect to rx OK





Server:

normal
-------------
 min_delta  : 10 usec
 cnt        : 0
 high_cnt   : 0
 max_d_time : 0 usec
 sliding_average    : 0 usec
 precent    : -nan %
 histogram
 -----------
 ---------------
port : 1
------------
 opackets                                 : 0
 obytes                                   : 0
 ipackets                                 : 2
 ibytes                                   : 128
 Tx :       0.00  bps
 Cpu Utilization : 1.2  %  0.0 Gb/core
 Platform_factor : 1.0
 Total-Tx        :       0.00  bps
 Total-Rx        :       0.00  bps
 Total-PPS       :       0.00  pps
 Total-CPS       :       0.00  cps

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

 Active-flows    :        0  Clients :        2   Socket-util : 0.0000 %
 Open-flows      :        0  Servers :       20   Socket :        0 Socket/Clients :  0.0
 drop-rate       :       0.00  bps
 summary stats
 --------------
 Total-pkt-drop       : 0 pkts
 Warning : number of rx packets exceeds 101% of tx packets!
 Total-tx-bytes       : 0 bytes
 Total-tx-sw-bytes    : 0 bytes
 Total-rx-bytes       : 128 byte

 Total-tx-pkt         : 0 pkts
 Total-rx-pkt         : 2 pkts
 Total-sw-tx-pkt      : 0 pkts
 Total-sw-err         : 0 pkts
 Total ARP sent       : 2 pkts
 Total ARP received   : 1 pkts
                       |          client   |            server   |
 -----------------------------------------------------------------------------------------
       m_active_flows  |               0  |                0  |  active open flows
          m_est_flows  |               0  |                0  |  active established flows
         m_tx_bw_l7_r  |       0.00  bps  |        0.00  bps  |  tx L7 bw acked
   m_tx_bw_l7_total_r  |       0.00  bps  |        0.00  bps  |  tx L7 bw total
         m_rx_bw_l7_r  |       0.00  bps  |        0.00  bps  |  rx L7 bw acked
           m_tx_pps_r  |       0.00  pps  |        0.00  pps  |  tx pps
           m_rx_pps_r  |       0.00  pps  |        0.00  pps  |  rx pps
           m_avg_size  |         0.00  B  |          0.00  B  |  average pkt size
           m_tx_ratio  |        0.00  %%  |         0.00  %%  |  Tx acked/sent ratio
                    -  |             ---  |              ---  |
                  TCP  |             ---  |              ---  |
                    -  |             ---  |              ---  |
                    -  |             ---  |              ---  |
                  UDP  |             ---  |              ---  |
                    -  |             ---  |              ---  |
                    -  |             ---  |              ---  |
           Flow Table  |             ---  |              ---  |
                    -  |             ---  |              ---  |
       redirect_rx_ok  |               0  |                2  |  redirect to rx OK

Kind regards,
Jeremy


--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+unsubscribe@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Esteban Toribio

unread,
Jan 19, 2021, 2:40:51 PM1/19/21
to TRex Traffic Generator
Hi I have a question about a similar topology I'm trying to use:
Client (TRex VM1) <--> Router1(flexiWAN)<-->VPN Tunnel 1 over Internet<-->Router2(flexiWAN)<--> Server (TRex VM)
                                                                             |->VPN Tunnel 2 over Internet<-|  
Router 1: 192.168.4.1 /24
Router 2: 192.168.23.1/24
Can I have a communication between Client and Server with ASTF mode?
It isn't an option for me to generate client traffic from 16.0.0.X subnet to 48.0.0.X since I can't add static routing between Router1 and Router2 

To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+u...@googlegroups.com.

To post to this group, send email to trex...@googlegroups.com.

hanoh haim

unread,
Jan 19, 2021, 2:48:43 PM1/19/21
to Esteban Toribio, TRex Traffic Generator
Yes, you can. Just build a clients and servers networks using EMU before you are running the traffic 

Reply all
Reply to author
Forward
0 new messages