diff options
-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 |