aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Trautman <ctrautma@redhat.com>2017-11-28 15:22:30 -0500
committerMartin Klozik <martinx.klozik@intel.com>2017-12-13 10:38:49 +0000
commitbdc5346c3d2170d857274262e1ecf6872d00249e (patch)
tree625e3f2ce3cd6b6f1eed811854f29e455317e9de
parentaa533b8a33eb0888b1f09ae8e773cfbeb1d3dda1 (diff)
trex_learning: Add learning packet option to T-Rex testing
Adds packet learning option which is available on other Traffic generators as a feature. This adds this feature to the Trex implementation inside of VSPerf. JIRA: VSPERF-547 Change-Id: Iaf4d0721b22eb780c25e29295c112d4fcb47b22c Signed-off-by: Christian Trautman <ctrautma@redhat.com>
-rw-r--r--conf/03_traffic.conf5
-rw-r--r--conf/10_custom.conf5
-rw-r--r--docs/testing/user/configguide/trafficgen.rst9
-rw-r--r--tools/pkt_gen/trex/trex.py18
4 files changed, 35 insertions, 2 deletions
diff --git a/conf/03_traffic.conf b/conf/03_traffic.conf
index a88e4bcc..3833a040 100644
--- a/conf/03_traffic.conf
+++ b/conf/03_traffic.conf
@@ -454,8 +454,11 @@ TRAFFICGEN_TREX_LATENCY_PPS = 1000
# Example 10 Gbps: TRAFFICGEN_TREXINE_SPEED_GBPS = '10'
# Today only 10 Gbps is supported
TRAFFICGEN_TREX_LINE_SPEED_GBPS = '10'
+# Enable of learning packets before sending test traffic
+TRAFFICGEN_TREX_LEARNING_MODE = True
+TRAFFICGEN_TREX_LEARNING_DURATION = 5
# FOR SR-IOV or multistream layer 2 tests to work with T-Rex enable Promiscuous mode
-TRAFFICGEN_TREX_PROMISCUOUS=False
+TRAFFICGEN_TREX_PROMISCUOUS = False
PATHS['trafficgen'] = {
'Trex': {
'type' : 'src',
diff --git a/conf/10_custom.conf b/conf/10_custom.conf
index 8020bb93..1f8448b4 100644
--- a/conf/10_custom.conf
+++ b/conf/10_custom.conf
@@ -136,8 +136,11 @@ TRAFFICGEN_TREX_LATENCY_PPS = 1000
# Example 10 Gbps: TRAFFICGEN_TREXINE_SPEED_GBPS = '10'
# Today only 10 Gbps is supported
TRAFFICGEN_TREX_LINE_SPEED_GBPS = '10'
+# Enable of learning packets before sending test traffic
+TRAFFICGEN_TREX_LEARNING_MODE = True
+TRAFFICGEN_TREX_LEARNING_DURATION = 5
# FOR SR-IOV or multistream layer 2 tests to work with T-Rex enable Promiscuous mode
-TRAFFICGEN_TREX_PROMISCUOUS=False
+TRAFFICGEN_TREX_PROMISCUOUS = False
# TREX Configuration and Connection Info-- END
####################################################
diff --git a/docs/testing/user/configguide/trafficgen.rst b/docs/testing/user/configguide/trafficgen.rst
index 4b9eec6e..535f7995 100644
--- a/docs/testing/user/configguide/trafficgen.rst
+++ b/docs/testing/user/configguide/trafficgen.rst
@@ -826,6 +826,15 @@ Default value of this parameter is defined in conf/03_traffic.conf as follows:
TRAFFICGEN_TREX_RFC2544_TPUT_THRESHOLD = ''
+T-Rex can have learning packets enabled. For certain tests it may be beneficial
+to send some packets before starting test traffic to allow switch learning to take
+place. This can be adjusted with the following configurations:
+
+.. code-block:: console
+
+ TRAFFICGEN_TREX_LEARNING_MODE=True
+ TRAFFICGEN_TREX_LEARNING_DURATION=5
+
SR-IOV and Multistream layer 2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T-Rex by default only accepts packets on the receive side if the destination mac matches the
diff --git a/tools/pkt_gen/trex/trex.py b/tools/pkt_gen/trex/trex.py
index acdaf287..c166310d 100644
--- a/tools/pkt_gen/trex/trex.py
+++ b/tools/pkt_gen/trex/trex.py
@@ -19,6 +19,7 @@ Trex Traffic Generator Model
import logging
import subprocess
import sys
+import time
from collections import OrderedDict
# pylint: disable=unused-import
import netaddr
@@ -325,6 +326,19 @@ class Trex(ITrafficGenerator):
result[ResultsConstants.AVG_LATENCY_NS] = 'Unknown'
return result
+ def learning_packets(self, traffic):
+ """
+ Send learning packets before testing
+ :param traffic: traffic structure as per send_cont_traffic guidelines
+ :return: None
+ """
+ self._logger.info("T-Rex sending learning packets")
+ learning_thresh_traffic = copy.deepcopy(traffic)
+ learning_thresh_traffic["frame_rate"] = 1
+ self.generate_traffic(learning_thresh_traffic, settings.getValue("TRAFFICGEN_TREX_LEARNING_DURATION"))
+ self._logger.info("T-Rex finished learning packets")
+ time.sleep(3) # allow packets to complete before starting test traffic
+
def send_cont_traffic(self, traffic=None, duration=30):
"""See ITrafficGenerator for description
"""
@@ -336,6 +350,8 @@ class Trex(ITrafficGenerator):
self._params['traffic'] = merge_spec(
self._params['traffic'], traffic)
+ if settings.getValue('TRAFFICGEN_TREX_LEARNING_MODE'):
+ self.learning_packets(traffic)
stats = self.generate_traffic(traffic, duration)
return self.calculate_results(stats)
@@ -366,6 +382,8 @@ class Trex(ITrafficGenerator):
self._params['traffic'] = merge_spec(
self._params['traffic'], traffic)
new_params = copy.deepcopy(traffic)
+ if settings.getValue('TRAFFICGEN_TREX_LEARNING_MODE'):
+ self.learning_packets(traffic)
stats = self.generate_traffic(traffic, duration)
right = traffic['frame_rate']
center = traffic['frame_rate']