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