connections: Introduction of generic API
[vswitchperf.git] / conf / 02_vswitch.conf
index 8b6a80a..873b5bc 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2015 Intel Corporation.
+# Copyright 2015-2018 Intel Corporation, Tieto and others.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# ############################
-# vswitch configuration
-# ############################
-RTE_SDK = '~/dpdk'
-OVS_DIR = '~/openvswitch'
+# OVS Command timeout for execution of commands.
+OVS_CMD_TIMEOUT = 10
 
 # ############################
 # DPDK configuration
 # ############################
 
 # DPDK target used when builing DPDK
-RTE_TARGET = 'x86_64-ivshmem-linuxapp-gcc'
+RTE_TARGET = 'x86_64-native-linuxapp-gcc'
+
+# list of NIC HWIDs to which traffic generator is connected
+# e.g. WHITELIST_NICS = ['05:00.0', '05:00.1']
+# NIC HWIDs for given network device name can be retrieved
+# by call of ehtool:
+# e.g. ethtool -i eth0
+# In case of NIC with SRIOV support, it is possible to define,
+# which virtual function should be used
+# e.g. value '0000:05:00.0|vf1' will configure two VFs and second VF
+# will be used for testing
+WHITELIST_NICS = []
+
+# List defines an amount of memory to be allocated by DPDK at NUMA nodes. This
+# option is shared by all vSwitches with DPDK support. In case, that there is
+# a socket-mem configuration specified in vSwitch specific configuration option,
+# then it will be overridden by DPDK_SOCKET_MEM value.
+DPDK_SOCKET_MEM = ['1024', '0']
+
+# vhost character device file used by dpdkvhostport QemuWrap cases
+VHOST_DEV_FILE = 'ovs-vhost-net'
 
-# list of NIC HWIDs which will be bound to the 'igb_uio' driver on
-# system init
-WHITELIST_NICS = ['05:00.0', '05:00.1']
+# location of vhost-user sockets relative to 'ovs_var_tmp'
+VHOST_USER_SOCKS = 'dpdkvhostuser*'
+
+# please see conf/00_common.conf for description of PATHS dictionary
+PATHS['dpdk'] = {
+        'type' : 'src',
+        'src': {
+            'path': os.path.join(ROOT_DIR, 'src/dpdk/dpdk/'),
+            # To use vfio set:
+            # 'modules' : ['uio', 'vfio-pci'],
+            'modules' : ['uio', os.path.join(RTE_TARGET, 'kmod/igb_uio.ko')],
+            'bind-tool': '*tools/dpdk*bind.py',
+            'testpmd': os.path.join(RTE_TARGET, 'app', 'testpmd'),
+        },
+        'bin': {
+            'bind-tool': '/usr/share/dpdk/tools/dpdk*bind.py',
+            'modules' : ['uio', 'igb_uio'],
+            'testpmd' : 'testpmd'
+        }
+    }
 
-# list of NIC HWIDs which will be ignored by the 'igb_uio' driver on
-# system init
-BLACKLIST_NICS = ['0000:09:00.0', '0000:09:00.1', '0000:09:00.2',
-                  '0000:09:00.3']
+# ############################
+# Directories
+# ############################
+VSWITCH_DIR = os.path.join(ROOT_DIR, 'vswitches')
+
+# please see conf/00_common.conf for description of PATHS dictionary
+# Every vswitch type supported by VSPERF must have its configuration
+# stored inside PATHS['vswitch']. List of all supported vswitches
+# can be obtained by call of ./vsperf --list-vswitches
+#
+# Directories defined by "ovs_var_tmp" and "ovs_etc_tmp" will be used
+# by OVS to temporarily store its configuration, pid and socket files.
+# In case, that these directories exist already, then their original
+# content will be restored after the testcase execution.
+
+PATHS['vswitch'] = {
+    'none' : {      # used by SRIOV tests
+        'type' : 'src',
+        'src' : {},
+    },
+    'OvsDpdkVhost': {
+        'type' : 'src',
+        'src': {
+            'path': os.path.join(ROOT_DIR, 'src/ovs/ovs/'),
+            'ovs-vswitchd': 'vswitchd/ovs-vswitchd',
+            'ovsdb-server': 'ovsdb/ovsdb-server',
+            'ovsdb-tool': 'ovsdb/ovsdb-tool',
+            'ovsschema': 'vswitchd/vswitch.ovsschema',
+            'ovs-vsctl': 'utilities/ovs-vsctl',
+            'ovs-ofctl': 'utilities/ovs-ofctl',
+            'ovs-dpctl': 'utilities/ovs-dpctl',
+            'ovs-appctl': 'utilities/ovs-appctl',
+        },
+        'bin': {
+            'ovs-vswitchd': 'ovs-vswitchd',
+            'ovsdb-server': 'ovsdb-server',
+            'ovsdb-tool': 'ovsdb-tool',
+            'ovsschema': '/usr/share/openvswitch/vswitch.ovsschema',
+            'ovs-vsctl': 'ovs-vsctl',
+            'ovs-ofctl': 'ovs-ofctl',
+            'ovs-dpctl': 'ovs-dpctl',
+            'ovs-appctl': 'ovs-appctl',
+        }
+    },
+    'ovs_var_tmp': '/usr/local/var/run/openvswitch/',
+    'ovs_etc_tmp': '/usr/local/etc/openvswitch/',
+    'VppDpdkVhost': {
+        'type' : 'src',
+        'src': {
+            'path': os.path.join(ROOT_DIR, 'src/vpp/vpp/build-root/install-vpp-native/vpp'),
+            'vpp': 'bin/vpp',
+            'vppctl': 'bin/vppctl',
+            'vpp_plugin_path' : 'lib64/vpp_plugins',
+        },
+        'bin': {
+            'vpp': 'vpp',
+            'vppctl': 'vppctl',
+            'vpp_plugin_path' : '/usr/lib/vpp_plugins',
+        }
+    },
+}
+
+# default OvsVanilla configuration is similar to OvsDpdkVhost except 'path' and 'modules'
+PATHS['vswitch'].update({'OvsVanilla' : copy.deepcopy(PATHS['vswitch']['OvsDpdkVhost'])})
+PATHS['vswitch']['OvsVanilla']['src']['path'] = os.path.join(ROOT_DIR, 'src_vanilla/ovs/ovs/')
+PATHS['vswitch']['OvsVanilla']['src']['modules'] = ['datapath/linux/openvswitch.ko']
+PATHS['vswitch']['OvsVanilla']['bin']['modules'] = ['openvswitch']
 
+# ############################
+# 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']
+
+# parameters used for legacy DPDK configuration through '--dpdk' option of ovs-vswitchd
+# e.g. ovs-vswitchd --dpdk --socket-mem 1024,0
+# This config line is also used for pkt_fwd option (TestPMD phy2phy and pvp tests)
+# NOTE: DPDK socket mem allocation is driven by parameter DPDK_SOCKET_MEM
+VSWITCHD_DPDK_ARGS = ['-c', '0x4', '-n', '4']
+
+# options used for new type of OVS configuration via calls to ovs-vsctl
+# e.g. ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem="1024,0"
+# NOTE: DPDK socket mem allocation is driven by parameter DPDK_SOCKET_MEM
+VSWITCHD_DPDK_CONFIG = {
+    'dpdk-init' : 'true',
+    'dpdk-lcore-mask' : '0x4',
+}
+# Note: VSPERF will automatically detect, which type of DPDK configuration should
+# be used.
+
+# Defines if VSWITCH should be a server for sockets of DPDK vhost-user
+# interfaces (True) or not (False). Support of vhost user server mode
+# in Open vSwitch is deprecated and will be removed in future releases.
+# Note: Qemu 2.7 and newer is required to support settings
+# VSWITCH_VHOSTUSER_SERVER_MODE = False
+VSWITCH_VHOSTUSER_SERVER_MODE = True
+
+# To enable multi queue with dpdk modify the below param to the number of
+# queues for dpdk. 0 = disabled
+VSWITCH_DPDK_MULTI_QUEUES = 0
+
+# Use old style OVS DPDK Multi-queue startup. If testing versions of OVS 2.5.0
+# or before, enable this setting to allow DPDK Multi-queue to enable correctly.
+OVS_OLD_STYLE_MQ = False
+
+# parameters passed to ovs-vswitchd in case that OvsVanilla is selected
+VSWITCHD_VANILLA_ARGS = []
+
+# Bridge name to be used by VSWTICH
+VSWITCH_BRIDGE_NAME = 'br0'
+
+# A tunnel type used by OP2P and PTUNP deployments
+# Supported values: 'vxlan', 'gre' or 'geneve'
+TUNNEL_TYPE = 'vxlan'
 
 # directory where hugepages will be mounted on system init
 HUGEPAGE_DIR = '/dev/hugepages'
 
-# list of tuples of format (path, module_name), which will be inserted
-# using 'insmod' on system init
-
-# 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'),
-]
+# If no hugepages are available, try to allocate HUGEPAGE_RAM_ALLOCATION.
+# Default is 10 GB.
+# 10 GB (10485760 kB) or more is recommended for PVP & PVVP testing scenarios.
+HUGEPAGE_RAM_ALLOCATION = 10485760
 
-VHOST_MODULE = [
-    ('eventfd_link', 'eventfd_link')
-]
+# Sets OVS PMDs core mask to 30 for affinitization to 5th and 6th CPU core.
+# Note that the '0x' notation should not be used.
+VSWITCH_PMD_CPU_MASK = '30'
+VSWITCH_AFFINITIZATION_ON = 1
 
-# 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_FLOW_TIMEOUT = '30000'
 
 # log file for ovs-vswitchd
 LOG_FILE_VSWITCHD = 'vswitchd.log'
@@ -73,6 +199,51 @@ 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"
 
+VSWITCH_JUMBO_FRAMES_ENABLED = False
+VSWITCH_JUMBO_FRAMES_SIZE = 9000
+
+# default arguments of OVS ctl tools
+OVS_VSCTL_ARGS = []
+OVS_OFCTL_ARGS = ['-O', 'OpenFlow13']   # backward compatible default value
+OVS_APPCTL_ARGS = []
+
+# default flow template to be used by OVS classes
+OVS_FLOW_TEMPLATE = {
+    'idle_timeout': '0'
+}
+
+# enable or disable configuration of routing tables; See vswitchperf_design.rst
+# for details.
+OVS_ROUTING_TABLES = False
+
+#########################
+## VPP
+#########################
+# Set of arguments used for startup of VPP
+# NOTE: DPDK socket mem allocation is driven by parameter DPDK_SOCKET_MEM
+VSWITCH_VPP_CLI_SOCK = ''
+VSWITCH_VPP_ARGS = {
+    'unix' : [
+        'interactive',      # required by VSPERF to detect successful VPP startup
+        'log /tmp/vpp.log',
+        'full-coredump',
+    ],
+    'cpu' : [
+        'main-core 2',
+        'workers 2',
+        'corelist-workers 4,5',
+    ],
+}
+
+# log file for VPP
+LOG_FILE_VPP = 'vsperf-vpp.log'
+
+# Select l2 connection method used by VPP.
+# Supported values are: 'xconnect', 'l2patch' and 'bridge'
+VSWITCH_VPP_L2_CONNECT_MODE = 'xconnect'
+
+# Options used during creation of dpdkvhostuser interface
+VSWITCH_VPP_VHOSTUSER_ARGS = ['feature-mask',  '0xFF']