aboutsummaryrefslogtreecommitdiffstats
path: root/conf/02_vswitch.conf
blob: 6a830a05167808136a50ba26a8cd3dd09b9acd25 (plain)

@media only all and (prefers-color-scheme: dark) {
.highlight .hll { background-color: #49483e }
.highlight .c { color: #75715e } /* Comment */
.highlight .err { color: #960050; background-color: #1e0010 } /* Error */
.highlight .k { color: #66d9ef } /* Keyword */
.highlight .l { color: #ae81ff } /* Literal */
.highlight .n { color: #f8f8f2 } /* Name */
.highlight .o { color: #f92672 } /* Operator */
.highlight .p { color: #f8f8f2 } /* Punctuation */
.highlight .ch { color: #75715e } /* Comment.Hashbang */
.highlight .cm { color: #75715e } /* Comment.Multiline */
.highlight .cp { color: #75715e } /* Comment.Preproc */
.highlight .cpf { color: #75715e } /* Comment.PreprocFile */
.highlight .c1 { color: #75715e } /* Comment.Single */
.highlight .cs { color: #75715e } /* Comment.Special */
.highlight .gd { color: #f92672 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gi { color: #a6e22e } /* Generic.Inserted */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #75715e } /* Generic.Subheading */
.highlight .kc { color: #66d9ef } /* Keyword.Constant */
.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
.highlight .kn { color: #f92672 } /* Keyword.Namespace */
.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
.highlight .kt { color: #66d9ef } /* Keyword.Type */
.highlight .ld { color: #e6db74 } /* Literal.Date */
.highlight .m { color: #ae81ff } /* Literal.Number */
.highlight .s { color: #e6db74 } /* Literal.String */
.highlight .na { color: #a6e22e } /* Name.Attribute */
.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
.highlight .nc { color: #a6e22e } /* Name.Class */
.highlight .no { color: #66d9ef } /* Name.Constant */
.highlight .nd { color: #a6e22e } /* Name.Decorator */
.highlight .ni { color: #f8f8f2 } /* Name.Entity */
.highlight .ne { color: #a6e22e } /* Name.Exception */
.highlight .nf { color: #a6e22e } /* Name.Function */
.highlight .nl { color: #f8f8f2 } /* Name.Label */
.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
.highlight .nx { color: #a6e22e } /* Name.Other */
.highlight .py { color: #f8f8f2 } /* Name.Property */
.highlight .nt { color: #f92672 } /* Name.Tag */
.highlight .nv { color: #f8f8f2 } /* Name.Variable */
.highlight .ow { color: #f92672 } /* Operator.Word */
.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
.highlight .mb { color: #ae81ff } /* Literal.Number.Bin */
.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
.highlight .sa { color: #e6db74 } /* Literal.String.Affix */
.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
.highlight .sc { color: #e6db74 } /* Literal.String.Char */
.highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */
.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
.highlight .se { color: #ae81ff } /* Literal.String.Escape */
.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
.highlight .si { color: #e6db74 } /* Literal.String.Interpol */
.highlight .sx { color: #e6db74 } /* Literal.String.Other */
.highlight .sr { color: #e6db74 } /* Literal.String.Regex */
.highlight .s1 { color: #e6db74 } /* Literal.String.Single */
.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */
.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #a6e22e } /* Name.Function.Magic */
.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */
.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */
.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */
.highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */
.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */
}
@media (prefers-color-scheme: light) {
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #
# Copyright 2015-2016 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.

# 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'

# 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

#########################
## 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']