diff options
author | 2017-03-16 15:11:32 +0000 | |
---|---|---|
committer | 2017-03-16 15:11:32 +0000 | |
commit | 8fb2907c4e169ac54acce7a869aeca435b85532e (patch) | |
tree | 29e436b19de8a9dfcde381845a4b73f8cb2660df /conf | |
parent | 0e5346ac983841c2b082ca7d3934922dc70624f3 (diff) | |
parent | d1145851ad5cb9b5abe963ee97491aa694d389dc (diff) |
Merge "vpp: Initial support of VPP vSwitch"
Diffstat (limited to 'conf')
-rwxr-xr-x | conf/01_testcases.conf | 188 | ||||
-rw-r--r-- | conf/02_vswitch.conf | 52 | ||||
-rw-r--r-- | conf/05_collector.conf | 2 | ||||
-rw-r--r-- | conf/06_pktfwd.conf | 2 |
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'] |