aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--3rd_party/README.md (renamed from 3rd_party/readme.txt)3
-rw-r--r--README.md9
-rw-r--r--conf/03_traffic.conf14
-rw-r--r--conf/10_custom.conf5
-rw-r--r--docs/configguide/index.rst1
-rw-r--r--[-rwxr-xr-x]docs/configguide/installation.rst184
-rw-r--r--docs/configguide/trafficgen.rst13
-rw-r--r--docs/configguide/upgrade.rst189
-rw-r--r--[-rwxr-xr-x]docs/design/index.rst0
-rw-r--r--[-rwxr-xr-x]docs/design/vswitchperf_design.rst9
-rw-r--r--[-rwxr-xr-x]docs/index.rst4
-rw-r--r--[-rwxr-xr-x]docs/msc/factory_and_loader.msc0
-rw-r--r--[-rwxr-xr-x]docs/msc/traffic_controller.msc0
-rw-r--r--[-rwxr-xr-x]docs/msc/vsperf.msc0
-rw-r--r--[-rwxr-xr-x]docs/requirements/ietf_draft/draft-ietf-bmwg-vswitch-opnfv-01.xml0
-rw-r--r--[-rwxr-xr-x]docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-00.xml0
-rw-r--r--[-rwxr-xr-x]docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-01.xml0
-rw-r--r--[-rwxr-xr-x]docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-02.xml0
-rw-r--r--[-rwxr-xr-x]docs/requirements/vm2vm_alternative_benchmark.pngbin104244 -> 104244 bytes
-rw-r--r--[-rwxr-xr-x]docs/requirements/vm2vm_benchmark.pngbin80797 -> 80797 bytes
-rw-r--r--[-rwxr-xr-x]docs/requirements/vm2vm_hypervisor_benchmark.pngbin122975 -> 122975 bytes
-rw-r--r--[-rwxr-xr-x]docs/requirements/vm2vm_virtual_interface_benchmark.pngbin99544 -> 99544 bytes
-rw-r--r--[-rwxr-xr-x]docs/userguide/integration.rst0
-rw-r--r--[-rwxr-xr-x]docs/userguide/testusage.rst0
-rw-r--r--[-rwxr-xr-x]docs/userguide/yardstick.rst0
-rwxr-xr-xsrc/dpdk/Makefile6
-rwxr-xr-xsystems/centos/build_base_machine.sh2
-rw-r--r--tools/pkt_gen/xena/XenaDriver.py9
-rwxr-xr-xtools/pkt_gen/xena/xena.py27
-rw-r--r--vswitches/ovs_dpdk_vhost.py5
30 files changed, 397 insertions, 83 deletions
diff --git a/3rd_party/readme.txt b/3rd_party/README.md
index fc308dc8..a73a4d33 100644
--- a/3rd_party/readme.txt
+++ b/3rd_party/README.md
@@ -1 +1,4 @@
+3rd\_party
+==========
+
Here are located files and scripts, which are not released under Apache 2.0 license.
diff --git a/README.md b/README.md
index c9cdd6dc..82c334d3 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,11 @@
# VSPERF - vSwitch Performance Tests
-Documentation for this project including the [quickstart guide] is contained
-under the ./docs directory.
+Documentation for this project including the [installation userguide] is contained
+under the **./docs** directory or available [online].
+Additional information about VSPERF project are available at [project wiki].
---
-[quickstart guide]: docs/quickstart.md
+[installation userguide]: docs/configguide/installation.rst
+[online]: http://artifacts.opnfv.org/vswitchperf/docs/index.html
+[project wiki]: https://wiki.opnfv.org/display/vsperf/VSperf+Home
diff --git a/conf/03_traffic.conf b/conf/03_traffic.conf
index 72324660..ccc98e3b 100644
--- a/conf/03_traffic.conf
+++ b/conf/03_traffic.conf
@@ -53,10 +53,11 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
# of selected transport protocol
# Default value: "L4".
# 'pre_installed_flows'
-# - Pre-installed flows is an extension of the multistream"
-# feature. If multistream is disabled, then pre-installed
-# flows will be ignored. It defines if stream specific flows
-# will be inserted into OVS or not.
+# - Pre-installed flows is an extension of the "multistream"
+# feature. If enabled, it will implicitly insert a flow
+# for each stream. If multistream is disabled, then
+# pre-installed flows will be ignored.
+# Note: It is supported only for p2p deployment scenario.
# Data type: str
# Supported values:
# "Yes" - flows will be inserted into OVS
@@ -374,6 +375,11 @@ TRAFFICGEN_XENA_2544_TPUT_VALUE_RESOLUTION = '0.5'
TRAFFICGEN_XENA_2544_TPUT_USEPASS_THRESHHOLD = 'false'
TRAFFICGEN_XENA_2544_TPUT_PASS_THRESHHOLD = '0.0'
+# Xena Continuous traffic options
+# Please reference xena documentation before making changes to these settings
+TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED = True
+TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION = 3
+
# Xena Configuration -- END
###########################
diff --git a/conf/10_custom.conf b/conf/10_custom.conf
index f4e3cdf7..819d2c32 100644
--- a/conf/10_custom.conf
+++ b/conf/10_custom.conf
@@ -88,6 +88,11 @@ TRAFFICGEN_XENA_2544_TPUT_VALUE_RESOLUTION = '0.5'
TRAFFICGEN_XENA_2544_TPUT_USEPASS_THRESHHOLD = 'false'
TRAFFICGEN_XENA_2544_TPUT_PASS_THRESHHOLD = '0.0'
+# Xena Continuous traffic options
+# Please reference xena documentation before making changes to these settings
+TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED = True
+TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION = 3
+
###################################################
# MoonGen Configuration and Connection Info-- BEGIN
diff --git a/docs/configguide/index.rst b/docs/configguide/index.rst
index c9bdccf7..b4c8575e 100644
--- a/docs/configguide/index.rst
+++ b/docs/configguide/index.rst
@@ -11,4 +11,5 @@ VSPERF Installation Guide
:maxdepth: 3
installation.rst
+ upgrade.rst
trafficgen.rst
diff --git a/docs/configguide/installation.rst b/docs/configguide/installation.rst
index 5010aefd..ed414a8b 100755..100644
--- a/docs/configguide/installation.rst
+++ b/docs/configguide/installation.rst
@@ -6,10 +6,43 @@
Installing vswitchperf
======================
+Downloading vswitchperf
+-----------------------
+
+The vswitchperf can be downloaded from its official git repository, which is
+hosted by OPNFV. It is necessary to install a ``git`` at your DUT before downloading
+vswitchperf. Installation of ``git`` is specific to the packaging system used by
+Linux OS installed at DUT.
+
+Example of installation of GIT package and its dependencies:
+
+* in case of OS based on RedHat Linux:
+
+ .. code:: bash
+
+ sudo yum install git
+
+
+* in case of Ubuntu or Debian:
+
+ .. code:: bash
+
+ sudo apt-get install git
+
+After the ``git`` is successfully installed at DUT, then vswitchperf can be downloaded
+as follows:
+
+.. code:: bash
+
+ git clone http://git.opnfv.org/vswitchperf
+
+The last command will create a directory ``vswitchperf`` with a local copy of vswitchperf
+repository.
+
Supported Operating Systems
---------------------------
-* CentOS 7
+* CentOS 7.3
* Fedora 20
* Fedora 21
* Fedora 22
@@ -21,72 +54,94 @@ Supported Operating Systems
Supported vSwitches
-------------------
+
The vSwitch must support Open Flow 1.3 or greater.
-* OVS (built from source).
-* OVS with DPDK (built from source).
+* Open vSwitch
+* Open vSwitch with DPDK support
+* TestPMD application from DPDK (supports p2p and pvp scenarios)
Supported Hypervisors
---------------------
-* Qemu version 2.3 or greater.
+* Qemu version 2.3 or greater (version 2.5.0 is recommended)
-Available VNFs
+Supported VNFs
--------------
-A simple VNF that forwards traffic through a VM, using:
+
+In theory, it is possible to use any VNF image, which is compatible
+with supported hypervisor. However such VNF must ensure, that appropriate
+number of network interfaces is configured and that traffic is properly
+forwarded among them. For new vswitchperf users it is recommended to start
+with official vloop-vnf_ image, which is maintained by vswitchperf community.
+
+.. _vloop-vnf:
+
+vloop-vnf
+=========
+
+The official VM image is called vloop-vnf and it is available for free download
+from OPNFV artifactory. This image is based on Linux Ubuntu distribution and it
+supports following applications for traffic forwarding:
* DPDK testpmd
* Linux Bridge
* Custom l2fwd module
-The official VM image is called vloop-vnf and it is available for free
-download at OPNFV website.
+The vloop-vnf can be downloaded to DUT, for example by ``wget``:
+
+ .. code:: bash
+
+ wget http://artifacts.opnfv.org/vswitchperf/vnf/vloop-vnf-ubuntu-14.04_20160823.qcow2
-vloop-vnf changelog:
-====================
+**NOTE:** In case that ``wget`` is not installed at your DUT, you could install it at RPM
+based system by ``sudo yum install wget`` or at DEB based system by ``sudo apt-get install
+wget``.
-* `vloop-vnf-ubuntu-14.04_20160823`_
+Changelog of vloop-vnf:
- * ethtool installed
- * only 1 NIC is configured by default to speed up boot with 1 NIC setup
- * security updates applied
+ * `vloop-vnf-ubuntu-14.04_20160823`_
-* `vloop-vnf-ubuntu-14.04_20160804`_
+ * ethtool installed
+ * only 1 NIC is configured by default to speed up boot with 1 NIC setup
+ * security updates applied
- * Linux kernel 4.4.0 installed
- * libnuma-dev installed
- * security updates applied
+ * `vloop-vnf-ubuntu-14.04_20160804`_
-* `vloop-vnf-ubuntu-14.04_20160303`_
+ * Linux kernel 4.4.0 installed
+ * libnuma-dev installed
+ * security updates applied
- * snmpd service is disabled by default to avoid error messages during VM boot
- * security updates applied
+ * `vloop-vnf-ubuntu-14.04_20160303`_
-* `vloop-vnf-ubuntu-14.04_20151216`_
+ * snmpd service is disabled by default to avoid error messages during VM boot
+ * security updates applied
- * version with development tools required for build of DPDK and l2fwd
+ * `vloop-vnf-ubuntu-14.04_20151216`_
-Other Requirements
-------------------
-The test suite requires Python 3.3 and relies on a number of other
-packages. These need to be installed for the test suite to function.
+ * version with development tools required for build of DPDK and l2fwd
+
+Installation
+------------
+
+The test suite requires Python 3.3 or newer and relies on a number of other
+system and python packages. These need to be installed for the test suite
+to function.
Installation of required packages, preparation of Python 3 virtual
environment and compilation of OVS, DPDK and QEMU is performed by
script **systems/build_base_machine.sh**. It should be executed under
user account, which will be used for vsperf execution.
-**Please Note**: Password-less sudo access must be configured for given
+**NOTE:** Password-less sudo access must be configured for given
user account before script is executed.
-Execution of installation script:
-
.. code:: bash
$ cd systems
$ ./build_base_machine.sh
-**Please Note**: you don't need to go into any of the systems subdirectories,
+**NOTE:** you don't need to go into any of the systems subdirectories,
simply run the top level **build_base_machine.sh**, your OS will be detected
automatically.
@@ -96,52 +151,65 @@ In case of CentOS 7 or RHEL it will install Python 3.3 from an additional
repository provided by Software Collections (`a link`_). Installation script
will also use `virtualenv`_ to create a vsperf virtual environment, which is
isolated from the default Python environment. This environment will reside in a
-directory called **vsperfenv** in $HOME.
+directory called **vsperfenv** in $HOME. It will ensure, that system wide Python
+installation is not modified or broken by VSPERF installation. The complete list
+of Python packages installed inside virtualenv can be found at file
+``requirements.txt``, which is located at vswitchperf repository.
-**Please Note**: For RHEL 7.3 Enterprise OVS Vanilla is not built from upstream
-source due to kernel incompatibilities. Please see the instructions in the
-vswitchperf_design document for details on configuring OVS Vanilla for binary
-package usage.
+**NOTE:** For RHEL 7.3 Enterprise and CentOS 7.3 OVS Vanilla is not
+built from upstream source due to kernel incompatibilities. Please see the
+instructions in the vswitchperf_design document for details on configuring
+OVS Vanilla for binary package usage.
+
+Using vswitchperf
+-----------------
You will need to activate the virtual environment every time you start a
new shell session. Its activation is specific to your OS:
-CentOS 7 and RHEL
-=================
+* CentOS 7 and RHEL
-.. code:: bash
+ .. code:: bash
- $ scl enable python33 bash
- $ cd $HOME/vsperfenv
- $ source bin/activate
+ $ scl enable python33 bash
+ $ source $HOME/vsperfenv/bin/activate
-Fedora and Ubuntu
-=================
+* Fedora and Ubuntu
-.. code:: bash
+ .. code:: bash
- $ cd $HOME/vsperfenv
- $ source bin/activate
+ $ source $HOME/vsperfenv/bin/activate
+
+After the virtual environment is configued, then VSPERF can be used.
+For example:
+
+ .. code:: bash
+
+ (vsperfenv) $ cd vswitchperf
+ (vsperfenv) $ ./vsperf --help
Gotcha
-^^^^^^
+======
+
+In case you will see following error during environment activation:
+
.. code:: bash
- $ source bin/activate
+ $ source $HOME/vsperfenv/bin/activate
Badly placed ()'s.
-Check what type of shell you are using
+then check what type of shell you are using:
.. code:: bash
- echo $shell
+ $ echo $SHELL
/bin/tcsh
See what scripts are available in $HOME/vsperfenv/bin
.. code:: bash
- $ ls bin/
+ $ ls $HOME/vsperfenv/bin/
activate activate.csh activate.fish activate_this.py
source the appropriate script
@@ -195,11 +263,11 @@ your configuration in the ``02_vswitch.conf`` file.
'dpdk-socket-mem' : '1024,1024',
}
-Note: Option VSWITCHD_DPDK_ARGS is used for vswitchd, which supports --dpdk
-parameter. In recent vswitchd versions, option VSWITCHD_DPDK_CONFIG will be
-used to configure vswitchd via ovs-vsctl calls.
+**NOTE:** Option ``VSWITCHD_DPDK_ARGS`` is used for vswitchd, which supports ``--dpdk``
+parameter. In recent vswitchd versions, option ``VSWITCHD_DPDK_CONFIG`` is
+used to configure vswitchd via ``ovs-vsctl`` calls.
-With the --socket-mem argument set to use 1 hugepage on the specified sockets as
+With the ``--socket-mem`` argument set to use 1 hugepage on the specified sockets as
seen above, the configuration will need 10 hugepages total to run all tests
within vsperf if the pagesize is set correctly to 1GB.
@@ -207,7 +275,7 @@ VSPerf will verify hugepage amounts are free before executing test
environments. In case of hugepage amounts not being free, test initialization
will fail and testing will stop.
-**Please Note**: In some instances on a test failure dpdk resources may not
+**NOTE:** In some instances on a test failure dpdk resources may not
release hugepages used in dpdk configuration. It is recommended to configure a
few extra hugepages to prevent a false detection by VSPerf that not enough free
hugepages are available to execute the test environment. Normally dpdk would use
@@ -227,6 +295,6 @@ You can review your hugepage amounts by executing the following command
cat /proc/meminfo | grep Huge
If no hugepages are available vsperf will try to automatically allocate some.
-Allocation is controlled by HUGEPAGE_RAM_ALLOCATION configuration parameter in
+Allocation is controlled by ``HUGEPAGE_RAM_ALLOCATION`` configuration parameter in
``02_vswitch.conf`` file. Default is 2GB, resulting in either 2 1GB hugepages
or 1024 2MB hugepages.
diff --git a/docs/configguide/trafficgen.rst b/docs/configguide/trafficgen.rst
index 5190bc8e..b66a1787 100644
--- a/docs/configguide/trafficgen.rst
+++ b/docs/configguide/trafficgen.rst
@@ -516,6 +516,19 @@ Each value modifies the behavior of rfc 2544 throughput testing. Refer to your
Xena documentation to understand the behavior changes in modifying these
values.
+Continuous Traffic Testing
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Xena continuous traffic by default does a 3 second learning preemption to allow
+the DUT to receive learning packets before a continuous test is performed. If
+a custom test case requires this learning be disabled, you can disable the option
+or modify the length of the learning by modifying the following settings.
+
+.. code-block:: console
+
+ TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED = False
+ TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION = 3
+
MoonGen
-------
diff --git a/docs/configguide/upgrade.rst b/docs/configguide/upgrade.rst
new file mode 100644
index 00000000..3a970c6a
--- /dev/null
+++ b/docs/configguide/upgrade.rst
@@ -0,0 +1,189 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, Intel Corporation, AT&T and others.
+
+=====================
+Upgrading vswitchperf
+=====================
+
+Generic
+-------
+
+In case, that VSPERF is cloned from git repository, then it is easy to
+upgrade it to the newest stable version or to the development version.
+
+You could get a list of stable releases by ``git`` command. It is necessary
+to update local git repository first.
+
+**NOTE:** Git commands must be executed from directory, where VSPERF repository
+was cloned, e.g. ``vswitchperf``.
+
+Update of local git repository:
+
+.. code:: bash
+
+ $ git pull
+
+List of stable releases:
+
+.. code:: bash
+
+ $ git tag
+
+ brahmaputra.1.0
+ colorado.1.0
+ colorado.2.0
+ colorado.3.0
+ danube.1.0
+
+You could select which stable release should be used. For example, select ``danube.1.0``:
+
+.. code:: bash
+
+ $ git checkout danube.1.0
+
+
+Development version of VSPERF can be selected by:
+
+.. code:: bash
+
+ $ git checkout master
+
+Colorado to Danube upgrade notes
+--------------------------------
+
+Obsoleted features
+~~~~~~~~~~~~~~~~~~
+
+Support of vHost Cuse interface has been removed in Danube release. It means,
+that it is not possible to select ``QemuDpdkVhostCuse`` as a VNF anymore. Option
+``QemuDpdkVhostUser`` should be used instead. Please check you configuration files
+and definition of your testcases for any occurrence of:
+
+.. code:: python
+
+ VNF = "QemuDpdkVhostCuse"
+
+or
+
+.. code:: python
+
+ "VNF" : "QemuDpdkVhostCuse"
+
+In case that ``QemuDpdkVhostCuse`` is found, it must be modified to ``QemuDpdkVhostUser``.
+
+**NOTE:** In case that execution of VSPERF is automated by scripts (e.g. for
+CI purposes), then these scripts must be checked and updated too. It means,
+that any occurrence of:
+
+.. code:: bash
+
+ ./vsperf --vnf QemuDpdkVhostCuse
+
+must be updated to:
+
+.. code:: bash
+
+ ./vsperf --vnf QemuDpdkVhostUser
+
+Configuration
+~~~~~~~~~~~~~
+
+Several configuration changes were introduced during Danube release. The most
+important changes are discussed below.
+
+Paths to DPDK, OVS and QEMU
+===========================
+
+VSPERF uses external tools for proper testcase execution. Thus it is important
+to properly configure paths to these tools. In case that tools are installed
+by installation scripts and are located inside ``./src`` directory inside
+VSPERF home, then no changes are needed. On the other hand, if path settings
+was changed by custom configuration file, then it is required to update configuration
+accordingly. Please check your configuration files for following configuration
+options:
+
+.. code:: bash
+
+ OVS_DIR
+ OVS_DIR_VANILLA
+ OVS_DIR_USER
+ OVS_DIR_CUSE
+
+ RTE_SDK_USER
+ RTE_SDK_CUSE
+
+ QEMU_DIR
+ QEMU_DIR_USER
+ QEMU_DIR_CUSE
+ QEMU_BIN
+
+In case that any of these options is defined, then configuration must be updated.
+All paths to the tools are now stored inside ``PATHS`` dictionary. Please
+refer to the paths-documentation_ and update your configuration where necessary.
+
+.. _paths-documentation: http://artifacts.opnfv.org/vswitchperf/docs/index.html#configuration-of-paths-dictionary
+
+Configuration change via CLI
+============================
+
+In previous releases it was possible to modify selected configuration options
+(mostly VNF specific) via command line interface, i.e. by ``--test-params``
+argument. This concept has been generalized in Danube release and it is
+possible to modify any configuration parameter via CLI or via **Parameters**
+section of the testcase definition. Old configuration options were obsoleted
+and it is required to specify configuration parameter name in the same form
+as it is defined inside configuration file, i.e. in uppercase. Please
+refer to the overriding-parameters-documentation_ for additional details.
+
+**NOTE:** In case that execution of VSPERF is automated by scripts (e.g. for
+CI purposes), then these scripts must be checked and updated too. It means,
+that any occurrence of
+
+.. code:: bash
+
+ guest_loopback
+ vanilla_tgen_port1_ip
+ vanilla_tgen_port1_mac
+ vanilla_tgen_port2_ip
+ vanilla_tgen_port2_mac
+ tunnel_type
+
+shall be changed to the uppercase form and data type of entered values must
+match to data types of original values from configuration files.
+
+In case that ``guest_nic1_name`` or ``guest_nic2_name`` is changed,
+then new dictionary ``GUEST_NICS`` must be modified accordingly.
+Please see guest-configuration_ and ``conf/04_vnf.conf`` for additional
+details.
+
+.. _overriding-parameters-documentation: http://artifacts.opnfv.org/vswitchperf/docs/index.html#overriding-values-defined-in-configuration-files
+.. _guest-configuration: http://artifacts.opnfv.org/vswitchperf/docs/index.html#configuration-of-guest-options
+
+Traffic configuration via CLI
+=============================
+
+In previous releases it was possible to modify selected attributes of generated
+traffic via command line interface. This concept has been enhanced in Danube
+release and it is now possible to modify all traffic specific options via
+CLI or by ``TRAFFIC`` dictionary in configuration file. Detailed description
+is available at configuration-of-traffic-dictionary_ section of documentation.
+
+Please check your automated scripts for VSPERF execution for following CLI
+parameters and update them according to the documentation:
+
+.. code:: bash
+
+ bidir
+ duration
+ frame_rate
+ iload
+ lossrate
+ multistream
+ pkt_sizes
+ pre-installed_flows
+ rfc2544_tests
+ stream_type
+ traffic_type
+
+.. _configuration-of-traffic-dictionary: http://artifacts.opnfv.org/vswitchperf/docs/index.html#configuration-of-traffic-dictionary
diff --git a/docs/design/index.rst b/docs/design/index.rst
index a8a076f4..a8a076f4 100755..100644
--- a/docs/design/index.rst
+++ b/docs/design/index.rst
diff --git a/docs/design/vswitchperf_design.rst b/docs/design/vswitchperf_design.rst
index 96b97631..bf82f9b8 100755..100644
--- a/docs/design/vswitchperf_design.rst
+++ b/docs/design/vswitchperf_design.rst
@@ -314,10 +314,11 @@ Detailed description of ``TRAFFIC`` dictionary items follows:
of selected transport protocol
Default value: "L4".
'pre_installed_flows'
- - Pre-installed flows is an extension of the multistream"
- feature. If multistream is disabled, then pre-installed
- flows will be ignored. It defines if stream specific flows
- will be inserted into OVS or not.
+ - Pre-installed flows is an extension of the "multistream"
+ feature. If enabled, it will implicitly insert a flow
+ for each stream. If multistream is disabled, then
+ pre-installed flows will be ignored.
+ Note: It is supported only for p2p deployment scenario.
Data type: str
Supported values:
"Yes" - flows will be inserted into OVS
diff --git a/docs/index.rst b/docs/index.rst
index 37e0c43f..bce2aa61 100755..100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -17,7 +17,8 @@ Performance and Test group and its associated projects, as part of OPNFV
Platform and VNF level testing and validation.
* Project Wiki: https://wiki.opnfv.org/characterize_vswitch_performance_for_telco_nfv_use_cases
-* Project Repository: https://gerrit.opnfv.org/gerrit/#/q/vswitchperf
+* Project Repository: https://git.opnfv.org/vswitchperf
+* Project Artifacts: https://artifacts.opnfv.org/vswitchperf.html
* Continuous Integration https://build.opnfv.org/ci/view/vswitchperf/
.. toctree::
@@ -34,4 +35,3 @@ Platform and VNF level testing and validation.
Indices
=======
* :ref:`search`
-
diff --git a/docs/msc/factory_and_loader.msc b/docs/msc/factory_and_loader.msc
index a744607e..a744607e 100755..100644
--- a/docs/msc/factory_and_loader.msc
+++ b/docs/msc/factory_and_loader.msc
diff --git a/docs/msc/traffic_controller.msc b/docs/msc/traffic_controller.msc
index bd66cce1..bd66cce1 100755..100644
--- a/docs/msc/traffic_controller.msc
+++ b/docs/msc/traffic_controller.msc
diff --git a/docs/msc/vsperf.msc b/docs/msc/vsperf.msc
index aec53604..aec53604 100755..100644
--- a/docs/msc/vsperf.msc
+++ b/docs/msc/vsperf.msc
diff --git a/docs/requirements/ietf_draft/draft-ietf-bmwg-vswitch-opnfv-01.xml b/docs/requirements/ietf_draft/draft-ietf-bmwg-vswitch-opnfv-01.xml
index c8a3d99b..c8a3d99b 100755..100644
--- a/docs/requirements/ietf_draft/draft-ietf-bmwg-vswitch-opnfv-01.xml
+++ b/docs/requirements/ietf_draft/draft-ietf-bmwg-vswitch-opnfv-01.xml
diff --git a/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-00.xml b/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-00.xml
index b5f7f833..b5f7f833 100755..100644
--- a/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-00.xml
+++ b/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-00.xml
diff --git a/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-01.xml b/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-01.xml
index a9405a77..a9405a77 100755..100644
--- a/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-01.xml
+++ b/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-01.xml
diff --git a/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-02.xml b/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-02.xml
index 9157763e..9157763e 100755..100644
--- a/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-02.xml
+++ b/docs/requirements/ietf_draft/draft-vsperf-bmwg-vswitch-opnfv-02.xml
diff --git a/docs/requirements/vm2vm_alternative_benchmark.png b/docs/requirements/vm2vm_alternative_benchmark.png
index d21334ba..d21334ba 100755..100644
--- a/docs/requirements/vm2vm_alternative_benchmark.png
+++ b/docs/requirements/vm2vm_alternative_benchmark.png
Binary files differ
diff --git a/docs/requirements/vm2vm_benchmark.png b/docs/requirements/vm2vm_benchmark.png
index 3a85e51f..3a85e51f 100755..100644
--- a/docs/requirements/vm2vm_benchmark.png
+++ b/docs/requirements/vm2vm_benchmark.png
Binary files differ
diff --git a/docs/requirements/vm2vm_hypervisor_benchmark.png b/docs/requirements/vm2vm_hypervisor_benchmark.png
index b5b76e8a..b5b76e8a 100755..100644
--- a/docs/requirements/vm2vm_hypervisor_benchmark.png
+++ b/docs/requirements/vm2vm_hypervisor_benchmark.png
Binary files differ
diff --git a/docs/requirements/vm2vm_virtual_interface_benchmark.png b/docs/requirements/vm2vm_virtual_interface_benchmark.png
index 55294af6..55294af6 100755..100644
--- a/docs/requirements/vm2vm_virtual_interface_benchmark.png
+++ b/docs/requirements/vm2vm_virtual_interface_benchmark.png
Binary files differ
diff --git a/docs/userguide/integration.rst b/docs/userguide/integration.rst
index 60ed9245..60ed9245 100755..100644
--- a/docs/userguide/integration.rst
+++ b/docs/userguide/integration.rst
diff --git a/docs/userguide/testusage.rst b/docs/userguide/testusage.rst
index 721fd635..721fd635 100755..100644
--- a/docs/userguide/testusage.rst
+++ b/docs/userguide/testusage.rst
diff --git a/docs/userguide/yardstick.rst b/docs/userguide/yardstick.rst
index c906df8e..c906df8e 100755..100644
--- a/docs/userguide/yardstick.rst
+++ b/docs/userguide/yardstick.rst
diff --git a/src/dpdk/Makefile b/src/dpdk/Makefile
index 93cb7292..69671169 100755
--- a/src/dpdk/Makefile
+++ b/src/dpdk/Makefile
@@ -79,6 +79,12 @@ else
$(AT)sed -i -e 's/CONFIG_RTE_LIBRTE_VHOST_USER=.\+/CONFIG_RTE_LIBRTE_VHOST_USER=$(VHOST_USER)/g' $(CONFIG_FILE_LINUXAPP)
$(AT)sed -i -e 's/CONFIG_RTE_BUILD_COMBINE_LIBS=./CONFIG_RTE_BUILD_COMBINE_LIBS=y/g' $(CONFIG_FILE_LINUXAPP)
endif
+# CentOS 7.3 specific config changes to compile
+ifeq ($(ID),"centos")
+ifeq ($(VERSION_ID),"7")
+ $(AT)sed -i.bak s@'SRCS-y += ethtool/igb/igb_main.c'@'#SRCS-y += ethtool/igb/igb_main.c'@g $(WORK_DIR)/lib/librte_eal/linuxapp/kni/Makefile
+endif
+endif
# RHEL 7.3 specific config changes to compile
ifeq ($(ID),"rhel")
ifeq ($(VERSION_ID),"7.3")
diff --git a/systems/centos/build_base_machine.sh b/systems/centos/build_base_machine.sh
index 5430ceba..f2efb541 100755
--- a/systems/centos/build_base_machine.sh
+++ b/systems/centos/build_base_machine.sh
@@ -77,3 +77,5 @@ python33
python33-python-tkinter
git-review
" | grep -v ^#)
+# prevent ovs vanilla from building from source due to kernel incompatibilities
+sed -i s/'SUBBUILDS = src_vanilla'/'#SUBBUILDS = src_vanilla'/ ../src/Makefile
diff --git a/tools/pkt_gen/xena/XenaDriver.py b/tools/pkt_gen/xena/XenaDriver.py
index 04a99e9d..e144514f 100644
--- a/tools/pkt_gen/xena/XenaDriver.py
+++ b/tools/pkt_gen/xena/XenaDriver.py
@@ -57,6 +57,7 @@ CMD_LOGOFF = 'c_logoff'
CMD_OWNER = 'c_owner'
CMD_PORT = ';Port:'
CMD_PORT_IP = 'p_ipaddress'
+CMD_PORT_LEARNING = 'p_autotrain'
CMD_RESERVE = 'p_reservation reserve'
CMD_RELEASE = 'p_reservation release'
CMD_RELINQUISH = 'p_reservation relinquish'
@@ -560,6 +561,14 @@ class XenaPort(object):
"on" if on else "off"), self)
return self._manager.driver.ask_verify(command)
+ def set_port_learning(self, interval):
+ """Start port learning with the interval in seconds specified. 0 disables port learning
+ :param: interval as int
+ :return: Boolean True if response OK, False if error.
+ """
+ command = make_port_command('{} {}'.format(CMD_PORT_LEARNING, interval), self)
+ return self._manager.driver.ask_verify(command)
+
def set_port_ip(self, ip_addr, cidr, gateway, wild='255'):
"""
Set the port ip address of the specific port
diff --git a/tools/pkt_gen/xena/xena.py b/tools/pkt_gen/xena/xena.py
index 20577e8d..e251c1d6 100755
--- a/tools/pkt_gen/xena/xena.py
+++ b/tools/pkt_gen/xena/xena.py
@@ -188,9 +188,10 @@ class Xena(ITrafficGenerator):
result_dict[ResultsConstants.TX_FRAMES] = self.tx_stats.data[
self.tx_stats.pt_stream_keys[0]]['packets']
result_dict[ResultsConstants.TX_RATE_FPS] = self.tx_stats.data[
- self.tx_stats.pt_stream_keys[0]]['pps']
- result_dict[ResultsConstants.TX_RATE_MBPS] = self.tx_stats.data[
- self.tx_stats.pt_stream_keys[0]]['bps'] / 1000000
+ self.tx_stats.pt_stream_keys[0]]['packets'] / self._duration
+ result_dict[ResultsConstants.TX_RATE_MBPS] = ((
+ self.tx_stats.data[self.tx_stats.pt_stream_keys[0]]['bytes']
+ * 8) / 1000000) / self._duration
result_dict[ResultsConstants.TX_BYTES] = self.tx_stats.data[
self.tx_stats.pt_stream_keys[0]]['bytes']
# tx rate percent may need to be halved if bi directional
@@ -214,10 +215,11 @@ class Xena(ITrafficGenerator):
'pr_tpldstraffic']['0']['packets']
result_dict[
ResultsConstants.THROUGHPUT_RX_FPS] = self.rx_stats.data[
- 'pr_tpldstraffic']['0']['pps']
+ 'pr_tpldstraffic']['0']['packets'] / self._duration
result_dict[
- ResultsConstants.THROUGHPUT_RX_MBPS] = self.rx_stats.data[
- 'pr_tpldstraffic']['0']['bps'] / 1000000
+ ResultsConstants.THROUGHPUT_RX_MBPS] = ((
+ self.rx_stats.data['pr_tpldstraffic']['0']['bytes']
+ *8) / 1000000) / self._duration
result_dict[ResultsConstants.RX_BYTES] = self.rx_stats.data[
'pr_tpldstraffic']['0']['bytes']
# throughput percent may need to be halved if bi directional
@@ -383,6 +385,15 @@ class Xena(ITrafficGenerator):
# Clear port configuration for a clean start
self.xmanager.ports[0].reset_port()
self.xmanager.ports[1].reset_port()
+ if settings.getValue('TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED'):
+ # turn on port learning
+ self.xmanager.ports[0].set_port_learning(1)
+ self.xmanager.ports[1].set_port_learning(1)
+ sleep(settings.getValue('TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION'))
+ # turn off port learning
+ self.xmanager.ports[0].set_port_learning(0)
+ self.xmanager.ports[1].set_port_learning(0)
+ sleep(1)
self.xmanager.ports[0].clear_stats()
self.xmanager.ports[1].clear_stats()
@@ -395,6 +406,8 @@ class Xena(ITrafficGenerator):
settings.getValue('TRAFFICGEN_XENA_PORT1_IP'),
settings.getValue('TRAFFICGEN_XENA_PORT1_CIDR'),
settings.getValue('TRAFFICGEN_XENA_PORT1_GATEWAY'))
+ self.xmanager.ports[0].set_port_time_limit(self._duration)
+ self.xmanager.ports[1].set_port_time_limit(self._duration)
def setup_stream(stream, port, payload_id, flip_addr=False):
"""
@@ -459,7 +472,7 @@ class Xena(ITrafficGenerator):
if not self.xmanager.ports[1].traffic_on():
self._logger.error(
"Failure to start port 1. Check settings and retry.")
- sleep(self._duration + 1)
+ sleep(self._duration + 5) # the extra 5 seconds is to allow packets in flight to complete
# getting results
if self._params['traffic']['bidir'] == 'True':
# need to aggregate out both ports stats and assign that data
diff --git a/vswitches/ovs_dpdk_vhost.py b/vswitches/ovs_dpdk_vhost.py
index a2731478..40f4533b 100644
--- a/vswitches/ovs_dpdk_vhost.py
+++ b/vswitches/ovs_dpdk_vhost.py
@@ -133,11 +133,6 @@ class OvsDpdkVhost(IVSwitchOvs):
vhost_count = self._get_port_count('type=dpdkvhostuser')
port_name = 'dpdkvhostuser' + str(vhost_count)
params = ['--', 'set', 'Interface', port_name, 'type=dpdkvhostuser']
- # multi queue enable
- if int(settings.getValue('VSWITCH_DPDK_MULTI_QUEUES')) and \
- not settings.getValue('OVS_OLD_STYLE_MQ'):
- params += ['options:n_rxq={}'.format(
- settings.getValue('VSWITCH_DPDK_MULTI_QUEUES'))]
of_port = bridge.add_port(port_name, params)
return (port_name, of_port)