1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294 | [root@ovn1 ~]# ovn-sbctl lflow-list
Datapath: "r1" (1287fc2b-1e3b-4bf9-8cf8-db890e663dc3) Pipeline: ingress
table=0 (lr_in_admission ), priority=110 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && flags.tunnel_rx == 1), action=(drop;)
table=0 (lr_in_admission ), priority=100 , match=(vlan.present || eth.src[40]), action=(drop;)
table=0 (lr_in_admission ), priority=50 , match=(eth.dst == 00:00:00:00:00:ff && inport == "r1s0"), action=(xreg0[0..47] = 00:00:00:00:00:ff; next;)
table=0 (lr_in_admission ), priority=50 , match=(eth.dst == 00:00:00:00:01:ff && inport == "r1s1"), action=(xreg0[0..47] = 00:00:00:00:01:ff; next;)
table=0 (lr_in_admission ), priority=50 , match=(eth.mcast && inport == "r1s0"), action=(xreg0[0..47] = 00:00:00:00:00:ff; next;)
table=0 (lr_in_admission ), priority=50 , match=(eth.mcast && inport == "r1s1"), action=(xreg0[0..47] = 00:00:00:00:01:ff; next;)
table=0 (lr_in_admission ), priority=0 , match=(1), action=(drop;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(arp.op == 2), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "r1s0" && arp.spa == 10.0.0.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "r1s1" && arp.spa == 10.0.1.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_na), action=(reg9[2] = lookup_nd(inport, nd.target, nd.tll); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_ns), action=(reg9[2] = lookup_nd(inport, ip6.src, nd.sll); next;)
table=1 (lr_in_lookup_neighbor), priority=0 , match=(1), action=(reg9[2] = 1; next;)
table=2 (lr_in_learn_neighbor), priority=100 , match=(reg9[2] == 1), action=(mac_cache_use; next;)
table=2 (lr_in_learn_neighbor), priority=95 , match=(nd_na && nd.tll == 0), action=(put_nd(inport, nd.target, eth.src); next;)
table=2 (lr_in_learn_neighbor), priority=95 , match=(nd_ns && (ip6.src == 0 || nd.sll == 0)), action=(next;)
table=2 (lr_in_learn_neighbor), priority=90 , match=(arp), action=(put_arp(inport, arp.spa, arp.sha); next;)
table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_na), action=(put_nd(inport, nd.target, nd.tll); next;)
table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_ns), action=(put_nd(inport, ip6.src, nd.sll); next;)
table=2 (lr_in_learn_neighbor), priority=0 , match=(1), action=(drop;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip4.src == {10.0.0.254, 10.0.0.255} && reg9[0] == 0), action=(drop;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip4.src == {10.0.1.254, 10.0.1.255} && reg9[0] == 0), action=(drop;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip4.src_mcast ||ip4.src == 255.255.255.255 || ip4.src == 127.0.0.0/8 || ip4.dst == 127.0.0.0/8 || ip4.src == 0.0.0.0/8 || ip4.dst == 0.0.0.0/8), action=(drop;)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s0" && arp.op == 1 && arp.tpa == 10.0.0.254 && arp.spa == 10.0.0.0/24), action=(eth.dst = eth.src; eth.src = xreg0[0..47]; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = xreg0[0..47]; arp.tpa <-> arp.spa; outport = inport; flags.loopback = 1; output;)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s0" && ip6.dst == {fe80::200:ff:fe00:ff, ff02::1:ff00:ff} && nd_ns && nd.target == fe80::200:ff:fe00:ff), action=(nd_na_router { eth.src = xreg0[0..47]; ip6.src = nd.target; nd.tll = xreg0[0..47]; outport = inport; flags.loopback = 1; output; };)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s1" && arp.op == 1 && arp.tpa == 10.0.1.254 && arp.spa == 10.0.1.0/24), action=(eth.dst = eth.src; eth.src = xreg0[0..47]; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = xreg0[0..47]; arp.tpa <-> arp.spa; outport = inport; flags.loopback = 1; output;)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s1" && ip6.dst == {fe80::200:ff:fe00:1ff, ff02::1:ff00:1ff} && nd_ns && nd.target == fe80::200:ff:fe00:1ff), action=(nd_na_router { eth.src = xreg0[0..47]; ip6.src = nd.target; nd.tll = xreg0[0..47]; outport = inport; flags.loopback = 1; output; };)
table=3 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 10.0.0.254 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 10.0.1.254 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:ff:fe00:1ff && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:ff:fe00:ff && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=85 , match=(arp || nd), action=(drop;)
table=3 (lr_in_ip_input ), priority=84 , match=(nd_rs || nd_ra), action=(next;)
table=3 (lr_in_ip_input ), priority=83 , match=(ip6.mcast_rsvd), action=(drop;)
table=3 (lr_in_ip_input ), priority=82 , match=(ip4.mcast || ip6.mcast), action=(drop;)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.0.254 && !ip.later_frag && sctp), action=(sctp_abort {eth.dst <-> eth.src; ip4.dst <-> ip4.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.0.254 && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip4.dst <-> ip4.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.0.254 && !ip.later_frag && udp), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.1.254 && !ip.later_frag && sctp), action=(sctp_abort {eth.dst <-> eth.src; ip4.dst <-> ip4.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.1.254 && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip4.dst <-> ip4.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.1.254 && !ip.later_frag && udp), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:1ff && !ip.later_frag && sctp), action=(sctp_abort {eth.dst <-> eth.src; ip6.dst <-> ip6.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:1ff && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip6.dst <-> ip6.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:1ff && !ip.later_frag && udp), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 4; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:ff && !ip.later_frag && sctp), action=(sctp_abort {eth.dst <-> eth.src; ip6.dst <-> ip6.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:ff && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip6.dst <-> ip6.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:ff && !ip.later_frag && udp), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 4; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip4 && ip4.dst == 10.0.0.254 && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 2; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip4 && ip4.dst == 10.0.1.254 && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 2; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:1ff && !ip.later_frag), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:ff && !ip.later_frag), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {10.0.0.254}), action=(drop;)
table=3 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {10.0.1.254}), action=(drop;)
table=3 (lr_in_ip_input ), priority=60 , match=(ip6.dst == {fe80::200:ff:fe00:1ff}), action=(drop;)
table=3 (lr_in_ip_input ), priority=60 , match=(ip6.dst == {fe80::200:ff:fe00:ff}), action=(drop;)
table=3 (lr_in_ip_input ), priority=50 , match=(eth.bcast), action=(drop;)
table=3 (lr_in_ip_input ), priority=32 , match=(ip.ttl == {0, 1} && !ip.later_frag && (ip4.mcast || ip6.mcast)), action=(drop;)
table=3 (lr_in_ip_input ), priority=31 , match=(inport == "r1s0" && ip4 && ip.ttl == {0, 1} && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; icmp4.type = 11; /* Time exceeded */ icmp4.code = 0; /* TTL exceeded in transit */ ip4.dst = ip4.src; ip4.src = 10.0.0.254 ; ip.ttl = 254; outport = "r1s0"; flags.loopback = 1; output; };)
table=3 (lr_in_ip_input ), priority=31 , match=(inport == "r1s1" && ip4 && ip.ttl == {0, 1} && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; icmp4.type = 11; /* Time exceeded */ icmp4.code = 0; /* TTL exceeded in transit */ ip4.dst = ip4.src; ip4.src = 10.0.1.254 ; ip.ttl = 254; outport = "r1s1"; flags.loopback = 1; output; };)
table=3 (lr_in_ip_input ), priority=30 , match=(ip.ttl == {0, 1}), action=(drop;)
table=3 (lr_in_ip_input ), priority=0 , match=(1), action=(next;)
table=4 (lr_in_dhcp_relay_req), priority=0 , match=(1), action=(next;)
table=5 (lr_in_unsnat ), priority=0 , match=(1), action=(next;)
table=6 (lr_in_post_unsnat ), priority=0 , match=(1), action=(next;)
table=7 (lr_in_defrag ), priority=0 , match=(1), action=(next;)
table=8 (lr_in_lb_aff_check ), priority=0 , match=(1), action=(next;)
table=9 (lr_in_dnat ), priority=0 , match=(1), action=(next;)
table=10(lr_in_lb_aff_learn ), priority=0 , match=(1), action=(next;)
table=11(lr_in_ecmp_stateful), priority=0 , match=(1), action=(next;)
table=12(lr_in_nd_ra_options), priority=0 , match=(1), action=(next;)
table=13(lr_in_nd_ra_response), priority=0 , match=(1), action=(next;)
table=14(lr_in_ip_routing_pre), priority=0 , match=(1), action=(reg7 = 0; next;)
table=15(lr_in_ip_routing ), priority=10550, match=(nd_rs || nd_ra), action=(drop;)
table=15(lr_in_ip_routing ), priority=518 , match=(inport == "r1s0" && ip6.dst == fe80::/64), action=(ip.ttl--; reg8[0..15] = 0; xxreg0 = ip6.dst; xxreg1 = fe80::200:ff:fe00:ff; eth.src = 00:00:00:00:00:ff; outport = "r1s0"; flags.loopback = 1; reg9[9] = 0; next;)
table=15(lr_in_ip_routing ), priority=518 , match=(inport == "r1s1" && ip6.dst == fe80::/64), action=(ip.ttl--; reg8[0..15] = 0; xxreg0 = ip6.dst; xxreg1 = fe80::200:ff:fe00:1ff; eth.src = 00:00:00:00:01:ff; outport = "r1s1"; flags.loopback = 1; reg9[9] = 0; next;)
table=15(lr_in_ip_routing ), priority=198 , match=(ip4.dst == 10.0.0.0/24), action=(ip.ttl--; reg8[0..15] = 0; reg0 = ip4.dst; reg5 = 10.0.0.254; eth.src = 00:00:00:00:00:ff; outport = "r1s0"; flags.loopback = 1; reg9[9] = 1; next;)
table=15(lr_in_ip_routing ), priority=198 , match=(ip4.dst == 10.0.1.0/24), action=(ip.ttl--; reg8[0..15] = 0; reg0 = ip4.dst; reg5 = 10.0.1.254; eth.src = 00:00:00:00:01:ff; outport = "r1s1"; flags.loopback = 1; reg9[9] = 1; next;)
table=15(lr_in_ip_routing ), priority=0 , match=(1), action=(drop;)
table=16(lr_in_ip_routing_ecmp), priority=150 , match=(reg8[0..15] == 0), action=(next;)
table=16(lr_in_ip_routing_ecmp), priority=0 , match=(1), action=(drop;)
table=17(lr_in_policy ), priority=0 , match=(1), action=(reg8[0..15] = 0; next;)
table=18(lr_in_policy_ecmp ), priority=150 , match=(reg8[0..15] == 0), action=(next;)
table=18(lr_in_policy_ecmp ), priority=0 , match=(1), action=(drop;)
table=19(lr_in_dhcp_relay_resp_chk), priority=0 , match=(1), action=(next;)
table=20(lr_in_dhcp_relay_resp), priority=0 , match=(1), action=(next;)
table=21(lr_in_arp_resolve ), priority=500 , match=(ip4.mcast || ip6.mcast), action=(next;)
table=21(lr_in_arp_resolve ), priority=1 , match=(reg9[9] == 0), action=(get_nd(outport, xxreg0); next;)
table=21(lr_in_arp_resolve ), priority=1 , match=(reg9[9] == 1), action=(get_arp(outport, reg0); next;)
table=21(lr_in_arp_resolve ), priority=0 , match=(1), action=(drop;)
table=22(lr_in_chk_pkt_len ), priority=0 , match=(1), action=(next;)
table=23(lr_in_larger_pkts ), priority=0 , match=(1), action=(next;)
table=24(lr_in_gw_redirect ), priority=0 , match=(1), action=(next;)
table=25(lr_in_network_id ), priority=110 , match=(outport == "r1s0" && ip4 && reg0 == 10.0.0.254/24), action=(flags.network_id = 0; next;)
table=25(lr_in_network_id ), priority=110 , match=(outport == "r1s1" && ip4 && reg0 == 10.0.1.254/24), action=(flags.network_id = 0; next;)
table=25(lr_in_network_id ), priority=105 , match=(1), action=(flags.network_id = 0; next;)
table=25(lr_in_network_id ), priority=0 , match=(1), action=(next;)
table=26(lr_in_arp_request ), priority=100 , match=(eth.dst == 00:00:00:00:00:00 && reg9[9] == 0), action=(nd_ns { nd.target = xxreg0; output; }; output;)
table=26(lr_in_arp_request ), priority=100 , match=(eth.dst == 00:00:00:00:00:00 && reg9[9] == 1), action=(arp { eth.dst = ff:ff:ff:ff:ff:ff; arp.spa = reg5; arp.tpa = reg0; arp.op = 1; output; }; output;)
table=26(lr_in_arp_request ), priority=0 , match=(1), action=(output;)
Datapath: "r1" (1287fc2b-1e3b-4bf9-8cf8-db890e663dc3) Pipeline: egress
table=0 (lr_out_chk_dnat_local), priority=0 , match=(1), action=(reg9[4] = 0; next;)
table=1 (lr_out_undnat ), priority=0 , match=(1), action=(next;)
table=2 (lr_out_post_undnat ), priority=0 , match=(1), action=(next;)
table=3 (lr_out_snat ), priority=120 , match=(nd_ns), action=(next;)
table=3 (lr_out_snat ), priority=0 , match=(1), action=(next;)
table=4 (lr_out_post_snat ), priority=0 , match=(1), action=(next;)
table=5 (lr_out_egr_loop ), priority=0 , match=(1), action=(next;)
table=6 (lr_out_delivery ), priority=100 , match=(outport == "r1s0"), action=(output;)
table=6 (lr_out_delivery ), priority=100 , match=(outport == "r1s1"), action=(output;)
table=6 (lr_out_delivery ), priority=0 , match=(1), action=(drop;)
Datapath: "s0" (49345921-e4da-4816-bf85-b092efe8eb29) Pipeline: ingress
table=0 (ls_in_check_port_sec), priority=120 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && eth.dst == 00:00:00:00:00:ff && flags.tunnel_rx == 1), action=(outport <-> inport; next(pipeline=ingress,table=29);)
table=0 (ls_in_check_port_sec), priority=110 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && eth.src == 00:00:00:00:00:01 && outport == "port01" && !is_chassis_resident("port01") && flags.tunnel_rx == 1), action=(outport <-> inport; next;)
table=0 (ls_in_check_port_sec), priority=110 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && eth.src == 00:00:00:00:00:02 && outport == "port02" && !is_chassis_resident("port02") && flags.tunnel_rx == 1), action=(outport <-> inport; next;)
table=0 (ls_in_check_port_sec), priority=105 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && flags.tunnel_rx == 1), action=(drop;)
table=0 (ls_in_check_port_sec), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_check_port_sec), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_check_port_sec), priority=70 , match=(inport == "s0r1"), action=(reg0[18] = 1; next;)
table=0 (ls_in_check_port_sec), priority=50 , match=(1), action=(reg0[15] = check_in_port_sec(); next;)
table=1 (ls_in_apply_port_sec), priority=50 , match=(reg0[15] == 1), action=(drop;)
table=1 (ls_in_apply_port_sec), priority=0 , match=(1), action=(next;)
table=2 (ls_in_mirror ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_lookup_fdb ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_put_fdb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)
table=5 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) ||(ip6 && icmp6.type == 2 && icmp6.code == 0)) && flags.tunnel_rx == 1), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(eth.mcast), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(ip && inport == "s0r1"), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(reg0[16] == 1), action=(next;)
table=6 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_pre_stateful ), priority=115 , match=(reg0[2] == 1 && ip.is_frag), action=(reg0[19] = 1; ct_lb_mark;)
table=7 (ls_in_pre_stateful ), priority=110 , match=(reg0[2] == 1), action=(ct_lb_mark;)
table=7 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=7 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_acl_hint ), priority=65535, match=(1), action=(next;)
table=9 (ls_in_acl_eval ), priority=65535, match=(1), action=(next;)
table=9 (ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[16] = 1; next;)
table=10(ls_in_acl_sample ), priority=0 , match=(1), action=(next;)
table=11(ls_in_acl_action ), priority=0 , match=(1), action=(next;)
table=12(ls_in_qos ), priority=0 , match=(1), action=(next;)
table=13(ls_in_lb_aff_check ), priority=0 , match=(1), action=(next;)
table=14(ls_in_lb ), priority=0 , match=(1), action=(next;)
table=15(ls_in_lb_aff_learn ), priority=0 , match=(1), action=(next;)
table=16(ls_in_pre_hairpin ), priority=0 , match=(1), action=(next;)
table=17(ls_in_nat_hairpin ), priority=0 , match=(1), action=(next;)
table=18(ls_in_hairpin ), priority=0 , match=(1), action=(next;)
table=19(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[16] = 1; next;)
table=19(ls_in_acl_after_lb_eval), priority=0 , match=(1), action=(next;)
table=20(ls_in_acl_after_lb_sample), priority=0 , match=(1), action=(next;)
table=21(ls_in_acl_after_lb_action), priority=0 , match=(1), action=(next;)
table=22(ls_in_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 0), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_label.acl_id = reg2[16..31]; }; next;)
table=22(ls_in_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 1), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_mark.obs_stage = reg8[19..20]; ct_mark.obs_collector_id = reg8[8..15]; ct_label.obs_point_id = reg9; ct_label.acl_id = reg2[16..31]; }; next;)
table=22(ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=23(ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=24(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=25(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=26(ls_in_dns_lookup ), priority=0 , match=(1), action=(next;)
table=27(ls_in_dns_response ), priority=0 , match=(1), action=(next;)
table=28(ls_in_external_port), priority=0 , match=(1), action=(next;)
table=29(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)
table=29(ls_in_l2_lkup ), priority=80 , match=(flags[1] == 0 && arp.op == 1 && arp.tpa == 10.0.0.254), action=(clone {outport = "s0r1"; output; }; outport = "_MC_flood_l2"; output;)
table=29(ls_in_l2_lkup ), priority=80 , match=(flags[1] == 0 && nd_ns && nd.target == fe80::200:ff:fe00:ff), action=(clone {outport = "s0r1"; output; }; outport = "_MC_flood_l2"; output;)
table=29(ls_in_l2_lkup ), priority=75 , match=(eth.src == {00:00:00:00:00:ff} && eth.dst == ff:ff:ff:ff:ff:ff && (arp.op == 1 || rarp.op == 3 || nd_ns)), action=(outport = "_MC_flood_l2"; output;)
table=29(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=29(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(outport = "port01"; output;)
table=29(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = "port02"; output;)
table=29(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:ff), action=(outport = "s0r1"; output;)
table=29(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)
table=30(ls_in_l2_unknown ), priority=50 , match=(outport == "none"), action=(drop;)
table=30(ls_in_l2_unknown ), priority=0 , match=(1), action=(output;)
Datapath: "s0" (49345921-e4da-4816-bf85-b092efe8eb29) Pipeline: egress
table=0 (ls_out_lookup_fdb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_put_fdb ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_acl ), priority=110 , match=(eth.src == $svc_monitor_mac), action=(next;)
table=2 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(eth.mcast), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(eth.src == $svc_monitor_mac), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(ip && outport == "s0r1"), action=(ct_clear; next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(reg0[16] == 1), action=(next;)
table=3 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_pre_stateful), priority=110 , match=(reg0[2] == 1), action=(ct_lb_mark;)
table=4 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=4 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=5 (ls_out_acl_hint ), priority=65535, match=(1), action=(next;)
table=6 (ls_out_acl_eval ), priority=65535, match=(1), action=(next;)
table=6 (ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[16] = 1; next;)
table=7 (ls_out_acl_sample ), priority=0 , match=(1), action=(next;)
table=8 (ls_out_acl_action ), priority=0 , match=(1), action=(next;)
table=9 (ls_out_mirror ), priority=0 , match=(1), action=(next;)
table=10(ls_out_qos ), priority=0 , match=(1), action=(next;)
table=11(ls_out_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 0), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_label.acl_id = reg2[16..31]; }; next;)
table=11(ls_out_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 1), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_mark.obs_stage = reg8[19..20]; ct_mark.obs_collector_id = reg8[8..15]; ct_label.obs_point_id = reg9; ct_label.acl_id = reg2[16..31]; }; next;)
table=11(ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=12(ls_out_check_port_sec), priority=100 , match=(eth.mcast), action=(reg0[15] = 0; next;)
table=12(ls_out_check_port_sec), priority=0 , match=(1), action=(reg0[15] = check_out_port_sec(); next;)
table=13(ls_out_apply_port_sec), priority=50 , match=(reg0[15] == 1), action=(drop;)
table=13(ls_out_apply_port_sec), priority=0 , match=(1), action=(output;)
Datapath: "s1" (d0f86629-a2df-4188-a210-98fbfd4124b6) Pipeline: ingress
table=0 (ls_in_check_port_sec), priority=120 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && eth.dst == 00:00:00:00:01:ff && flags.tunnel_rx == 1), action=(outport <-> inport; next(pipeline=ingress,table=29);)
table=0 (ls_in_check_port_sec), priority=110 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && eth.src == 00:00:00:00:01:01 && outport == "port11" && !is_chassis_resident("port11") && flags.tunnel_rx == 1), action=(outport <-> inport; next;)
table=0 (ls_in_check_port_sec), priority=110 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && eth.src == 00:00:00:00:01:02 && outport == "port12" && !is_chassis_resident("port12") && flags.tunnel_rx == 1), action=(outport <-> inport; next;)
table=0 (ls_in_check_port_sec), priority=105 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) || (ip6 && icmp6.type == 2 && icmp6.code == 0)) && flags.tunnel_rx == 1), action=(drop;)
table=0 (ls_in_check_port_sec), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_check_port_sec), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_check_port_sec), priority=70 , match=(inport == "s1r1"), action=(reg0[18] = 1; next;)
table=0 (ls_in_check_port_sec), priority=50 , match=(1), action=(reg0[15] = check_in_port_sec(); next;)
table=1 (ls_in_apply_port_sec), priority=50 , match=(reg0[15] == 1), action=(drop;)
table=1 (ls_in_apply_port_sec), priority=0 , match=(1), action=(next;)
table=2 (ls_in_mirror ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_lookup_fdb ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_put_fdb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)
table=5 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(((ip4 && icmp4.type == 3 && icmp4.code == 4) ||(ip6 && icmp6.type == 2 && icmp6.code == 0)) && flags.tunnel_rx == 1), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(eth.mcast), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(ip && inport == "s1r1"), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2), action=(next;)
table=6 (ls_in_pre_lb ), priority=110 , match=(reg0[16] == 1), action=(next;)
table=6 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_pre_stateful ), priority=115 , match=(reg0[2] == 1 && ip.is_frag), action=(reg0[19] = 1; ct_lb_mark;)
table=7 (ls_in_pre_stateful ), priority=110 , match=(reg0[2] == 1), action=(ct_lb_mark;)
table=7 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=7 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_acl_hint ), priority=65535, match=(1), action=(next;)
table=9 (ls_in_acl_eval ), priority=65535, match=(1), action=(next;)
table=9 (ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[16] = 1; next;)
table=10(ls_in_acl_sample ), priority=0 , match=(1), action=(next;)
table=11(ls_in_acl_action ), priority=0 , match=(1), action=(next;)
table=12(ls_in_qos ), priority=0 , match=(1), action=(next;)
table=13(ls_in_lb_aff_check ), priority=0 , match=(1), action=(next;)
table=14(ls_in_lb ), priority=0 , match=(1), action=(next;)
table=15(ls_in_lb_aff_learn ), priority=0 , match=(1), action=(next;)
table=16(ls_in_pre_hairpin ), priority=0 , match=(1), action=(next;)
table=17(ls_in_nat_hairpin ), priority=0 , match=(1), action=(next;)
table=18(ls_in_hairpin ), priority=0 , match=(1), action=(next;)
table=19(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[16] = 1; next;)
table=19(ls_in_acl_after_lb_eval), priority=0 , match=(1), action=(next;)
table=20(ls_in_acl_after_lb_sample), priority=0 , match=(1), action=(next;)
table=21(ls_in_acl_after_lb_action), priority=0 , match=(1), action=(next;)
table=22(ls_in_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 0), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_label.acl_id = reg2[16..31]; }; next;)
table=22(ls_in_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 1), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_mark.obs_stage = reg8[19..20]; ct_mark.obs_collector_id = reg8[8..15]; ct_label.obs_point_id = reg9; ct_label.acl_id = reg2[16..31]; }; next;)
table=22(ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=23(ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=24(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=25(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=26(ls_in_dns_lookup ), priority=0 , match=(1), action=(next;)
table=27(ls_in_dns_response ), priority=0 , match=(1), action=(next;)
table=28(ls_in_external_port), priority=0 , match=(1), action=(next;)
table=29(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)
table=29(ls_in_l2_lkup ), priority=80 , match=(flags[1] == 0 && arp.op == 1 && arp.tpa == 10.0.1.254), action=(clone {outport = "s1r1"; output; }; outport = "_MC_flood_l2"; output;)
table=29(ls_in_l2_lkup ), priority=80 , match=(flags[1] == 0 && nd_ns && nd.target == fe80::200:ff:fe00:1ff), action=(clone {outport = "s1r1"; output; }; outport = "_MC_flood_l2"; output;)
table=29(ls_in_l2_lkup ), priority=75 , match=(eth.src == {00:00:00:00:01:ff} && eth.dst == ff:ff:ff:ff:ff:ff && (arp.op == 1 || rarp.op == 3 || nd_ns)), action=(outport = "_MC_flood_l2"; output;)
table=29(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=29(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = "port11"; output;)
table=29(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = "port12"; output;)
table=29(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:ff), action=(outport = "s1r1"; output;)
table=29(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)
table=30(ls_in_l2_unknown ), priority=50 , match=(outport == "none"), action=(drop;)
table=30(ls_in_l2_unknown ), priority=0 , match=(1), action=(output;)
Datapath: "s1" (d0f86629-a2df-4188-a210-98fbfd4124b6) Pipeline: egress
table=0 (ls_out_lookup_fdb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_put_fdb ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_acl ), priority=110 , match=(eth.src == $svc_monitor_mac), action=(next;)
table=2 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(eth.mcast), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(eth.src == $svc_monitor_mac), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(ip && outport == "s1r1"), action=(ct_clear; next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2), action=(next;)
table=3 (ls_out_pre_lb ), priority=110 , match=(reg0[16] == 1), action=(next;)
table=3 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_pre_stateful), priority=110 , match=(reg0[2] == 1), action=(ct_lb_mark;)
table=4 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=4 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=5 (ls_out_acl_hint ), priority=65535, match=(1), action=(next;)
table=6 (ls_out_acl_eval ), priority=65535, match=(1), action=(next;)
table=6 (ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[16] = 1; next;)
table=7 (ls_out_acl_sample ), priority=0 , match=(1), action=(next;)
table=8 (ls_out_acl_action ), priority=0 , match=(1), action=(next;)
table=9 (ls_out_mirror ), priority=0 , match=(1), action=(next;)
table=10(ls_out_qos ), priority=0 , match=(1), action=(next;)
table=11(ls_out_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 0), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_label.acl_id = reg2[16..31]; }; next;)
table=11(ls_out_stateful ), priority=100 , match=(reg0[1] == 1 && reg0[13] == 1), action=(ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[20]; ct_mark.obs_stage = reg8[19..20]; ct_mark.obs_collector_id = reg8[8..15]; ct_label.obs_point_id = reg9; ct_label.acl_id = reg2[16..31]; }; next;)
table=11(ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=12(ls_out_check_port_sec), priority=100 , match=(eth.mcast), action=(reg0[15] = 0; next;)
table=12(ls_out_check_port_sec), priority=0 , match=(1), action=(reg0[15] = check_out_port_sec(); next;)
table=13(ls_out_apply_port_sec), priority=50 , match=(reg0[15] == 1), action=(drop;)
table=13(ls_out_apply_port_sec), priority=0 , match=(1), action=(output;)
|