From 7397237867a5cd1ccc39c019c42c4048b80fc90e Mon Sep 17 00:00:00 2001 From: Christian Trautman Date: Mon, 25 Sep 2017 17:22:38 -0400 Subject: 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 (cherry picked from commit 5d08ffdf317d31361a528bf1b6d33cd4d0007600) --- conf/03_traffic.conf | 2 ++ conf/10_custom.conf | 2 ++ docs/testing/user/configguide/trafficgen.rst | 12 ++++++++++++ tools/pkt_gen/trex/trex.py | 4 ++++ 4 files changed, 20 insertions(+) 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]) -- cgit 1.2.3-korg