ovs: Change default bridge names
[vswitchperf.git] / conf / integration / 01a_testcases_l34_vxlan.conf
1 # Copyright 2017-2018 Intel Corporation and Tieto.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #   http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 #
16 # This file introduces a series of scalability testcases prepared for OVS
17 # and VPP. Tests are unidirectional and they are focused on L3, L4 and VxLAN
18 # switching performance.
19 # Following test types are available:
20 #   1) unique rule for each IP stream (OVS only)
21 #   2) one rule for /8 netmask covering all streams
22 #   3) unique ARP entry for each IP stream (VPP only)
23 #   4) unique IP route for each IP stream (VPP only)
24 #
25
26 INTEGRATION_TESTS = INTEGRATION_TESTS + [
27     #
28     # L3 & L4 tests to compare OVS and VPP performance
29     #
30     # Example of execution:
31     #   ./vsperf --test-params "TRAFFIC={'multistream':2000,'traffic_type':'rfc2544_continuous'}" \
32     #       p2p_l3_multi_IP_ovs_mask p2p_l4_multi_PORT_ovs_mask
33     #
34     #   ./vsperf --test-params "TRAFFIC={'multistream':8000,'traffic_type':'rfc2544_throughput'}" \
35     #       p2p_l3_multi_IP_vpp p2p_l4_multi_PORT_vpp
36     {
37         "Name": "p2p_l3_multi_IP_ovs",
38         "Deployment": "clean",
39         "Description": "OVS: P2P L3 multistream with unique flow for each IP stream",
40         "vSwitch" : "OvsDpdkVhost",
41         "Parameters" : {
42             "TRAFFIC" : {
43                 'bidir' : 'False',
44                 "stream_type" : "L3",
45                 'l3': {
46                     'enabled': True,
47                     'proto': 'udp',
48                     'dstip': '6.0.0.1',
49                 },
50             },
51         },
52         "TestSteps":
53             STEP_VSWITCH_P2P_INIT +
54             [
55                 ['vswitch', 'del_flow', 'int_br0'],
56                 ['tools', 'exec_python',
57                  'import netaddr;'
58                  'cmds=open("/tmp/ovsofctl_cmds.txt","w");'
59                  '[print("add nw_dst={} idle_timeout=0,dl_type=0x800,'
60                  'in_port=1,action=output:2".format('
61                  'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i)),file=cmds) '
62                  'for i in range($TRAFFIC["multistream"])];'
63                  'cmds.close()'],
64                 ['tools', 'exec_shell', "sudo $TOOLS['ovs-ofctl'] -O OpenFlow13 --bundle add-flows int_br0 /tmp/ovsofctl_cmds.txt"],
65                 ['trafficgen', 'send_traffic', {}],
66             ] +
67             STEP_VSWITCH_P2P_FINIT
68     },
69     {
70         "Name": "p2p_l3_multi_IP_mask_ovs",
71         "Deployment": "clean",
72         "Description": "OVS: P2P L3 multistream with 1 flow for /8 net mask",
73         "vSwitch" : "OvsDpdkVhost",
74         "Parameters" : {
75             "TRAFFIC" : {
76                 'bidir' : 'False',
77                 "stream_type" : "L3",
78                 'l3': {
79                     'enabled': True,
80                     'proto': 'udp',
81                     'dstip': '6.0.0.1',
82                 },
83             },
84         },
85         "TestSteps":
86             STEP_VSWITCH_P2P_INIT +
87             [
88                 ['vswitch', 'del_flow', 'int_br0'],
89                 ['vswitch', 'add_flow', 'int_br0',
90                  {'in_port': '#STEP[1][1]', 'dl_type': '0x800',
91                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
92                   'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0' }],
93                 ['trafficgen', 'send_traffic', {}],
94                 ['vswitch', 'dump_flows', 'int_br0'],
95             ] +
96             STEP_VSWITCH_P2P_FINIT
97     },
98     {
99         "Name": "pvp_l3_multi_IP_mask_ovs",
100         "Deployment": "clean",
101         "Description": "OVS: PVP L3 multistream with 1 flow for /8 net mask",
102         "vSwitch" : "OvsDpdkVhost",
103         "Parameters" : {
104             "GUEST_TESTPMD_FWD_MODE" : ['io'],
105             "TRAFFIC" : {
106                 'bidir' : 'False',
107                 "stream_type" : "L3",
108                 'l3': {
109                     'enabled': True,
110                     'proto': 'udp',
111                     'dstip': '6.0.0.1',
112                 },
113             },
114         },
115         "TestSteps":
116             STEP_VSWITCH_PVP_INIT +
117             [
118                 ['vswitch', 'del_flow', 'int_br0'],
119                 ['vswitch', 'add_flow', 'int_br0',
120                  {'in_port': '#STEP[1][1]', 'dl_type': '0x800',
121                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
122                   'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
123                 ['vswitch', 'add_flow', 'int_br0',
124                  {'in_port': '#STEP[4][1]', 'dl_type': '0x800',
125                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
126                   'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
127                 ['vnf', 'start'],
128                 ['trafficgen', 'send_traffic', {}],
129                 ['vswitch', 'dump_flows', 'int_br0'],
130                 ['vnf', 'stop'],
131             ] +                                                                                                                          STEP_VSWITCH_PVP_FINIT
132     },
133     {
134         "Name": "pvvp_l3_multi_IP_mask_ovs",
135         "Deployment": "clean",
136         "Description": "OVS: PVVP L3 multistream with 1 flow for /8 net mask",
137         "vSwitch" : "OvsDpdkVhost",
138         "Parameters" : {
139             "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'],
140             "TRAFFIC" : {
141                 'bidir' : 'False',
142                 "stream_type" : "L3",
143                 'l3': {
144                     'enabled': True,
145                     'proto': 'udp',
146                     'dstip': '6.0.0.1',
147                 },
148             },
149         },
150         "TestSteps":
151             STEP_VSWITCH_PVVP_INIT +
152             [
153                 ['vswitch', 'del_flow', 'int_br0'],
154                 ['vswitch', 'add_flow', 'int_br0',
155                  {'in_port': '#STEP[1][1]', 'dl_type': '0x800',
156                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
157                   'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
158                 ['vswitch', 'add_flow', 'int_br0',
159                  {'in_port': '#STEP[4][1]', 'dl_type': '0x800',
160                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
161                   'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
162                 ['vswitch', 'add_flow', 'int_br0',
163                  {'in_port': '#STEP[6][1]', 'dl_type': '0x800',
164                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
165                   'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
166                 ['vnf1', 'start'],
167                 ['vnf2', 'start'],
168                 ['trafficgen', 'send_traffic', {}],
169                 ['vswitch', 'dump_flows', 'int_br0'],
170                 ['vnf2', 'stop'],
171                 ['vnf1', 'stop'],
172             ] +
173             STEP_VSWITCH_PVVP_FINIT
174     },
175     {
176         "Name": "p2p_l4_multi_PORT_ovs",
177         "Deployment": "clean",
178         "Description": "OVS: P2P L4 multistream with unique flow for each IP stream",
179         "vSwitch" : "OvsDpdkVhost",
180         "Parameters" : {
181             "TRAFFIC" : {
182                 'bidir' : 'False',
183                 "stream_type" : "L3",
184                 'l3': {
185                     'enabled': True,
186                     'proto': 'udp',
187                     'dstip': '6.0.0.1',
188                 },
189                 'l4': {
190                     'enabled': True,
191                     'srcport': 7,
192                     'dstport': 8,
193                 },
194             },
195         },
196         "TestSteps":
197             STEP_VSWITCH_P2P_INIT +
198             [
199                 ['vswitch', 'del_flow', 'int_br0'],
200                 ['tools', 'exec_python',
201                  'import netaddr;'
202                  'cmds=open("/tmp/ovsofctl_cmds.txt","w");'
203                  '[print("add nw_dst={} idle_timeout=0,dl_type=0x800,nw_proto=17,tp_src={},'
204                  'in_port=1,action=output:2".format('
205                  'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),'
206                  '$TRAFFIC["l4"]["srcport"]),file=cmds) '
207                  'for i in range($TRAFFIC["multistream"])];'
208                  'cmds.close()'],
209                 ['tools', 'exec_shell', "sudo $TOOLS['ovs-ofctl'] -O OpenFlow13 --bundle "
210                                         "add-flows int_br0 /tmp/ovsofctl_cmds.txt"],
211                 ['trafficgen', 'send_traffic', {}],
212             ] +
213             STEP_VSWITCH_P2P_FINIT
214     },
215     {
216         "Name": "p2p_l4_multi_PORT_mask_ovs",
217         "Deployment": "clean",
218         "Description": "OVS: P2P L4 multistream with 1 flow for /8 net and port mask",
219         "vSwitch" : "OvsDpdkVhost",
220         "Parameters" : {
221             "TRAFFIC" : {
222                 'bidir' : 'False',
223                 "stream_type" : "L3",
224                 'l3': {
225                     'enabled': True,
226                     'proto': 'udp',
227                     'dstip': '6.0.0.1',
228                 },
229                 'l4': {
230                     'enabled': True,
231                     'srcport': 7,
232                     'dstport': 8,
233                 },
234             },
235         },
236         "TestSteps":
237             STEP_VSWITCH_P2P_INIT +
238             [
239                 ['vswitch', 'del_flow', 'int_br0'],
240                 ['vswitch', 'add_flow', 'int_br0',
241                  {'in_port': '#STEP[1][1]', 'dl_type': '0x800',
242                  'nw_proto': '17', 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
243                  'tp_src': '$TRAFFIC["l4"]["srcport"]',
244                  'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
245                 ['trafficgen', 'send_traffic', {}],
246                 ['vswitch', 'dump_flows', 'int_br0'],
247             ] +
248             STEP_VSWITCH_P2P_FINIT
249     },
250     {
251         "Name": "pvp_l4_multi_PORT_mask_ovs",
252         "Deployment": "clean",
253         "Description": "OVS: PVP L4 multistream flows for /8 net and port mask",
254         "vSwitch" : "OvsDpdkVhost",
255         "Parameters" : {
256             "GUEST_TESTPMD_FWD_MODE" : ['io'],
257             "TRAFFIC" : {
258                 'bidir' : 'False',
259                 "stream_type" : "L3",
260                 'l3': {
261                     'enabled': True,
262                     'proto': 'udp',
263                     'dstip': '6.0.0.1',
264                 },
265                 'l4': {
266                     'enabled': True,
267                     'srcport': 7,
268                     'dstport': 8,
269                 },
270             },
271         },
272         "TestSteps":
273             STEP_VSWITCH_PVP_INIT +
274             [
275                 ['vswitch', 'del_flow', 'int_br0'],
276                 ['vswitch', 'add_flow', 'int_br0',
277                  {'in_port': '#STEP[1][1]', 'dl_type': '0x800', 'nw_proto': '17',
278                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
279                   'tp_src': '$TRAFFIC["l4"]["srcport"]',
280                   'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
281                 ['vswitch', 'add_flow', 'int_br0',
282                  {'in_port': '#STEP[4][1]', 'dl_type': '0x800', 'nw_proto': '17',
283                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
284                   'tp_src': '$TRAFFIC["l4"]["srcport"]',
285                   'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
286                 ['vnf', 'start'],
287                 ['trafficgen', 'send_traffic', {}],
288                 ['vswitch', 'dump_flows', 'int_br0'],
289                 ['vnf', 'stop'],
290             ] +
291             STEP_VSWITCH_PVP_FINIT
292     },
293     {
294         "Name": "pvvp_l4_multi_PORT_mask_ovs",
295         "Deployment": "clean",
296         "Description": "OVS: PVVP L4 multistream with flows for /8 net and port mask",
297         "vSwitch" : "OvsDpdkVhost",
298         "Parameters" : {
299             "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'],
300             "TRAFFIC" : {
301                 'bidir' : 'False',
302                 "stream_type" : "L3",
303                 'l3': {
304                     'enabled': True,
305                     'proto': 'udp',
306                     'dstip': '6.0.0.1',
307                 },
308                 'l4': {
309                     'enabled': True,
310                     'srcport': 7,
311                     'dstport': 8,
312                 },
313             },
314         },
315         "TestSteps":
316             STEP_VSWITCH_PVVP_INIT +
317             [
318                 ['vswitch', 'del_flow', 'int_br0'],
319                 ['vswitch', 'add_flow', 'int_br0',
320                  {'in_port': '#STEP[1][1]', 'dl_type': '0x800',
321                   'nw_proto': '17', 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
322                   'tp_src': '$TRAFFIC["l4"]["srcport"]',
323                   'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
324                 ['vswitch', 'add_flow', 'int_br0',
325                  {'in_port': '#STEP[4][1]', 'dl_type': '0x800', 'nw_proto': '17',
326                   'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
327                   'tp_src': '$TRAFFIC["l4"]["srcport"]',
328                   'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
329                 ['vswitch', 'add_flow', 'int_br0',
330                  {'in_port': '#STEP[6][1]', 'dl_type': '0x800',
331                   'nw_proto': '17', 'nw_dst': '$TRAFFIC["l3"]["dstip"]/8',
332                   'tp_src': '$TRAFFIC["l4"]["srcport"]',
333                   'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
334                 ['vnf1', 'start'],
335                 ['vnf2', 'start'],
336                 ['trafficgen', 'send_traffic', {}],
337                 ['vswitch', 'dump_flows', 'int_br0'],
338                 ['vnf2', 'stop'],
339                 ['vnf1', 'stop'],
340             ] +
341             STEP_VSWITCH_PVVP_FINIT
342     },
343     {
344         "Name": "p2p_l3_multi_IP_arp_vpp",
345         "Deployment": "clean",
346         "Description": "VPP: P2P L3 multistream with unique ARP entry for each IP stream",
347         "vSwitch" : "VppDpdkVhost",
348         "Parameters" : {
349             "TRAFFIC" : {
350                 'bidir' : 'False',
351                 "stream_type" : "L3",
352                 'l2': {
353                     'dstmac' : '#PARAM(NICS[0]["mac"])',
354                 },
355                 'l3': {
356                     'enabled': True,
357                     'proto': 'udp',
358                     'dstip': '6.0.0.2',
359                 },
360             },
361         },
362         "TestSteps":
363             STEP_VSWITCH_P2P_INIT +
364             [
365                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 5.0.2.1/24']],
366                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.0.1/8']],
367                 # count option of "set ip arp" command doesn't work reliably for huge
368                 # count numbers, e.g. 100K
369                 # it is both more reliale and faster to load batches of sigle
370                 # ARP commands, although it also fails time to time
371                 # NOTE: batch load of "set ip arp count" commands with lower
372                 # count values (e.g. 1000) was also less reliable than using
373                 # batches of signle arp entries
374                 ['tools', 'exec_python',
375                  'import netaddr;'
376                  'dst_mac_value = netaddr.EUI("00:00:00:00:00:0A").value;'
377                  'cmds=open("/tmp/vppctl_cmds.txt","w");'
378                  '[print("set ip arp #STEP[2][0] {} {}".format('
379                  'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),'
380                  'netaddr.EUI(dst_mac_value+i,dialect=netaddr.mac_unix_expanded)),file=cmds) '
381                  'for i in range($TRAFFIC["multistream"])];'
382                  'cmds.close()'],
383                 ['tools', 'exec_shell', "rm -rf /tmp/vppctl_cmds_split*; split -l 1000 "
384                                         "/tmp/vppctl_cmds.txt /tmp/vppctl_cmds_split"],
385                 ['tools', 'exec_shell', "for a in /tmp/vppctl_cmds_split* ; do echo $a ; "
386                                         "sudo $TOOLS['vppctl'] exec $a ; sleep 2 ; done"],
387                 ['vswitch', 'run_vppctl', ['show ip fib summary']],
388                 ['trafficgen', 'send_traffic', {}],
389                 ['vswitch', 'run_vppctl', ['show interfaces']],
390             ] +
391             STEP_VSWITCH_P2P_FINIT
392     },
393     {
394         "Name": "p2p_l3_multi_IP_mask_vpp",
395         "Deployment": "clean",
396         "Description": "VPP: P2P L3 multistream with 1 route for /8 net mask",
397         "vSwitch" : "VppDpdkVhost",
398         "Parameters" : {
399             "TRAFFIC" : {
400                 'bidir' : 'False',
401                 "stream_type" : "L3",
402                 'l2': {
403                     'dstmac' : '#PARAM(NICS[0]["mac"])',
404                 },
405                 'l3': {
406                     'enabled': True,
407                     'proto': 'udp',
408                     'dstip': '5.0.0.1',
409                 },
410             },
411         },
412         "TestSteps":
413             STEP_VSWITCH_P2P_INIT +
414             [
415                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']],
416                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']],
417                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']],
418                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 via 6.0.3.2']],
419                 ['vswitch', 'run_vppctl', ['show ip fib']],
420                 ['trafficgen', 'send_traffic', {}],
421                 ['vswitch', 'run_vppctl', ['show interfaces']],
422             ] +
423             STEP_VSWITCH_P2P_FINIT
424     },
425     {
426         "Name": "p2p_l3_multi_IP_routes_vpp",
427         "Deployment": "clean",
428         "Description": "VPP: P2P L3 multistream with unique route for each IP stream",
429         "vSwitch" : "VppDpdkVhost",
430         "Parameters" : {
431             "TRAFFIC" : {
432                 'bidir' : 'False',
433                 "stream_type" : "L3",
434                 'l2': {
435                     'dstmac' : '#PARAM(NICS[0]["mac"])',
436                 },
437                 'l3': {
438                     'enabled': True,
439                     'proto': 'udp',
440                     'dstip': '5.0.0.1',
441                 },
442             },
443         },
444         "TestSteps":
445             STEP_VSWITCH_P2P_INIT +
446             [
447                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']],
448                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']],
449                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']],
450                 # insertion of huge number of IP routes doesn't cause issues
451                 # seen with ARP entries at p2p_l3_multi_IP_vpp testcase
452                 ['vswitch', 'run_vppctl', ['ip route add count $TRAFFIC["multistream"] '
453                                            '$TRAFFIC["l3"]["dstip"]/32 via 6.0.3.2']],
454                 ['vswitch', 'run_vppctl', ['show ip fib summary']],
455                 ['trafficgen', 'send_traffic', {}],
456                 ['vswitch', 'run_vppctl', ['show interfaces']],
457             ] +
458             STEP_VSWITCH_P2P_FINIT
459     },
460     {
461         "Name": "pvp_l3_multi_IP_mask_vpp",
462         "Deployment": "clean",
463         "Description": "VPP: PVP L3 multistream with route for /8 netmask",
464         "vSwitch" : "VppDpdkVhost",
465         "Parameters" : {
466             "GUEST_TESTPMD_FWD_MODE" : ['io'],
467             "TRAFFIC" : {
468                 'bidir' : 'False',
469                 "stream_type" : "L3",
470                 'l2': {
471                     'dstmac' : '#PARAM(NICS[0]["mac"])',
472                 },
473                 'l3': {
474                     'enabled': True,
475                     'proto': 'udp',
476                     'dstip': '5.0.0.1',
477                 },
478             },
479         },
480         "TestSteps":
481             STEP_VSWITCH_PVP_INIT +
482             [
483                 ['vswitch', 'run_vppctl', ['set interface mac address #STEP[4][0] 00:00:00:00:00:11']],
484                 # two separate tables are used, so the same IP network can be routed
485                 # via different DST IPs to reach VM and trafficgen via 2nd phy NIC
486                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']],
487                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']],
488                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']],
489                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']],
490                 # route traffic to VM; Set DST MAC to MAC of 2nd (output) vhost user interface
491                 # of VM, so traffic is accepted by VPP in next table
492                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']],
493                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']],
494
495                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 7']],
496                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']],
497                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']],
498                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']],
499                 # route traffic via 2nd phy NIC to reach trafficgen
500                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 7']],
501                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.2.2']],
502
503                 ['vswitch', 'run_vppctl', ['show ip fib']],
504                 ['vnf', 'start'],
505                 ['trafficgen', 'send_traffic', {}],
506                 ['vswitch', 'run_vppctl', ['show interfaces']],
507                 ['vnf', 'stop'],
508             ] +
509             STEP_VSWITCH_PVP_FINIT
510     },
511     {
512         "Name": "pvvp_l3_multi_IP_mask_vpp",
513         "Deployment": "clean",
514         "Description": "VPP: PVVP L3 multistream with route for /8 netmask",
515         "vSwitch" : "VppDpdkVhost",
516         "Parameters" : {
517             "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'],
518             "TRAFFIC" : {
519                 'bidir' : 'False',
520                 "stream_type" : "L3",
521                 'l2': {
522                     'dstmac' : '#PARAM(NICS[0]["mac"])',
523                 },
524                 'l3': {
525                     'enabled': True,
526                     'proto': 'udp',
527                     'dstip': '5.0.0.1',
528                 },
529             },
530         },
531         "TestSteps":
532             STEP_VSWITCH_PVVP_INIT +
533             [
534                 ['vswitch', 'run_vppctl', ['set interface mac address #STEP[4][0] 00:00:00:00:00:11']],
535                 ['vswitch', 'run_vppctl', ['set interface mac address #STEP[6][0] 00:00:00:00:00:12']],
536                 # three separate tables are used, so the same IP network can be routed
537                 # via different DST IPs to reach both VMs and trafficgen via 2nd phy NIC
538                 # 1st table
539                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']],
540                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']],
541                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']],
542                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']],
543                 # route traffic to 1st VM; Set DST MAC to MAC of 2nd (output) vhost user interface
544                 # of VM1, so traffic is accepted by VPP in next table
545                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']],
546                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']],
547                 # 2nd table
548                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']],
549                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[5][0] 7']],
550                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']],
551                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[5][0] 6.0.5.1/24']],
552                 # route traffic to 2nd VM; Set DST MAC to MAC of 2nd (output) vhost user interfacei
553                 # of VM2, so traffic is accepted by VPP in next table
554                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[5][0] 6.0.5.2 00:00:00:00:00:12 fib-id 7']],
555                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.5.2']],
556                 # 3rd table
557                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 8']],
558                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[6][0] 8']],
559                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']],
560                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[6][0] 6.0.6.1/24']],
561                 # route traffic via 2nd phy NIC to reach trafficgen
562                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 8']],
563                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 8 via 6.0.2.2']],
564                 ['vswitch', 'run_vppctl', ['show ip fib']],
565                 ['vnf1', 'start'],
566                 ['vnf2', 'start'],
567                 ['trafficgen', 'send_traffic', {}],
568                 ['vswitch', 'run_vppctl', ['show interfaces']],
569                 ['vnf1', 'stop'],
570                 ['vnf2', 'stop'],
571             ] +
572             STEP_VSWITCH_PVVP_FINIT
573     },
574     {
575         "Name": "p2p_l4_multi_PORT_arp_vpp",
576         "Deployment": "clean",
577         "Description": "VPP: P2P L4 multistream with unique ARP entry for each IP stream and port check",
578         "vSwitch" : "VppDpdkVhost",
579         "Parameters" : {
580             "TRAFFIC" : {
581                 'bidir' : 'False',
582                 "stream_type" : "L3",
583                 'l2': {
584                     'dstmac' : '#PARAM(NICS[0]["mac"])',
585                 },
586                 'l3': {
587                     'enabled': True,
588                     'proto': 'udp',
589                     'srcip': '6.0.2.2',
590                     'dstip': '5.0.0.2',
591                 },
592                 'l4': {
593                     'enabled': True,
594                     'srcport': 7,
595                     'dstport': 8,
596                 },
597             },
598         },
599         "TestSteps":
600             STEP_VSWITCH_P2P_INIT +
601             [
602                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']],
603                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 5.0.0.1/8']],
604                 ['tools', 'exec_python',
605                  'import netaddr;'
606                  'dst_mac_value = netaddr.EUI("00:00:00:00:00:0A").value;'
607                  'cmds=open("/tmp/vppctl_cmds.txt","w");'
608                  '[print("set ip arp #STEP[2][0] {} {}".format('
609                  'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),'
610                  'netaddr.EUI(dst_mac_value+i,dialect=netaddr.mac_unix_expanded)),file=cmds) '
611                  'for i in range($TRAFFIC["multistream"])];'
612                  'cmds.close()'],
613                 ['vswitch', 'run_vppctl',
614                  ['set ip source-and-port-range-check vrf 7 $TRAFFIC["l3"]["srcip"]/24 '
615                   'port $TRAFFIC["l4"]["dstport"]']],
616                 ['vswitch', 'run_vppctl',
617                  ['set interface ip source-and-port-range-check #STEP[1][0] udp-out-vrf 7']],
618                 ['tools', 'exec_shell', "rm -rf /tmp/vppctl_cmds_split*; split -l 1000 "
619                                         "/tmp/vppctl_cmds.txt /tmp/vppctl_cmds_split"],
620                 ['tools', 'exec_shell', "for a in /tmp/vppctl_cmds_split* ; do echo $a ; "
621                                         "sudo $TOOLS['vppctl'] exec $a ; sleep 2 ; done"],
622                 ['vswitch', 'run_vppctl', ['show ip fib summary']],
623                 ['trafficgen', 'send_traffic', {}],
624                 ['vswitch', 'run_vppctl', ['show interfaces']],
625             ] +
626             STEP_VSWITCH_P2P_FINIT
627     },
628     {
629         "Name": "p2p_l4_multi_PORT_mask_vpp",
630         "Deployment": "clean",
631         "Description": "VPP: P2P L4 multistream with 1 route for /8 net mask and port check",
632         "vSwitch" : "VppDpdkVhost",
633         "Parameters" : {
634             "TRAFFIC" : {
635                 'bidir' : 'False',
636                 "stream_type" : "L3",
637                 'l2': {
638                     'dstmac' : '#PARAM(NICS[0]["mac"])',
639                 },
640                 'l3': {
641                     'enabled': True,
642                     'proto': 'udp',
643                     'srcip': '6.0.2.2',
644                     'dstip': '5.0.0.1',
645                 },
646                 'l4': {
647                     'enabled': True,
648                     'srcport': 7,
649                     'dstport': 8,
650                 },
651             },
652         },
653         "TestSteps":
654             STEP_VSWITCH_P2P_INIT +
655             [
656                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']], # STEP 3
657                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']], # STEP 4
658                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']], # STEP 5
659                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 via 6.0.3.2']],
660                 ['vswitch', 'run_vppctl', ['show ip fib']],
661                 ['vswitch', 'run_vppctl',
662                  ['set ip source-and-port-range-check vrf 7 $TRAFFIC["l3"]["srcip"]/24 '
663                   'port $TRAFFIC["l4"]["dstport"]']],
664                 ['vswitch', 'run_vppctl',
665                  ['set interface ip source-and-port-range-check #STEP[1][0] udp-out-vrf 7']],
666                 ['vswitch', 'run_vppctl', ['show ip fib']],
667                 ['trafficgen', 'send_traffic', {}],
668                 ['vswitch', 'run_vppctl', ['show interfaces']],
669             ] +
670             STEP_VSWITCH_P2P_FINIT
671     },
672     {
673         "Name": "p2p_l4_multi_PORT_routes_vpp",
674         "Deployment": "clean",
675         "Description": "VPP: P2P L4 multistream with unique route for each IP stream and port check",
676         "vSwitch" : "VppDpdkVhost",
677         "Parameters" : {
678             "TRAFFIC" : {
679                 'bidir' : 'False',
680                 "stream_type" : "L3",
681                 'l2': {
682                     'dstmac' : '#PARAM(NICS[0]["mac"])',
683                 },
684                 'l3': {
685                     'enabled': True,
686                     'proto': 'udp',
687                     'srcip': '6.0.2.2',
688                     'dstip': '5.0.0.1',
689                 },
690                 'l4': {
691                     'enabled': True,
692                     'srcport': 7,
693                     'dstport': 8,
694                 },
695             },
696         },
697         "TestSteps":
698             STEP_VSWITCH_P2P_INIT +
699             [
700                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.2.1/24']],
701                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.3.1/24']],
702                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.3.2 00:00:00:00:00:0A']],
703                 # insertion of huge number of IP routes doesn't cause issues
704                 # seen with ARP entries at p2p_l3_multi_IP_vpp testcase
705                 ['vswitch', 'run_vppctl',
706                  ['ip route add count $TRAFFIC["multistream"] $TRAFFIC["l3"]["dstip"]/32 via 6.0.3.2']],
707                 ['vswitch', 'run_vppctl',
708                  ['set ip source-and-port-range-check vrf 7 $TRAFFIC["l3"]["srcip"]/24 '
709                   'port $TRAFFIC["l4"]["dstport"]']],
710                 ['vswitch', 'run_vppctl',
711                  ['set interface ip source-and-port-range-check #STEP[1][0] udp-out-vrf 7']],
712                 ['vswitch', 'run_vppctl', ['show ip fib summary']],
713                 ['trafficgen', 'send_traffic', {}],
714                 ['vswitch', 'run_vppctl', ['show interfaces']],
715             ] +
716             STEP_VSWITCH_P2P_FINIT
717     },
718     {
719         "Name": "pvp_l4_multi_PORT_mask_vpp",
720         "Deployment": "clean",
721         "Description": "VPP: PVP L4 multistream with route for /8 net and port mask",
722         "vSwitch" : "VppDpdkVhost",
723         "Parameters" : {
724             "GUEST_TESTPMD_FWD_MODE" : ['io'],
725             "TRAFFIC" : {
726                 'bidir' : 'False',
727                 "stream_type" : "L3",
728                 'l2': {
729                     'dstmac' : '#PARAM(NICS[0]["mac"])',
730                 },
731                 'l3': {
732                     'enabled': True,
733                     'proto': 'udp',
734                     'srcip': '4.0.0.1',
735                     'dstip': '5.0.0.1',
736                 },
737                 'l4': {
738                     'enabled': True,
739                     'srcport': 7,
740                     'dstport': 8,
741                 },
742             },
743         },
744         "TestSteps":
745             STEP_VSWITCH_PVP_INIT +
746             [
747                 ['vswitch', 'run_vppctl', ['set int mac address #STEP[4][0] 00:00:00:00:00:11']],
748                 # create table for port check
749                 ['vswitch', 'run_vppctl', ['set ip source-and-port-range-check vrf 5 '
750                                            '$TRAFFIC["l3"]["srcip"]/24 '
751                   'port $TRAFFIC["l4"]["dstport"]']],
752                 # two separate tables are used, so the same IP network can be routed
753                 # via different DST IPs to reach VM and trafficgen via 2nd phy NIC
754                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']],
755                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']],
756                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']],
757                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']],
758                 # enforce port check
759                 ['vswitch', 'run_vppctl', ['set int ip source-and-port-range-check #STEP[1][0] '
760                                            'udp-out-vrf 5']],
761                 # route traffic to VM; Set DST MAC to MAC of 2nd (output) vhost user interface
762                 # of VM, so traffic is accepted by VPP in next table
763                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']],
764                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']],
765
766                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 7']],
767                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']],
768                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']],
769                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']],
770                 # route traffic via 2nd phy NIC to reach trafficgen
771                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 7']],
772                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.2.2']],
773
774                 ['vswitch', 'run_vppctl', ['show ip fib']],
775                 ['vnf', 'start'],
776                 ['trafficgen', 'send_traffic', {}],
777                 ['vswitch', 'run_vppctl', ['show interfaces']],
778                 ['vnf', 'stop'],
779             ] +
780             STEP_VSWITCH_PVP_FINIT
781     },
782     {
783         "Name": "pvvp_l4_multi_PORT_mask_vpp",
784         "Deployment": "clean",
785         "Description": "VPP: PVVP L4 multistream with route for /8 net and port mask",
786         "vSwitch" : "VppDpdkVhost",
787         "Parameters" : {
788             "GUEST_TESTPMD_FWD_MODE" : ['io', 'io'],
789             "TRAFFIC" : {
790                 'bidir' : 'False',
791                 "stream_type" : "L3",
792                 'l2': {
793                     'dstmac' : '#PARAM(NICS[0]["mac"])',
794                 },
795                 'l3': {
796                     'enabled': True,
797                     'proto': 'udp',
798                     'srcip': '4.0.0.1',
799                     'dstip': '5.0.0.1',
800                 },
801                 'l4': {
802                     'enabled': True,
803                     'srcport': 7,
804                     'dstport': 8,
805                 },
806             },
807         },
808         "TestSteps":
809             STEP_VSWITCH_PVVP_INIT +
810             [
811                 ['vswitch', 'run_vppctl', ['set int mac address #STEP[4][0] 00:00:00:00:00:11']],
812                 ['vswitch', 'run_vppctl', ['set int mac address #STEP[6][0] 00:00:00:00:00:12']],
813                 # create table for port check
814                 ['vswitch', 'run_vppctl', ['set ip source-and-port-range-check vrf 5 '
815                                            '$TRAFFIC["l3"]["srcip"]/24 port $TRAFFIC["l4"]["dstport"]']],
816                 # three separate tables are used, so the same IP network can be routed
817                 # via different DST IPs to reach both VMs and trafficgen via 2nd phy NIC
818                 # 1st table
819                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[1][0] 6']],
820                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[3][0] 6']],
821                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[1][0] 6.0.1.1/24']],
822                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[3][0] 6.0.3.1/24']],
823                 # enforce port check
824                 ['vswitch', 'run_vppctl', ['set int ip source-and-port-range-check #STEP[1][0] udp-out-vrf 5']],
825                 # route traffic to 1st VM; Set DST MAC to MAC of 2nd (output) vhost user interface
826                 # of VM1, so traffic is accepted by VPP in next table
827                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[3][0] 6.0.3.2 00:00:00:00:00:11 fib-id 6']],
828                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 6 via 6.0.3.2']],
829                 # 2nd table
830                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[4][0] 7']],
831                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[5][0] 7']],
832                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[4][0] 6.0.4.1/24']],
833                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[5][0] 6.0.5.1/24']],
834                 # route traffic to 2nd VM; Set DST MAC to MAC of 2nd (output) vhost user interfacei
835                 # of VM2, so traffic is accepted by VPP in next table
836                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[5][0] 6.0.5.2 00:00:00:00:00:12 fib-id 7']],
837                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 7 via 6.0.5.2']],
838                 # 3rd table
839                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[2][0] 8']],
840                 ['vswitch', 'run_vppctl', ['set int ip table #STEP[6][0] 8']],
841                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[2][0] 6.0.2.1/24']],
842                 ['vswitch', 'run_vppctl', ['set int ip address #STEP[6][0] 6.0.6.1/24']],
843                 # route traffic via 2nd phy NIC to reach trafficgen
844                 ['vswitch', 'run_vppctl', ['set ip arp #STEP[2][0] 6.0.2.2 00:00:00:00:00:0A fib-id 8']],
845                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 table 8 via 6.0.2.2']],
846                 ['vswitch', 'run_vppctl', ['show ip fib']],
847                 ['vnf1', 'start'],
848                 ['vnf2', 'start'],
849                 ['trafficgen', 'send_traffic', {}],
850                 ['vswitch', 'run_vppctl', ['show interfaces']],
851                 ['vnf1', 'stop'],
852                 ['vnf2', 'stop'],
853             ] +
854             STEP_VSWITCH_PVVP_FINIT
855     },
856     #
857     # End of L3 & L4 tests to compare OVS and VPP performance
858     #
859     #
860     # VxLAN tests to compare OVS and VPP performance
861     #
862     # Example of execution:
863     #   ./vsperf --test-params "TRAFFIC={'multistream':2000,'traffic_type':'rfc2544_continuous'}" \
864     #       vxlan_multi_IP_vpp
865     {
866         "Name": "vxlan_multi_IP_mask_ovs",
867         "Deployment": "op2p",
868         "Tunnel Type": "vxlan",
869         "Tunnel Operation": "encapsulation",
870         "Description": "OVS: VxLAN L3 multistream",
871         "Parameters": {
872             "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
873             "TRAFFICGEN_PORT1_MAC" : '00:00:00:00:00:01',
874             "TRAFFICGEN_PORT2_MAC" : '#PARAM(NICS[0]["mac"])',
875             "TRAFFICGEN_PORT1_IP"  : '9.0.0.2',
876             "TRAFFICGEN_PORT2_IP"  : '10.0.0.2',
877             "TRAFFIC" : {
878                 'bidir' : 'False',
879                 "stream_type" : "L3",
880             },
881         },
882         "TestSteps": [
883             ['vswitch', 'del_flow', '$TUNNEL_INTEGRATION_BRIDGE', {'in_port': '1'}],
884             ['vswitch', 'add_flow', '$TUNNEL_INTEGRATION_BRIDGE',
885              {'in_port': '1', 'dl_type': '0x800', 'nw_proto': '17',
886               'nw_dst': '$TRAFFICGEN_PORT2_IP/8', 'actions': ['output:2'],
887               'idle_timeout': '0'}],
888             ['vswitch', 'dump_flows', '$TUNNEL_INTEGRATION_BRIDGE'],
889             ['vswitch', 'dump_flows', '$TUNNEL_EXTERNAL_BRIDGE'],
890         ],
891     },
892     {
893         "Name": "vxlan_multi_IP_arp_vpp",
894         "Deployment": "clean",
895         "Description": "VPP: VxLAN L3 multistream with unique ARP entry for each IP stream",
896         "vSwitch" : "VppDpdkVhost",
897         "Parameters" : {
898             "TRAFFIC" : {
899                 'bidir' : 'False',
900                 "stream_type" : "L3",
901                 'l2': {
902                     'dstmac' : '#PARAM(NICS[0]["mac"])',
903                 },
904                 'l3': {
905                     'enabled': True,
906                     'proto': 'udp',
907                     'dstip': '10.0.0.2',
908                 },
909                 'l4': {
910                     'enabled': True,
911                 },
912             },
913         },
914         "TestSteps":
915             STEP_VSWITCH_P2P_INIT +
916             [
917                 ['vswitch', 'run_vppctl',
918                  ['set int ip address #STEP[1][0] 9.0.0.1/16']],
919                 ['vswitch', 'run_vppctl',
920                  ['set int ip address #STEP[2][0] 11.0.0.1/16']],
921                 ['vswitch', 'run_vppctl',
922                  ['create vxlan tunnel src 11.0.0.1 dst 11.0.0.2 vni 1']],
923                 ['vswitch', 'run_vppctl',
924                  ['set int state vxlan_tunnel0 up']],
925                 ['vswitch', 'run_vppctl',
926                  ['set int ip address vxlan_tunnel0 10.0.0.1/8']],
927                 ['vswitch', 'run_vppctl',
928                  ['set ip arp #STEP[2][0] 11.0.0.2 00:00:00:00:00:00']],
929                 ['tools', 'exec_python',
930                  'import netaddr;'
931                  'dst_mac_value = netaddr.EUI("00:00:00:00:00:0A").value;'
932                  'cmds=open("/tmp/vppctl_cmds.txt","w");'
933                  '[print("set ip arp vxlan_tunnel0 {} {}".format('
934                  'netaddr.IPAddress(netaddr.IPAddress("$TRAFFIC["l3"]["dstip"]").value+i),'
935                  'netaddr.EUI(dst_mac_value+i,dialect=netaddr.mac_unix_expanded)),file=cmds) '
936                  'for i in range($TRAFFIC["multistream"])];'
937                  'cmds.close()'],
938                 ['tools', 'exec_shell',
939                  "rm -rf /tmp/vppctl_cmds_split*;"
940                  "split -l 1000 /tmp/vppctl_cmds.txt /tmp/vppctl_cmds_split"],
941                 ['tools', 'exec_shell',
942                  "for a in /tmp/vppctl_cmds_split* ; do "
943                  "echo $a ; sudo $TOOLS['vppctl'] exec $a ; sleep 2 ; done"],
944                 ['vswitch', 'run_vppctl', ['show ip fib summary']],
945                 ['trafficgen', 'send_traffic', {}],
946                 ['vswitch', 'run_vppctl', ['show interfaces']],
947             ] +
948             STEP_VSWITCH_P2P_FINIT
949     },
950     {
951         "Name": "vxlan_multi_IP_mask_vpp",
952         "Deployment": "clean",
953         "Description": "VPP: VxLAN L3 multistream with 1 route for /8 netmask",
954         "vSwitch" : "VppDpdkVhost",
955         "Parameters" : {
956             "TRAFFIC" : {
957                 'bidir' : 'False',
958                 "stream_type" : "L3",
959                 'l2': {
960                     'dstmac' : '#PARAM(NICS[0]["mac"])',
961                 },
962                 'l3': {
963                     'enabled': True,
964                     'proto': 'udp',
965                     'dstip': '8.0.0.1',
966                 },
967                 'l4': {
968                     'enabled': True,
969                 },
970             },
971         },
972         "TestSteps":
973             STEP_VSWITCH_P2P_INIT +
974             [
975                 ['vswitch', 'run_vppctl',
976                  ['set int ip address #STEP[1][0] 9.0.0.1/16']],
977                 ['vswitch', 'run_vppctl',
978                  ['set int ip address #STEP[2][0] 11.0.0.1/16']],
979                 ['vswitch', 'run_vppctl',
980                  ['create vxlan tunnel src 11.0.0.1 dst 11.0.0.2 vni 1']],
981                 ['vswitch', 'run_vppctl',
982                  ['set int state vxlan_tunnel0 up']],
983                 ['vswitch', 'run_vppctl',
984                  ['set int ip address vxlan_tunnel0 10.0.0.1/24']],
985                 ['vswitch', 'run_vppctl',
986                  ['set ip arp #STEP[2][0] 11.0.0.2 00:00:00:00:00:00']],
987                 ['vswitch', 'run_vppctl',
988                  ['set ip arp vxlan_tunnel0 10.0.0.2 00:00:00:00:00:0A']],
989                 ['vswitch', 'run_vppctl', ['ip route add $TRAFFIC["l3"]["dstip"]/8 via 10.0.0.2']],
990                 ['vswitch', 'run_vppctl', ['show ip fib']],
991                 ['trafficgen', 'send_traffic', {}],
992                 ['vswitch', 'run_vppctl', ['show interfaces']],
993             ] +
994             STEP_VSWITCH_P2P_FINIT
995     },
996     #
997     # End of VxLAN tests to compare OVS and VPP performance
998     #
999 ]