summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2015-10-19 17:38:52 +0100
committerMartin Klozik <martinx.klozik@intel.com>2015-11-03 10:27:09 +0000
commit305ca81ee9058cb3daa96706ba9cb9c071e3e41c (patch)
treeec483af257af36af83d23fd9d0f496f4d20b9ff2
parentd9289a06e5cf868407eab996641f89f26a23f967 (diff)
bugfix of Vanilla OVS testing scenarios
Automatic selection of OVS and DPDK directories must be performed before initialization of modules is called. Otherwise modules will use wrong values with unpredictable results. Default directory values have been changed to point to sources build by make. Clean&sweep of directory usage was performed. Configuration file for pylint has been renamed to follow pylint naming convention. Change-Id: I42c89f8890c021f0062b478a856ae0113f1245fb JIRA: VSPERF-121 Signed-off-by: Martin Klozik <martinx.klozik@intel.com> Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com> Reviewed-by: Billy O Mahony <billy.o.mahony@intel.com> Reviewed-by: Brian Castelli <brian.castelli@spirent.com> Reviewed-by: Gene Snider <eugene.snider@huawei.com> Reviewed-by: Al Morton <acmorton@att.com> Reviewed-by: Tv Rao <tv.rao@freescale.com>
-rw-r--r--conf/00_common.conf12
-rw-r--r--conf/02_vswitch.conf65
-rw-r--r--conf/04_vnf.conf4
-rw-r--r--conf/10_custom.conf11
-rw-r--r--docs/to-be-reorganized/quickstart.rst2
-rw-r--r--pylintrc (renamed from pylint.rc)14
-rw-r--r--src/ovs/daemon.py4
-rw-r--r--src/ovs/ofctl.py2
-rwxr-xr-xvsperf40
-rw-r--r--vswitches/ovs_dpdk_vhost.py1
10 files changed, 84 insertions, 71 deletions
diff --git a/conf/00_common.conf b/conf/00_common.conf
index f9782c6a..225cf476 100644
--- a/conf/00_common.conf
+++ b/conf/00_common.conf
@@ -27,6 +27,18 @@ ROOT_DIR = os.path.normpath(os.path.join(
TRAFFICGEN_DIR = os.path.join(ROOT_DIR, 'tools/pkt_gen')
SYSMETRICS_DIR = os.path.join(ROOT_DIR, 'tools/collectors')
+# deployment specific paths to OVS and DPDK
+OVS_DIR_VANILLA = os.path.join(ROOT_DIR, 'src_vanilla/ovs/ovs/')
+
+RTE_SDK_CUSE = os.path.join(ROOT_DIR, 'src_cuse/dpdk/dpdk/')
+OVS_DIR_CUSE = os.path.join(ROOT_DIR, 'src_cuse/ovs/ovs/')
+
+RTE_SDK_USER = os.path.join(ROOT_DIR, 'src/dpdk/dpdk/')
+OVS_DIR_USER = os.path.join(ROOT_DIR, 'src/ovs/ovs/')
+
+# the same qemu version is used for vanilla, vHost User and Cuse
+QEMU_DIR = os.path.join(ROOT_DIR, 'src/qemu/qemu/')
+
# ############################
# Process configuration
# ############################
diff --git a/conf/02_vswitch.conf b/conf/02_vswitch.conf
index 32f4c0e1..f56548f7 100644
--- a/conf/02_vswitch.conf
+++ b/conf/02_vswitch.conf
@@ -13,10 +13,16 @@
# limitations under the License.
# ############################
-# vswitch configuration
+# Directories
# ############################
-RTE_SDK = '~/dpdk'
-OVS_DIR = '~/openvswitch'
+# use DPDK VHOST USER by default
+RTE_SDK = RTE_SDK_USER
+OVS_DIR = OVS_DIR_USER
+
+OVS_VAR_DIR = '/usr/local/var/run/openvswitch/'
+OVS_ETC_DIR = '/usr/local/etc/openvswitch/'
+
+VSWITCH_DIR = os.path.join(ROOT_DIR, 'vswitches')
# ############################
# DPDK configuration
@@ -34,13 +40,38 @@ WHITELIST_NICS = ['05:00.0', '05:00.1']
BLACKLIST_NICS = ['0000:09:00.0', '0000:09:00.1', '0000:09:00.2',
'0000:09:00.3']
+# for DPDK_MODULES the path is in reference to the build directory
+DPDK_MODULES = [
+ ('kmod', 'igb_uio'),
+]
+
+VHOST_MODULE = [
+ ('eventfd_link', 'eventfd_link')
+]
+
+# list of modules that will be inserted using 'modprobe' on system init
+SYS_MODULES = ['uio', 'cuse']
+
+# vhost character device file used by dpdkvhostport QemuWrap cases
+VHOST_DEV_FILE = 'ovs-vhost-net'
+
+# location of vhost-user sockets
+VHOST_USER_SOCKS = ['/tmp/dpdkvhostuser0', '/tmp/dpdkvhostuser1',
+ '/tmp/dpdkvhostuser2', '/tmp/dpdkvhostuser3',
+ '/tmp/myport0', '/tmp/helloworld123', '/tmp/abcstuff0']
+
+# ############################
+# vswitch configuration
+# ############################
# These are DPDK EAL parameters and they may need to be changed depending on
# hardware configuration, like cpu numbering and NUMA.
VSWITCHD_DPDK_ARGS = ['-c', '0x4', '-n', '4', '--socket-mem 1024,0']
VSWITCHD_VANILLA_ARGS = ['--pidfile']
VSWITCH_VANILLA_PHY_PORT_NAMES = ['', '']
-VSWITCH_VANILLA_KERNEL_MODULES = ['openvswitch']
+
+# use full module path to load module matching OVS version built from the source
+VSWITCH_VANILLA_KERNEL_MODULES = [os.path.join(ROOT_DIR, 'datapath/linux/openvswitch.ko')]
# Bridge name to be used by VSWTICH
VSWITCH_BRIDGE_NAME = 'br0'
@@ -60,35 +91,11 @@ VSWITCH_FLOW_TIMEOUT = '30000'
# for OVS modules the path is in reference to the OVS directory.
OVS_MODULES = []
-# for DPDK_MODULES the path is in reference to the build directory
-DPDK_MODULES = [
- ('kmod', 'igb_uio'),
-]
-
-VHOST_MODULE = [
- ('eventfd_link', 'eventfd_link')
-]
-
-# list of modules that will be inserted using 'modprobe' on system init
-SYS_MODULES = ['uio', 'cuse']
-
-# vhost character device file used by dpdkvhostport QemuWrap cases
-VHOST_DEV_FILE = 'ovs-vhost-net'
-
-# location of vhost-user sockets
-VHOST_USER_SOCKS = ['/tmp/dpdkvhostuser0', '/tmp/dpdkvhostuser1',
- '/tmp/dpdkvhostuser2', '/tmp/dpdkvhostuser3',
- '/tmp/myport0', '/tmp/helloworld123', '/tmp/abcstuff0']
-
# log file for ovs-vswitchd
LOG_FILE_VSWITCHD = 'vswitchd.log'
# log file for ovs-dpdk
LOG_FILE_OVS = 'ovs.log'
-VSWITCH_DIR = os.path.join(ROOT_DIR, 'vswitches')
+# default vswitch implementation
VSWITCH = "OvsDpdkVhost"
-
-# Use vhost user or vhost cuse
-# Set to cuse if you want to test vhostcuse
-VHOST_METHOD = 'user'
diff --git a/conf/04_vnf.conf b/conf/04_vnf.conf
index 52cc6ec1..1059482e 100644
--- a/conf/04_vnf.conf
+++ b/conf/04_vnf.conf
@@ -57,9 +57,7 @@ LOG_FILE_GUEST_CMDS = 'guest-cmds.log'
# Executables
# ############################
-QEMU_BIN = 'qemu-system-x86_64'
-
-OVS_VAR_DIR = '/usr/local/var/run/openvswitch/'
+QEMU_BIN = os.path.join(QEMU_DIR, 'x86_64-softmmu/qemu-system-x86_64')
# For 2 VNFs you may use ['00:00:00:00:00:01', '00:00:00:00:00:03']
GUEST_NET1_MAC = ['00:00:00:00:00:01', '00:00:00:00:00:03']
diff --git a/conf/10_custom.conf b/conf/10_custom.conf
index f42df2d4..3f98d543 100644
--- a/conf/10_custom.conf
+++ b/conf/10_custom.conf
@@ -12,17 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Operational settings for various resources
-OVS_DIR_VANILLA = '~/src_vanilla/ovs/'
-QEMU_DIR_VANILLA = '~/src_vanilla/qemu/'
-
-RTE_SDK_CUSE = '~/src_cuse/dpdk/'
-OVS_DIR_CUSE = '~/src_cuse/ovs/'
-QEMU_DIR_CUSE = '~/src_cuse/qemu/'
-
-RTE_SDK_USER = '~/src/dpdk/'
-OVS_DIR_USER = '~/src/ovs/'
-QEMU_DIR_USER = '~/src/qemu/'
RTE_TARGET = '' # the relevant DPDK build target
# traffic generator to use in tests
diff --git a/docs/to-be-reorganized/quickstart.rst b/docs/to-be-reorganized/quickstart.rst
index bcf0f7c2..2a071d4f 100644
--- a/docs/to-be-reorganized/quickstart.rst
+++ b/docs/to-be-reorganized/quickstart.rst
@@ -306,7 +306,7 @@ Example of manual pylint invocation:
.. code-block:: console
- pylint --rcfile ./pylint.rc ./vsperf
+ pylint --rcfile ./pylintrc ./vsperf
GOTCHAs:
--------
diff --git a/pylint.rc b/pylintrc
index f748adac..cd9d65c3 100644
--- a/pylint.rc
+++ b/pylintrc
@@ -1,3 +1,17 @@
+# Copyright 2015 Intel Corporation.
+#
+# 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.
+
[MASTER]
# Specify a configuration file.
diff --git a/src/ovs/daemon.py b/src/ovs/daemon.py
index 0d518ea9..09735600 100644
--- a/src/ovs/daemon.py
+++ b/src/ovs/daemon.py
@@ -31,8 +31,8 @@ _OVSDB_TOOL_BIN = os.path.join(
_OVSDB_SERVER_BIN = os.path.join(
settings.getValue('OVS_DIR'), 'ovsdb', 'ovsdb-server')
-_OVS_VAR_DIR = '/usr/local/var/run/openvswitch/'
-_OVS_ETC_DIR = '/usr/local/etc/openvswitch/'
+_OVS_VAR_DIR = settings.getValue('OVS_VAR_DIR')
+_OVS_ETC_DIR = settings.getValue('OVS_ETC_DIR')
_LOG_FILE_VSWITCHD = os.path.join(
settings.getValue('LOG_DIR'), settings.getValue('LOG_FILE_VSWITCHD'))
diff --git a/src/ovs/ofctl.py b/src/ovs/ofctl.py
index 2aae1ec8..c052f85c 100644
--- a/src/ovs/ofctl.py
+++ b/src/ovs/ofctl.py
@@ -32,8 +32,6 @@ _OVS_VSCTL_BIN = os.path.join(settings.getValue('OVS_DIR'), 'utilities',
_OVS_OFCTL_BIN = os.path.join(settings.getValue('OVS_DIR'), 'utilities',
'ovs-ofctl')
-_OVS_VAR_DIR = '/usr/local/var/run/openvswitch/'
-
_OVS_BRIDGE_NAME = settings.getValue('VSWITCH_BRIDGE_NAME')
class OFBase(object):
diff --git a/vsperf b/vsperf
index 7a442658..e220e246 100755
--- a/vsperf
+++ b/vsperf
@@ -286,6 +286,24 @@ def main():
# than both a settings file and environment variables
settings.load_from_dict(args)
+ # set dpdk and ovs paths accorfing to VNF and VSWITCH
+ if settings.getValue('VSWITCH').endswith('Vanilla'):
+ # settings paths for Vanilla
+ settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_VANILLA')))
+ elif settings.getValue('VSWITCH').endswith('Vhost'):
+ if settings.getValue('VNF').endswith('Cuse'):
+ # settings paths for Cuse
+ settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_CUSE')))
+ settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_CUSE')))
+ else:
+ # settings paths for VhostUser
+ settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
+ settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_USER')))
+ else:
+ # default - set to VHOST USER but can be changed during enhancement
+ settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
+ settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_USER')))
+
configure_logging(settings.getValue('VERBOSITY'))
logger = logging.getLogger()
@@ -388,28 +406,6 @@ def main():
logger.error("No tests matched --test option or positional args. Done.")
sys.exit(1)
- # set dpdk, ovs and qemu paths accorfing to VNF and VSWITCH
- if settings.getValue('VSWITCH').endswith('Vanilla'):
- # settings paths for Vanilla
- settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_VANILLA')))
- settings.setValue('QEMU_DIR', (settings.getValue('QEMU_DIR_VANILLA')))
- elif settings.getValue('VSWITCH').endswith('Vhost'):
- if settings.getValue('VNF').endswith('Cuse'):
- # settings paths for Cuse
- settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_CUSE')))
- settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_CUSE')))
- settings.setValue('QEMU_DIR', (settings.getValue('QEMU_DIR_CUSE')))
- else:
- # settings paths for VhostUser
- settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
- settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_USER')))
- settings.setValue('QEMU_DIR', (settings.getValue('QEMU_DIR_USER')))
- else:
- # default - set to VHOST USER but can be changed during enhancement
- settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
- settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_USER')))
- settings.setValue('QEMU_DIR', (settings.getValue('QEMU_DIR_USER')))
-
# create results directory
if not os.path.exists(results_path):
logger.info("Creating result directory: " + results_path)
diff --git a/vswitches/ovs_dpdk_vhost.py b/vswitches/ovs_dpdk_vhost.py
index 553915bc..cf60a5e2 100644
--- a/vswitches/ovs_dpdk_vhost.py
+++ b/vswitches/ovs_dpdk_vhost.py
@@ -22,7 +22,6 @@ from src.ovs import VSwitchd, OFBridge
from src.dpdk import dpdk
_VSWITCHD_CONST_ARGS = ['--', '--log-file']
-_VHOST_METHOD = settings.getValue('VHOST_METHOD')
class OvsDpdkVhost(IVSwitch):
"""VSwitch implementation using DPDK and vhost ports