aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Trautman <ctrautma@redhat.com>2017-09-25 17:22:38 -0400
committerMartin Klozik <martinx.klozik@intel.com>2017-09-27 15:26:45 +0000
commit7397237867a5cd1ccc39c019c42c4048b80fc90e (patch)
tree818aa45c668e7ed23f4195bb266d4cb68dd368d0
parenta91c1c1a1c31cd049f3cfeb665ea6d0b7aeec7de (diff)
trex_prom: Add promiscuous option for trex for SRIOV tests
Adds option to enable promiscuous mode for Trex traffic generator to allow for SR-IOV tests to work correctly. Trex by default only accepts packets based on destination MAC address matching what is configured on server in /etc/trex-cfg.yaml. This removes that limitation since SR-IOV tests require mac addresses to be modified in the generated packets to correctly route packets to the relevant VFs. JIRA: VSPERF-531 Change-Id: I19b64f364c8a1b656994c82c96f47a68b92486d8 Signed-off-by: Christian Trautman <ctrautma@redhat.com> (cherry picked from commit 5d08ffdf317d31361a528bf1b6d33cd4d0007600)
-rw-r--r--conf/03_traffic.conf2
-rw-r--r--conf/10_custom.conf2
-rw-r--r--docs/testing/user/configguide/trafficgen.rst12
-rw-r--r--tools/pkt_gen/trex/trex.py4
4 files changed, 20 insertions, 0 deletions
diff --git a/conf/03_traffic.conf b/conf/03_traffic.conf
index 5f6d791c..419ca704 100644
--- a/conf/03_traffic.conf
+++ b/conf/03_traffic.conf
@@ -441,6 +441,8 @@ 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'
+# FOR SR-IOV tests to work with T-Rex enable Promiscuous mode
+TRAFFICGEN_TREX_PROMISCUOUS=False
PATHS['trafficgen'] = {
'trex': {
'type' : 'src',
diff --git a/conf/10_custom.conf b/conf/10_custom.conf
index 6011e6a8..9dc605e0 100644
--- a/conf/10_custom.conf
+++ b/conf/10_custom.conf
@@ -136,6 +136,8 @@ 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'
+# FOR SR-IOV tests to work with T-Rex enable Promiscuous mode
+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 7c14c55d..2d2b9a9e 100644
--- a/docs/testing/user/configguide/trafficgen.rst
+++ b/docs/testing/user/configguide/trafficgen.rst
@@ -821,3 +821,15 @@ Default value of this parameter is defined in conf/03_traffic.conf as follows:
.. code-block:: console
TRAFFICGEN_TREX_RFC2544_TPUT_THRESHOLD = ''
+
+SR-IOV
+~~~~~~
+T-Rex by default only accepts packets on the receive side if the destination mac matches the
+MAC address specificed in the /etc/trex-cfg.yaml on the server side. For SR-IOV this creates
+challenges with modifying the MAC address in the traffic profile to correctly flow packets
+through specified VFs. To remove this limitation enable promiscuous mode on T-Rex to allow
+all packets regardless of the destination mac to be accepted.
+
+.. code-block:: console
+
+ TRAFFICGEN_TREX_PROMISCUOUS=True
diff --git a/tools/pkt_gen/trex/trex.py b/tools/pkt_gen/trex/trex.py
index 7cdeec9c..7b554ecb 100644
--- a/tools/pkt_gen/trex/trex.py
+++ b/tools/pkt_gen/trex/trex.py
@@ -201,6 +201,10 @@ class Trex(ITrafficGenerator):
my_ports = [0, 1]
self._stlclient.reset(my_ports)
ports_info = self._stlclient.get_port_info(my_ports)
+ # for SR-IOV
+ if settings.getValue('TRAFFICGEN_TREX_PROMISCUOUS'):
+ self._stlclient.set_port_attr(my_ports, promiscuous=True)
+
packet_1, packet_2 = Trex.create_packets(traffic, ports_info)
stream_1, stream_2, stream_1_lat, stream_2_lat = Trex.create_streams(packet_1, packet_2, traffic)
self._stlclient.add_streams(stream_1, ports=[0])