# 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. # 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. # OVS Command timeout for execution of commands. OVS_CMD_TIMEOUT = 10 # ############################ # DPDK configuration # ############################ # DPDK target used when builing DPDK 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' # 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' } } # ############################ # 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. # 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' # 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 # 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 VSWITCH_FLOW_TIMEOUT = '30000' # log file for ovs-vswitchd LOG_FILE_VSWITCHD = 'vswitchd.log' # log file for ovs-dpdk LOG_FILE_OVS = 'ovs.log' # 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 = [] ######################### ## 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']