aboutsummaryrefslogtreecommitdiffstats
path: root/conf
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2017-02-27 09:00:50 +0000
committerMartin Klozik <martinx.klozik@intel.com>2017-03-15 16:11:45 +0000
commitd1145851ad5cb9b5abe963ee97491aa694d389dc (patch)
tree83898844525496cedbea0b4ed82130008fe87d0d /conf
parent7c4a2cdcdd99f309dccfe0a24e829bbf3afa95f9 (diff)
vpp: Initial support of VPP vSwitch
Support of VPP was implemented into VSPERF. Initial implementation uses step driven testcases to configure P2P, PVP and PVVP network scenarios. These testcases were prepared for three RFC2544 traffic types, i.e. throughput, continuous stream and back to back. VPP configuration is driven by new configuration option VSWITCH_VPP_ARGS. It is possible to use three types of l2 port connection supported by VPP, i.e. l2 xconnect (default), l2patch and l2 bridge features. Configuration is driven by parameter VSWITCH_VPP_L2_CONNECT_MODE. JIRA: VSPERF-495 Change-Id: Idebef9b10fb0d70796adb3405fec77302de00a7e Signed-off-by: Martin Klozik <martinx.klozik@intel.com> Reviewed-by: Al Morton <acmorton@att.com> Reviewed-by: Christian Trautman <ctrautma@redhat.com> Reviewed-by: Sridhar Rao <sridhar.rao@spirent.com> Reviewed-by: Trevor Cooper <trevor.cooper@intel.com>
Diffstat (limited to 'conf')
-rwxr-xr-xconf/01_testcases.conf188
-rw-r--r--conf/02_vswitch.conf52
-rw-r--r--conf/05_collector.conf2
-rw-r--r--conf/06_pktfwd.conf2
4 files changed, 239 insertions, 5 deletions
diff --git a/conf/01_testcases.conf b/conf/01_testcases.conf
index b30afc8f..4851b043 100755
--- a/conf/01_testcases.conf
+++ b/conf/01_testcases.conf
@@ -78,6 +78,85 @@
# "Test Modifier": [FrameMod|Other],
# "Dependency": [Test_Case_Name |None],
+#
+# VPP specific macros used in TC defintions
+#
+VPP_P2P = [
+ ['vswitch', 'add_switch', 'int_br0'], # STEP 0
+ ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
+ ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[2][0]', '#STEP[1][0]', True],
+ ['trafficgen', 'send_traffic', {}],
+ ['vswitch', 'dump_connections', 'int_br0'],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[2][0]', '#STEP[1][0]', True],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+ ]
+VPP_PVP = [
+ ['vswitch', 'add_switch', 'int_br0'], # STEP 0
+ ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
+ ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 3
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 4
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[4][0]', '#STEP[2][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[2][0]', '#STEP[4][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
+ ['vnf', 'start'],
+ ['trafficgen', 'send_traffic', {}],
+ ['vnf', 'stop'],
+ ['vswitch', 'dump_connections', 'int_br0'],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[4][0]', '#STEP[2][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[2][0]', '#STEP[4][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[4][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+ ]
+VPP_PVVP = [
+ ['vswitch', 'add_switch', 'int_br0'], # STEP 0
+ ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
+ ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 3
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 4
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 5
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 6
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[4][0]', '#STEP[5][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[6][0]', '#STEP[2][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[2][0]', '#STEP[6][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[5][0]', '#STEP[4][0]', True],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
+ ['vnf1', 'start'],
+ ['vnf2', 'start'],
+ ['trafficgen', 'send_traffic', {}],
+ ['vnf2', 'stop'],
+ ['vnf1', 'stop'],
+ ['vswitch', 'dump_connections', 'int_br0'],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[4][0]', '#STEP[5][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[6][0]', '#STEP[2][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[2][0]', '#STEP[6][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[5][0]', '#STEP[4][0]', True],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[4][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[5][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[6][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+ ]
+
+#
+# Generic performance TC definitions
+#
PERFORMANCE_TESTS = [
{
"Name": "phy2phy_tput",
@@ -269,4 +348,113 @@ PERFORMANCE_TESTS = [
},
},
},
+ {
+ "Name": "phy2phy_tput_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: LTD.Throughput.RFC2544.PacketLossRatio",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ },
+ },
+ "TestSteps": VPP_P2P,
+ },
+ {
+ "Name": "phy2phy_cont_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: Phy2Phy Continuous Stream",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ "frame_rate" : 100,
+ },
+ },
+ "TestSteps": VPP_P2P,
+ },
+ {
+ "Name": "phy2phy_back2back_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: LTD.Throughput.RFC2544.BackToBackFrames",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_back2back",
+ },
+ },
+ "TestSteps": VPP_P2P,
+ },
+ {
+ "Name": "pvp_tput_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: LTD.Throughput.RFC2544.PacketLossRatio",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ },
+ },
+ "TestSteps": VPP_PVP,
+ },
+ {
+ "Name": "pvp_cont_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: PVP Continuous Stream",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ },
+ },
+ "TestSteps": VPP_PVP,
+ },
+ {
+ "Name": "pvp_back2back_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: LTD.Throughput.RFC2544.BackToBackFrames",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_back2back",
+ },
+ },
+ "TestSteps": VPP_PVP,
+ },
+ {
+ "Name": "pvvp_tput_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: LTD.Throughput.RFC2544.PacketLossRatio",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ },
+ },
+ "TestSteps": VPP_PVVP,
+ },
+ {
+ "Name": "pvvp_cont_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: PVP Continuous Stream",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ },
+ },
+ "TestSteps": VPP_PVVP,
+ },
+ {
+ "Name": "pvvp_back2back_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: LTD.Throughput.RFC2544.BackToBackFrames",
+ "vSwitch" : "VppDpdkVhost",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_back2back",
+ },
+ },
+ "TestSteps": VPP_PVVP,
+ },
]
diff --git a/conf/02_vswitch.conf b/conf/02_vswitch.conf
index 2ca7591c..2bac1732 100644
--- a/conf/02_vswitch.conf
+++ b/conf/02_vswitch.conf
@@ -33,6 +33,12 @@ RTE_TARGET = 'x86_64-native-linuxapp-gcc'
# 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'
@@ -103,6 +109,18 @@ PATHS['vswitch'] = {
},
'ovs_var_tmp': '/usr/local/var/run/openvswitch/',
'ovs_etc_tmp': '/usr/local/etc/openvswitch/',
+ 'VppDpdkVhost': {
+ 'type' : 'bin',
+ 'src': {
+ 'path': os.path.join(ROOT_DIR, 'src/vpp/vpp/build-root/build-vpp-native'),
+ 'vpp': 'vpp',
+ 'vppctl': 'vppctl',
+ },
+ 'bin': {
+ 'vpp': 'vpp',
+ 'vppctl': 'vppctl',
+ }
+ },
}
# default OvsVanilla configuration is similar to OvsDpdkVhost except 'path' and 'modules'
@@ -116,18 +134,19 @@ PATHS['vswitch']['OvsVanilla']['bin']['modules'] = ['openvswitch']
# ############################
# 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)
-VSWITCHD_DPDK_ARGS = ['-c', '0x4', '-n', '4', '--socket-mem 1024,0']
+# 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',
- 'dpdk-socket-mem' : '1024,0',
}
# Note: VSPERF will automatically detect, which type of DPDK configuration should
# be used.
@@ -169,3 +188,30 @@ LOG_FILE_OVS = 'ovs.log'
# default vswitch implementation
VSWITCH = "OvsDpdkVhost"
+
+#########################
+## VPP
+#########################
+# Set of arguments used for startup of VPP
+# NOTE: DPDK socket mem allocation is driven by parameter DPDK_SOCKET_MEM
+VSWITCH_VPP_ARGS = {
+ 'unix' : [
+ 'interactive', # required by VSPERF to detect successful VPP startup
+ 'log /tmp/vpp.log',
+ 'full-coredump',
+ ],
+ 'cpu' : [
+ 'main-core 3',
+ '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']
diff --git a/conf/05_collector.conf b/conf/05_collector.conf
index bda0ac8d..9fd2558c 100644
--- a/conf/05_collector.conf
+++ b/conf/05_collector.conf
@@ -20,7 +20,7 @@ COLLECTOR = 'Pidstat'
COLLECTOR_DIR = os.path.join(ROOT_DIR, 'tools/collectors')
# processes to be monitored by pidstat
-PIDSTAT_MONITOR = ['ovs-vswitchd', 'ovsdb-server', 'qemu-system-x86_64']
+PIDSTAT_MONITOR = ['ovs-vswitchd', 'ovsdb-server', 'qemu-system-x86_64', 'vpp']
# options which will be passed to pidstat
PIDSTAT_OPTIONS = '-dur'
diff --git a/conf/06_pktfwd.conf b/conf/06_pktfwd.conf
index 6175aa6a..bb4c1d79 100644
--- a/conf/06_pktfwd.conf
+++ b/conf/06_pktfwd.conf
@@ -36,4 +36,4 @@ TESTPMD_CSUM_CALC = 'sw'
# recognize tunnel headers: on|off
TESTPMD_CSUM_PARSE_TUNNEL = 'off'
-PIDSTAT_MONITOR = ['ovs-vswitchd', 'ovsdb-server', 'qemu-system-x86_64', 'testpmd']
+PIDSTAT_MONITOR = ['ovs-vswitchd', 'ovsdb-server', 'qemu-system-x86_64', 'vpp', 'testpmd']