First stab at BNG support in fabric.p4
This implementation is derived from Deutsche Telekom contribution:
https://github.com/opencord/p4se
It supports basic upstream and downstream termination based on double
VLAN tags and PPPoE, including counters and downstream metering.
Change-Id: I940959f2338d7319654cf665f6cfe2de7200616b
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
new file mode 100644
index 0000000..a9885e2
--- /dev/null
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
@@ -0,0 +1,1178 @@
+pkg_info {
+ arch: "v1model"
+}
+tables {
+ preamble {
+ id: 33584710
+ name: "FabricIngress.bng_ingress.upstream.t_line_map"
+ alias: "t_line_map"
+ }
+ match_fields {
+ id: 1
+ name: "s_tag"
+ bitwidth: 12
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "c_tag"
+ bitwidth: 12
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ action_refs {
+ id: 16829434
+ }
+ const_default_action_id: 16819938
+ size: 8192
+}
+tables {
+ preamble {
+ id: 33603300
+ name: "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
+ alias: "t_pppoe_cp"
+ }
+ match_fields {
+ id: 1
+ name: "pppoe_code"
+ bitwidth: 8
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "pppoe_protocol"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16830893
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ size: 16
+}
+tables {
+ preamble {
+ id: 33595047
+ name: "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4"
+ alias: "t_pppoe_term_v4"
+ }
+ match_fields {
+ id: 1
+ name: "line_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "ipv4_src"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ match_fields {
+ id: 3
+ name: "pppoe_session_id"
+ bitwidth: 16
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16780562
+ }
+ action_refs {
+ id: 16785853
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16785853
+ size: 32768
+}
+tables {
+ preamble {
+ id: 33555367
+ name: "FabricIngress.bng_ingress.downstream.t_line_map_v4"
+ alias: "t_line_map_v4"
+ }
+ match_fields {
+ id: 1
+ name: "ipv4_dst"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ action_refs {
+ id: 16798636
+ }
+ action_refs {
+ id: 16842299
+ }
+ const_default_action_id: 16819938
+ size: 32768
+}
+tables {
+ preamble {
+ id: 33602462
+ name: "FabricIngress.bng_ingress.downstream.t_qos_v4"
+ alias: "t_qos_v4"
+ }
+ match_fields {
+ id: 1
+ name: "line_id"
+ bitwidth: 32
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 2
+ name: "ipv4_src"
+ bitwidth: 32
+ match_type: LPM
+ }
+ match_fields {
+ id: 3
+ name: "ipv4_dscp"
+ bitwidth: 6
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 4
+ name: "ipv4_ecn"
+ bitwidth: 2
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16830304
+ }
+ action_refs {
+ id: 16804676
+ }
+ const_default_action_id: 16804676
+ size: 256
+}
+tables {
+ preamble {
+ id: 33611649
+ name: "FabricIngress.filtering.ingress_port_vlan"
+ alias: "ingress_port_vlan"
+ }
+ match_fields {
+ id: 1
+ name: "ig_port"
+ bitwidth: 9
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "vlan_is_valid"
+ bitwidth: 1
+ match_type: EXACT
+ }
+ match_fields {
+ id: 3
+ name: "vlan_id"
+ bitwidth: 12
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16836487
+ }
+ action_refs {
+ id: 16818236
+ }
+ action_refs {
+ id: 16794911
+ }
+ const_default_action_id: 16836487
+ direct_resource_ids: 318815501
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33596298
+ name: "FabricIngress.filtering.fwd_classifier"
+ alias: "fwd_classifier"
+ }
+ match_fields {
+ id: 1
+ name: "ig_port"
+ bitwidth: 9
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "eth_dst"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 3
+ name: "eth_type"
+ bitwidth: 16
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16840921
+ }
+ const_default_action_id: 16840921
+ direct_resource_ids: 318827326
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33596749
+ name: "FabricIngress.forwarding.bridging"
+ alias: "bridging"
+ }
+ match_fields {
+ id: 1
+ name: "vlan_id"
+ bitwidth: 12
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "eth_dst"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16811012
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 318770289
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33574274
+ name: "FabricIngress.forwarding.mpls"
+ alias: "mpls"
+ }
+ match_fields {
+ id: 1
+ name: "mpls_label"
+ bitwidth: 20
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16827758
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 318830507
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33562650
+ name: "FabricIngress.forwarding.routing_v4"
+ alias: "routing_v4"
+ }
+ match_fields {
+ id: 1
+ name: "ipv4_dst"
+ bitwidth: 32
+ match_type: LPM
+ }
+ action_refs {
+ id: 16777434
+ }
+ action_refs {
+ id: 16804187
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 318811107
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33618978
+ name: "FabricIngress.acl.acl"
+ alias: "acl"
+ }
+ match_fields {
+ id: 1
+ name: "ig_port"
+ bitwidth: 9
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 2
+ name: "ip_proto"
+ bitwidth: 8
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 3
+ name: "l4_sport"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 4
+ name: "l4_dport"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 5
+ name: "eth_src"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 6
+ name: "eth_dst"
+ bitwidth: 48
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 7
+ name: "vlan_id"
+ bitwidth: 12
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 8
+ name: "eth_type"
+ bitwidth: 16
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 9
+ name: "ipv4_src"
+ bitwidth: 32
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 10
+ name: "ipv4_dst"
+ bitwidth: 32
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 11
+ name: "icmp_type"
+ bitwidth: 8
+ match_type: TERNARY
+ }
+ match_fields {
+ id: 12
+ name: "icmp_code"
+ bitwidth: 8
+ match_type: TERNARY
+ }
+ action_refs {
+ id: 16807382
+ }
+ action_refs {
+ id: 16829684
+ }
+ action_refs {
+ id: 16790975
+ }
+ action_refs {
+ id: 16820765
+ }
+ action_refs {
+ id: 16827694
+ }
+ const_default_action_id: 16827694
+ direct_resource_ids: 318801025
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33599709
+ name: "FabricIngress.next.next_vlan"
+ alias: "next_vlan"
+ }
+ match_fields {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16790685
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 318768144
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33596977
+ name: "FabricIngress.next.xconnect"
+ alias: "xconnect"
+ }
+ match_fields {
+ id: 1
+ name: "ig_port"
+ bitwidth: 9
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "next_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16842190
+ }
+ action_refs {
+ id: 16837052
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 318778156
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33608588
+ name: "FabricIngress.next.hashed"
+ alias: "hashed"
+ }
+ match_fields {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16815357
+ }
+ action_refs {
+ id: 16791402
+ }
+ action_refs {
+ id: 16779255
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ implementation_id: 285217164
+ direct_resource_ids: 318800532
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33606828
+ name: "FabricIngress.next.multicast"
+ alias: "multicast"
+ }
+ match_fields {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16779917
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 318801752
+ size: 1024
+}
+tables {
+ preamble {
+ id: 33576241
+ name: "FabricEgress.bng_egress.downstream.t_session_encap"
+ alias: "t_session_encap"
+ }
+ match_fields {
+ id: 1
+ name: "line_id"
+ bitwidth: 32
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ action_refs {
+ id: 16784000
+ }
+ const_default_action_id: 16819938
+ size: 8192
+}
+tables {
+ preamble {
+ id: 33599342
+ name: "FabricEgress.egress_next.egress_vlan"
+ alias: "egress_vlan"
+ }
+ match_fields {
+ id: 1
+ name: "vlan_id"
+ bitwidth: 12
+ match_type: EXACT
+ }
+ match_fields {
+ id: 2
+ name: "eg_port"
+ bitwidth: 9
+ match_type: EXACT
+ }
+ action_refs {
+ id: 16790030
+ }
+ action_refs {
+ id: 16819938
+ annotations: "@defaultonly"
+ scope: DEFAULT_ONLY
+ }
+ const_default_action_id: 16819938
+ direct_resource_ids: 318827144
+ size: 1024
+}
+actions {
+ preamble {
+ id: 16819938
+ name: "nop"
+ alias: "nop"
+ }
+}
+actions {
+ preamble {
+ id: 16829434
+ name: "FabricIngress.bng_ingress.upstream.set_line"
+ alias: "set_line"
+ }
+ params {
+ id: 1
+ name: "line_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16830893
+ name: "FabricIngress.bng_ingress.upstream.punt_to_cpu"
+ alias: "upstream.punt_to_cpu"
+ }
+}
+actions {
+ preamble {
+ id: 16785853
+ name: "FabricIngress.bng_ingress.upstream.term_disabled"
+ alias: "term_disabled"
+ }
+}
+actions {
+ preamble {
+ id: 16780562
+ name: "FabricIngress.bng_ingress.upstream.term_enabled_v4"
+ alias: "term_enabled_v4"
+ }
+}
+actions {
+ preamble {
+ id: 16798636
+ name: "FabricIngress.bng_ingress.downstream.set_line_next"
+ alias: "set_line_next"
+ }
+ params {
+ id: 1
+ name: "line_id"
+ bitwidth: 32
+ }
+ params {
+ id: 2
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16842299
+ name: "FabricIngress.bng_ingress.downstream.set_line_drop"
+ alias: "set_line_drop"
+ }
+ params {
+ id: 1
+ name: "line_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16830304
+ name: "FabricIngress.bng_ingress.downstream.qos_prio"
+ alias: "qos_prio"
+ }
+}
+actions {
+ preamble {
+ id: 16804676
+ name: "FabricIngress.bng_ingress.downstream.qos_besteff"
+ alias: "qos_besteff"
+ }
+}
+actions {
+ preamble {
+ id: 16836487
+ name: "FabricIngress.filtering.deny"
+ alias: "deny"
+ }
+}
+actions {
+ preamble {
+ id: 16818236
+ name: "FabricIngress.filtering.permit"
+ alias: "permit"
+ }
+}
+actions {
+ preamble {
+ id: 16794911
+ name: "FabricIngress.filtering.permit_with_internal_vlan"
+ alias: "permit_with_internal_vlan"
+ }
+ params {
+ id: 1
+ name: "vlan_id"
+ bitwidth: 12
+ }
+}
+actions {
+ preamble {
+ id: 16840921
+ name: "FabricIngress.filtering.set_forwarding_type"
+ alias: "set_forwarding_type"
+ }
+ params {
+ id: 1
+ name: "fwd_type"
+ bitwidth: 3
+ }
+}
+actions {
+ preamble {
+ id: 16811012
+ name: "FabricIngress.forwarding.set_next_id_bridging"
+ alias: "set_next_id_bridging"
+ }
+ params {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16827758
+ name: "FabricIngress.forwarding.pop_mpls_and_next"
+ alias: "pop_mpls_and_next"
+ }
+ params {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16777434
+ name: "FabricIngress.forwarding.set_next_id_routing_v4"
+ alias: "set_next_id_routing_v4"
+ }
+ params {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16804187
+ name: "FabricIngress.forwarding.nop_routing_v4"
+ alias: "nop_routing_v4"
+ }
+}
+actions {
+ preamble {
+ id: 16807382
+ name: "FabricIngress.acl.set_next_id_acl"
+ alias: "set_next_id_acl"
+ }
+ params {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16829684
+ name: "FabricIngress.acl.punt_to_cpu"
+ alias: "acl.punt_to_cpu"
+ }
+}
+actions {
+ preamble {
+ id: 16790975
+ name: "FabricIngress.acl.clone_to_cpu"
+ alias: "clone_to_cpu"
+ }
+}
+actions {
+ preamble {
+ id: 16820765
+ name: "FabricIngress.acl.drop"
+ alias: "drop"
+ }
+}
+actions {
+ preamble {
+ id: 16827694
+ name: "FabricIngress.acl.nop_acl"
+ alias: "nop_acl"
+ }
+}
+actions {
+ preamble {
+ id: 16790685
+ name: "FabricIngress.next.set_vlan"
+ alias: "set_vlan"
+ }
+ params {
+ id: 1
+ name: "vlan_id"
+ bitwidth: 12
+ }
+}
+actions {
+ preamble {
+ id: 16842190
+ name: "FabricIngress.next.output_xconnect"
+ alias: "output_xconnect"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+}
+actions {
+ preamble {
+ id: 16837052
+ name: "FabricIngress.next.set_next_id_xconnect"
+ alias: "set_next_id_xconnect"
+ }
+ params {
+ id: 1
+ name: "next_id"
+ bitwidth: 32
+ }
+}
+actions {
+ preamble {
+ id: 16815357
+ name: "FabricIngress.next.output_hashed"
+ alias: "output_hashed"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+}
+actions {
+ preamble {
+ id: 16791402
+ name: "FabricIngress.next.routing_hashed"
+ alias: "routing_hashed"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+ params {
+ id: 2
+ name: "smac"
+ bitwidth: 48
+ }
+ params {
+ id: 3
+ name: "dmac"
+ bitwidth: 48
+ }
+}
+actions {
+ preamble {
+ id: 16779255
+ name: "FabricIngress.next.mpls_routing_hashed"
+ alias: "mpls_routing_hashed"
+ }
+ params {
+ id: 1
+ name: "port_num"
+ bitwidth: 9
+ }
+ params {
+ id: 2
+ name: "smac"
+ bitwidth: 48
+ }
+ params {
+ id: 3
+ name: "dmac"
+ bitwidth: 48
+ }
+ params {
+ id: 4
+ name: "label"
+ bitwidth: 20
+ }
+}
+actions {
+ preamble {
+ id: 16779917
+ name: "FabricIngress.next.set_mcast_group_id"
+ alias: "set_mcast_group_id"
+ }
+ params {
+ id: 1
+ name: "group_id"
+ bitwidth: 16
+ }
+}
+actions {
+ preamble {
+ id: 16784000
+ name: "FabricEgress.bng_egress.downstream.encap_v4"
+ alias: "encap_v4"
+ }
+ params {
+ id: 1
+ name: "c_tag"
+ bitwidth: 12
+ }
+ params {
+ id: 2
+ name: "pppoe_session_id"
+ bitwidth: 16
+ }
+}
+actions {
+ preamble {
+ id: 16790030
+ name: "FabricEgress.egress_next.pop_vlan"
+ alias: "pop_vlan"
+ }
+}
+action_profiles {
+ preamble {
+ id: 285217164
+ name: "FabricIngress.next.hashed_selector"
+ alias: "hashed_selector"
+ }
+ table_ids: 33608588
+ with_selector: true
+ size: 1024
+ max_group_size: 16
+}
+counters {
+ preamble {
+ id: 302022672
+ name: "FabricIngress.bng_ingress.upstream.c_terminated"
+ alias: "c_terminated"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 8192
+}
+counters {
+ preamble {
+ id: 302043418
+ name: "FabricIngress.bng_ingress.upstream.c_dropped"
+ alias: "c_dropped"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 8192
+}
+counters {
+ preamble {
+ id: 302008909
+ name: "FabricIngress.bng_ingress.upstream.c_control"
+ alias: "c_control"
+ }
+ spec {
+ unit: PACKETS
+ }
+ size: 8192
+}
+counters {
+ preamble {
+ id: 302004781
+ name: "FabricIngress.bng_ingress.downstream.c_line_rx"
+ alias: "c_line_rx"
+ }
+ spec {
+ unit: BOTH
+ }
+ size: 8192
+}
+counters {
+ preamble {
+ id: 302011205
+ name: "FabricIngress.port_counters_control.egress_port_counter"
+ alias: "egress_port_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ size: 511
+}
+counters {
+ preamble {
+ id: 302002771
+ name: "FabricIngress.port_counters_control.ingress_port_counter"
+ alias: "ingress_port_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ size: 511
+}
+counters {
+ preamble {
+ id: 302046535
+ name: "FabricEgress.bng_egress.downstream.c_line_tx"
+ alias: "c_line_tx"
+ }
+ spec {
+ unit: BOTH
+ }
+ size: 8192
+}
+direct_counters {
+ preamble {
+ id: 318815501
+ name: "FabricIngress.filtering.ingress_port_vlan_counter"
+ alias: "ingress_port_vlan_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33611649
+}
+direct_counters {
+ preamble {
+ id: 318827326
+ name: "FabricIngress.filtering.fwd_classifier_counter"
+ alias: "fwd_classifier_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33596298
+}
+direct_counters {
+ preamble {
+ id: 318770289
+ name: "FabricIngress.forwarding.bridging_counter"
+ alias: "bridging_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33596749
+}
+direct_counters {
+ preamble {
+ id: 318830507
+ name: "FabricIngress.forwarding.mpls_counter"
+ alias: "mpls_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33574274
+}
+direct_counters {
+ preamble {
+ id: 318811107
+ name: "FabricIngress.forwarding.routing_v4_counter"
+ alias: "routing_v4_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33562650
+}
+direct_counters {
+ preamble {
+ id: 318801025
+ name: "FabricIngress.acl.acl_counter"
+ alias: "acl_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33618978
+}
+direct_counters {
+ preamble {
+ id: 318768144
+ name: "FabricIngress.next.next_vlan_counter"
+ alias: "next_vlan_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33599709
+}
+direct_counters {
+ preamble {
+ id: 318778156
+ name: "FabricIngress.next.xconnect_counter"
+ alias: "xconnect_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33596977
+}
+direct_counters {
+ preamble {
+ id: 318800532
+ name: "FabricIngress.next.hashed_counter"
+ alias: "hashed_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33608588
+}
+direct_counters {
+ preamble {
+ id: 318801752
+ name: "FabricIngress.next.multicast_counter"
+ alias: "multicast_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33606828
+}
+direct_counters {
+ preamble {
+ id: 318827144
+ name: "FabricEgress.egress_next.egress_vlan_counter"
+ alias: "egress_vlan_counter"
+ }
+ spec {
+ unit: BOTH
+ }
+ direct_table_id: 33599342
+}
+meters {
+ preamble {
+ id: 335569952
+ name: "FabricIngress.bng_ingress.downstream.m_besteff"
+ alias: "m_besteff"
+ }
+ spec {
+ unit: BYTES
+ }
+ size: 8192
+}
+meters {
+ preamble {
+ id: 335568260
+ name: "FabricIngress.bng_ingress.downstream.m_prio"
+ alias: "m_prio"
+ }
+ spec {
+ unit: BYTES
+ }
+ size: 8192
+}
+controller_packet_metadata {
+ preamble {
+ id: 67146229
+ name: "packet_in"
+ alias: "packet_in"
+ annotations: "@controller_header(\"packet_in\")"
+ }
+ metadata {
+ id: 1
+ name: "ingress_port"
+ bitwidth: 9
+ }
+ metadata {
+ id: 2
+ name: "_pad"
+ bitwidth: 7
+ }
+}
+controller_packet_metadata {
+ preamble {
+ id: 67121543
+ name: "packet_out"
+ alias: "packet_out"
+ annotations: "@controller_header(\"packet_out\")"
+ }
+ metadata {
+ id: 1
+ name: "egress_port"
+ bitwidth: 9
+ }
+ metadata {
+ id: 2
+ name: "_pad"
+ bitwidth: 7
+ }
+}
+type_info {
+}