]>
Commit | Line | Data |
---|---|---|
526cf4e1 JS |
1 | AT_BANNER([packet-type-aware pipeline]) |
2 | ||
3 | AT_SETUP([ptap - triangle bridge setup with L2 and L3 GRE tunnels]) | |
4 | ||
5 | ######################## | |
6 | # GRE tunneling test setup for PTAP bridge | |
7 | # | |
8 | # 192.168.10.10 192.168.10.20 192.168.10.30 | |
9 | # n1 n2 n3 | |
10 | # |ovs-n1 |ovs-n2 |ovs-n3 | |
11 | # +------o------+ +------o------+ +------o------+ | |
12 | # | br-in1 | | br-in2 | | br-in3 | | |
13 | # | | | (PTAP) | | | | |
14 | # +------o------+ +------o------+ +------o------+ | |
15 | # gre gre gre | |
16 | # 10.0.0.1 (10.0.0.2) (10.0.0.3) | |
17 | # (20.0.0.1) 20.0.0.2 (20.0.0.3) | |
18 | # (30.0.0.1) LOCAL (30.0.0.2) LOCAL 30.0.0.3 LOCAL | |
19 | # +-----------o-+ +-----------o-+ +-----------o-+ | |
20 | # | br-p1 | | br-p2 | | br-p3 | | |
21 | # +------o------+ +------o------+ +------o------+ | |
22 | # p1-0 | | p2-0 | p3-0 | |
23 | # p0-1 | | p0-2 | p0-3 | |
24 | # +--o------------------------o-------------------------o--+ | |
25 | # | br0 | | |
26 | # +--------------------------------------------------------+ | |
27 | #" | |
28 | # GRE tunnel ports: | |
29 | # No Bridge Name Packet-type Remote bridge & ports | |
30 | # ----------------------------------------------------------------------- | |
31 | # 1020 br-in1 gre-12 l2 br-in2 2010 (ptap) | |
32 | # 1021 br-in1 gre-12_l3 l3 same | |
33 | # 1030 br-in1 gre-13 l2 br-in3 3010 (l2) | |
34 | # 2010 br-in2 gre-21 ptap br-in1 1020 (l2), 1021 (l3) | |
35 | # 2030 br-in2 gre-23 ptap br-in3 3020 (l2), 3021 (l3) | |
4d7b9a37 ZB |
36 | # 3010 br-in3 gre-31 l2 br-in1 1030 (l2) |
37 | # 3020 br-in3 gre-32 l2 br-in2 2010 (ptap) | |
38 | # 3021 br-in3 gre-32_l3 l3 same | |
526cf4e1 JS |
39 | |
40 | ||
41 | AT_SKIP_IF([test $HAVE_NC = no]) | |
42 | OVS_TRAFFIC_VSWITCHD_START() | |
43 | ||
44 | HWADDR_BRP1=aa:55:00:00:00:01 | |
45 | HWADDR_BRP2=aa:55:00:00:00:02 | |
46 | HWADDR_BRP3=aa:55:00:00:00:03 | |
47 | ||
48 | dnl Create veth ports to connect br0 with br-p1, br-p2 and br-p3 | |
49 | AT_CHECK([ip link add p1-0 type veth peer name p0-1]) | |
50 | AT_CHECK([ip link set p1-0 up]) | |
51 | AT_CHECK([ip link set p0-1 up]) | |
52 | AT_CHECK([ip link set dev p1-0 mtu 3300]) | |
53 | AT_CHECK([ip link set dev p0-1 mtu 3300]) | |
54 | on_exit 'ip link del p0-1' | |
55 | ||
56 | AT_CHECK([ip link add p2-0 type veth peer name p0-2]) | |
57 | AT_CHECK([ip link set p2-0 up]) | |
58 | AT_CHECK([ip link set p0-2 up]) | |
59 | AT_CHECK([ip link set dev p2-0 mtu 3300]) | |
60 | AT_CHECK([ip link set dev p0-2 mtu 3300]) | |
61 | on_exit 'ip link del p0-2' | |
62 | ||
63 | AT_CHECK([ip link add p3-0 type veth peer name p0-3]) | |
64 | AT_CHECK([ip link set p3-0 up]) | |
65 | AT_CHECK([ip link set p0-3 up]) | |
66 | AT_CHECK([ip link set dev p3-0 mtu 3300]) | |
67 | AT_CHECK([ip link set dev p0-3 mtu 3300]) | |
68 | on_exit 'ip link del p0-3' | |
69 | ||
70 | # Setup bridge infrastructure | |
71 | AT_CHECK([ | |
72 | ovs-vsctl add-br br-in1 -- \ | |
73 | set bridge br-in1 datapath_type=netdev fail-mode=standalone | |
74 | ovs-vsctl add-br br-in2 -- \ | |
75 | set bridge br-in2 datapath_type=netdev fail-mode=standalone | |
76 | ovs-vsctl add-br br-in3 -- \ | |
77 | set bridge br-in3 datapath_type=netdev fail-mode=standalone | |
78 | ovs-vsctl add-br br-p1 -- \ | |
79 | set bridge br-p1 datapath_type=netdev fail-mode=standalone other-config:hwaddr=$HWADDR_BRP1 | |
80 | ovs-vsctl add-br br-p2 -- \ | |
81 | set bridge br-p2 datapath_type=netdev fail-mode=standalone other-config:hwaddr=$HWADDR_BRP2 | |
82 | ovs-vsctl add-br br-p3 -- \ | |
83 | set bridge br-p3 datapath_type=netdev fail-mode=standalone other-config:hwaddr=$HWADDR_BRP3 | |
84 | ||
85 | ovs-vsctl add-port br-p1 p1-0 -- set interface p1-0 ofport_request=2 | |
86 | ovs-vsctl add-port br-p2 p2-0 -- set interface p2-0 ofport_request=2 | |
87 | ovs-vsctl add-port br-p3 p3-0 -- set interface p3-0 ofport_request=2 | |
88 | ovs-vsctl add-port br0 p0-1 -- set interface p0-1 ofport_request=10 | |
89 | ovs-vsctl add-port br0 p0-2 -- set interface p0-2 ofport_request=20 | |
90 | ovs-vsctl add-port br0 p0-3 -- set interface p0-3 ofport_request=30 | |
91 | ||
92 | # Populate the MAC table of br0 | |
93 | ovs-ofctl del-flows br0 | |
94 | ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP1,actions=10 | |
95 | ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP2,actions=20 | |
96 | ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP3,actions=30 | |
97 | ||
98 | ovs-ofctl del-flows br-in1 | |
99 | ovs-ofctl del-flows br-in2 | |
100 | ovs-ofctl del-flows br-in3 | |
101 | ovs-ofctl del-flows br-p1 | |
102 | ovs-ofctl del-flows br-p2 | |
103 | ovs-ofctl del-flows br-p3 | |
104 | ], [0]) | |
105 | ||
106 | ### Setup GRE tunnels | |
107 | AT_CHECK([ | |
108 | ovs-vsctl add-port br-in1 gre12 -- \ | |
109 | set interface gre12 type=gre options:remote_ip=10.0.0.2 ofport_request=1020 | |
110 | ovs-vsctl add-port br-in1 gre12_l3 -- \ | |
111 | set interface gre12_l3 type=gre options:remote_ip=10.0.0.2 ofport_request=1021 options:packet_type=legacy_l3 | |
112 | ovs-vsctl add-port br-in1 gre13 -- \ | |
113 | set interface gre13 type=gre options:remote_ip=10.0.0.3 ofport_request=1030 | |
114 | ||
115 | ovs-vsctl add-port br-in2 gre21 -- \ | |
116 | set interface gre21 type=gre options:remote_ip=20.0.0.1 ofport_request=2010 options:packet_type=ptap | |
117 | ovs-vsctl add-port br-in2 gre23 -- \ | |
118 | set interface gre23 type=gre options:remote_ip=20.0.0.3 ofport_request=2030 options:packet_type=ptap | |
119 | ||
120 | ovs-vsctl add-port br-in3 gre31 -- \ | |
121 | set interface gre31 type=gre options:remote_ip=30.0.0.1 ofport_request=3010 | |
122 | ovs-vsctl add-port br-in3 gre32 -- \ | |
123 | set interface gre32 type=gre options:remote_ip=30.0.0.2 ofport_request=3020 | |
124 | ovs-vsctl add-port br-in3 gre32_l3 -- \ | |
125 | set interface gre32_l3 type=gre options:remote_ip=30.0.0.2 ofport_request=3021 options:packet_type=legacy_l3 | |
126 | ], [0], [stdout]) | |
127 | ||
128 | AT_CHECK([ | |
129 | ip addr add 10.0.0.1/24 dev br-p1 | |
130 | ip link set br-p1 up | |
131 | ], [0], [stdout]) | |
61069e7b | 132 | OVS_WAIT_UNTIL([ovs-appctl ovs/route/show | grep -q br-p1]) |
526cf4e1 JS |
133 | |
134 | AT_CHECK([ | |
135 | ovs-appctl ovs/route/add 10.0.0.0/24 br-p1 | |
136 | ovs-appctl tnl/arp/set br-p1 10.0.0.1 $HWADDR_BRP1 | |
137 | ovs-appctl tnl/arp/set br-p1 10.0.0.2 $HWADDR_BRP2 | |
138 | ovs-appctl tnl/arp/set br-p1 10.0.0.3 $HWADDR_BRP3 | |
139 | ], [0], [stdout]) | |
140 | ||
141 | AT_CHECK([ | |
142 | ip addr add 20.0.0.2/24 dev br-p2 | |
143 | ip link set br-p2 up | |
144 | ], [0], [stdout]) | |
61069e7b | 145 | OVS_WAIT_UNTIL([ovs-appctl ovs/route/show | grep -q br-p2]) |
526cf4e1 JS |
146 | |
147 | AT_CHECK([ | |
148 | ovs-appctl ovs/route/add 20.0.0.0/24 br-p2 | |
149 | ovs-appctl tnl/arp/set br-p2 20.0.0.1 $HWADDR_BRP1 | |
150 | ovs-appctl tnl/arp/set br-p2 20.0.0.2 $HWADDR_BRP2 | |
151 | ovs-appctl tnl/arp/set br-p2 20.0.0.3 $HWADDR_BRP3 | |
152 | ], [0], [stdout]) | |
153 | ||
154 | AT_CHECK([ | |
155 | ip addr add 30.0.0.3/24 dev br-p3 | |
156 | ip link set br-p3 up | |
157 | ], [0], [stdout]) | |
61069e7b | 158 | OVS_WAIT_UNTIL([ovs-appctl ovs/route/show | grep -q br-p3]) |
526cf4e1 JS |
159 | |
160 | AT_CHECK([ | |
161 | ovs-appctl ovs/route/add 30.0.0.0/24 br-p3 | |
162 | ovs-appctl tnl/arp/set br-p3 30.0.0.1 $HWADDR_BRP1 | |
163 | ovs-appctl tnl/arp/set br-p3 30.0.0.2 $HWADDR_BRP2 | |
164 | ovs-appctl tnl/arp/set br-p3 30.0.0.3 $HWADDR_BRP3 | |
165 | ], [0], [stdout]) | |
166 | ||
167 | AT_CHECK([ | |
168 | ovs-appctl ovs/route/show | grep User: | |
169 | ], [0], [dnl | |
170 | User: 10.0.0.0/24 dev br-p1 SRC 10.0.0.1 | |
171 | User: 20.0.0.0/24 dev br-p2 SRC 20.0.0.2 | |
172 | User: 30.0.0.0/24 dev br-p3 SRC 30.0.0.3 | |
173 | ]) | |
174 | ||
175 | AT_CHECK([ | |
176 | ovs-appctl tnl/neigh/show | grep br-p | sort | |
177 | ], [0], [stdout]) | |
178 | ||
179 | ||
180 | ### Flows in br-p<x>to twist TEP IP addresses in tunnel IP headers | |
181 | AT_CHECK([ | |
4d7b9a37 | 182 | ovs-ofctl add-flow br-p1 in_port:LOCAL,ip,actions=2 |
526cf4e1 JS |
183 | ovs-ofctl add-flow br-p1 in_port:2,ip,nw_dst:20.0.0.1,actions=mod_nw_dst:10.0.0.1,mod_nw_src:10.0.0.2,LOCAL |
184 | ovs-ofctl add-flow br-p1 in_port:2,ip,nw_dst:30.0.0.1,actions=mod_nw_dst:10.0.0.1,mod_nw_src:10.0.0.3,LOCAL | |
185 | ||
4d7b9a37 | 186 | ovs-ofctl add-flow br-p2 in_port:LOCAL,ip,actions=2 |
526cf4e1 JS |
187 | ovs-ofctl add-flow br-p2 in_port:2,ip,nw_dst:10.0.0.2,actions=mod_nw_dst:20.0.0.2,mod_nw_src:20.0.0.1,LOCAL |
188 | ovs-ofctl add-flow br-p2 in_port:2,ip,nw_dst:30.0.0.2,actions=mod_nw_dst:20.0.0.2,mod_nw_src:20.0.0.3,LOCAL | |
189 | ||
4d7b9a37 | 190 | ovs-ofctl add-flow br-p3 in_port:LOCAL,ip,actions=2 |
526cf4e1 JS |
191 | ovs-ofctl add-flow br-p3 in_port:2,ip,nw_dst:10.0.0.3,actions=mod_nw_dst:30.0.0.3,mod_nw_src:30.0.0.1,LOCAL |
192 | ovs-ofctl add-flow br-p3 in_port:2,ip,nw_dst:20.0.0.3,actions=mod_nw_dst:30.0.0.3,mod_nw_src:30.0.0.2,LOCAL | |
193 | ], [0]) | |
194 | ||
195 | # Strips 'n_packets=...' from ovs-ofctl output. | |
196 | strip_n_packets () { | |
197 | sed 's/n_packets=[[0-9]]*, //' | |
198 | } | |
199 | ||
200 | # Strips 'n_bytes=...' from ovs-ofctl output. | |
201 | strip_n_bytes () { | |
202 | sed 's/n_bytes=[[0-9]]*, //' | |
203 | } | |
204 | ||
205 | AT_CHECK([ | |
206 | ovs-ofctl dump-flows br-p1 | ofctl_strip | strip_n_packets | strip_n_bytes | sort | grep actions | |
207 | ovs-ofctl dump-flows br-p2 | ofctl_strip | strip_n_packets | strip_n_bytes | sort | grep actions | |
208 | ovs-ofctl dump-flows br-p3 | ofctl_strip | strip_n_packets | strip_n_bytes | sort | grep actions | |
209 | ], [0], [dnl | |
526cf4e1 JS |
210 | ip,in_port=2,nw_dst=20.0.0.1 actions=mod_nw_dst:10.0.0.1,mod_nw_src:10.0.0.2,LOCAL |
211 | ip,in_port=2,nw_dst=30.0.0.1 actions=mod_nw_dst:10.0.0.1,mod_nw_src:10.0.0.3,LOCAL | |
4d7b9a37 | 212 | ip,in_port=LOCAL actions=output:2 |
526cf4e1 JS |
213 | ip,in_port=2,nw_dst=10.0.0.2 actions=mod_nw_dst:20.0.0.2,mod_nw_src:20.0.0.1,LOCAL |
214 | ip,in_port=2,nw_dst=30.0.0.2 actions=mod_nw_dst:20.0.0.2,mod_nw_src:20.0.0.3,LOCAL | |
4d7b9a37 | 215 | ip,in_port=LOCAL actions=output:2 |
526cf4e1 JS |
216 | ip,in_port=2,nw_dst=10.0.0.3 actions=mod_nw_dst:30.0.0.3,mod_nw_src:30.0.0.1,LOCAL |
217 | ip,in_port=2,nw_dst=20.0.0.3 actions=mod_nw_dst:30.0.0.3,mod_nw_src:30.0.0.2,LOCAL | |
4d7b9a37 | 218 | ip,in_port=LOCAL actions=output:2 |
526cf4e1 JS |
219 | ]) |
220 | ||
221 | ### Setup test ports for traffic injection | |
222 | N1_IP=192.168.10.10 | |
223 | N2_IP=192.168.10.20 | |
224 | N3_IP=192.168.10.30 | |
225 | N1_MAC=aa:55:aa:55:00:01 | |
226 | N2_MAC=aa:55:aa:55:00:02 | |
227 | N3_MAC=aa:55:aa:55:00:03 | |
228 | N1_OFPORT=10 | |
229 | N2_OFPORT=20 | |
230 | N3_OFPORT=30 | |
231 | ||
232 | ADD_NAMESPACES(ns1, ns2, ns3) | |
233 | ADD_VETH(n1, ns1, br-in1, "$N1_IP/24", $N1_MAC) | |
234 | ADD_VETH(n2, ns2, br-in2, "$N2_IP/24", $N2_MAC) | |
235 | ADD_VETH(n3, ns3, br-in3, "$N3_IP/24", $N3_MAC) | |
236 | ||
237 | NS_EXEC([ns1], [arp -s $N2_IP $N2_MAC]) | |
238 | NS_EXEC([ns1], [arp -s $N3_IP $N3_MAC]) | |
239 | ||
240 | NS_EXEC([ns2], [arp -s $N1_IP $N1_MAC]) | |
241 | NS_EXEC([ns2], [arp -s $N3_IP $N3_MAC]) | |
242 | ||
243 | NS_EXEC([ns3], [arp -s $N2_IP $N2_MAC]) | |
244 | NS_EXEC([ns3], [arp -s $N1_IP $N1_MAC]) | |
245 | ||
246 | AT_CHECK([ | |
247 | ovs-vsctl set interface ovs-n1 ofport_request=$N1_OFPORT | |
248 | ovs-vsctl set interface ovs-n2 ofport_request=$N2_OFPORT | |
249 | ovs-vsctl set interface ovs-n3 ofport_request=$N3_OFPORT | |
250 | ], [0]) | |
251 | ||
252 | #N1_DPPORT=$(ovs-appctl dpif/show | grep "n1 10" | sed 's|.*/\([[0-9]]*\):.*|\1|') | |
253 | #N2_DPPORT=$(ovs-appctl dpif/show | grep "n2 20" | sed 's|.*/\([[0-9]]*\):.*|\1|') | |
254 | #N3_DPPORT=$(ovs-appctl dpif/show | grep "n3 30" | sed 's|.*/\([[0-9]]*\):.*|\1|') | |
255 | ||
256 | ### Verify datapath configuration | |
257 | AT_CHECK([ | |
51528c29 | 258 | ovs-appctl dpif/show | grep -v hit |
526cf4e1 | 259 | ], [0], [dnl |
51528c29 IM |
260 | br-in1: |
261 | br-in1 65534/2: (tap) | |
262 | gre12 1020/14: (gre: remote_ip=10.0.0.2) | |
263 | gre12_l3 1021/14: (gre: packet_type=legacy_l3, remote_ip=10.0.0.2) | |
264 | gre13 1030/14: (gre: remote_ip=10.0.0.3) | |
265 | ovs-n1 10/15: (system) | |
266 | br-in2: | |
267 | br-in2 65534/3: (tap) | |
268 | gre21 2010/14: (gre: packet_type=ptap, remote_ip=20.0.0.1) | |
269 | gre23 2030/14: (gre: packet_type=ptap, remote_ip=20.0.0.3) | |
270 | ovs-n2 20/16: (system) | |
271 | br-in3: | |
272 | br-in3 65534/4: (tap) | |
273 | gre31 3010/14: (gre: remote_ip=30.0.0.1) | |
274 | gre32 3020/14: (gre: remote_ip=30.0.0.2) | |
275 | gre32_l3 3021/14: (gre: packet_type=legacy_l3, remote_ip=30.0.0.2) | |
276 | ovs-n3 30/17: (system) | |
277 | br-p1: | |
278 | br-p1 65534/5: (tap) | |
279 | p1-0 2/8: (system) | |
280 | br-p2: | |
281 | br-p2 65534/6: (tap) | |
282 | p2-0 2/9: (system) | |
283 | br-p3: | |
284 | br-p3 65534/7: (tap) | |
285 | p3-0 2/10: (system) | |
286 | br0: | |
287 | br0 65534/1: (tap) | |
288 | p0-1 10/11: (system) | |
289 | p0-2 20/12: (system) | |
290 | p0-3 30/13: (system) | |
526cf4e1 JS |
291 | ]) |
292 | ||
293 | ### Test L3 forwarding flows | |
294 | AT_CHECK([ | |
295 | ovs-ofctl add-flow br-in1 ip,nw_dst=$N1_IP,actions=mod_dl_dst:$N1_MAC,$N1_OFPORT # Local route to N1 | |
296 | ovs-ofctl add-flow br-in1 ip,nw_dst=$N2_IP,actions=1020 # Route to N2 via the L2 tunnel to br-in2 | |
297 | ovs-ofctl add-flow br-in1 ip,nw_dst=$N3_IP,actions=1030 # Route to N3 direct through L2 tunnel | |
298 | ||
299 | ovs-ofctl add-flow br-in2 ip,nw_dst=$N2_IP,actions=mod_dl_dst:$N2_MAC,$N2_OFPORT # Local route to N2 for ethernet packets | |
300 | ovs-ofctl add-flow br-in2 ip,nw_dst=$N1_IP,actions=2010 # Route to N1 for ethernet packet | |
301 | ovs-ofctl add-flow br-in2 packet_type=\(1,0x800\),nw_dst=$N1_IP,actions=2010 # Route to N1 for IP packets | |
302 | ovs-ofctl add-flow br-in2 ip,nw_dst=$N3_IP,actions=2010 # Indirect route to N3 via br-in1 for ethernet packet | |
303 | ovs-ofctl add-flow br-in2 packet_type=\(1,0x800\),nw_dst=$N3_IP,actions=2030 # Direct route to N3 for IP packets | |
304 | ||
305 | ovs-ofctl add-flow br-in3 ip,nw_dst=$N3_IP,actions=mod_dl_dst:$N3_MAC,$N3_OFPORT # Local route to N1 | |
306 | ovs-ofctl add-flow br-in3 ip,nw_dst=$N2_IP,actions=3020 # Route to N2 via the L2 tunnel | |
307 | ovs-ofctl add-flow br-in3 ip,nw_dst=$N1_IP,actions=3021 # Route to N1 via br-in2 through L3 tunnel | |
308 | ], [0]) | |
309 | ||
310 | AT_CHECK([ | |
311 | ovs-ofctl dump-flows br-in1 | ofctl_strip | strip_n_packets | strip_n_bytes | sort | grep actions | |
312 | ], [0], [dnl | |
313 | ip,nw_dst=192.168.10.10 actions=mod_dl_dst:aa:55:aa:55:00:01,output:10 | |
314 | ip,nw_dst=192.168.10.20 actions=output:1020 | |
315 | ip,nw_dst=192.168.10.30 actions=output:1030 | |
316 | ]) | |
317 | ||
318 | AT_CHECK([ | |
319 | ovs-ofctl dump-flows br-in2 | ofctl_strip | strip_n_packets | strip_n_bytes | sort | grep actions | |
320 | ], [0], [dnl | |
321 | ip,nw_dst=192.168.10.10 actions=output:2010 | |
322 | ip,nw_dst=192.168.10.20 actions=mod_dl_dst:aa:55:aa:55:00:02,output:20 | |
323 | ip,nw_dst=192.168.10.30 actions=output:2010 | |
324 | packet_type=(1,0x800),nw_dst=192.168.10.10 actions=output:2010 | |
325 | packet_type=(1,0x800),nw_dst=192.168.10.30 actions=output:2030 | |
326 | ]) | |
327 | ||
328 | AT_CHECK([ | |
329 | ovs-ofctl dump-flows br-in3 | ofctl_strip | strip_n_packets | strip_n_bytes | sort | grep actions | |
330 | ], [0], [dnl | |
331 | ip,nw_dst=192.168.10.10 actions=output:3021 | |
332 | ip,nw_dst=192.168.10.20 actions=output:3020 | |
333 | ip,nw_dst=192.168.10.30 actions=mod_dl_dst:aa:55:aa:55:00:03,output:30 | |
334 | ]) | |
335 | ||
336 | ||
526cf4e1 JS |
337 | # Ping between N1 and N3, via the L2 GRE tunnel between br-in1 and br-in3 |
338 | NS_CHECK_EXEC([ns1], [ping -q -c 3 -i 0.3 -w 2 $N3_IP | FORMAT_PING], [0], [dnl | |
339 | 3 packets transmitted, 3 received, 0% packet loss, time 0ms | |
340 | ]) | |
341 | ||
342 | sleep 1 | |
343 | ||
344 | AT_CHECK([ | |
4d7b9a37 ZB |
345 | ovs-ofctl dump-flows br-in1 | ofctl_strip | sort | grep n_packets |
346 | ], [0], [dnl | |
347 | n_packets=3, n_bytes=252, ip,nw_dst=192.168.10.10 actions=mod_dl_dst:aa:55:aa:55:00:01,output:10 | |
348 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.30 actions=output:1030 | |
349 | ]) | |
350 | ||
351 | AT_CHECK([ | |
352 | ovs-ofctl dump-flows br-in2 | ofctl_strip | sort | grep n_packets | |
353 | ], [0], [dnl | |
354 | n_packets=3, n_bytes=252, packet_type=(1,0x800),nw_dst=192.168.10.10 actions=output:2010 | |
355 | ]) | |
356 | ||
357 | AT_CHECK([ | |
358 | ovs-ofctl dump-flows br-in3 | ofctl_strip | sort | grep n_packets | |
359 | ], [0], [dnl | |
360 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.10 actions=output:3021 | |
361 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.30 actions=mod_dl_dst:aa:55:aa:55:00:03,output:30 | |
526cf4e1 JS |
362 | ]) |
363 | ||
526cf4e1 JS |
364 | |
365 | # Ping between N1 and N2, via the L2 GRE tunnel between br-in1 and br-in2 | |
366 | NS_CHECK_EXEC([ns1], [ping -q -c 3 -i 0.3 -w 2 $N2_IP | FORMAT_PING], [0], [dnl | |
367 | 3 packets transmitted, 3 received, 0% packet loss, time 0ms | |
368 | ]) | |
369 | ||
370 | sleep 1 | |
371 | ||
372 | AT_CHECK([ | |
4d7b9a37 ZB |
373 | ovs-ofctl dump-flows br-in1 | ofctl_strip | sort | grep n_packets |
374 | ], [0], [dnl | |
375 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.20 actions=output:1020 | |
376 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.30 actions=output:1030 | |
377 | n_packets=6, n_bytes=546, ip,nw_dst=192.168.10.10 actions=mod_dl_dst:aa:55:aa:55:00:01,output:10 | |
378 | ]) | |
379 | ||
380 | AT_CHECK([ | |
381 | ovs-ofctl dump-flows br-in2 | ofctl_strip | sort | grep n_packets | |
382 | ], [0], [dnl | |
383 | n_packets=3, n_bytes=252, packet_type=(1,0x800),nw_dst=192.168.10.10 actions=output:2010 | |
384 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.10 actions=output:2010 | |
385 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.20 actions=mod_dl_dst:aa:55:aa:55:00:02,output:20 | |
386 | ]) | |
387 | ||
388 | AT_CHECK([ | |
389 | ovs-ofctl dump-flows br-in3 | ofctl_strip | sort | grep n_packets | |
390 | ], [0], [dnl | |
391 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.10 actions=output:3021 | |
392 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.30 actions=mod_dl_dst:aa:55:aa:55:00:03,output:30 | |
526cf4e1 JS |
393 | ]) |
394 | ||
526cf4e1 JS |
395 | |
396 | # Ping between N3 and N2, via the L3 GRE tunnel between br-in3 and br-in2 | |
397 | NS_CHECK_EXEC([ns3], [ping -q -c 3 -i 0.3 -w 2 $N1_IP | FORMAT_PING], [0], [dnl | |
398 | 3 packets transmitted, 3 received, 0% packet loss, time 0ms | |
399 | ]) | |
400 | ||
401 | sleep 1 | |
402 | ||
403 | AT_CHECK([ | |
4d7b9a37 ZB |
404 | ovs-ofctl dump-flows br-in1 | ofctl_strip | sort | grep n_packets |
405 | ], [0], [dnl | |
406 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.20 actions=output:1020 | |
407 | n_packets=6, n_bytes=588, ip,nw_dst=192.168.10.30 actions=output:1030 | |
408 | n_packets=9, n_bytes=798, ip,nw_dst=192.168.10.10 actions=mod_dl_dst:aa:55:aa:55:00:01,output:10 | |
409 | ]) | |
410 | ||
411 | AT_CHECK([ | |
412 | ovs-ofctl dump-flows br-in2 | ofctl_strip | sort | grep n_packets | |
413 | ], [0], [dnl | |
414 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.10 actions=output:2010 | |
415 | n_packets=3, n_bytes=294, ip,nw_dst=192.168.10.20 actions=mod_dl_dst:aa:55:aa:55:00:02,output:20 | |
416 | n_packets=6, n_bytes=504, packet_type=(1,0x800),nw_dst=192.168.10.10 actions=output:2010 | |
526cf4e1 JS |
417 | ]) |
418 | ||
4d7b9a37 ZB |
419 | AT_CHECK([ |
420 | ovs-ofctl dump-flows br-in3 | ofctl_strip | sort | grep n_packets | |
421 | ], [0], [dnl | |
422 | n_packets=6, n_bytes=588, ip,nw_dst=192.168.10.10 actions=output:3021 | |
423 | n_packets=6, n_bytes=588, ip,nw_dst=192.168.10.30 actions=mod_dl_dst:aa:55:aa:55:00:03,output:30 | |
424 | ]) | |
425 | ||
426 | ||
526cf4e1 JS |
427 | OVS_TRAFFIC_VSWITCHD_STOP |
428 | AT_CLEANUP |