From e9ff0fdf355d26d0c171c6c1137c4beb12561233 Mon Sep 17 00:00:00 2001
From: Martin Klozik <martinx.klozik@intel.com>
Date: Wed, 28 Feb 2018 06:34:23 -0800
Subject: trex: Add support for burst traffic type

Support for burst traffic type was added into T-Rex. This
traffic type is useful for tests, where a limited number
of frames should be sent through DUT.

JIRA: VSPERF-562

Change-Id: I03b7150e66a0210cce91b20c751b8624c16f951b
Signed-off-by: Martin Klozik <martinx.klozik@intel.com>
Reviewed-by: Al Morton <acmorton@att.com>
Reviewed-by: Christian Trautman <ctrautma@redhat.com>
Reviewed-by: Sridhar Rao <sridhar.rao@spirent.com>
Reviewed-by: Richard Elias <richardx.elias@intel.com>
---
 .../devguide/design/trafficgen_integration_guide.rst     | 12 ++++++++----
 .../developer/devguide/design/vswitchperf_design.rst     | 12 +++++++++---
 docs/testing/user/configguide/trafficgen.rst             | 16 ++++++++++++++++
 3 files changed, 33 insertions(+), 7 deletions(-)

(limited to 'docs/testing')

diff --git a/docs/testing/developer/devguide/design/trafficgen_integration_guide.rst b/docs/testing/developer/devguide/design/trafficgen_integration_guide.rst
index c88b80ed..0298a47f 100644
--- a/docs/testing/developer/devguide/design/trafficgen_integration_guide.rst
+++ b/docs/testing/developer/devguide/design/trafficgen_integration_guide.rst
@@ -200,12 +200,16 @@ functions:
       which are discussed in detail at :ref:`integration-tests` userguide.
 
       * param **traffic_type**: One of the supported traffic types,
-        e.g. **rfc2544_throughput**, **rfc2544_continuous**
-        or **rfc2544_back2back**.
-      * param **frame_rate**: Defines desired percentage of frame
-        rate used during continuous stream tests.
+        e.g. **rfc2544_throughput**, **rfc2544_continuous**,
+        **rfc2544_back2back** or **burst**.
       * param **bidir**: Specifies if generated traffic will be full-duplex
         (true) or half-duplex (false).
+      * param **frame_rate**: Defines desired percentage of frame
+        rate used during continuous stream tests.
+      * param **burst_size**: Defines a number of frames in the single burst,
+        which is sent by burst traffic type. Burst size is applied for each
+        direction, i.e. the total number of tx frames will be 2*burst_size
+        in case of bidirectional traffic.
       * param **multistream**: Defines number of flows simulated by traffic
         generator. Value 0 disables MultiStream feature.
       * param **stream_type**: Stream Type defines ISO OSI network layer
diff --git a/docs/testing/developer/devguide/design/vswitchperf_design.rst b/docs/testing/developer/devguide/design/vswitchperf_design.rst
index 96ffcf62..9317d875 100644
--- a/docs/testing/developer/devguide/design/vswitchperf_design.rst
+++ b/docs/testing/developer/devguide/design/vswitchperf_design.rst
@@ -291,8 +291,8 @@ Detailed description of ``TRAFFIC`` dictionary items follows:
 .. code-block:: console
 
     'traffic_type'  - One of the supported traffic types.
-                      E.g. rfc2544_throughput, rfc2544_back2back
-                      or rfc2544_continuous
+                      E.g. rfc2544_throughput, rfc2544_back2back,
+                      rfc2544_continuous or burst
                       Data type: str
                       Default value: "rfc2544_throughput".
     'bidir'         - Specifies if generated traffic will be full-duplex (True)
@@ -304,6 +304,12 @@ Detailed description of ``TRAFFIC`` dictionary items follows:
                       continuous stream tests.
                       Data type: int
                       Default value: 100.
+    'burst_size'    - Defines a number of frames in the single burst, which is sent
+                      by burst traffic type. Burst size is applied for each direction,
+                      i.e. the total number of tx frames will be 2*burst_size in case of
+                      bidirectional traffic.
+                      Data type: int
+                      Default value: 100.
     'multistream'   - Defines number of flows simulated by traffic generator.
                       Value 0 disables multistream feature
                       Data type: int
@@ -786,7 +792,7 @@ ITrafficGenerator
       connect()
       disconnect()
 
-      send_burst_traffic(traffic, numpkts, time, framerate)
+      send_burst_traffic(traffic, time)
 
       send_cont_traffic(traffic, time, framerate)
       start_cont_traffic(traffic, time, framerate)
diff --git a/docs/testing/user/configguide/trafficgen.rst b/docs/testing/user/configguide/trafficgen.rst
index 52b1b4a5..c174af0a 100644
--- a/docs/testing/user/configguide/trafficgen.rst
+++ b/docs/testing/user/configguide/trafficgen.rst
@@ -39,6 +39,7 @@ and is configured as follows:
     TRAFFIC = {
         'traffic_type' : 'rfc2544_throughput',
         'frame_rate' : 100,
+        'burst_size' : 100,
         'bidir' : 'True',  # will be passed as string in title format to tgen
         'multistream' : 0,
         'stream_type' : 'L4',
@@ -857,6 +858,21 @@ place. This can be adjusted with the following configurations:
     TRAFFICGEN_TREX_LEARNING_MODE=True
     TRAFFICGEN_TREX_LEARNING_DURATION=5
 
+Latency measurements have impact on T-Rex performance. Thus vswitchperf uses a separate
+latency stream for each direction with limited speed. This workaround is used for RFC2544
+**Throughput** and **Continuous** traffic types. In case of **Burst** traffic type,
+the latency statistics are measured for all frames in the burst. Collection of latency
+statistics is driven by configuration option ``TRAFFICGEN_TREX_LATENCY_PPS`` as follows:
+
+    * value ``0`` - disables latency measurements
+    * non zero integer value - enables latency measurements; In case of Throughput
+        and Continuous traffic types, it specifies a speed of latency specific stream
+        in PPS. In case of burst traffic type, it enables latency measurements for all frames.
+
+.. code-block:: console
+
+    TRAFFICGEN_TREX_LATENCY_PPS = 1000
+
 SR-IOV and Multistream layer 2
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 T-Rex by default only accepts packets on the receive side if the destination mac matches the
-- 
cgit