1876d901bbbe9c22add2aaba98f02e390c76f5a5
[csit.git] / tests / func / bridge_domain / bridge_domain_untagged.robot
1 # Copyright (c) 2016 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
5 #
6 #     http://www.apache.org/licenses/LICENSE-2.0
7 #
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
13
14 *** Settings ***
15 | Resource | resources/libraries/robot/default.robot
16 | Resource | resources/libraries/robot/bridge_domain.robot
17 | Resource | resources/libraries/robot/testing_path.robot
18 | Resource | resources/libraries/robot/qemu.robot
19 | Library  | resources.libraries.python.Trace
20 | Force Tags | HW_ENV | VM_ENV
21 | Test Setup | Run Keywords | Setup all DUTs before test
22 | ...        | AND          | Setup all TGs before traffic script
23 | Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
24 | ...           | AND          | Show vpp trace dump on all DUTs
25 | Documentation | *L2 bridge-domain test cases*
26 | ...
27 | ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
28 | ... | between nodes; TG-DUT1-DUT2-TG 3-node circular topology with
29 | ... | single links between nodes; TG=DUT1=DUT2=TG 3-node circular
30 | ... | topology with double parallel links and TG=DUT=VM 3-node topology
31 | ... | with VM and double parallel links.
32 | ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of
33 | ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply
34 | ... | to all links.
35 | ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
36 | ... | bridge-domain (L2BD) switching combined with static MACs; MAC
37 | ... | learning enabled and Split Horizon Groups (SHG) depending on
38 | ... | test case.
39 | ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets
40 | ... | are sent in both directions by TG on links to DUT1 and DUT2; on
41 | ... | receive TG verifies packets for correctness and their IPv4 (IPv6)
42 | ... | src-addr, dst-addr and MAC addresses.
43 | ... | *[Ref] Applicable standard specifications:*
44
45 *** Variables ***
46 | ${bd_id1}= | 1
47 | ${bd_id2}= | 2
48 | ${shg1}= | 3
49 | ${shg2}= | 4
50 | ${sock1}= | /tmp/sock1
51 | ${sock2}= | /tmp/sock2
52
53 *** Test Cases ***
54 | TC01: DUT reports active interfaces
55 | | [Documentation]
56 | | ... | [Top] TG=DUT1; TG-DUT1-DUT2-TG. [Enc] None. [Cfg] Discovered \
57 | | ... | active interfaces. [Ver] Report active interfaces on DUT. [Ref]
58 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | 3_NODE_SINGLE_LINK_TOPO
59 | | VPP reports interfaces on | ${nodes['DUT1']}
60
61 | TC02: DUT with L2BD (MAC learning) switch ICMPv4 between two TG links
62 | | [Documentation]
63 | | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \
64 | | ... | two i/fs into L2BD with MAC learning. [Ver] Make TG verify
65 | | ... | ICMPv4 Echo Req pkts are switched thru DUT1 in both directions
66 | | ... | and are correct on receive. [Ref]
67 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
68 | | Given Path for 2-node testing is set
69 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
70 | | And Interfaces in 2-node path are up
71 | | When Bridge domain on DUT node is created | ${dut_node} | ${bd_id1}
72 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if1}
73 | | ...                                     | ${bd_id1}
74 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if2}
75 | | ...                                     | ${bd_id1}
76 | | Then Send and receive ICMPv4 bidirectionally | ${tg_node} | ${tg_to_dut_if1}
77 | | ...                                     | ${tg_to_dut_if2}
78
79 | TC03: DUT1 and DUT2 with L2BD (MAC learning) switch between two TG links
80 | | [Documentation]
81 | | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and DUT2 \
82 | | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG
83 | | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in
84 | | ... | both directions and are correct on receive. [Ref]
85 | | [Tags] | 3_NODE_SINGLE_LINK_TOPO
86 | | Given Path for 3-node testing is set
87 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
88 | | And Interfaces in 3-node path are up
89 | | When Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
90 | | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg}
91 | | ...                                     | ${bd_id1}
92 | | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_dut2}
93 | | ...                                     | ${bd_id1}
94 | | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
95 | | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg}
96 | | ...                                     | ${bd_id2}
97 | | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_dut1}
98 | | ...                                     | ${bd_id2}
99 | | Then Send and receive ICMPv4 bidirectionally | ${tg_node} | ${tg_to_dut1}
100 | | ...                                          | ${tg_to_dut2}
101
102 | TC04: DUT1 and DUT2 with L2BD (static MACs) switch between two TG links
103 | | [Documentation]
104 | | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \
105 | | ... | DUT2 configure two i/fs into L2BD with static MACs. [Ver] Make
106 | | ... | TG verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2
107 | | ... | in both directions and are correct on receive. [Ref]
108 | | [Tags] | 3_NODE_SINGLE_LINK_TOPO
109 | | Given Path for 3-node testing is set
110 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
111 | | And Interfaces in 3-node path are up
112 | | When Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
113 | | ...                                       | learn=${FALSE}
114 | | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg}
115 | | ...                                     | ${bd_id1}
116 | | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_dut2}
117 | | ...                                     | ${bd_id1}
118 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
119 | | ...                                                | ${tg_to_dut1}
120 | | ...                                                | ${dut1_node}
121 | | ...                                                | ${dut1_to_tg}
122 | | ...                                                | ${bd_id1}
123 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
124 | | ...                                                | ${tg_to_dut2}
125 | | ...                                                | ${dut1_node}
126 | | ...                                                | ${dut1_to_dut2}
127 | | ...                                                | ${bd_id1}
128 | | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
129 | | ...                                      | learn=${FALSE}
130 | | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg}
131 | | ...                                     | ${bd_id2}
132 | | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_dut1}
133 | | ...                                     | ${bd_id2}
134 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
135 | | ...                                                | ${tg_to_dut1}
136 | | ...                                                | ${dut2_node}
137 | | ...                                                | ${dut2_to_dut1}
138 | | ...                                                | ${bd_id2}
139 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
140 | | ...                                                | ${tg_to_dut2}
141 | | ...                                                | ${dut2_node}
142 | | ...                                                | ${dut2_to_tg}
143 | | ...                                                | ${bd_id2}
144 | | Then Send and receive ICMPv4 bidirectionally | ${tg_node} | ${tg_to_dut1}
145 | | ...                                          | ${tg_to_dut2}
146
147 | TC05: DUT1 and DUT2 with L2BD (MAC learn) and SHG switch between four TG links
148 | | [Documentation]
149 | | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \
150 | | ... | DUT2 configure four i/fs into L2BD with MAC learning and the
151 | | ... | same SHG on i/fs towards TG. [Ver] Make TG verify ICMPv4 Echo
152 | | ... | Req pkts are switched thru DUT1 and DUT2 in both directions and
153 | | ... | are correct on receive; verify no pkts are switched thru SHG
154 | | ... | isolated interfaces. [Ref]
155 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
156 | | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
157 | | ...                                         | ${nodes['DUT1']}
158 | | ...                                         | ${nodes['DUT2']}
159 | | And Interfaces in 3-node BD-SHG testing are up
160 | | When Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
161 | | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
162 | | ...                                     | ${bd_id1} | ${shg1}
163 | | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
164 | | ...                                     | ${bd_id1} | ${shg1}
165 | | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_dut2}
166 | | ...                                     | ${bd_id1}
167 | | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
168 | | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
169 | | ...                                     | ${bd_id2} | ${shg2}
170 | | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
171 | | ...                                     | ${bd_id2} | ${shg2}
172 | | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_dut1}
173 | | ...                                     | ${bd_id2}
174 | | Then Send and receive ICMPv4 bidirectionally | ${tg_node}
175 | | ...                                          | ${tg_to_dut1_if1}
176 | | ...                                          | ${tg_to_dut2_if1}
177 | | And Send and receive ICMPv4 bidirectionally | ${tg_node}
178 | | ...                                         | ${tg_to_dut1_if1}
179 | | ...                                         | ${tg_to_dut2_if2}
180 | | And Send and receive ICMPv4 bidirectionally | ${tg_node}
181 | | ...                                         | ${tg_to_dut1_if2}
182 | | ...                                         | ${tg_to_dut2_if1}
183 | | And Send and receive ICMPv4 bidirectionally | ${tg_node}
184 | | ...                                         | ${tg_to_dut1_if2}
185 | | ...                                         | ${tg_to_dut2_if2}
186 | | And Run Keyword And Expect Error | ICMP echo Rx timeout
187 | | ...                              | Send and receive ICMPv4 bidirectionally
188 | | | ...                            | ${tg_node} | ${tg_to_dut1_if1}
189 | | | ...                            | ${tg_to_dut1_if2}
190 | | And Run Keyword And Expect Error | ICMP echo Rx timeout
191 | | ...                              | Send and receive ICMPv4 bidirectionally
192 | | | ...                            | ${tg_node} | ${tg_to_dut2_if1}
193 | | | ...                            | ${tg_to_dut2_if2}
194
195 | TC06: DUT with two L2BDs (MAC learn) switches ICMPv4 between TG and VM links
196 | | [Documentation]
197 | | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \
198 | | ... | two L2BDs with MAC learning, each with vhost-user i/f to local
199 | | ... | VM and i/f to TG; configure VM to loop pkts back betwen its two
200 | | ... | virtio i/fs. [Ver] Make TG verify ICMPv4 Echo Req pkts are
201 | | ... | switched thru DUT1 and VM in both directions and are correct on
202 | | ... | receive. [Ref]
203 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
204 | | Given Path for 2-node testing is set
205 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
206 | | And Interfaces in 2-node path are up
207 | | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut_node}
208 | | ...                                                     | ${sock1}
209 | | ...                                                     | ${sock2}
210 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id1}
211 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if1}
212 | | ...                                     | ${bd_id1}
213 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if1}
214 | | ...                                     | ${bd_id1}
215 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id2}
216 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if2}
217 | | ...                                     | ${bd_id2}
218 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if2}
219 | | ...                                     | ${bd_id2}
220 | | And VM for Vhost L2BD forwarding is setup | ${dut_node} | ${sock1}
221 | | ...                                       | ${sock2}
222 | | Then Send and receive ICMPv4 bidirectionally | ${tg_node} | ${tg_to_dut_if1}
223 | | ...                                          | ${tg_to_dut_if2}
224 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
225 | | ...        | AND          | Show vpp trace dump on all DUTs
226 | | ...        | AND          | Stop and Clear QEMU | ${dut_node} | ${vm_node}
227
228 | TC07: DUT with two L2BDs (MAC learn) switches ICMPv6 between TG and VM links
229 | | [Documentation]
230 | | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 configure \
231 | | ... | two L2BDs with MAC learning, each with vhost-user i/f to local
232 | | ... | VM and i/f to TG; configure VM to loop pkts back betwen its two
233 | | ... | virtio i/fs. [Ver] Make TG verify ICMPv6 Echo Req pkts are
234 | | ... | switched thru DUT1 and VM in both directions and are correct on
235 | | ... | receive. [Ref]
236 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
237 | | Given Path for 2-node testing is set
238 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
239 | | And Interfaces in 2-node path are up
240 | | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut_node}
241 | | ...                                                     | ${sock1}
242 | | ...                                                     | ${sock2}
243 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id1}
244 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if1}
245 | | ...                                     | ${bd_id1}
246 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if1}
247 | | ...                                     | ${bd_id1}
248 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id2}
249 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if2}
250 | | ...                                     | ${bd_id2}
251 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if2}
252 | | ...                                     | ${bd_id2}
253 | | And VM for Vhost L2BD forwarding is setup | ${dut_node} | ${sock1}
254 | | ...                                       | ${sock2}
255 | | Then Send and receive ICMPv6 bidirectionally | ${tg_node} | ${tg_to_dut_if1}
256 | | ...                                          | ${tg_to_dut_if2}
257 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
258 | | ...        | AND          | Show vpp trace dump on all DUTs
259 | | ...        | AND          | Stop and Clear QEMU | ${dut_node} | ${vm_node}
260
261 | TC08: DUT with two L2BDs (static MACs) switches ICMPv4 between TG and VM links
262 | | [Documentation]
263 | | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \
264 | | ... | two L2BDs with static MACs, each with vhost-user i/f to local VM
265 | | ... | and i/f to TG; configure VM to loop pkts back betwen its two
266 | | ... | virtio i/fs. [Ver] Make TG verify ICMPv4 Echo Req pkts are
267 | | ... | switched thru DUT1 and VM in both directions and are correct on
268 | | ... | receive. [Ref]
269 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
270 | | Given Path for 2-node testing is set
271 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
272 | | And Interfaces in 2-node path are up
273 | | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut_node}
274 | | ...                                                     | ${sock1}
275 | | ...                                                     | ${sock2}
276 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id1}
277 | | ...                                      | learn=${FALSE}
278 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if1}
279 | | ...                                     | ${bd_id1}
280 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if1}
281 | | ...                                     | ${bd_id1}
282 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
283 | | ...                                                | ${tg_to_dut_if1}
284 | | ...                                                | ${dut_node}
285 | | ...                                                | ${dut_to_tg_if1}
286 | | ...                                                | ${bd_id1}
287 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
288 | | ...                                                | ${tg_to_dut_if2}
289 | | ...                                                | ${dut_node}
290 | | ...                                                | ${vhost_if1}
291 | | ...                                                | ${bd_id1}
292 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id2}
293 | | ...                                      | learn=${FALSE}
294 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if2}
295 | | ...                                     | ${bd_id2}
296 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if2}
297 | | ...                                     | ${bd_id2}
298 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
299 | | ...                                                | ${tg_to_dut_if2}
300 | | ...                                                | ${dut_node}
301 | | ...                                                | ${dut_to_tg_if2}
302 | | ...                                                | ${bd_id2}
303 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
304 | | ...                                                | ${tg_to_dut_if1}
305 | | ...                                                | ${dut_node}
306 | | ...                                                | ${vhost_if2}
307 | | ...                                                | ${bd_id2}
308 | | And VM for Vhost L2BD forwarding is setup | ${dut_node} | ${sock1}
309 | | ...                                       | ${sock2}
310 | | Then Send and receive ICMPv4 bidirectionally | ${tg_node} | ${tg_to_dut_if1}
311 | | ...                                          | ${tg_to_dut_if2}
312 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
313 | | ...        | AND          | Show vpp trace dump on all DUTs
314 | | ...        | AND          | Stop and Clear QEMU | ${dut_node} | ${vm_node}
315
316 | TC09: DUT with two L2BDs (static MACs) switches ICMPv6 between TG and VM links
317 | | [Documentation]
318 | | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 configure \
319 | | ... | two L2BDs with static MACs, each with vhost-user i/f to local VM
320 | | ... | and i/f to TG; configure VM to loop pkts back betwen its two
321 | | ... | virtio i/fs. [Ver] Make TG verify ICMPv6 Echo Req pkts are
322 | | ... | switched thru DUT1 and VM in both directions and are correct on
323 | | ... | receive. [Ref]
324 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
325 | | Given Path for 2-node testing is set
326 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
327 | | And Interfaces in 2-node path are up
328 | | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut_node}
329 | | ...                                                     | ${sock1}
330 | | ...                                                     | ${sock2}
331 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id1}
332 | | ...                                      | learn=${FALSE}
333 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if1}
334 | | ...                                     | ${bd_id1}
335 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if1}
336 | | ...                                     | ${bd_id1}
337 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
338 | | ...                                                | ${tg_to_dut_if1}
339 | | ...                                                | ${dut_node}
340 | | ...                                                | ${dut_to_tg_if1}
341 | | ...                                                | ${bd_id1}
342 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
343 | | ...                                                | ${tg_to_dut_if2}
344 | | ...                                                | ${dut_node}
345 | | ...                                                | ${vhost_if1}
346 | | ...                                                | ${bd_id1}
347 | | And Bridge domain on DUT node is created | ${dut_node} | ${bd_id2}
348 | | ...                                      | learn=${FALSE}
349 | | And Interface is added to bridge domain | ${dut_node} | ${dut_to_tg_if2}
350 | | ...                                     | ${bd_id2}
351 | | And Interface is added to bridge domain | ${dut_node} | ${vhost_if2}
352 | | ...                                     | ${bd_id2}
353 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
354 | | ...                                                | ${tg_to_dut_if2}
355 | | ...                                                | ${dut_node}
356 | | ...                                                | ${dut_to_tg_if2}
357 | | ...                                                | ${bd_id2}
358 | | And Destination port is added to L2FIB on DUT node | ${tg_node}
359 | | ...                                                | ${tg_to_dut_if1}
360 | | ...                                                | ${dut_node}
361 | | ...                                                | ${vhost_if2}
362 | | ...                                                | ${bd_id2}
363 | | And VM for Vhost L2BD forwarding is setup | ${dut_node} | ${sock1}
364 | | ...                                       | ${sock2}
365 | | Then Send and receive ICMPv6 bidirectionally | ${tg_node} | ${tg_to_dut_if1}
366 | | ...                                          | ${tg_to_dut_if2}
367 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
368 | | ...        | AND          | Show vpp trace dump on all DUTs
369 | | ...        | AND          | Stop and Clear QEMU | ${dut_node} | ${vm_node}