summaryrefslogtreecommitdiffstats
path: root/conf/integration
diff options
context:
space:
mode:
authorAntonio Fischetti <antonio.fischetti@intel.com>2016-07-09 13:48:33 +0100
committerMaryam Tahhan <maryam.tahhan@intel.com>2016-08-16 15:12:39 +0000
commit99e50b9aa86d3bd92d23a32ff34b5f80b9b3e4da (patch)
tree80c16d91d60cf811eefbeb83c1d227ef2f28f07b /conf/integration
parentffc55a6bbbfafc36a2e28e2e28e737966fb9bb31 (diff)
Integration Test: Multi-VM with parallel PVP connections.
Implementation of 3 testcases with multi-VMs in parallel. Flows are explicitly set on UDP destination ports so that each packet is sent to a specific VM. Topology is: Phy1-VM1-Phy2, Phy1-VM2-Phy2,.. This patch requires change #16855 "ovs/ofctl: Fix validation method for complex flows." JIRA: VSPERF-326 Change-Id: I59d23354bc9c6db470a59faba13bdcd6f2beb19d Signed-off-by: Antonio Fischetti <antonio.fischetti@intel.com> Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com> Reviewed-by: Martin Klozik <martinx.klozik@intel.com>
Diffstat (limited to 'conf/integration')
-rw-r--r--conf/integration/01_testcases.conf224
1 files changed, 221 insertions, 3 deletions
diff --git a/conf/integration/01_testcases.conf b/conf/integration/01_testcases.conf
index 46312637..a67702f8 100644
--- a/conf/integration/01_testcases.conf
+++ b/conf/integration/01_testcases.conf
@@ -72,7 +72,7 @@ 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
- ['vswitch', 'add_vport', 'int_br0'], # STEP 3
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 3 vm1 ports
['vswitch', 'add_vport', 'int_br0'], # STEP 4
]
@@ -100,12 +100,12 @@ STEP_VSWITCH_PVP_FLOWS_FINIT = [
] + STEP_VSWITCH_PVP_FINIT
STEP_VSWITCH_PVVP_INIT = STEP_VSWITCH_PVP_INIT + [
- ['vswitch', 'add_vport', 'int_br0'], # STEP 5
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 5 vm2 ports
['vswitch', 'add_vport', 'int_br0'], # STEP 6
]
STEP_VSWITCH_PVVP_FINIT = [
- ['vswitch', 'del_port', 'int_br0', '#STEP[5][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[5][0]'], # vm2 ports
['vswitch', 'del_port', 'int_br0', '#STEP[6][0]'],
] + STEP_VSWITCH_PVP_FINIT
@@ -128,6 +128,150 @@ STEP_VSWITCH_PVVP_FLOWS_FINIT = [
['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}],
] + STEP_VSWITCH_PVVP_FINIT
+STEP_VSWITCH_2PHY_2VM_INIT = STEP_VSWITCH_PVVP_INIT
+
+STEP_VSWITCH_2PHY_2VM_FINIT = STEP_VSWITCH_PVVP_FINIT
+
+STEP_VSWITCH_2_PARALLEL_VM_FLOWS_INIT = [
+ # Setup Flows to reply ICMPv6 and similar packets, so to
+ # avoid flooding the internal port with their re-transmissions
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:01', \
+ 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:02', \
+ 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:03', \
+ 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:04', \
+ 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
+ # Forward UDP packets depending on dest port
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '0', \
+ 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '1', \
+ 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
+ # Send VM outputs to phy port #2
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+]
+
+STEP_VSWITCH_2PHY_4VM_INIT = STEP_VSWITCH_2PHY_2VM_INIT + [
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 7 vm3 ports
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 8
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 9 vm4 ports
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 10
+]
+
+STEP_VSWITCH_2PHY_4VM_FINIT = [
+ ['vswitch', 'del_port', 'int_br0', '#STEP[7][0]'], # vm3 ports
+ ['vswitch', 'del_port', 'int_br0', '#STEP[8][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[9][0]'], # vm4 ports
+ ['vswitch', 'del_port', 'int_br0', '#STEP[10][0]'],
+] + STEP_VSWITCH_2PHY_2VM_FINIT
+
+STEP_VSWITCH_FLOWS_FINIT = [
+ ['vswitch', 'dump_flows', 'int_br0'],
+ ['vswitch', 'del_flow', 'int_br0'],
+]
+
+STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT = [
+ # Setup Flows to reply ICMPv6 and similar packets, so to
+ # avoid flooding the internal port with their re-transmissions
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:01', \
+ 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:02', \
+ 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:03', \
+ 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:04', \
+ 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:05', \
+ 'actions': ['output:#STEP[7][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:06', \
+ 'actions': ['output:#STEP[8][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:07', \
+ 'actions': ['output:#STEP[9][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:08', \
+ 'actions': ['output:#STEP[10][1]'], 'idle_timeout': '0'}],
+ # Forward UDP packets depending on dest port
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '0', \
+ 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '1', \
+ 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '2', \
+ 'actions': ['output:#STEP[7][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '3', \
+ 'actions': ['output:#STEP[9][1]'], 'idle_timeout': '0'}],
+ # Send VM outputs to phy port #2
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[8][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[10][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+]
+
+STEP_VSWITCH_2PHY_6VM_INIT = STEP_VSWITCH_2PHY_4VM_INIT + [
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 11 vm5 vhu8
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 12 vhu9
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 13 vm6 vhu10
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 14 vhu11
+]
+
+STEP_VSWITCH_6_PARALLEL_VM_FLOWS_INIT = STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT + [
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:09', \
+ 'actions': ['output:#STEP[11][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:0a', \
+ 'actions': ['output:#STEP[12][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:0b', \
+ 'actions': ['output:#STEP[13][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', \
+ {'priority': '1', 'dl_src': '00:00:00:00:00:0c', \
+ 'actions': ['output:#STEP[14][1]'], 'idle_timeout': '0'}],
+ # Forward UDP packets depending on dest port
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '4', \
+ 'actions': ['output:#STEP[11][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
+ 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '5', \
+ 'actions': ['output:#STEP[13][1]'], 'idle_timeout': '0'}],
+ # Send VM outputs to phy port #2
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[12][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[14][1]', \
+ 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+]
+
+STEP_VSWITCH_2PHY_6VM_FINIT = [
+ ['vswitch', 'del_port', 'int_br0', '#STEP[11][0]'], # vm5 ports
+ ['vswitch', 'del_port', 'int_br0', '#STEP[12][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[13][0]'], # vm6 ports
+ ['vswitch', 'del_port', 'int_br0', '#STEP[14][0]'],
+] + STEP_VSWITCH_2PHY_4VM_FINIT
+
#
# Definition of integration tests
#
@@ -431,6 +575,80 @@ INTEGRATION_TESTS = [
] +
STEP_VSWITCH_PVVP_FLOWS_FINIT
},
+ {
+ # Topology: 2 Parallel PVP connections
+ # To run a Linux bridge as a loopback in the Guest use:
+ # --test-params "guest_loopback=linux_bridge" --integration 2pvp_udp_dest_flows
+ "Name": "2pvp_udp_dest_flows",
+ "Description": "Continuous TC with 2 Parallel VMs, flows on UDP Dest Port",
+ "Deployment": "clean",
+ "Stream Type": "L4",
+ "MultiStream": 2,
+ "TestSteps": STEP_VSWITCH_2PHY_2VM_INIT +
+ STEP_VSWITCH_2_PARALLEL_VM_FLOWS_INIT + [
+ # Start 2 VMs
+ ['vnf1', 'start'],
+ ['vnf2', 'start'],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'False'}],
+ ['vnf1', 'stop'],
+ ['vnf2', 'stop'],
+ # Clean up
+ ] + STEP_VSWITCH_FLOWS_FINIT +
+ STEP_VSWITCH_2PHY_2VM_FINIT
+ },
+ {
+ # Topology: 4 Parallel PVP connections
+ # To run a Linux bridge as a loopback in the Guest use:
+ # --test-params "guest_loopback=linux_bridge" --integration 4pvp_udp_dest_flows
+ "Name": "4pvp_udp_dest_flows",
+ "Description": "Continuous TC with 4 Parallel VMs, flows on UDP Dest Port",
+ "Deployment": "clean",
+ "Stream Type": "L4",
+ "MultiStream": 4,
+ "TestSteps": STEP_VSWITCH_2PHY_4VM_INIT +
+ STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT + [
+ # Start 4 VMs
+ ['vnf1', 'start'],
+ ['vnf2', 'start'],
+ ['vnf3', 'start'],
+ ['vnf4', 'start'],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'False'}],
+ ['vnf1', 'stop'],
+ ['vnf2', 'stop'],
+ ['vnf3', 'stop'],
+ ['vnf4', 'stop'],
+ # Clean up
+ ] + STEP_VSWITCH_FLOWS_FINIT +
+ STEP_VSWITCH_2PHY_4VM_FINIT
+ },
+ {
+ # Topology: 6 Parallel PVP connections
+ # To run a Linux bridge as a loopback in the Guest use:
+ # --test-params "guest_loopback=linux_bridge" --integration 6pvp_udp_dest_flows
+ "Name": "6pvp_udp_dest_flows",
+ "Description": "Continuous TC with 6 Parallel VMs, flows on UDP Dest Port",
+ "Deployment": "clean",
+ "Stream Type": "L4",
+ "MultiStream": 6,
+ "TestSteps": STEP_VSWITCH_2PHY_6VM_INIT +
+ STEP_VSWITCH_6_PARALLEL_VM_FLOWS_INIT + [
+ # Start VMs
+ ['vnf1', 'start'],
+ ['vnf2', 'start'],
+ ['vnf3', 'start'],
+ ['vnf4', 'start'],
+ ['vnf5', 'start'],
+ ['vnf6', 'start'],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'False'}],
+ ['vnf1', 'stop'],
+ ['vnf2', 'stop'],
+ ['vnf3', 'stop'],
+ ['vnf4', 'stop'],
+ ['vnf5', 'stop'],
+ ['vnf6', 'stop'],
+ ] + STEP_VSWITCH_FLOWS_FINIT +
+ STEP_VSWITCH_2PHY_6VM_FINIT
+ },
]
# Example of TC definition with exact vSwitch, VNF and TRAFFICGEN values.