1 | |||
2 | CLOT Allocation (ingress): | ||
3 | +------+-------------------------------------------------+---------------+-----------+ | ||
4 | | CLOT | Fields | Bits | Property | | ||
5 | +------+-------------------------------------------------+---------------+-----------+ | ||
6 | | 0 | state ingress::parse_arp | 28 bytes | | | ||
7 | | | | | | | ||
8 | | | ingress::hdr.arp.hw_type | 16 [0..15] | | | ||
9 | | | ingress::hdr.arp.proto_type | 16 [16..31] | | | ||
10 | | | ingress::hdr.arp.hw_addr_len | 8 [32..39] | | | ||
11 | | | ingress::hdr.arp.proto_addr_len | 8 [40..47] | | | ||
12 | | | ingress::hdr.arp.opcode | 16 [48..63] | | | ||
13 | | | ingress::hdr.arp.sender_mac | 48 [64..111] | | | ||
14 | | | ingress::hdr.arp.sender_ip | 32 [112..143] | | | ||
15 | | | ingress::hdr.arp.target_mac | 48 [144..191] | | | ||
16 | | | ingress::hdr.arp.target_ip | 32 [192..223] | | | ||
17 | +------+-------------------------------------------------+---------------+-----------+ | ||
18 | | 1 | state ingress::parse_geneve_mcast_tag | 4 bytes | | | ||
19 | | | | | | | ||
20 | | | ingress::hdr.geneve_opts.ox_mcast_tag.mcast_tag | 2 [0..1] | ( phv ) | | ||
21 | | | ingress::hdr.geneve_opts.ox_mcast_tag.reserved | 30 [2..31] | | | ||
22 | +------+-------------------------------------------------+---------------+-----------+ | ||
23 | | | Total Bits | 256 | | | ||
24 | +------+-------------------------------------------------+---------------+-----------+ | ||
25 | |||
26 | Packets will use up to 1 CLOTs. | ||
27 | The parser path(s) that will use the most CLOTs contain the following states: | ||
28 | ingress::parse_inner_tcp (0 CLOTs) | ||
29 | ingress::parse_inner_udp (0 CLOTs) | ||
30 | ingress::parse_inner_icmp (0 CLOTs) | ||
31 | ingress::parse_inner_ipv4 (0 CLOTs) | ||
32 | ingress::parse_inner_ipv6 (0 CLOTs) | ||
33 | ingress::parse_inner_eth (0 CLOTs) | ||
34 | ingress::geneve_parsed (0 CLOTs) | ||
35 | ingress::parse_geneve_mcast_tag (1 CLOTs) | ||
36 | ingress::parse_geneve_ox_opt (0 CLOTs) | ||
37 | ingress::parse_geneve_opt (0 CLOTs) | ||
38 | ingress::parse_geneve (0 CLOTs) | ||
39 | ingress::parse_udp (0 CLOTs) | ||
40 | ingress::goto_proto_ipv4 (0 CLOTs) | ||
41 | ingress::set_mcast_ipv4 (0 CLOTs) | ||
42 | ingress::validate_ipv4_mcast_3 (0 CLOTs) | ||
43 | ingress::validate_ipv4_mcast1_2 (0 CLOTs) | ||
44 | ingress::validate_ttl (0 CLOTs) | ||
45 | ingress::parse_ipv4 (0 CLOTs) | ||
46 | ingress::goto_proto_ipv6 (0 CLOTs) | ||
47 | ingress::set_link_local_mcast (0 CLOTs) | ||
48 | ingress::set_mcast_ipv6 (0 CLOTs) | ||
49 | ingress::validate_hop_limit (0 CLOTs) | ||
50 | ingress::check_ipv6_mcast (0 CLOTs) | ||
51 | ingress::parse_ipv6 (0 CLOTs) | ||
52 | ingress::parse_arp (1 CLOTs) | ||
53 | ingress::parse_vlan (0 CLOTs) | ||
54 | ingress::parse_sidecar (0 CLOTs) | ||
55 | $entry_point.start (0 CLOTs) | ||
56 | |||
57 | CLOT Allocation (egress): | ||
58 | +------+--------------------------------------------------+----------------+------------+ | ||
59 | | CLOT | Fields | Bits | Property | | ||
60 | +------+--------------------------------------------------+----------------+------------+ | ||
61 | | 0 | state egress::parse_ipv6 | 40 bytes | | | ||
62 | | | | | | | ||
63 | | | egress::hdr.ipv6.version | 4 [0..3] | | | ||
64 | | | egress::hdr.ipv6.traffic_class | 8 [4..11] | | | ||
65 | | | egress::hdr.ipv6.flow_label | 20 [12..31] | | | ||
66 | | | egress::hdr.ipv6.payload_len | 16 [32..47] | | | ||
67 | | | egress::hdr.ipv6.next_hdr | 8 [48..55] | | | ||
68 | | | egress::hdr.ipv6.hop_limit | 8 [56..63] | | | ||
69 | | | egress::hdr.ipv6.src_addr | 128 [64..191] | | | ||
70 | | | egress::hdr.ipv6.dst_addr | 128 [192..319] | ( phv ) | | ||
71 | +------+--------------------------------------------------+----------------+------------+ | ||
72 | | 1 | state egress::parse_inner_ipv6 | 40 bytes | | | ||
73 | | | | | | | ||
74 | | | egress::hdr.inner_ipv6.version | 4 [0..3] | | | ||
75 | | | egress::hdr.inner_ipv6.traffic_class | 8 [4..11] | | | ||
76 | | | egress::hdr.inner_ipv6.flow_label | 20 [12..31] | | | ||
77 | | | egress::hdr.inner_ipv6.payload_len | 16 [32..47] | | | ||
78 | | | egress::hdr.inner_ipv6.next_hdr | 8 [48..55] | | | ||
79 | | | egress::hdr.inner_ipv6.hop_limit | 8 [56..63] | ( phv* ) | | ||
80 | | | egress::hdr.inner_ipv6.src_addr | 128 [64..191] | | | ||
81 | | | egress::hdr.inner_ipv6.dst_addr | 128 [192..319] | ( phv ) | | ||
82 | +------+--------------------------------------------------+----------------+------------+ | ||
83 | | 2 | state egress::parse_inner_tcp | 20 bytes | | | ||
84 | | | | | | | ||
85 | | | egress::hdr.inner_tcp.src_port | 16 [0..15] | | | ||
86 | | | egress::hdr.inner_tcp.dst_port | 16 [16..31] | | | ||
87 | | | egress::hdr.inner_tcp.seq_no | 32 [32..63] | | | ||
88 | | | egress::hdr.inner_tcp.ack_no | 32 [64..95] | | | ||
89 | | | egress::hdr.inner_tcp.data_offset | 4 [96..99] | | | ||
90 | | | egress::hdr.inner_tcp.res | 4 [100..103] | | | ||
91 | | | egress::hdr.inner_tcp.flags | 8 [104..111] | | | ||
92 | | | egress::hdr.inner_tcp.window | 16 [112..127] | | | ||
93 | | | egress::hdr.inner_tcp.checksum | 16 [128..143] | | | ||
94 | | | egress::hdr.inner_tcp.urgent_ptr | 16 [144..159] | | | ||
95 | +------+--------------------------------------------------+----------------+------------+ | ||
96 | | 3 | state egress::parse_ipv4 | 20 bytes | | | ||
97 | | | | | | | ||
98 | | | egress::hdr.ipv4.version | 4 [0..3] | | | ||
99 | | | egress::hdr.ipv4.ihl | 4 [4..7] | | | ||
100 | | | egress::hdr.ipv4.diffserv | 8 [8..15] | | | ||
101 | | | egress::hdr.ipv4.total_len | 16 [16..31] | | | ||
102 | | | egress::hdr.ipv4.identification | 16 [32..47] | | | ||
103 | | | egress::hdr.ipv4.flags | 3 [48..50] | | | ||
104 | | | egress::hdr.ipv4.frag_offset | 13 [51..63] | | | ||
105 | | | egress::hdr.ipv4.ttl | 8 [64..71] | | | ||
106 | | | egress::hdr.ipv4.protocol | 8 [72..79] | | | ||
107 | | | egress::hdr.ipv4.hdr_checksum | 16 [80..95] | | | ||
108 | | | egress::hdr.ipv4.src_addr | 32 [96..127] | | | ||
109 | | | egress::hdr.ipv4.dst_addr | 32 [128..159] | ( phv ) | | ||
110 | +------+--------------------------------------------------+----------------+------------+ | ||
111 | | 4 | state egress::parse_inner_eth | 11 bytes | | | ||
112 | | | | | | | ||
113 | | | egress::hdr.inner_eth.dst_mac | 48 [0..47] | | | ||
114 | | | egress::hdr.inner_eth.src_mac[47:8] | 40 [48..87] | | | ||
115 | +------+--------------------------------------------------+----------------+------------+ | ||
116 | | 5 | state egress::parse_inner_ipv4 | 10 bytes | | | ||
117 | | | | | | | ||
118 | | | egress::hdr.inner_ipv4.version | 4 [0..3] | | | ||
119 | | | egress::hdr.inner_ipv4.ihl | 4 [4..7] | | | ||
120 | | | egress::hdr.inner_ipv4.diffserv | 8 [8..15] | | | ||
121 | | | egress::hdr.inner_ipv4.total_len | 16 [16..31] | | | ||
122 | | | egress::hdr.inner_ipv4.identification | 16 [32..47] | | | ||
123 | | | egress::hdr.inner_ipv4.flags | 3 [48..50] | | | ||
124 | | | egress::hdr.inner_ipv4.frag_offset | 13 [51..63] | | | ||
125 | | | egress::hdr.inner_ipv4.ttl | 8 [64..71] | ( phv* ) | | ||
126 | | | egress::hdr.inner_ipv4.protocol | 8 [72..79] | | | ||
127 | +------+--------------------------------------------------+----------------+------------+ | ||
128 | | 6 | state egress::parse_inner_udp | 8 bytes | | | ||
129 | | | | | | | ||
130 | | | egress::hdr.inner_udp.src_port | 16 [0..15] | | | ||
131 | | | egress::hdr.inner_udp.dst_port | 16 [16..31] | | | ||
132 | | | egress::hdr.inner_udp.hdr_length | 16 [32..47] | | | ||
133 | | | egress::hdr.inner_udp.checksum | 16 [48..63] | | | ||
134 | +------+--------------------------------------------------+----------------+------------+ | ||
135 | | 7 | state egress::parse_udp | 8 bytes | | | ||
136 | | | | | | | ||
137 | | | egress::hdr.udp.src_port | 16 [0..15] | | | ||
138 | | | egress::hdr.udp.dst_port | 16 [16..31] | | | ||
139 | | | egress::hdr.udp.hdr_length | 16 [32..47] | | | ||
140 | | | egress::hdr.udp.checksum | 16 [48..63] | | | ||
141 | +------+--------------------------------------------------+----------------+------------+ | ||
142 | | 8 | state egress::parse_icmp | 5 bytes | | | ||
143 | | | | | | | ||
144 | | | egress::hdr.icmp.hdr_checksum[7:0] | 8 [0..7] | | | ||
145 | | | egress::hdr.icmp.data | 32 [8..39] | | | ||
146 | +------+--------------------------------------------------+----------------+------------+ | ||
147 | | 9 | state egress::parse_geneve | 5 bytes | | | ||
148 | | | | | | | ||
149 | | | egress::hdr.geneve.version | 2 [0..1] | | | ||
150 | | | egress::hdr.geneve.opt_len | 6 [2..7] | | | ||
151 | | | egress::hdr.geneve.ctrl | 1 [8..8] | | | ||
152 | | | egress::hdr.geneve.crit | 1 [9..9] | | | ||
153 | | | egress::hdr.geneve.reserved | 6 [10..15] | | | ||
154 | | | egress::hdr.geneve.protocol | 16 [16..31] | | | ||
155 | | | egress::hdr.geneve.vni[23:16] | 8 [32..39] | | | ||
156 | +------+--------------------------------------------------+----------------+------------+ | ||
157 | | 10 | state egress::parse_geneve_opt | 4 bytes | | | ||
158 | | | | | | | ||
159 | | | egress::hdr.geneve_opts.ox_external_tag.class | 16 [0..15] | | | ||
160 | | | egress::hdr.geneve_opts.ox_external_tag.crit | 1 [16..16] | | | ||
161 | | | egress::hdr.geneve_opts.ox_external_tag.type | 7 [17..23] | | | ||
162 | | | egress::hdr.geneve_opts.ox_external_tag.reserved | 3 [24..26] | | | ||
163 | | | egress::hdr.geneve_opts.ox_external_tag.opt_len | 5 [27..31] | | | ||
164 | +------+--------------------------------------------------+----------------+------------+ | ||
165 | | 11 | state egress::parse_inner_ipv4 | 7 bytes | | | ||
166 | | | | | | | ||
167 | | | egress::hdr.inner_ipv4.src_addr[23:0] | 24 [0..23] | | | ||
168 | | | egress::hdr.inner_ipv4.dst_addr | 32 [24..55] | ( phv ) | | ||
169 | +------+--------------------------------------------------+----------------+------------+ | ||
170 | | | Total Bits | 1424 | | | ||
171 | +------+--------------------------------------------------+----------------+------------+ | ||
172 | |||
173 | Packets will use up to 8 CLOTs. | ||
174 | The parser path(s) that will use the most CLOTs contain the following states: | ||
175 | egress::parse_inner_tcp (1 CLOTs) | ||
176 | egress::parse_inner_udp (1 CLOTs) | ||
177 | egress::parse_inner_ipv4 (2 CLOTs) | ||
178 | egress::parse_inner_eth (1 CLOTs) | ||
179 | egress::geneve_parsed (0 CLOTs) | ||
180 | egress::parse_geneve_mcast_tag (0 CLOTs) | ||
181 | egress::parse_geneve_ox_opt (0 CLOTs) | ||
182 | egress::parse_geneve_opt (1 CLOTs) | ||
183 | egress::parse_geneve (1 CLOTs) | ||
184 | egress::parse_udp (1 CLOTs) | ||
185 | egress::parse_ipv4 (1 CLOTs) | ||
186 | egress::parse_ipv6 (1 CLOTs) | ||
187 | egress::parse_vlan (0 CLOTs) | ||
188 | $entry_point.start (0 CLOTs) | ||
189 | |||
190 | All fields: | ||
191 | +---------------------------------------------------+------+-------+-----------+ | ||
192 | | Field | Bits | CLOTs | Property | | ||
193 | +---------------------------------------------------+------+-------+-----------+ | ||
194 | | ingress::ig_intr_md.ingress_port | 9 | | read-only | | ||
195 | | ingress::meta.bridge_hdr.ingress_port | 9 | | unused | | ||
196 | | ingress::hdr.ethernet.dst_mac | 48 | | modified | | ||
197 | | ingress::hdr.ethernet.src_mac | 48 | | modified | | ||
198 | | ingress::hdr.ethernet.ether_type | 16 | | modified | | ||
199 | | ingress::meta.orig_src_mac | 48 | | read-only | | ||
200 | | ingress::hdr.sidecar.sc_code | 8 | | modified | | ||
201 | | ingress::hdr.sidecar.sc_pad | 8 | | unused | | ||
202 | | ingress::hdr.sidecar.sc_ingress | 16 | | modified | | ||
203 | | ingress::hdr.sidecar.sc_egress | 16 | | modified | | ||
204 | | ingress::hdr.sidecar.sc_ether_type | 16 | | modified | | ||
205 | | ingress::hdr.sidecar.sc_payload | 128 | | modified | | ||
206 | | ingress::hdr.vlan.pcp | 3 | | modified | | ||
207 | | ingress::hdr.vlan.dei | 1 | | modified | | ||
208 | | ingress::hdr.vlan.vlan_id | 12 | | modified | | ||
209 | | ingress::hdr.vlan.ether_type | 16 | | modified | | ||
210 | | ingress::hdr.ipv4.version | 4 | | modified | | ||
211 | | ingress::hdr.ipv4.ihl | 4 | | modified | | ||
212 | | ingress::hdr.ipv4.diffserv | 8 | | modified | | ||
213 | | ingress::hdr.ipv4.total_len | 16 | | modified | | ||
214 | | ingress::hdr.ipv4.identification | 16 | | modified | | ||
215 | | ingress::hdr.ipv4.flags | 3 | | modified | | ||
216 | | ingress::hdr.ipv4.frag_offset | 13 | | modified | | ||
217 | | ingress::hdr.ipv4.ttl | 8 | | modified | | ||
218 | | ingress::hdr.ipv4.protocol | 8 | | modified | | ||
219 | | ingress::hdr.ipv4.hdr_checksum | 16 | | checksum | | ||
220 | | ingress::hdr.ipv4.src_addr | 32 | | modified | | ||
221 | | ingress::hdr.ipv4.dst_addr | 32 | | modified | | ||
222 | | ingress::meta.orig_src_ipv4 | 32 | | read-only | | ||
223 | | ingress::meta.orig_dst_ipv4 | 32 | | read-only | | ||
224 | | ingress::hdr.icmp.type | 8 | | modified | | ||
225 | | ingress::hdr.icmp.code | 8 | | modified | | ||
226 | | ingress::hdr.icmp.hdr_checksum | 16 | | checksum | | ||
227 | | ingress::hdr.icmp.data | 32 | | modified | | ||
228 | | ingress::hdr.tcp.src_port | 16 | | modified | | ||
229 | | ingress::hdr.tcp.dst_port | 16 | | modified | | ||
230 | | ingress::hdr.tcp.seq_no | 32 | | modified | | ||
231 | | ingress::hdr.tcp.ack_no | 32 | | modified | | ||
232 | | ingress::hdr.tcp.data_offset | 4 | | modified | | ||
233 | | ingress::hdr.tcp.res | 4 | | modified | | ||
234 | | ingress::hdr.tcp.flags | 8 | | modified | | ||
235 | | ingress::hdr.tcp.window | 16 | | modified | | ||
236 | | ingress::hdr.tcp.checksum | 16 | | modified | | ||
237 | | ingress::hdr.tcp.urgent_ptr | 16 | | modified | | ||
238 | | ingress::meta.l4_src_port | 16 | | read-only | | ||
239 | | ingress::meta.l4_dst_port | 16 | | modified | | ||
240 | | ingress::hdr.udp.src_port | 16 | | modified | | ||
241 | | ingress::hdr.udp.dst_port | 16 | | modified | | ||
242 | | ingress::hdr.udp.hdr_length | 16 | | modified | | ||
243 | | ingress::hdr.udp.checksum | 16 | | checksum | | ||
244 | | ingress::hdr.geneve.version | 2 | | modified | | ||
245 | | ingress::hdr.geneve.opt_len | 6 | | modified | | ||
246 | | ingress::hdr.geneve.ctrl | 1 | | modified | | ||
247 | | ingress::hdr.geneve.crit | 1 | | modified | | ||
248 | | ingress::hdr.geneve.reserved | 6 | | modified | | ||
249 | | ingress::hdr.geneve.protocol | 16 | | modified | | ||
250 | | ingress::hdr.geneve.vni | 24 | | modified | | ||
251 | | ingress::hdr.geneve.reserved2 | 8 | | modified | | ||
252 | | ingress::hdr.inner_eth.dst_mac | 48 | | modified | | ||
253 | | ingress::hdr.inner_eth.src_mac | 48 | | modified | | ||
254 | | ingress::hdr.inner_eth.ether_type | 16 | | modified | | ||
255 | | ingress::hdr.inner_ipv4.version | 4 | | modified | | ||
256 | | ingress::hdr.inner_ipv4.ihl | 4 | | modified | | ||
257 | | ingress::hdr.inner_ipv4.diffserv | 8 | | modified | | ||
258 | | ingress::hdr.inner_ipv4.total_len | 16 | | modified | | ||
259 | | ingress::hdr.inner_ipv4.identification | 16 | | modified | | ||
260 | | ingress::hdr.inner_ipv4.flags | 3 | | modified | | ||
261 | | ingress::hdr.inner_ipv4.frag_offset | 13 | | modified | | ||
262 | | ingress::hdr.inner_ipv4.ttl | 8 | | modified | | ||
263 | | ingress::hdr.inner_ipv4.protocol | 8 | | modified | | ||
264 | | ingress::hdr.inner_ipv4.hdr_checksum | 16 | | modified | | ||
265 | | ingress::hdr.inner_ipv4.src_addr | 32 | | modified | | ||
266 | | ingress::hdr.inner_ipv4.dst_addr | 32 | | modified | | ||
267 | | ingress::hdr.inner_tcp.src_port | 16 | | modified | | ||
268 | | ingress::hdr.inner_tcp.dst_port | 16 | | modified | | ||
269 | | ingress::hdr.inner_tcp.seq_no | 32 | | modified | | ||
270 | | ingress::hdr.inner_tcp.ack_no | 32 | | modified | | ||
271 | | ingress::hdr.inner_tcp.data_offset | 4 | | modified | | ||
272 | | ingress::hdr.inner_tcp.res | 4 | | modified | | ||
273 | | ingress::hdr.inner_tcp.flags | 8 | | modified | | ||
274 | | ingress::hdr.inner_tcp.window | 16 | | modified | | ||
275 | | ingress::hdr.inner_tcp.checksum | 16 | | modified | | ||
276 | | ingress::hdr.inner_tcp.urgent_ptr | 16 | | modified | | ||
277 | | ingress::hdr.inner_udp.src_port | 16 | | modified | | ||
278 | | ingress::hdr.inner_udp.dst_port | 16 | | modified | | ||
279 | | ingress::hdr.inner_udp.hdr_length | 16 | | modified | | ||
280 | | ingress::hdr.inner_udp.checksum | 16 | | modified | | ||
281 | | ingress::hdr.inner_icmp.type | 8 | | modified | | ||
282 | | ingress::hdr.inner_icmp.code | 8 | | modified | | ||
283 | | ingress::hdr.inner_icmp.hdr_checksum | 16 | | modified | | ||
284 | | ingress::hdr.inner_icmp.data | 32 | | modified | | ||
285 | | ingress::hdr.inner_ipv6.version | 4 | | modified | | ||
286 | | ingress::hdr.inner_ipv6.traffic_class | 8 | | modified | | ||
287 | | ingress::hdr.inner_ipv6.flow_label | 20 | | modified | | ||
288 | | ingress::hdr.inner_ipv6.payload_len | 16 | | modified | | ||
289 | | ingress::hdr.inner_ipv6.next_hdr | 8 | | modified | | ||
290 | | ingress::hdr.inner_ipv6.hop_limit | 8 | | modified | | ||
291 | | ingress::hdr.inner_ipv6.src_addr | 128 | | modified | | ||
292 | | ingress::hdr.inner_ipv6.dst_addr | 128 | | modified | | ||
293 | | ingress::hdr.geneve_opts.ox_external_tag.class | 16 | | modified | | ||
294 | | ingress::hdr.geneve_opts.ox_external_tag.crit | 1 | | modified | | ||
295 | | ingress::hdr.geneve_opts.ox_external_tag.type | 7 | | modified | | ||
296 | | ingress::hdr.geneve_opts.ox_external_tag.reserved | 3 | | modified | | ||
297 | | ingress::hdr.geneve_opts.ox_external_tag.opt_len | 5 | | modified | | ||
298 | | ingress::hdr.geneve_opts.ox_mcast_tag.mcast_tag | 2 | 1 | read-only | | ||
299 | | ingress::hdr.geneve_opts.ox_mcast_tag.reserved | 30 | 1 | unused | | ||
300 | | ingress::hdr.ipv6.version | 4 | | modified | | ||
301 | | ingress::hdr.ipv6.traffic_class | 8 | | modified | | ||
302 | | ingress::hdr.ipv6.flow_label | 20 | | modified | | ||
303 | | ingress::hdr.ipv6.payload_len | 16 | | modified | | ||
304 | | ingress::hdr.ipv6.next_hdr | 8 | | modified | | ||
305 | | ingress::hdr.ipv6.hop_limit | 8 | | modified | | ||
306 | | ingress::hdr.ipv6.src_addr | 128 | | modified | | ||
307 | | ingress::hdr.ipv6.dst_addr | 128 | | modified | | ||
308 | | ingress::hdr.arp.hw_type | 16 | 0 | unused | | ||
309 | | ingress::hdr.arp.proto_type | 16 | 0 | unused | | ||
310 | | ingress::hdr.arp.hw_addr_len | 8 | 0 | unused | | ||
311 | | ingress::hdr.arp.proto_addr_len | 8 | 0 | unused | | ||
312 | | ingress::hdr.arp.opcode | 16 | 0 | unused | | ||
313 | | ingress::hdr.arp.sender_mac | 48 | 0 | unused | | ||
314 | | ingress::hdr.arp.sender_ip | 32 | 0 | unused | | ||
315 | | ingress::hdr.arp.target_mac | 48 | 0 | unused | | ||
316 | | ingress::hdr.arp.target_ip | 32 | 0 | unused | | ||
317 | | egress::eg_intr_md.egress_port | 9 | | read-only | | ||
318 | | egress::eg_intr_md.egress_rid | 16 | | read-only | | ||
319 | | egress::eg_intr_md.egress_rid_first | 1 | | read-only | | ||
320 | | egress::meta.bridge_hdr.ingress_port | 9 | | read-only | | ||
321 | | egress::hdr.ethernet.dst_mac | 48 | | modified | | ||
322 | | egress::hdr.ethernet.src_mac | 48 | | modified | | ||
323 | | egress::hdr.ethernet.ether_type | 16 | | modified | | ||
324 | | egress::hdr.vlan.pcp | 3 | | modified | | ||
325 | | egress::hdr.vlan.dei | 1 | | modified | | ||
326 | | egress::hdr.vlan.vlan_id | 12 | | modified | | ||
327 | | egress::hdr.vlan.ether_type | 16 | | modified | | ||
328 | | egress::hdr.ipv4.version | 4 | 3 | unused | | ||
329 | | egress::hdr.ipv4.ihl | 4 | 3 | unused | | ||
330 | | egress::hdr.ipv4.diffserv | 8 | 3 | unused | | ||
331 | | egress::hdr.ipv4.total_len | 16 | 3 | unused | | ||
332 | | egress::hdr.ipv4.identification | 16 | 3 | unused | | ||
333 | | egress::hdr.ipv4.flags | 3 | 3 | unused | | ||
334 | | egress::hdr.ipv4.frag_offset | 13 | 3 | unused | | ||
335 | | egress::hdr.ipv4.ttl | 8 | 3 | unused | | ||
336 | | egress::hdr.ipv4.protocol | 8 | 3 | unused | | ||
337 | | egress::hdr.ipv4.hdr_checksum | 16 | 3 | unused | | ||
338 | | egress::hdr.ipv4.src_addr | 32 | 3 | unused | | ||
339 | | egress::hdr.ipv4.dst_addr | 32 | 3 | read-only | | ||
340 | | egress::hdr.icmp.type | 8 | | unused | | ||
341 | | egress::hdr.icmp.code | 8 | | unused | | ||
342 | | egress::hdr.icmp.hdr_checksum | 16 | 8 | unused | | ||
343 | | egress::hdr.icmp.data | 32 | 8 | unused | | ||
344 | | egress::hdr.udp.src_port | 16 | 7 | unused | | ||
345 | | egress::hdr.udp.dst_port | 16 | 7 | unused | | ||
346 | | egress::hdr.udp.hdr_length | 16 | 7 | unused | | ||
347 | | egress::hdr.udp.checksum | 16 | 7 | unused | | ||
348 | | egress::hdr.geneve.version | 2 | 9 | unused | | ||
349 | | egress::hdr.geneve.opt_len | 6 | 9 | unused | | ||
350 | | egress::hdr.geneve.ctrl | 1 | 9 | unused | | ||
351 | | egress::hdr.geneve.crit | 1 | 9 | unused | | ||
352 | | egress::hdr.geneve.reserved | 6 | 9 | unused | | ||
353 | | egress::hdr.geneve.protocol | 16 | 9 | unused | | ||
354 | | egress::hdr.geneve.vni | 24 | 9 | unused | | ||
355 | | egress::hdr.geneve.reserved2 | 8 | | unused | | ||
356 | | egress::hdr.inner_eth.dst_mac | 48 | 4 | unused | | ||
357 | | egress::hdr.inner_eth.src_mac | 48 | 4 | unused | | ||
358 | | egress::hdr.inner_eth.ether_type | 16 | | unused | | ||
359 | | egress::hdr.inner_ipv4.version | 4 | 5 | unused | | ||
360 | | egress::hdr.inner_ipv4.ihl | 4 | 5 | unused | | ||
361 | | egress::hdr.inner_ipv4.diffserv | 8 | 5 | unused | | ||
362 | | egress::hdr.inner_ipv4.total_len | 16 | 5 | unused | | ||
363 | | egress::hdr.inner_ipv4.identification | 16 | 5 | unused | | ||
364 | | egress::hdr.inner_ipv4.flags | 3 | 5 | unused | | ||
365 | | egress::hdr.inner_ipv4.frag_offset | 13 | 5 | unused | | ||
366 | | egress::hdr.inner_ipv4.ttl | 8 | 5 | modified | | ||
367 | | egress::hdr.inner_ipv4.protocol | 8 | 5 | unused | | ||
368 | | egress::hdr.inner_ipv4.hdr_checksum | 16 | | checksum | | ||
369 | | egress::hdr.inner_ipv4.src_addr | 32 | 11 | unused | | ||
370 | | egress::hdr.inner_ipv4.dst_addr | 32 | 11 | read-only | | ||
371 | | egress::hdr.inner_tcp.src_port | 16 | 2 | unused | | ||
372 | | egress::hdr.inner_tcp.dst_port | 16 | 2 | unused | | ||
373 | | egress::hdr.inner_tcp.seq_no | 32 | 2 | unused | | ||
374 | | egress::hdr.inner_tcp.ack_no | 32 | 2 | unused | | ||
375 | | egress::hdr.inner_tcp.data_offset | 4 | 2 | unused | | ||
376 | | egress::hdr.inner_tcp.res | 4 | 2 | unused | | ||
377 | | egress::hdr.inner_tcp.flags | 8 | 2 | unused | | ||
378 | | egress::hdr.inner_tcp.window | 16 | 2 | unused | | ||
379 | | egress::hdr.inner_tcp.checksum | 16 | 2 | unused | | ||
380 | | egress::hdr.inner_tcp.urgent_ptr | 16 | 2 | unused | | ||
381 | | egress::hdr.inner_udp.src_port | 16 | 6 | unused | | ||
382 | | egress::hdr.inner_udp.dst_port | 16 | 6 | unused | | ||
383 | | egress::hdr.inner_udp.hdr_length | 16 | 6 | unused | | ||
384 | | egress::hdr.inner_udp.checksum | 16 | 6 | unused | | ||
385 | | egress::hdr.inner_ipv6.version | 4 | 1 | unused | | ||
386 | | egress::hdr.inner_ipv6.traffic_class | 8 | 1 | unused | | ||
387 | | egress::hdr.inner_ipv6.flow_label | 20 | 1 | unused | | ||
388 | | egress::hdr.inner_ipv6.payload_len | 16 | 1 | unused | | ||
389 | | egress::hdr.inner_ipv6.next_hdr | 8 | 1 | unused | | ||
390 | | egress::hdr.inner_ipv6.hop_limit | 8 | 1 | modified | | ||
391 | | egress::hdr.inner_ipv6.src_addr | 128 | 1 | unused | | ||
392 | | egress::hdr.inner_ipv6.dst_addr | 128 | 1 | read-only | | ||
393 | | egress::hdr.geneve_opts.ox_external_tag.class | 16 | 10 | unused | | ||
394 | | egress::hdr.geneve_opts.ox_external_tag.crit | 1 | 10 | unused | | ||
395 | | egress::hdr.geneve_opts.ox_external_tag.type | 7 | 10 | unused | | ||
396 | | egress::hdr.geneve_opts.ox_external_tag.reserved | 3 | 10 | unused | | ||
397 | | egress::hdr.geneve_opts.ox_external_tag.opt_len | 5 | 10 | unused | | ||
398 | | egress::hdr.geneve_opts.ox_mcast_tag.mcast_tag | 2 | | read-only | | ||
399 | | egress::hdr.geneve_opts.ox_mcast_tag.reserved | 30 | | unused | | ||
400 | | egress::hdr.ipv6.version | 4 | 0 | unused | | ||
401 | | egress::hdr.ipv6.traffic_class | 8 | 0 | unused | | ||
402 | | egress::hdr.ipv6.flow_label | 20 | 0 | unused | | ||
403 | | egress::hdr.ipv6.payload_len | 16 | 0 | unused | | ||
404 | | egress::hdr.ipv6.next_hdr | 8 | 0 | unused | | ||
405 | | egress::hdr.ipv6.hop_limit | 8 | 0 | unused | | ||
406 | | egress::hdr.ipv6.src_addr | 128 | 0 | unused | | ||
407 | | egress::hdr.ipv6.dst_addr | 128 | 0 | read-only | | ||
408 | +---------------------------------------------------+------+-------+-----------+ | ||
409 | | Unused fields | 84 | | | | ||
410 | | Unused bits | 1469 | | | | ||
411 | | Unused CLOT-allocated fields | 77 | | | | ||
412 | | Unused CLOT-allocated bits | 1342 | | | | ||
413 | +---------------------------------------------------+------+-------+-----------+ | ||
414 | |||
415 | |||
416 | CLOT Allocation (ingress): | ||
417 | +------+-------------------------------------------------+---------------+-----------+ | ||
418 | | CLOT | Fields | Bits | Property | | ||
419 | +------+-------------------------------------------------+---------------+-----------+ | ||
420 | | 0 | state ingress::parse_arp | 28 bytes | | | ||
421 | | | | | | | ||
422 | | | ingress::hdr.arp.hw_type | 16 [0..15] | | | ||
423 | | | ingress::hdr.arp.proto_type | 16 [16..31] | | | ||
424 | | | ingress::hdr.arp.hw_addr_len | 8 [32..39] | | | ||
425 | | | ingress::hdr.arp.proto_addr_len | 8 [40..47] | | | ||
426 | | | ingress::hdr.arp.opcode | 16 [48..63] | | | ||
427 | | | ingress::hdr.arp.sender_mac | 48 [64..111] | | | ||
428 | | | ingress::hdr.arp.sender_ip | 32 [112..143] | | | ||
429 | | | ingress::hdr.arp.target_mac | 48 [144..191] | | | ||
430 | | | ingress::hdr.arp.target_ip | 32 [192..223] | | | ||
431 | +------+-------------------------------------------------+---------------+-----------+ | ||
432 | | 1 | state ingress::parse_geneve_mcast_tag | 4 bytes | | | ||
433 | | | | | | | ||
434 | | | ingress::hdr.geneve_opts.ox_mcast_tag.mcast_tag | 2 [0..1] | ( phv ) | | ||
435 | | | ingress::hdr.geneve_opts.ox_mcast_tag.reserved | 30 [2..31] | | | ||
436 | +------+-------------------------------------------------+---------------+-----------+ | ||
437 | | | Total Bits | 256 | | | ||
438 | +------+-------------------------------------------------+---------------+-----------+ | ||
439 | |||
440 | Packets will use up to 1 CLOTs. | ||
441 | The parser path(s) that will use the most CLOTs contain the following states: | ||
442 | ingress::parse_inner_tcp (0 CLOTs) | ||
443 | ingress::parse_inner_udp (0 CLOTs) | ||
444 | ingress::parse_inner_icmp (0 CLOTs) | ||
445 | ingress::parse_inner_ipv4 (0 CLOTs) | ||
446 | ingress::parse_inner_ipv6 (0 CLOTs) | ||
447 | ingress::parse_inner_eth (0 CLOTs) | ||
448 | ingress::geneve_parsed (0 CLOTs) | ||
449 | ingress::parse_geneve_mcast_tag (1 CLOTs) | ||
450 | ingress::parse_geneve_ox_opt (0 CLOTs) | ||
451 | ingress::parse_geneve_opt (0 CLOTs) | ||
452 | ingress::parse_geneve (0 CLOTs) | ||
453 | ingress::parse_udp (0 CLOTs) | ||
454 | ingress::goto_proto_ipv4 (0 CLOTs) | ||
455 | ingress::set_mcast_ipv4 (0 CLOTs) | ||
456 | ingress::validate_ipv4_mcast_3 (0 CLOTs) | ||
457 | ingress::validate_ipv4_mcast1_2 (0 CLOTs) | ||
458 | ingress::validate_ttl (0 CLOTs) | ||
459 | ingress::parse_ipv4 (0 CLOTs) | ||
460 | ingress::goto_proto_ipv6 (0 CLOTs) | ||
461 | ingress::set_link_local_mcast (0 CLOTs) | ||
462 | ingress::set_mcast_ipv6 (0 CLOTs) | ||
463 | ingress::validate_hop_limit (0 CLOTs) | ||
464 | ingress::check_ipv6_mcast (0 CLOTs) | ||
465 | ingress::parse_ipv6 (0 CLOTs) | ||
466 | ingress::parse_arp (1 CLOTs) | ||
467 | ingress::parse_vlan (0 CLOTs) | ||
468 | ingress::parse_sidecar (0 CLOTs) | ||
469 | $entry_point.start (0 CLOTs) | ||
470 | |||
471 | CLOT Allocation (egress): | ||
472 | +------+--------------------------------------------------+----------------+------------+ | ||
473 | | CLOT | Fields | Bits | Property | | ||
474 | +------+--------------------------------------------------+----------------+------------+ | ||
475 | | 0 | state egress::parse_ipv6 | 40 bytes | | | ||
476 | | | | | | | ||
477 | | | egress::hdr.ipv6.version | 4 [0..3] | | | ||
478 | | | egress::hdr.ipv6.traffic_class | 8 [4..11] | | | ||
479 | | | egress::hdr.ipv6.flow_label | 20 [12..31] | | | ||
480 | | | egress::hdr.ipv6.payload_len | 16 [32..47] | | | ||
481 | | | egress::hdr.ipv6.next_hdr | 8 [48..55] | | | ||
482 | | | egress::hdr.ipv6.hop_limit | 8 [56..63] | | | ||
483 | | | egress::hdr.ipv6.src_addr | 128 [64..191] | | | ||
484 | | | egress::hdr.ipv6.dst_addr | 128 [192..319] | ( phv ) | | ||
485 | +------+--------------------------------------------------+----------------+------------+ | ||
486 | | 1 | state egress::parse_inner_ipv6 | 40 bytes | | | ||
487 | | | | | | | ||
488 | | | egress::hdr.inner_ipv6.version | 4 [0..3] | | | ||
489 | | | egress::hdr.inner_ipv6.traffic_class | 8 [4..11] | | | ||
490 | | | egress::hdr.inner_ipv6.flow_label | 20 [12..31] | | | ||
491 | | | egress::hdr.inner_ipv6.payload_len | 16 [32..47] | | | ||
492 | | | egress::hdr.inner_ipv6.next_hdr | 8 [48..55] | | | ||
493 | | | egress::hdr.inner_ipv6.hop_limit | 8 [56..63] | ( phv* ) | | ||
494 | | | egress::hdr.inner_ipv6.src_addr | 128 [64..191] | | | ||
495 | | | egress::hdr.inner_ipv6.dst_addr | 128 [192..319] | ( phv ) | | ||
496 | +------+--------------------------------------------------+----------------+------------+ | ||
497 | | 2 | state egress::parse_inner_tcp | 20 bytes | | | ||
498 | | | | | | | ||
499 | | | egress::hdr.inner_tcp.src_port | 16 [0..15] | | | ||
500 | | | egress::hdr.inner_tcp.dst_port | 16 [16..31] | | | ||
501 | | | egress::hdr.inner_tcp.seq_no | 32 [32..63] | | | ||
502 | | | egress::hdr.inner_tcp.ack_no | 32 [64..95] | | | ||
503 | | | egress::hdr.inner_tcp.data_offset | 4 [96..99] | | | ||
504 | | | egress::hdr.inner_tcp.res | 4 [100..103] | | | ||
505 | | | egress::hdr.inner_tcp.flags | 8 [104..111] | | | ||
506 | | | egress::hdr.inner_tcp.window | 16 [112..127] | | | ||
507 | | | egress::hdr.inner_tcp.checksum | 16 [128..143] | | | ||
508 | | | egress::hdr.inner_tcp.urgent_ptr | 16 [144..159] | | | ||
509 | +------+--------------------------------------------------+----------------+------------+ | ||
510 | | 3 | state egress::parse_ipv4 | 20 bytes | | | ||
511 | | | | | | | ||
512 | | | egress::hdr.ipv4.version | 4 [0..3] | | | ||
513 | | | egress::hdr.ipv4.ihl | 4 [4..7] | | | ||
514 | | | egress::hdr.ipv4.diffserv | 8 [8..15] | | | ||
515 | | | egress::hdr.ipv4.total_len | 16 [16..31] | | | ||
516 | | | egress::hdr.ipv4.identification | 16 [32..47] | | | ||
517 | | | egress::hdr.ipv4.flags | 3 [48..50] | | | ||
518 | | | egress::hdr.ipv4.frag_offset | 13 [51..63] | | | ||
519 | | | egress::hdr.ipv4.ttl | 8 [64..71] | | | ||
520 | | | egress::hdr.ipv4.protocol | 8 [72..79] | | | ||
521 | | | egress::hdr.ipv4.hdr_checksum | 16 [80..95] | | | ||
522 | | | egress::hdr.ipv4.src_addr | 32 [96..127] | | | ||
523 | | | egress::hdr.ipv4.dst_addr | 32 [128..159] | ( phv ) | | ||
524 | +------+--------------------------------------------------+----------------+------------+ | ||
525 | | 4 | state egress::parse_inner_eth | 11 bytes | | | ||
526 | | | | | | | ||
527 | | | egress::hdr.inner_eth.dst_mac | 48 [0..47] | | | ||
528 | | | egress::hdr.inner_eth.src_mac[47:8] | 40 [48..87] | | | ||
529 | +------+--------------------------------------------------+----------------+------------+ | ||
530 | | 5 | state egress::parse_inner_ipv4 | 10 bytes | | | ||
531 | | | | | | | ||
532 | | | egress::hdr.inner_ipv4.version | 4 [0..3] | | | ||
533 | | | egress::hdr.inner_ipv4.ihl | 4 [4..7] | | | ||
534 | | | egress::hdr.inner_ipv4.diffserv | 8 [8..15] | | | ||
535 | | | egress::hdr.inner_ipv4.total_len | 16 [16..31] | | | ||
536 | | | egress::hdr.inner_ipv4.identification | 16 [32..47] | | | ||
537 | | | egress::hdr.inner_ipv4.flags | 3 [48..50] | | | ||
538 | | | egress::hdr.inner_ipv4.frag_offset | 13 [51..63] | | | ||
539 | | | egress::hdr.inner_ipv4.ttl | 8 [64..71] | ( phv* ) | | ||
540 | | | egress::hdr.inner_ipv4.protocol | 8 [72..79] | | | ||
541 | +------+--------------------------------------------------+----------------+------------+ | ||
542 | | 6 | state egress::parse_inner_udp | 8 bytes | | | ||
543 | | | | | | | ||
544 | | | egress::hdr.inner_udp.src_port | 16 [0..15] | | | ||
545 | | | egress::hdr.inner_udp.dst_port | 16 [16..31] | | | ||
546 | | | egress::hdr.inner_udp.hdr_length | 16 [32..47] | | | ||
547 | | | egress::hdr.inner_udp.checksum | 16 [48..63] | | | ||
548 | +------+--------------------------------------------------+----------------+------------+ | ||
549 | | 7 | state egress::parse_udp | 8 bytes | | | ||
550 | | | | | | | ||
551 | | | egress::hdr.udp.src_port | 16 [0..15] | | | ||
552 | | | egress::hdr.udp.dst_port | 16 [16..31] | | | ||
553 | | | egress::hdr.udp.hdr_length | 16 [32..47] | | | ||
554 | | | egress::hdr.udp.checksum | 16 [48..63] | | | ||
555 | +------+--------------------------------------------------+----------------+------------+ | ||
556 | | 8 | state egress::parse_icmp | 5 bytes | | | ||
557 | | | | | | | ||
558 | | | egress::hdr.icmp.hdr_checksum[7:0] | 8 [0..7] | | | ||
559 | | | egress::hdr.icmp.data | 32 [8..39] | | | ||
560 | +------+--------------------------------------------------+----------------+------------+ | ||
561 | | 9 | state egress::parse_geneve | 5 bytes | | | ||
562 | | | | | | | ||
563 | | | egress::hdr.geneve.version | 2 [0..1] | | | ||
564 | | | egress::hdr.geneve.opt_len | 6 [2..7] | | | ||
565 | | | egress::hdr.geneve.ctrl | 1 [8..8] | | | ||
566 | | | egress::hdr.geneve.crit | 1 [9..9] | | | ||
567 | | | egress::hdr.geneve.reserved | 6 [10..15] | | | ||
568 | | | egress::hdr.geneve.protocol | 16 [16..31] | | | ||
569 | | | egress::hdr.geneve.vni[23:16] | 8 [32..39] | | | ||
570 | +------+--------------------------------------------------+----------------+------------+ | ||
571 | | 10 | state egress::parse_geneve_opt | 4 bytes | | | ||
572 | | | | | | | ||
573 | | | egress::hdr.geneve_opts.ox_external_tag.class | 16 [0..15] | | | ||
574 | | | egress::hdr.geneve_opts.ox_external_tag.crit | 1 [16..16] | | | ||
575 | | | egress::hdr.geneve_opts.ox_external_tag.type | 7 [17..23] | | | ||
576 | | | egress::hdr.geneve_opts.ox_external_tag.reserved | 3 [24..26] | | | ||
577 | | | egress::hdr.geneve_opts.ox_external_tag.opt_len | 5 [27..31] | | | ||
578 | +------+--------------------------------------------------+----------------+------------+ | ||
579 | | 11 | state egress::parse_inner_ipv4 | 7 bytes | | | ||
580 | | | | | | | ||
581 | | | egress::hdr.inner_ipv4.src_addr[23:0] | 24 [0..23] | | | ||
582 | | | egress::hdr.inner_ipv4.dst_addr | 32 [24..55] | ( phv ) | | ||
583 | +------+--------------------------------------------------+----------------+------------+ | ||
584 | | | Total Bits | 1424 | | | ||
585 | +------+--------------------------------------------------+----------------+------------+ | ||
586 | |||
587 | Packets will use up to 8 CLOTs. | ||
588 | The parser path(s) that will use the most CLOTs contain the following states: | ||
589 | egress::parse_inner_tcp (1 CLOTs) | ||
590 | egress::parse_inner_udp (1 CLOTs) | ||
591 | egress::parse_inner_ipv4 (2 CLOTs) | ||
592 | egress::parse_inner_eth (1 CLOTs) | ||
593 | egress::geneve_parsed (0 CLOTs) | ||
594 | egress::parse_geneve_mcast_tag (0 CLOTs) | ||
595 | egress::parse_geneve_ox_opt (0 CLOTs) | ||
596 | egress::parse_geneve_opt (1 CLOTs) | ||
597 | egress::parse_geneve (1 CLOTs) | ||
598 | egress::parse_udp (1 CLOTs) | ||
599 | egress::parse_ipv4 (1 CLOTs) | ||
600 | egress::parse_ipv6 (1 CLOTs) | ||
601 | egress::parse_vlan (0 CLOTs) | ||
602 | $entry_point.start (0 CLOTs) | ||
603 | |||
604 | All fields: | ||
605 | +---------------------------------------------------+------+-------+-----------+ | ||
606 | | Field | Bits | CLOTs | Property | | ||
607 | +---------------------------------------------------+------+-------+-----------+ | ||
608 | | ingress::ig_intr_md.ingress_port | 9 | | read-only | | ||
609 | | ingress::meta.bridge_hdr.ingress_port | 9 | | unused | | ||
610 | | ingress::hdr.ethernet.dst_mac | 48 | | modified | | ||
611 | | ingress::hdr.ethernet.src_mac | 48 | | modified | | ||
612 | | ingress::hdr.ethernet.ether_type | 16 | | modified | | ||
613 | | ingress::meta.orig_src_mac | 48 | | read-only | | ||
614 | | ingress::hdr.sidecar.sc_code | 8 | | modified | | ||
615 | | ingress::hdr.sidecar.sc_pad | 8 | | unused | | ||
616 | | ingress::hdr.sidecar.sc_ingress | 16 | | modified | | ||
617 | | ingress::hdr.sidecar.sc_egress | 16 | | modified | | ||
618 | | ingress::hdr.sidecar.sc_ether_type | 16 | | modified | | ||
619 | | ingress::hdr.sidecar.sc_payload | 128 | | modified | | ||
620 | | ingress::hdr.vlan.pcp | 3 | | modified | | ||
621 | | ingress::hdr.vlan.dei | 1 | | modified | | ||
622 | | ingress::hdr.vlan.vlan_id | 12 | | modified | | ||
623 | | ingress::hdr.vlan.ether_type | 16 | | modified | | ||
624 | | ingress::hdr.ipv4.version | 4 | | modified | | ||
625 | | ingress::hdr.ipv4.ihl | 4 | | modified | | ||
626 | | ingress::hdr.ipv4.diffserv | 8 | | modified | | ||
627 | | ingress::hdr.ipv4.total_len | 16 | | modified | | ||
628 | | ingress::hdr.ipv4.identification | 16 | | modified | | ||
629 | | ingress::hdr.ipv4.flags | 3 | | modified | | ||
630 | | ingress::hdr.ipv4.frag_offset | 13 | | modified | | ||
631 | | ingress::hdr.ipv4.ttl | 8 | | modified | | ||
632 | | ingress::hdr.ipv4.protocol | 8 | | modified | | ||
633 | | ingress::hdr.ipv4.hdr_checksum | 16 | | checksum | | ||
634 | | ingress::hdr.ipv4.src_addr | 32 | | modified | | ||
635 | | ingress::hdr.ipv4.dst_addr | 32 | | modified | | ||
636 | | ingress::meta.orig_src_ipv4 | 32 | | read-only | | ||
637 | | ingress::meta.orig_dst_ipv4 | 32 | | read-only | | ||
638 | | ingress::hdr.icmp.type | 8 | | modified | | ||
639 | | ingress::hdr.icmp.code | 8 | | modified | | ||
640 | | ingress::hdr.icmp.hdr_checksum | 16 | | checksum | | ||
641 | | ingress::hdr.icmp.data | 32 | | modified | | ||
642 | | ingress::hdr.tcp.src_port | 16 | | modified | | ||
643 | | ingress::hdr.tcp.dst_port | 16 | | modified | | ||
644 | | ingress::hdr.tcp.seq_no | 32 | | modified | | ||
645 | | ingress::hdr.tcp.ack_no | 32 | | modified | | ||
646 | | ingress::hdr.tcp.data_offset | 4 | | modified | | ||
647 | | ingress::hdr.tcp.res | 4 | | modified | | ||
648 | | ingress::hdr.tcp.flags | 8 | | modified | | ||
649 | | ingress::hdr.tcp.window | 16 | | modified | | ||
650 | | ingress::hdr.tcp.checksum | 16 | | modified | | ||
651 | | ingress::hdr.tcp.urgent_ptr | 16 | | modified | | ||
652 | | ingress::meta.l4_src_port | 16 | | read-only | | ||
653 | | ingress::meta.l4_dst_port | 16 | | modified | | ||
654 | | ingress::hdr.udp.src_port | 16 | | modified | | ||
655 | | ingress::hdr.udp.dst_port | 16 | | modified | | ||
656 | | ingress::hdr.udp.hdr_length | 16 | | modified | | ||
657 | | ingress::hdr.udp.checksum | 16 | | checksum | | ||
658 | | ingress::hdr.geneve.version | 2 | | modified | | ||
659 | | ingress::hdr.geneve.opt_len | 6 | | modified | | ||
660 | | ingress::hdr.geneve.ctrl | 1 | | modified | | ||
661 | | ingress::hdr.geneve.crit | 1 | | modified | | ||
662 | | ingress::hdr.geneve.reserved | 6 | | modified | | ||
663 | | ingress::hdr.geneve.protocol | 16 | | modified | | ||
664 | | ingress::hdr.geneve.vni | 24 | | modified | | ||
665 | | ingress::hdr.geneve.reserved2 | 8 | | modified | | ||
666 | | ingress::hdr.inner_eth.dst_mac | 48 | | modified | | ||
667 | | ingress::hdr.inner_eth.src_mac | 48 | | modified | | ||
668 | | ingress::hdr.inner_eth.ether_type | 16 | | modified | | ||
669 | | ingress::hdr.inner_ipv4.version | 4 | | modified | | ||
670 | | ingress::hdr.inner_ipv4.ihl | 4 | | modified | | ||
671 | | ingress::hdr.inner_ipv4.diffserv | 8 | | modified | | ||
672 | | ingress::hdr.inner_ipv4.total_len | 16 | | modified | | ||
673 | | ingress::hdr.inner_ipv4.identification | 16 | | modified | | ||
674 | | ingress::hdr.inner_ipv4.flags | 3 | | modified | | ||
675 | | ingress::hdr.inner_ipv4.frag_offset | 13 | | modified | | ||
676 | | ingress::hdr.inner_ipv4.ttl | 8 | | modified | | ||
677 | | ingress::hdr.inner_ipv4.protocol | 8 | | modified | | ||
678 | | ingress::hdr.inner_ipv4.hdr_checksum | 16 | | modified | | ||
679 | | ingress::hdr.inner_ipv4.src_addr | 32 | | modified | | ||
680 | | ingress::hdr.inner_ipv4.dst_addr | 32 | | modified | | ||
681 | | ingress::hdr.inner_tcp.src_port | 16 | | modified | | ||
682 | | ingress::hdr.inner_tcp.dst_port | 16 | | modified | | ||
683 | | ingress::hdr.inner_tcp.seq_no | 32 | | modified | | ||
684 | | ingress::hdr.inner_tcp.ack_no | 32 | | modified | | ||
685 | | ingress::hdr.inner_tcp.data_offset | 4 | | modified | | ||
686 | | ingress::hdr.inner_tcp.res | 4 | | modified | | ||
687 | | ingress::hdr.inner_tcp.flags | 8 | | modified | | ||
688 | | ingress::hdr.inner_tcp.window | 16 | | modified | | ||
689 | | ingress::hdr.inner_tcp.checksum | 16 | | modified | | ||
690 | | ingress::hdr.inner_tcp.urgent_ptr | 16 | | modified | | ||
691 | | ingress::hdr.inner_udp.src_port | 16 | | modified | | ||
692 | | ingress::hdr.inner_udp.dst_port | 16 | | modified | | ||
693 | | ingress::hdr.inner_udp.hdr_length | 16 | | modified | | ||
694 | | ingress::hdr.inner_udp.checksum | 16 | | modified | | ||
695 | | ingress::hdr.inner_icmp.type | 8 | | modified | | ||
696 | | ingress::hdr.inner_icmp.code | 8 | | modified | | ||
697 | | ingress::hdr.inner_icmp.hdr_checksum | 16 | | modified | | ||
698 | | ingress::hdr.inner_icmp.data | 32 | | modified | | ||
699 | | ingress::hdr.inner_ipv6.version | 4 | | modified | | ||
700 | | ingress::hdr.inner_ipv6.traffic_class | 8 | | modified | | ||
701 | | ingress::hdr.inner_ipv6.flow_label | 20 | | modified | | ||
702 | | ingress::hdr.inner_ipv6.payload_len | 16 | | modified | | ||
703 | | ingress::hdr.inner_ipv6.next_hdr | 8 | | modified | | ||
704 | | ingress::hdr.inner_ipv6.hop_limit | 8 | | modified | | ||
705 | | ingress::hdr.inner_ipv6.src_addr | 128 | | modified | | ||
706 | | ingress::hdr.inner_ipv6.dst_addr | 128 | | modified | | ||
707 | | ingress::hdr.geneve_opts.ox_external_tag.class | 16 | | modified | | ||
708 | | ingress::hdr.geneve_opts.ox_external_tag.crit | 1 | | modified | | ||
709 | | ingress::hdr.geneve_opts.ox_external_tag.type | 7 | | modified | | ||
710 | | ingress::hdr.geneve_opts.ox_external_tag.reserved | 3 | | modified | | ||
711 | | ingress::hdr.geneve_opts.ox_external_tag.opt_len | 5 | | modified | | ||
712 | | ingress::hdr.geneve_opts.ox_mcast_tag.mcast_tag | 2 | 1 | read-only | | ||
713 | | ingress::hdr.geneve_opts.ox_mcast_tag.reserved | 30 | 1 | unused | | ||
714 | | ingress::hdr.ipv6.version | 4 | | modified | | ||
715 | | ingress::hdr.ipv6.traffic_class | 8 | | modified | | ||
716 | | ingress::hdr.ipv6.flow_label | 20 | | modified | | ||
717 | | ingress::hdr.ipv6.payload_len | 16 | | modified | | ||
718 | | ingress::hdr.ipv6.next_hdr | 8 | | modified | | ||
719 | | ingress::hdr.ipv6.hop_limit | 8 | | modified | | ||
720 | | ingress::hdr.ipv6.src_addr | 128 | | modified | | ||
721 | | ingress::hdr.ipv6.dst_addr | 128 | | modified | | ||
722 | | ingress::hdr.arp.hw_type | 16 | 0 | unused | | ||
723 | | ingress::hdr.arp.proto_type | 16 | 0 | unused | | ||
724 | | ingress::hdr.arp.hw_addr_len | 8 | 0 | unused | | ||
725 | | ingress::hdr.arp.proto_addr_len | 8 | 0 | unused | | ||
726 | | ingress::hdr.arp.opcode | 16 | 0 | unused | | ||
727 | | ingress::hdr.arp.sender_mac | 48 | 0 | unused | | ||
728 | | ingress::hdr.arp.sender_ip | 32 | 0 | unused | | ||
729 | | ingress::hdr.arp.target_mac | 48 | 0 | unused | | ||
730 | | ingress::hdr.arp.target_ip | 32 | 0 | unused | | ||
731 | | egress::eg_intr_md.egress_port | 9 | | read-only | | ||
732 | | egress::eg_intr_md.egress_rid | 16 | | read-only | | ||
733 | | egress::eg_intr_md.egress_rid_first | 1 | | read-only | | ||
734 | | egress::meta.bridge_hdr.ingress_port | 9 | | read-only | | ||
735 | | egress::hdr.ethernet.dst_mac | 48 | | modified | | ||
736 | | egress::hdr.ethernet.src_mac | 48 | | modified | | ||
737 | | egress::hdr.ethernet.ether_type | 16 | | modified | | ||
738 | | egress::hdr.vlan.pcp | 3 | | modified | | ||
739 | | egress::hdr.vlan.dei | 1 | | modified | | ||
740 | | egress::hdr.vlan.vlan_id | 12 | | modified | | ||
741 | | egress::hdr.vlan.ether_type | 16 | | modified | | ||
742 | | egress::hdr.ipv4.version | 4 | 3 | unused | | ||
743 | | egress::hdr.ipv4.ihl | 4 | 3 | unused | | ||
744 | | egress::hdr.ipv4.diffserv | 8 | 3 | unused | | ||
745 | | egress::hdr.ipv4.total_len | 16 | 3 | unused | | ||
746 | | egress::hdr.ipv4.identification | 16 | 3 | unused | | ||
747 | | egress::hdr.ipv4.flags | 3 | 3 | unused | | ||
748 | | egress::hdr.ipv4.frag_offset | 13 | 3 | unused | | ||
749 | | egress::hdr.ipv4.ttl | 8 | 3 | unused | | ||
750 | | egress::hdr.ipv4.protocol | 8 | 3 | unused | | ||
751 | | egress::hdr.ipv4.hdr_checksum | 16 | 3 | unused | | ||
752 | | egress::hdr.ipv4.src_addr | 32 | 3 | unused | | ||
753 | | egress::hdr.ipv4.dst_addr | 32 | 3 | read-only | | ||
754 | | egress::hdr.icmp.type | 8 | | unused | | ||
755 | | egress::hdr.icmp.code | 8 | | unused | | ||
756 | | egress::hdr.icmp.hdr_checksum | 16 | 8 | unused | | ||
757 | | egress::hdr.icmp.data | 32 | 8 | unused | | ||
758 | | egress::hdr.udp.src_port | 16 | 7 | unused | | ||
759 | | egress::hdr.udp.dst_port | 16 | 7 | unused | | ||
760 | | egress::hdr.udp.hdr_length | 16 | 7 | unused | | ||
761 | | egress::hdr.udp.checksum | 16 | 7 | unused | | ||
762 | | egress::hdr.geneve.version | 2 | 9 | unused | | ||
763 | | egress::hdr.geneve.opt_len | 6 | 9 | unused | | ||
764 | | egress::hdr.geneve.ctrl | 1 | 9 | unused | | ||
765 | | egress::hdr.geneve.crit | 1 | 9 | unused | | ||
766 | | egress::hdr.geneve.reserved | 6 | 9 | unused | | ||
767 | | egress::hdr.geneve.protocol | 16 | 9 | unused | | ||
768 | | egress::hdr.geneve.vni | 24 | 9 | unused | | ||
769 | | egress::hdr.geneve.reserved2 | 8 | | unused | | ||
770 | | egress::hdr.inner_eth.dst_mac | 48 | 4 | unused | | ||
771 | | egress::hdr.inner_eth.src_mac | 48 | 4 | unused | | ||
772 | | egress::hdr.inner_eth.ether_type | 16 | | unused | | ||
773 | | egress::hdr.inner_ipv4.version | 4 | 5 | unused | | ||
774 | | egress::hdr.inner_ipv4.ihl | 4 | 5 | unused | | ||
775 | | egress::hdr.inner_ipv4.diffserv | 8 | 5 | unused | | ||
776 | | egress::hdr.inner_ipv4.total_len | 16 | 5 | unused | | ||
777 | | egress::hdr.inner_ipv4.identification | 16 | 5 | unused | | ||
778 | | egress::hdr.inner_ipv4.flags | 3 | 5 | unused | | ||
779 | | egress::hdr.inner_ipv4.frag_offset | 13 | 5 | unused | | ||
780 | | egress::hdr.inner_ipv4.ttl | 8 | 5 | modified | | ||
781 | | egress::hdr.inner_ipv4.protocol | 8 | 5 | unused | | ||
782 | | egress::hdr.inner_ipv4.hdr_checksum | 16 | | checksum | | ||
783 | | egress::hdr.inner_ipv4.src_addr | 32 | 11 | unused | | ||
784 | | egress::hdr.inner_ipv4.dst_addr | 32 | 11 | read-only | | ||
785 | | egress::hdr.inner_tcp.src_port | 16 | 2 | unused | | ||
786 | | egress::hdr.inner_tcp.dst_port | 16 | 2 | unused | | ||
787 | | egress::hdr.inner_tcp.seq_no | 32 | 2 | unused | | ||
788 | | egress::hdr.inner_tcp.ack_no | 32 | 2 | unused | | ||
789 | | egress::hdr.inner_tcp.data_offset | 4 | 2 | unused | | ||
790 | | egress::hdr.inner_tcp.res | 4 | 2 | unused | | ||
791 | | egress::hdr.inner_tcp.flags | 8 | 2 | unused | | ||
792 | | egress::hdr.inner_tcp.window | 16 | 2 | unused | | ||
793 | | egress::hdr.inner_tcp.checksum | 16 | 2 | unused | | ||
794 | | egress::hdr.inner_tcp.urgent_ptr | 16 | 2 | unused | | ||
795 | | egress::hdr.inner_udp.src_port | 16 | 6 | unused | | ||
796 | | egress::hdr.inner_udp.dst_port | 16 | 6 | unused | | ||
797 | | egress::hdr.inner_udp.hdr_length | 16 | 6 | unused | | ||
798 | | egress::hdr.inner_udp.checksum | 16 | 6 | unused | | ||
799 | | egress::hdr.inner_ipv6.version | 4 | 1 | unused | | ||
800 | | egress::hdr.inner_ipv6.traffic_class | 8 | 1 | unused | | ||
801 | | egress::hdr.inner_ipv6.flow_label | 20 | 1 | unused | | ||
802 | | egress::hdr.inner_ipv6.payload_len | 16 | 1 | unused | | ||
803 | | egress::hdr.inner_ipv6.next_hdr | 8 | 1 | unused | | ||
804 | | egress::hdr.inner_ipv6.hop_limit | 8 | 1 | modified | | ||
805 | | egress::hdr.inner_ipv6.src_addr | 128 | 1 | unused | | ||
806 | | egress::hdr.inner_ipv6.dst_addr | 128 | 1 | read-only | | ||
807 | | egress::hdr.geneve_opts.ox_external_tag.class | 16 | 10 | unused | | ||
808 | | egress::hdr.geneve_opts.ox_external_tag.crit | 1 | 10 | unused | | ||
809 | | egress::hdr.geneve_opts.ox_external_tag.type | 7 | 10 | unused | | ||
810 | | egress::hdr.geneve_opts.ox_external_tag.reserved | 3 | 10 | unused | | ||
811 | | egress::hdr.geneve_opts.ox_external_tag.opt_len | 5 | 10 | unused | | ||
812 | | egress::hdr.geneve_opts.ox_mcast_tag.mcast_tag | 2 | | read-only | | ||
813 | | egress::hdr.geneve_opts.ox_mcast_tag.reserved | 30 | | unused | | ||
814 | | egress::hdr.ipv6.version | 4 | 0 | unused | | ||
815 | | egress::hdr.ipv6.traffic_class | 8 | 0 | unused | | ||
816 | | egress::hdr.ipv6.flow_label | 20 | 0 | unused | | ||
817 | | egress::hdr.ipv6.payload_len | 16 | 0 | unused | | ||
818 | | egress::hdr.ipv6.next_hdr | 8 | 0 | unused | | ||
819 | | egress::hdr.ipv6.hop_limit | 8 | 0 | unused | | ||
820 | | egress::hdr.ipv6.src_addr | 128 | 0 | unused | | ||
821 | | egress::hdr.ipv6.dst_addr | 128 | 0 | read-only | | ||
822 | +---------------------------------------------------+------+-------+-----------+ | ||
823 | | Unused fields | 84 | | | | ||
824 | | Unused bits | 1469 | | | | ||
825 | | Unused CLOT-allocated fields | 77 | | | | ||
826 | | Unused CLOT-allocated bits | 1342 | | | | ||
827 | +---------------------------------------------------+------+-------+-----------+ | ||
828 |