diff options
author | Martin Klozik <martinx.klozik@intel.com> | 2017-08-14 14:27:06 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-08-14 14:27:06 +0000 |
commit | 2a4d03a1c5634c7d8b54bd9bda6c14b7a683de6e (patch) | |
tree | 5588bbaff2b78881d1aafab0ec40502e5c3dedf7 /conf | |
parent | 73025baf2e393c61c59957e8714d2ddd54d25e51 (diff) | |
parent | 6961a6fa333ca2cff055d7d7a889876263b673f5 (diff) |
Merge "tests: L3, L4 and VxLAN tests for OVS & VPP"
Diffstat (limited to 'conf')
-rw-r--r-- | conf/__init__.py | 7 | ||||
-rw-r--r-- | conf/integration/01_testcases.conf | 29 | ||||
-rw-r--r-- | conf/integration/01a_testcases_l34_vxlan.conf | 1007 |
3 files changed, 1026 insertions, 17 deletions
diff --git a/conf/__init__.py b/conf/__init__.py index e714a7bf..808cfc97 100644 --- a/conf/__init__.py +++ b/conf/__init__.py @@ -148,14 +148,15 @@ class Settings(object): :returns: None """ - regex = re.compile("^(?P<digit_part>[0-9]+).*.conf$") + regex = re.compile("^(?P<digit_part>[0-9]+)(?P<alfa_part>[a-z]?)_.*.conf$") def get_prefix(filename): """ Provide a suitable function for sort's key arg """ match_object = regex.search(os.path.basename(filename)) - return int(match_object.group('digit_part')) + return [int(match_object.group('digit_part')), + match_object.group('alfa_part')] # get full file path to all files & dirs in dir_path file_paths = os.listdir(dir_path) @@ -166,7 +167,7 @@ class Settings(object): file_paths = [x for x in file_paths if os.path.isfile(x) and regex.search(os.path.basename(x))] - # sort ascending on the leading digits + # sort ascending on the leading digits and afla (e.g. 03_, 05a_) file_paths.sort(key=get_prefix) # load settings from each file in turn diff --git a/conf/integration/01_testcases.conf b/conf/integration/01_testcases.conf index b58fa965..647e39cc 100644 --- a/conf/integration/01_testcases.conf +++ b/conf/integration/01_testcases.conf @@ -40,10 +40,19 @@ SUPPORTED_TUNNELING_PROTO = ['vxlan', 'gre', 'geneve'] # # P2P macros -STEP_VSWITCH_P2P_FLOWS_INIT = [ +STEP_VSWITCH_P2P_INIT = [ ['vswitch', 'add_switch', 'int_br0'], # STEP 0 ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1 ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2 +] + +STEP_VSWITCH_P2P_FINIT = [ + ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'], + ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'], + ['vswitch', 'del_switch', 'int_br0'], +] + +STEP_VSWITCH_P2P_FLOWS_INIT = STEP_VSWITCH_P2P_INIT + [ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}], ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[2][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}], ] @@ -52,27 +61,18 @@ STEP_VSWITCH_P2P_FLOWS_FINIT = [ ['vswitch', 'dump_flows', 'int_br0'], ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}], ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[2][1]'}], - ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'], - ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'], - ['vswitch', 'del_switch', 'int_br0'], -] +] + STEP_VSWITCH_P2P_FINIT # PVP and PVVP macros -STEP_VSWITCH_PVP_INIT = [ - ['vswitch', 'add_switch', 'int_br0'], # STEP 0 - ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1 - ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2 +STEP_VSWITCH_PVP_INIT = STEP_VSWITCH_P2P_INIT + [ ['vswitch', 'add_vport', 'int_br0'], # STEP 3 vm1 ports ['vswitch', 'add_vport', 'int_br0'], # STEP 4 ] STEP_VSWITCH_PVP_FINIT = [ - ['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[3][0]'], # vm1 ports ['vswitch', 'del_port', 'int_br0', '#STEP[4][0]'], - ['vswitch', 'del_switch', 'int_br0'], -] +] + STEP_VSWITCH_P2P_FINIT STEP_VSWITCH_PVP_FLOWS_INIT = STEP_VSWITCH_PVP_INIT + [ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}], @@ -988,6 +988,7 @@ INTEGRATION_TESTS = [ # # END of VPP tests used by VERIFY and MERGE jobs by OPNFV Jenkins # + ] # Example of TC definition with exact vSwitch, VNF and TRAFFICGEN values. diff --git a/conf/integration/01a_testcases_l34_vxlan.conf b/conf/integration/01a_testcases_l34_vxlan.conf new file mode 100644 index 00000000..17c0d6ff --- /dev/null +++ b/conf/integration/01a_testcases_l34_vxlan.conf @@ -0,0 +1,1007 @@ +# Copyright 2017 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. + +# +# This file introduces a series of scalability testcases prepared for OVS +# and VPP. Tests are unidirectional and they are focused on L3, L4 and VxLAN +# switching performance. +# Following test types are available: +# 1) unique rule for each IP stream (OVS only) +# 2) one rule for /8 netmask covering all streams +# 3) unique ARP entry for each IP stream (VPP only) +# 4) unique IP route for each IP stream (VPP only) +# + +INTEGRATION_TESTS = INTEGRATION_TESTS + [ + # + # L3 & L4 tests to compare OVS and VPP performance + # + # Example of execution: + # ./vsperf --test-params "TRAFFIC={'multistream':2000,'traffic_type':'rfc2544_continuous'}" \ + # p2p_l3_multi_IP_ovs_mask p2p_l4_multi_PORT_ovs_mask + # + # ./vsperf --test-params "TRAFFIC={'multistream':8000,'traffic_type':'rfc2544_throughput'}" \ + # p2p_l3_multi_IP_vpp p2p_l4_multi_PORT_vpp + { + "Name": "p2p_l3_multi_IP_ovs", + "Deployment": "clean", + "Description": "OVS: P2P L3 multistream with unique flow for each IP stream", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['tools', 'exec_python', + 'import netaddr;' + 'cmds=open("/tmp/ovsofctl_cmds.txt","w");' + '[print("add nw_dst={} idle_timeout=0,dl_type=0x800,' + 'in_port=1,action=output:2".format(' + 'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i)),file=cmds) ' + 'for i in range($TRAFFIC["multistream"])];' + 'cmds.close()'], + ['tools', 'exec_shell', "sudo $TOOLS['ovs-ofctl'] -O OpenFlow13 --bundle add-flows int_br0 /tmp/ovsofctl_cmds.txt"], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'del_flow', 'int_br0'], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "p2p_l3_multi_IP_mask_ovs", + "Deployment": "clean", + "Description": "OVS: P2P L3 multistream with 1 flow for /8 net mask", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[1][1]', 'dl_type': '0x800', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0' }], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'dump_flows', 'int_br0'], + ['vswitch', 'del_flow', 'int_br0'], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "pvp_l3_multi_IP_mask_ovs", + "Deployment": "clean", + "Description": "OVS: PVP L3 multistream with 1 flow for /8 net mask", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVP_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[1][1]', 'dl_type': '0x800', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[4][1]', 'dl_type': '0x800', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}], + ['vnf', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'dump_flows', 'int_br0'], + ['vnf', 'stop'], + ['vswitch', 'del_flow', 'int_br0'], + ] + STEP_VSWITCH_PVP_FINIT + }, + { + "Name": "pvvp_l3_multi_IP_mask_ovs", + "Deployment": "clean", + "Description": "OVS: PVVP L3 multistream with 1 flow for /8 net mask", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVVP_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[1][1]', 'dl_type': '0x800', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[4][1]', 'dl_type': '0x800', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[6][1]', 'dl_type': '0x800', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}], + ['vnf1', 'start'], + ['vnf2', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'dump_flows', 'int_br0'], + ['vnf2', 'stop'], + ['vnf1', 'stop'], + ['vswitch', 'del_flow', 'int_br0'], + ] + + STEP_VSWITCH_PVVP_FINIT + }, + { + "Name": "p2p_l4_multi_PORT_ovs", + "Deployment": "clean", + "Description": "OVS: P2P L4 multistream with unique flow for each IP stream", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['tools', 'exec_python', + 'import netaddr;' + 'cmds=open("/tmp/ovsofctl_cmds.txt","w");' + '[print("add nw_dst={} idle_timeout=0,dl_type=0x800,nw_proto=17,tp_src={},' + 'in_port=1,action=output:2".format(' + 'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),' + '$TRAFFIC["l4"]["srcport"]),file=cmds) ' + 'for i in range($TRAFFIC["multistream"])];' + 'cmds.close()'], + ['tools', 'exec_shell', "sudo $TOOLS['ovs-ofctl'] -O OpenFlow13 --bundle " + "add-flows int_br0 /tmp/ovsofctl_cmds.txt"], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'del_flow', 'int_br0'], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "p2p_l4_multi_PORT_mask_ovs", + "Deployment": "clean", + "Description": "OVS: P2P L4 multistream with 1 flow for /8 net and port mask", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[1][1]', 'dl_type': '0x800', + 'nw_proto': '17', 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'tp_src': '$TRAFFIC["l4"]["srcport"]', + 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'dump_flows', 'int_br0'], + ['vswitch', 'del_flow', 'int_br0'], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "pvp_l4_multi_PORT_mask_ovs", + "Deployment": "clean", + "Description": "OVS: PVP L4 multistream flows for /8 net and port mask", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVP_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[1][1]', 'dl_type': '0x800', 'nw_proto': '17', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'tp_src': '$TRAFFIC["l4"]["srcport"]', + 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[4][1]', 'dl_type': '0x800', 'nw_proto': '17', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'tp_src': '$TRAFFIC["l4"]["srcport"]', + 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}], + ['vnf', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'dump_flows', 'int_br0'], + ['vnf', 'stop'], + ['vswitch', 'del_flow', 'int_br0'], + ] + + STEP_VSWITCH_PVP_FINIT + }, + { + "Name": "pvvp_l4_multi_PORT_mask_ovs", + "Deployment": "clean", + "Description": "OVS: PVVP L4 multistream with flows for /8 net and port mask", + "vSwitch" : "OvsDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVVP_INIT + + [ + ['vswitch', 'del_flow', 'int_br0'], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[1][1]', 'dl_type': '0x800', + 'nw_proto': '17', 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'tp_src': '$TRAFFIC["l4"]["srcport"]', + 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[4][1]', 'dl_type': '0x800', 'nw_proto': '17', + 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'tp_src': '$TRAFFIC["l4"]["srcport"]', + 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', + {'in_port': '#STEP[6][1]', 'dl_type': '0x800', + 'nw_proto': '17', 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8', + 'tp_src': '$TRAFFIC["l4"]["srcport"]', + 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}], + ['vnf1', 'start'], + ['vnf2', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'dump_flows', 'int_br0'], + ['vnf2', 'stop'], + ['vnf1', 'stop'], + ['vswitch', 'del_flow', 'int_br0'], + ] + + STEP_VSWITCH_PVVP_FINIT + }, + { + "Name": "p2p_l3_multi_IP_arp_vpp", + "Deployment": "clean", + "Description": "VPP: P2P L3 multistream with unique ARP entry for each IP stream", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '6.0.0.2', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 5.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.0.1/8']], + # count option of "set ip arp" command doesn't work reliably for huge + # count numbers, e.g. 100K + # it is both more reliale and faster to load batches of sigle + # ARP commands, although it also fails time to time + # NOTE: batch load of "set ip arp count" commands with lower + # count values (e.g. 1000) was also less reliable than using + # batches of signle arp entries + ['tools', 'exec_python', + 'import netaddr;' + 'dst_mac_value = netaddr.EUI("00:00:00:00:00:0A").value;' + 'cmds=open("/tmp/vppctl_cmds.txt","w");' + '[print("set ip arp #STEP[2][0] {} {}".format(' + 'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),' + 'netaddr.EUI(dst_mac_value+i,dialect=netaddr.mac_unix_expanded)),file=cmds) ' + 'for i in range($TRAFFIC["multistream"])];' + 'cmds.close()'], + ['tools', 'exec_shell', "rm -rf /tmp/vppctl_cmds_split*; split -l 1000 " + "/tmp/vppctl_cmds.txt /tmp/vppctl_cmds_split"], + ['tools', 'exec_shell', "for a in /tmp/vppctl_cmds_split* ; do echo $a ; " + "sudo $TOOLS['vppctl'] exec $a ; sleep 2 ; done"], + ['vswitch', 'run_vppctl', ['show ip fib summary']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "p2p_l3_multi_IP_mask_vpp", + "Deployment": "clean", + "Description": "VPP: P2P L3 multistream with 1 route for /8 net mask", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '5.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']], + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 via 6.0.3.2']], + ['vswitch', 'run_vppctl', ['show ip fib']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "p2p_l3_multi_IP_routes_vpp", + "Deployment": "clean", + "Description": "VPP: P2P L3 multistream with unique route for each IP stream", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '5.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']], + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']], + # insertion of huge number of IP routes doesn't cause issues + # seen with ARP entries at p2p_l3_multi_IP_vpp testcase + ['vswitch', 'run_vppctl', ['ip route add count $TRAFFIC["multistream"] ' + '$TRAFFIC["l3"]["dstip"]/32 via 6.0.3.2']], + ['vswitch', 'run_vppctl', ['show ip fib summary']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "pvp_l3_multi_IP_mask_vpp", + "Deployment": "clean", + "Description": "VPP: PVP L3 multistream with route for /8 netmask", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '5.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVP_INIT + + [ + ['vswitch', 'run_vppctl', ['set interface mac address #STEP[4][0] 00:00:00:00:00:11']], + # two separate tables are used, so the same IP network can be routed + # via different DST IPs to reach VM and trafficgen via 2nd phy NIC + ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']], + # route traffic to VM; Set DST MAC to MAC of 2nd (output) vhost user interface + # of VM, so traffic is accepted by VPP in next table + ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']], + + ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']], + # route traffic via 2nd phy NIC to reach trafficgen + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 7']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.2.2']], + + ['vswitch', 'run_vppctl', ['show ip fib']], + ['vnf', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ['vnf', 'stop'], + ] + + STEP_VSWITCH_PVP_FINIT + }, + { + "Name": "pvvp_l3_multi_IP_mask_vpp", + "Deployment": "clean", + "Description": "VPP: PVVP L3 multistream with route for /8 netmask", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '5.0.0.1', + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVVP_INIT + + [ + ['vswitch', 'run_vppctl', ['set interface mac address #STEP[4][0] 00:00:00:00:00:11']], + ['vswitch', 'run_vppctl', ['set interface mac address #STEP[6][0] 00:00:00:00:00:12']], + # three separate tables are used, so the same IP network can be routed + # via different DST IPs to reach both VMs and trafficgen via 2nd phy NIC + # 1st table + ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']], + # route traffic to 1st VM; Set DST MAC to MAC of 2nd (output) vhost user interface + # of VM1, so traffic is accepted by VPP in next table + ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']], + # 2nd table + ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[5][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[5][0] 6.0.5.1/24']], + # route traffic to 2nd VM; Set DST MAC to MAC of 2nd (output) vhost user interfacei + # of VM2, so traffic is accepted by VPP in next table + ['vswitch', 'run_vppctl', ['set ip arp #STEP[5][0] 6.0.5.2 00:00:00:00:00:12 fib-id 7']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.5.2']], + # 3rd table + ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 8']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[6][0] 8']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[6][0] 6.0.6.1/24']], + # route traffic via 2nd phy NIC to reach trafficgen + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 8']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 8 via 6.0.2.2']], + ['vswitch', 'run_vppctl', ['show ip fib']], + ['vnf1', 'start'], + ['vnf2', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ['vnf1', 'stop'], + ['vnf2', 'stop'], + ] + + STEP_VSWITCH_PVVP_FINIT + }, + { + "Name": "p2p_l4_multi_PORT_arp_vpp", + "Deployment": "clean", + "Description": "VPP: P2P L4 multistream with unique ARP entry for each IP stream and port check", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'srcip': '6.0.2.2', + 'dstip': '5.0.0.2', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 5.0.0.1/8']], + ['tools', 'exec_python', + 'import netaddr;' + 'dst_mac_value = netaddr.EUI("00:00:00:00:00:0A").value;' + 'cmds=open("/tmp/vppctl_cmds.txt","w");' + '[print("set ip arp #STEP[2][0] {} {}".format(' + 'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),' + 'netaddr.EUI(dst_mac_value+i,dialect=netaddr.mac_unix_expanded)),file=cmds) ' + 'for i in range($TRAFFIC["multistream"])];' + 'cmds.close()'], + ['vswitch', 'run_vppctl', + ['set ip source-and-port-range-check vrf 7 $TRAFFIC["l3"]["srcip"]/24 ' + 'port $TRAFFIC["l4"]["dstport"]']], + ['vswitch', 'run_vppctl', + ['set interface ip source-and-port-range-check #STEP[1][0] udp-out-vrf 7']], + ['tools', 'exec_shell', "rm -rf /tmp/vppctl_cmds_split*; split -l 1000 " + "/tmp/vppctl_cmds.txt /tmp/vppctl_cmds_split"], + ['tools', 'exec_shell', "for a in /tmp/vppctl_cmds_split* ; do echo $a ; " + "sudo $TOOLS['vppctl'] exec $a ; sleep 2 ; done"], + ['vswitch', 'run_vppctl', ['show ip fib summary']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "p2p_l4_multi_PORT_mask_vpp", + "Deployment": "clean", + "Description": "VPP: P2P L4 multistream with 1 route for /8 net mask and port check", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'srcip': '6.0.2.2', + 'dstip': '5.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']], # STEP 3 + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']], # STEP 4 + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']], # STEP 5 + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 via 6.0.3.2']], + ['vswitch', 'run_vppctl', ['show ip fib']], + ['vswitch', 'run_vppctl', + ['set ip source-and-port-range-check vrf 7 $TRAFFIC["l3"]["srcip"]/24 ' + 'port $TRAFFIC["l4"]["dstport"]']], + ['vswitch', 'run_vppctl', + ['set interface ip source-and-port-range-check #STEP[1][0] udp-out-vrf 7']], + ['vswitch', 'run_vppctl', ['show ip fib']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "p2p_l4_multi_PORT_routes_vpp", + "Deployment": "clean", + "Description": "VPP: P2P L4 multistream with unique route for each IP stream and port check", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'srcip': '6.0.2.2', + 'dstip': '5.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']], + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']], + # insertion of huge number of IP routes doesn't cause issues + # seen with ARP entries at p2p_l3_multi_IP_vpp testcase + ['vswitch', 'run_vppctl', + ['ip route add count $TRAFFIC["multistream"] $TRAFFIC["l3"]["dstip"]/32 via 6.0.3.2']], + ['vswitch', 'run_vppctl', + ['set ip source-and-port-range-check vrf 7 $TRAFFIC["l3"]["srcip"]/24 ' + 'port $TRAFFIC["l4"]["dstport"]']], + ['vswitch', 'run_vppctl', + ['set interface ip source-and-port-range-check #STEP[1][0] udp-out-vrf 7']], + ['vswitch', 'run_vppctl', ['show ip fib summary']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "pvp_l4_multi_PORT_mask_vpp", + "Deployment": "clean", + "Description": "VPP: PVP L4 multistream with route for /8 net and port mask", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'srcip': '4.0.0.1', + 'dstip': '5.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVP_INIT + + [ + ['vswitch', 'run_vppctl', ['set int mac address #STEP[4][0] 00:00:00:00:00:11']], + # create table for port check + ['vswitch', 'run_vppctl', ['set ip source-and-port-range-check vrf 5 ' + '$TRAFFIC["l3"]["srcip"]/24 ' + 'port $TRAFFIC["l4"]["dstport"]']], + # two separate tables are used, so the same IP network can be routed + # via different DST IPs to reach VM and trafficgen via 2nd phy NIC + ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']], + # enforce port check + ['vswitch', 'run_vppctl', ['set int ip source-and-port-range-check #STEP[1][0] ' + 'udp-out-vrf 5']], + # route traffic to VM; Set DST MAC to MAC of 2nd (output) vhost user interface + # of VM, so traffic is accepted by VPP in next table + ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']], + + ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']], + # route traffic via 2nd phy NIC to reach trafficgen + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 7']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.2.2']], + + ['vswitch', 'run_vppctl', ['show ip fib']], + ['vnf', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ['vnf', 'stop'], + ] + + STEP_VSWITCH_PVP_FINIT + }, + { + "Name": "pvvp_l4_multi_PORT_mask_vpp", + "Deployment": "clean", + "Description": "VPP: PVVP L4 multistream with route for /8 net and port mask", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'], + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'srcip': '4.0.0.1', + 'dstip': '5.0.0.1', + }, + 'l4': { + 'enabled': True, + 'srcport': 7, + 'dstport': 8, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_PVVP_INIT + + [ + ['vswitch', 'run_vppctl', ['set int mac address #STEP[4][0] 00:00:00:00:00:11']], + ['vswitch', 'run_vppctl', ['set int mac address #STEP[6][0] 00:00:00:00:00:12']], + # create table for port check + ['vswitch', 'run_vppctl', ['set ip source-and-port-range-check vrf 5 ' + '$TRAFFIC["l3"]["srcip"]/24 port $TRAFFIC["l4"]["dstport"]']], + # three separate tables are used, so the same IP network can be routed + # via different DST IPs to reach both VMs and trafficgen via 2nd phy NIC + # 1st table + ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']], + # enforce port check + ['vswitch', 'run_vppctl', ['set int ip source-and-port-range-check #STEP[1][0] udp-out-vrf 5']], + # route traffic to 1st VM; Set DST MAC to MAC of 2nd (output) vhost user interface + # of VM1, so traffic is accepted by VPP in next table + ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']], + # 2nd table + ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[5][0] 7']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[5][0] 6.0.5.1/24']], + # route traffic to 2nd VM; Set DST MAC to MAC of 2nd (output) vhost user interfacei + # of VM2, so traffic is accepted by VPP in next table + ['vswitch', 'run_vppctl', ['set ip arp #STEP[5][0] 6.0.5.2 00:00:00:00:00:12 fib-id 7']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.5.2']], + # 3rd table + ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 8']], + ['vswitch', 'run_vppctl', ['set int ip table #STEP[6][0] 8']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']], + ['vswitch', 'run_vppctl', ['set int ip address #STEP[6][0] 6.0.6.1/24']], + # route traffic via 2nd phy NIC to reach trafficgen + ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 8']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 8 via 6.0.2.2']], + ['vswitch', 'run_vppctl', ['show ip fib']], + ['vnf1', 'start'], + ['vnf2', 'start'], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ['vnf1', 'stop'], + ['vnf2', 'stop'], + ] + + STEP_VSWITCH_PVVP_FINIT + }, + # + # End of L3 & L4 tests to compare OVS and VPP performance + # + # + # VxLAN tests to compare OVS and VPP performance + # + # Example of execution: + # ./vsperf --test-params "TRAFFIC={'multistream':2000,'traffic_type':'rfc2544_continuous'}" \ + # vxlan_multi_IP_vpp + { + "Name": "vxlan_multi_IP_mask_ovs", + "Deployment": "op2p", + "Tunnel Type": "vxlan", + "Tunnel Operation": "encapsulation", + "Description": "OVS: VxLAN L3 multistream", + "Parameters": { + "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl", + "TRAFFICGEN_PORT1_MAC" : '00:00:00:00:00:01', + "TRAFFICGEN_PORT2_MAC" : '#PARAM(NICS[0]["mac"])', + "TRAFFICGEN_PORT1_IP" : '9.0.0.2', + "TRAFFICGEN_PORT2_IP" : '10.0.0.2', + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + }, + }, + "TestSteps": [ + ['vswitch', 'del_flow', 'br0', {'in_port': '1'}], + ['vswitch', 'add_flow', 'br0', + {'in_port': '1', 'dl_type': '0x800', 'nw_proto': '17', + 'nw_dst': '$TRAFFICGEN_PORT2_IP/8', 'actions': ['output:2'], + 'idle_timeout': '0'}], + ['vswitch', 'dump_flows', 'br0'], + ['vswitch', 'dump_flows', 'br-ext'], + ], + }, + { + "Name": "vxlan_multi_IP_arp_vpp", + "Deployment": "clean", + "Description": "VPP: VxLAN L3 multistream with unique ARP entry for each IP stream", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '10.0.0.2', + }, + 'l4': { + 'enabled': True, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', + ['set int ip address #STEP[1][0] 9.0.0.1/16']], + ['vswitch', 'run_vppctl', + ['set int ip address #STEP[2][0] 11.0.0.1/16']], + ['vswitch', 'run_vppctl', + ['create vxlan tunnel src 11.0.0.1 dst 11.0.0.2 vni 1']], + ['vswitch', 'run_vppctl', + ['set int state vxlan_tunnel0 up']], + ['vswitch', 'run_vppctl', + ['set int ip address vxlan_tunnel0 10.0.0.1/8']], + ['vswitch', 'run_vppctl', + ['set ip arp #STEP[2][0] 11.0.0.2 00:00:00:00:00:00']], + ['tools', 'exec_python', + 'import netaddr;' + 'dst_mac_value = netaddr.EUI("00:00:00:00:00:0A").value;' + 'cmds=open("/tmp/vppctl_cmds.txt","w");' + '[print("set ip arp vxlan_tunnel0 {} {}".format(' + 'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),' + 'netaddr.EUI(dst_mac_value+i,dialect=netaddr.mac_unix_expanded)),file=cmds) ' + 'for i in range($TRAFFIC["multistream"])];' + 'cmds.close()'], + ['tools', 'exec_shell', + "rm -rf /tmp/vppctl_cmds_split*;" + "split -l 1000 /tmp/vppctl_cmds.txt /tmp/vppctl_cmds_split"], + ['tools', 'exec_shell', + "for a in /tmp/vppctl_cmds_split* ; do " + "echo $a ; sudo $TOOLS['vppctl'] exec $a ; sleep 2 ; done"], + ['vswitch', 'run_vppctl', ['show ip fib summary']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + { + "Name": "vxlan_multi_IP_mask_vpp", + "Deployment": "clean", + "Description": "VPP: VxLAN L3 multistream with 1 route for /8 netmask", + "vSwitch" : "VppDpdkVhost", + "Parameters" : { + "TRAFFIC" : { + 'bidir' : 'False', + "stream_type" : "L3", + 'l2': { + 'dstmac' : '#PARAM(NICS[0]["mac"])', + }, + 'l3': { + 'enabled': True, + 'proto': 'udp', + 'dstip': '8.0.0.1', + }, + 'l4': { + 'enabled': True, + }, + }, + }, + "TestSteps": + STEP_VSWITCH_P2P_INIT + + [ + ['vswitch', 'run_vppctl', + ['set int ip address #STEP[1][0] 9.0.0.1/16']], + ['vswitch', 'run_vppctl', + ['set int ip address #STEP[2][0] 11.0.0.1/16']], + ['vswitch', 'run_vppctl', + ['create vxlan tunnel src 11.0.0.1 dst 11.0.0.2 vni 1']], + ['vswitch', 'run_vppctl', + ['set int state vxlan_tunnel0 up']], + ['vswitch', 'run_vppctl', + ['set int ip address vxlan_tunnel0 10.0.0.1/24']], + ['vswitch', 'run_vppctl', + ['set ip arp #STEP[2][0] 11.0.0.2 00:00:00:00:00:00']], + ['vswitch', 'run_vppctl', + ['set ip arp vxlan_tunnel0 10.0.0.2 00:00:00:00:00:0A']], + ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 via 10.0.0.2']], + ['vswitch', 'run_vppctl', ['show ip fib']], + ['trafficgen', 'send_traffic', {}], + ['vswitch', 'run_vppctl', ['show interfaces']], + ] + + STEP_VSWITCH_P2P_FINIT + }, + # + # End of VxLAN tests to compare OVS and VPP performance + # +] |