diff options
author | Martin Klozik <martinx.klozik@intel.com> | 2015-10-19 17:38:52 +0100 |
---|---|---|
committer | Martin Klozik <martinx.klozik@intel.com> | 2015-11-03 10:27:09 +0000 |
commit | 305ca81ee9058cb3daa96706ba9cb9c071e3e41c (patch) | |
tree | ec483af257af36af83d23fd9d0f496f4d20b9ff2 | |
parent | d9289a06e5cf868407eab996641f89f26a23f967 (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.conf | 12 | ||||
-rw-r--r-- | conf/02_vswitch.conf | 65 | ||||
-rw-r--r-- | conf/04_vnf.conf | 4 | ||||
-rw-r--r-- | conf/10_custom.conf | 11 | ||||
-rw-r--r-- | docs/to-be-reorganized/quickstart.rst | 2 | ||||
-rw-r--r-- | pylintrc (renamed from pylint.rc) | 14 | ||||
-rw-r--r-- | src/ovs/daemon.py | 4 | ||||
-rw-r--r-- | src/ovs/ofctl.py | 2 | ||||
-rwxr-xr-x | vsperf | 40 | ||||
-rw-r--r-- | vswitches/ovs_dpdk_vhost.py | 1 |
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: -------- @@ -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): @@ -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 |