summaryrefslogtreecommitdiffstats
path: root/conf
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2017-08-14 14:27:06 +0000
committerGerrit Code Review <gerrit@opnfv.org>2017-08-14 14:27:06 +0000
commit2a4d03a1c5634c7d8b54bd9bda6c14b7a683de6e (patch)
tree5588bbaff2b78881d1aafab0ec40502e5c3dedf7 /conf
parent73025baf2e393c61c59957e8714d2ddd54d25e51 (diff)
parent6961a6fa333ca2cff055d7d7a889876263b673f5 (diff)
Merge "tests: L3, L4 and VxLAN tests for OVS & VPP"
Diffstat (limited to 'conf')
-rw-r--r--conf/__init__.py7
-rw-r--r--conf/integration/01_testcases.conf29
-rw-r--r--conf/integration/01a_testcases_l34_vxlan.conf1007
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
+ #
+]