diff options
-rw-r--r-- | conf/03_traffic.conf | 5 | ||||
-rw-r--r-- | conf/10_custom.conf | 5 | ||||
-rw-r--r-- | docs/testing/user/configguide/installation.rst | 1 | ||||
-rw-r--r-- | docs/testing/user/configguide/trafficgen.rst | 9 | ||||
-rwxr-xr-x | systems/centos/prepare_python_env.sh | 4 | ||||
-rw-r--r-- | systems/fedora/24/prepare_python_env.sh | 2 | ||||
-rw-r--r-- | systems/fedora/25/prepare_python_env.sh | 2 | ||||
-rw-r--r-- | systems/fedora/26/prepare_python_env.sh | 2 | ||||
-rwxr-xr-x | systems/opensuse/42.2/prepare_python_env.sh | 2 | ||||
-rwxr-xr-x | systems/opensuse/42.3/prepare_python_env.sh | 2 | ||||
-rwxr-xr-x | systems/opensuse/build_base_machine.sh | 95 | ||||
-rwxr-xr-x | systems/opensuse/prepare_python_env.sh | 28 | ||||
-rwxr-xr-x | systems/rhel/7.2/prepare_python_env.sh | 4 | ||||
-rwxr-xr-x | systems/rhel/7.3/prepare_python_env.sh | 4 | ||||
-rwxr-xr-x | systems/ubuntu/14.04/prepare_python_env.sh | 4 | ||||
-rw-r--r-- | tools/pkt_gen/trex/trex.py | 18 |
16 files changed, 172 insertions, 15 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/installation.rst b/docs/testing/user/configguide/installation.rst index 8bad4efd..aeb2f2de 100644 --- a/docs/testing/user/configguide/installation.rst +++ b/docs/testing/user/configguide/installation.rst @@ -49,6 +49,7 @@ Supported Operating Systems * Fedora 25 (kernel 4.9 requires DPDK 16.11 and newer) * openSUSE 42.2 * openSUSE 42.3 +* openSUSE Tumbleweed * RedHat 7.2 Enterprise Linux * RedHat 7.3 Enterprise Linux * Ubuntu 14.04 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/systems/centos/prepare_python_env.sh b/systems/centos/prepare_python_env.sh index 5777448b..8bce53cc 100755 --- a/systems/centos/prepare_python_env.sh +++ b/systems/centos/prepare_python_env.sh @@ -2,7 +2,7 @@ # # Prepare Python 3 environment for vsperf execution # -# Copyright 2015 OPNFV +# Copyright 2015-2017 OPNFV # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then fi scl enable python33 " -virtualenv "$VSPERFENV_DIR" +virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint diff --git a/systems/fedora/24/prepare_python_env.sh b/systems/fedora/24/prepare_python_env.sh index b099df5e..920604c2 100644 --- a/systems/fedora/24/prepare_python_env.sh +++ b/systems/fedora/24/prepare_python_env.sh @@ -23,7 +23,7 @@ fi # enable virtual environment in a subshell, so QEMU build can use python 2.7 -(virtualenv-3.5 "$VSPERFENV_DIR" +(virtualenv-3.5 "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint) diff --git a/systems/fedora/25/prepare_python_env.sh b/systems/fedora/25/prepare_python_env.sh index 4a85eb35..c4613ca4 100644 --- a/systems/fedora/25/prepare_python_env.sh +++ b/systems/fedora/25/prepare_python_env.sh @@ -23,7 +23,7 @@ fi # enable virtual environment in a subshell, so QEMU build can use python 2.7 -(virtualenv-3.5 "$VSPERFENV_DIR" +(virtualenv-3.5 "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint diff --git a/systems/fedora/26/prepare_python_env.sh b/systems/fedora/26/prepare_python_env.sh index 33615cbd..05eedfd9 100644 --- a/systems/fedora/26/prepare_python_env.sh +++ b/systems/fedora/26/prepare_python_env.sh @@ -23,7 +23,7 @@ fi # enable virtual environment in a subshell, so QEMU build can use python 2.7 -(virtualenv-3.6 "$VSPERFENV_DIR" +(virtualenv-3.6 "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint diff --git a/systems/opensuse/42.2/prepare_python_env.sh b/systems/opensuse/42.2/prepare_python_env.sh index 66f94cf7..ab668ca4 100755 --- a/systems/opensuse/42.2/prepare_python_env.sh +++ b/systems/opensuse/42.2/prepare_python_env.sh @@ -21,7 +21,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then exit fi -virtualenv "$VSPERFENV_DIR" +virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint diff --git a/systems/opensuse/42.3/prepare_python_env.sh b/systems/opensuse/42.3/prepare_python_env.sh index 66f94cf7..ab668ca4 100755 --- a/systems/opensuse/42.3/prepare_python_env.sh +++ b/systems/opensuse/42.3/prepare_python_env.sh @@ -21,7 +21,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then exit fi -virtualenv "$VSPERFENV_DIR" +virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint diff --git a/systems/opensuse/build_base_machine.sh b/systems/opensuse/build_base_machine.sh new file mode 100755 index 00000000..8b26440c --- /dev/null +++ b/systems/opensuse/build_base_machine.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# +# Build a base machine for openSUSE Tumbleweed systems +# +# Copyright (c) 2017 SUSE LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Contributors: +# Jose Lausuch, SUSE LINUX GmbH + +zypper -q -n dup +zypper -q -n in -y $(echo " +# compiler, tools and dependencies +make +automake +gcc +gcc-c++ +glibc +glibc-devel +fuse +fuse-devel +glib2-devel +zlib-devel +ncurses-devel +kernel-default +kernel-default-devel +pkg-config +findutils-locate +curl +automake +autoconf +vim +wget +git +pciutils +cifs-utils +socat +sysstat +java-1_8_0-openjdk +git-review +mlocate + +# python +python3 +python-pip +python3-pip +python3-setuptools +python3-devel +python3-tk +python3-virtualenv + +# libraries +libnuma1 +libnuma-devel +libpixman-1-0 +libpixman-1-0-devel +libtool +libpcap-devel +libnet9 +libncurses6 +libcurl4 +libcurl-devel +libxml2 +libfuse2 +libopenssl1_1_0 +libopenssl-devel +libpython3_6m1_0 + +" | grep -v ^#) + +updatedb + +# fix for the Ixia TclClient +ln -sf $(locate libc.so.6) /lib/libc.so.6 + +# virtual environment for python +pip3 install virtualenv + +# hugepages setup +mkdir -p /dev/hugepages + +# fix for non-utf8 characters in file +cp /etc/services /etc/services.bak +iconv -o /etc/services -f utf-8 -t utf-8 -c /etc/services.bak diff --git a/systems/opensuse/prepare_python_env.sh b/systems/opensuse/prepare_python_env.sh new file mode 100755 index 00000000..69871670 --- /dev/null +++ b/systems/opensuse/prepare_python_env.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# +# Prepare Python environment for vsperf execution on openSUSE Tumbleweed systems +# +# Copyright (c) 2017 SUSE LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if [ -d "$VSPERFENV_DIR" ] ; then + echo "Directory $VSPERFENV_DIR already exists. Skipping python virtualenv creation." + exit +fi + +virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3 +source "$VSPERFENV_DIR"/bin/activate +pip install -r ../requirements.txt +pip install pylint + diff --git a/systems/rhel/7.2/prepare_python_env.sh b/systems/rhel/7.2/prepare_python_env.sh index bd468d80..0178954e 100755 --- a/systems/rhel/7.2/prepare_python_env.sh +++ b/systems/rhel/7.2/prepare_python_env.sh @@ -2,7 +2,7 @@ # # Prepare Python environment for vsperf execution on Red Hat 7.2 systems. # -# Copyright 2016 OPNFV, Intel Corporation, Red Hat Inc. +# Copyright 2016-2017 OPNFV, Intel Corporation, Red Hat Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then fi scl enable python33 " -virtualenv "$VSPERFENV_DIR" +virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint diff --git a/systems/rhel/7.3/prepare_python_env.sh b/systems/rhel/7.3/prepare_python_env.sh index 3ba049e8..a9021451 100755 --- a/systems/rhel/7.3/prepare_python_env.sh +++ b/systems/rhel/7.3/prepare_python_env.sh @@ -2,7 +2,7 @@ # # Prepare Python environment for vsperf execution on RHEL 7.3 systems. # -# Copyright 2016 OPNFV, Intel Corporation, Red Hat Inc. +# Copyright 2016-2017 OPNFV, Intel Corporation, Red Hat Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then fi scl enable python33 " -virtualenv "$VSPERFENV_DIR" +virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint diff --git a/systems/ubuntu/14.04/prepare_python_env.sh b/systems/ubuntu/14.04/prepare_python_env.sh index 6ef8680d..4c98dc42 100755 --- a/systems/ubuntu/14.04/prepare_python_env.sh +++ b/systems/ubuntu/14.04/prepare_python_env.sh @@ -2,7 +2,7 @@ # # Prepare Python environment for vsperf execution on Ubuntu 14.04 systems # -# Copyright 2015 OPNFV, Intel Corporation. +# Copyright 2015-2017 OPNFV, Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ fi # enable virtual environment in a subshell, so QEMU build can use python 2.7 -(virtualenv "$VSPERFENV_DIR" +(virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3 source "$VSPERFENV_DIR"/bin/activate pip install -r ../requirements.txt pip install pylint) 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'] |