blob: 4bb1d925782203a3720561dc5979fd845b173473 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001/*
2 * Copyright 2017-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.pipelines.fabric;
18
19import org.onosproject.net.pi.model.PiActionId;
20import org.onosproject.net.pi.model.PiActionParamId;
21import org.onosproject.net.pi.model.PiActionProfileId;
22import org.onosproject.net.pi.model.PiControlMetadataId;
23import org.onosproject.net.pi.model.PiCounterId;
24import org.onosproject.net.pi.model.PiMatchFieldId;
25import org.onosproject.net.pi.model.PiTableId;
26/**
27 * Constants for fabric pipeline.
28 */
29public final class FabricConstants {
30
31 // hide default constructor
32 private FabricConstants() {
33 }
34
Yi Tsengbe342052017-11-03 10:21:23 -070035 // Header field IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +080036 public static final PiMatchFieldId FABRIC_METADATA_L4_SRC_PORT =
37 PiMatchFieldId.of("fabric_metadata.l4_src_port");
38 public static final PiMatchFieldId HDR_IPV4_SRC_ADDR =
39 PiMatchFieldId.of("hdr.ipv4.src_addr");
40 public static final PiMatchFieldId HDR_VLAN_TAG_VLAN_ID =
41 PiMatchFieldId.of("hdr.vlan_tag.vlan_id");
42 public static final PiMatchFieldId HDR_MPLS_LABEL =
43 PiMatchFieldId.of("hdr.mpls.label");
44 public static final PiMatchFieldId HDR_IPV6_DST_ADDR =
45 PiMatchFieldId.of("hdr.ipv6.dst_addr");
46 public static final PiMatchFieldId HDR_ETHERNET_SRC_ADDR =
47 PiMatchFieldId.of("hdr.ethernet.src_addr");
48 public static final PiMatchFieldId HDR_ICMP_ICMP_TYPE =
49 PiMatchFieldId.of("hdr.icmp.icmp_type");
50 public static final PiMatchFieldId STANDARD_METADATA_EGRESS_PORT =
51 PiMatchFieldId.of("standard_metadata.egress_port");
52 public static final PiMatchFieldId FABRIC_METADATA_NEXT_ID =
53 PiMatchFieldId.of("fabric_metadata.next_id");
54 public static final PiMatchFieldId FABRIC_METADATA_L4_DST_PORT =
55 PiMatchFieldId.of("fabric_metadata.l4_dst_port");
56 public static final PiMatchFieldId STANDARD_METADATA_INGRESS_PORT =
57 PiMatchFieldId.of("standard_metadata.ingress_port");
58 public static final PiMatchFieldId FABRIC_METADATA_ORIGINAL_ETHER_TYPE =
59 PiMatchFieldId.of("fabric_metadata.original_ether_type");
60 public static final PiMatchFieldId HDR_IPV4_DST_ADDR =
61 PiMatchFieldId.of("hdr.ipv4.dst_addr");
62 public static final PiMatchFieldId HDR_VLAN_TAG_IS_VALID =
63 PiMatchFieldId.of("hdr.vlan_tag.is_valid");
64 public static final PiMatchFieldId FABRIC_METADATA_IP_PROTO =
65 PiMatchFieldId.of("fabric_metadata.ip_proto");
66 public static final PiMatchFieldId HDR_ETHERNET_DST_ADDR =
67 PiMatchFieldId.of("hdr.ethernet.dst_addr");
68 public static final PiMatchFieldId HDR_ICMP_ICMP_CODE =
69 PiMatchFieldId.of("hdr.icmp.icmp_code");
Yi Tsengbe342052017-11-03 10:21:23 -070070 // Table IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +080071 public static final PiTableId FABRIC_INGRESS_FORWARDING_ACL =
Yi Tseng27b9bc02018-04-12 14:52:40 +080072 PiTableId.of("FabricIngress.forwarding.acl");
Yi Tseng43ee7e82018-04-12 16:37:34 +080073 public static final PiTableId FABRIC_INGRESS_NEXT_HASHED =
Yi Tseng27b9bc02018-04-12 14:52:40 +080074 PiTableId.of("FabricIngress.next.hashed");
Yi Tseng43ee7e82018-04-12 16:37:34 +080075 public static final PiTableId FABRIC_EGRESS_EGRESS_NEXT_EGRESS_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +080076 PiTableId.of("FabricEgress.egress_next.egress_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +080077 public static final PiTableId FABRIC_INGRESS_FORWARDING_MPLS =
Yi Tseng27b9bc02018-04-12 14:52:40 +080078 PiTableId.of("FabricIngress.forwarding.mpls");
Yi Tseng43ee7e82018-04-12 16:37:34 +080079 public static final PiTableId FABRIC_INGRESS_NEXT_MULTICAST =
Yi Tseng27b9bc02018-04-12 14:52:40 +080080 PiTableId.of("FabricIngress.next.multicast");
Yi Tseng43ee7e82018-04-12 16:37:34 +080081 public static final PiTableId FABRIC_INGRESS_FORWARDING_MULTICAST_V4 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080082 PiTableId.of("FabricIngress.forwarding.multicast_v4");
Yi Tseng43ee7e82018-04-12 16:37:34 +080083 public static final PiTableId FABRIC_INGRESS_FORWARDING_MULTICAST_V6 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080084 PiTableId.of("FabricIngress.forwarding.multicast_v6");
Yi Tseng43ee7e82018-04-12 16:37:34 +080085 public static final PiTableId FABRIC_INGRESS_FORWARDING_UNICAST_V4 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080086 PiTableId.of("FabricIngress.forwarding.unicast_v4");
Yi Tseng43ee7e82018-04-12 16:37:34 +080087 public static final PiTableId FABRIC_INGRESS_FILTERING_FWD_CLASSIFIER =
Yi Tseng27b9bc02018-04-12 14:52:40 +080088 PiTableId.of("FabricIngress.filtering.fwd_classifier");
Yi Tseng43ee7e82018-04-12 16:37:34 +080089 public static final PiTableId FABRIC_INGRESS_FORWARDING_BRIDGING =
Yi Tseng27b9bc02018-04-12 14:52:40 +080090 PiTableId.of("FabricIngress.forwarding.bridging");
Yi Tseng43ee7e82018-04-12 16:37:34 +080091 public static final PiTableId FABRIC_INGRESS_NEXT_SIMPLE =
Yi Tseng20f9e7b2018-05-24 23:27:39 +080092 PiTableId.of("FabricIngress.next.simple");
Yi Tseng43ee7e82018-04-12 16:37:34 +080093 public static final PiTableId FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN =
Yi Tseng27b9bc02018-04-12 14:52:40 +080094 PiTableId.of("FabricIngress.filtering.ingress_port_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +080095 public static final PiTableId FABRIC_INGRESS_FORWARDING_UNICAST_V6 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080096 PiTableId.of("FabricIngress.forwarding.unicast_v6");
Yi Tseng43ee7e82018-04-12 16:37:34 +080097 public static final PiTableId FABRIC_INGRESS_NEXT_VLAN_META =
Yi Tseng20f9e7b2018-05-24 23:27:39 +080098 PiTableId.of("FabricIngress.next.vlan_meta");
Yi Tsengbe342052017-11-03 10:21:23 -070099 // Indirect Counter IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800100 public static final PiCounterId FABRIC_INGRESS_PORT_COUNTERS_CONTROL_EGRESS_PORT_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800101 PiCounterId.of("FabricIngress.port_counters_control.egress_port_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800102 public static final PiCounterId FABRIC_INGRESS_PORT_COUNTERS_CONTROL_INGRESS_PORT_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800103 PiCounterId.of("FabricIngress.port_counters_control.ingress_port_counter");
Yi Tsengbe342052017-11-03 10:21:23 -0700104 // Direct Counter IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800105 public static final PiCounterId FABRIC_INGRESS_FORWARDING_ACL_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800106 PiCounterId.of("FabricIngress.forwarding.acl_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800107 public static final PiCounterId FABRIC_INGRESS_NEXT_MULTICAST_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800108 PiCounterId.of("FabricIngress.next.multicast_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800109 public static final PiCounterId FABRIC_INGRESS_NEXT_VLAN_META_COUNTER =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800110 PiCounterId.of("FabricIngress.next.vlan_meta_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800111 public static final PiCounterId FABRIC_INGRESS_FILTERING_FWD_CLASSIFIER_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800112 PiCounterId.of("FabricIngress.filtering.fwd_classifier_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800113 public static final PiCounterId FABRIC_INGRESS_FORWARDING_BRIDGING_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800114 PiCounterId.of("FabricIngress.forwarding.bridging_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800115 public static final PiCounterId FABRIC_INGRESS_FORWARDING_MULTICAST_V6_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800116 PiCounterId.of("FabricIngress.forwarding.multicast_v6_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800117 public static final PiCounterId FABRIC_INGRESS_FORWARDING_MULTICAST_V4_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800118 PiCounterId.of("FabricIngress.forwarding.multicast_v4_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800119 public static final PiCounterId FABRIC_INGRESS_FORWARDING_UNICAST_V6_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800120 PiCounterId.of("FabricIngress.forwarding.unicast_v6_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800121 public static final PiCounterId FABRIC_INGRESS_FORWARDING_UNICAST_V4_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800122 PiCounterId.of("FabricIngress.forwarding.unicast_v4_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800123 public static final PiCounterId FABRIC_INGRESS_NEXT_SIMPLE_COUNTER =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800124 PiCounterId.of("FabricIngress.next.simple_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800125 public static final PiCounterId FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800126 PiCounterId.of("FabricIngress.filtering.ingress_port_vlan_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800127 public static final PiCounterId FABRIC_INGRESS_FORWARDING_MPLS_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800128 PiCounterId.of("FabricIngress.forwarding.mpls_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800129 public static final PiCounterId FABRIC_INGRESS_NEXT_HASHED_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800130 PiCounterId.of("FabricIngress.next.hashed_counter");
Yi Tsengbe342052017-11-03 10:21:23 -0700131 // Action IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800132 public static final PiActionId FABRIC_INGRESS_FILTERING_DROP =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800133 PiActionId.of("FabricIngress.filtering.drop");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800134 public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800135 PiActionId.of("FabricIngress.next.set_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800136 public static final PiActionId FABRIC_INGRESS_FORWARDING_POP_MPLS_AND_NEXT =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800137 PiActionId.of("FabricIngress.forwarding.pop_mpls_and_next");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800138 public static final PiActionId FABRIC_EGRESS_EGRESS_NEXT_POP_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800139 PiActionId.of("FabricEgress.egress_next.pop_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800140 public static final PiActionId FABRIC_INGRESS_FILTERING_SET_FORWARDING_TYPE =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800141 PiActionId.of("FabricIngress.filtering.set_forwarding_type");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800142 public static final PiActionId NOP = PiActionId.of("nop");
143 public static final PiActionId FABRIC_INGRESS_FILTERING_SET_VLAN =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800144 PiActionId.of("FabricIngress.filtering.set_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800145 public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V6 =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800146 PiActionId.of("FabricIngress.next.mpls_routing_v6");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800147 public static final PiActionId FABRIC_EGRESS_PKT_IO_EGRESS_POP_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800148 PiActionId.of("FabricEgress.pkt_io_egress.pop_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800149 public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800150 PiActionId.of("FabricIngress.next.l3_routing_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800151 public static final PiActionId NO_ACTION = PiActionId.of("NoAction");
152 public static final PiActionId FABRIC_INGRESS_NEXT_SET_MCAST_GROUP =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800153 PiActionId.of("FabricIngress.next.set_mcast_group");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800154 public static final PiActionId FABRIC_INGRESS_FORWARDING_DUPLICATE_TO_CONTROLLER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800155 PiActionId.of("FabricIngress.forwarding.duplicate_to_controller");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800156 public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800157 PiActionId.of("FabricIngress.next.l3_routing");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800158 public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V4 =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800159 PiActionId.of("FabricIngress.next.mpls_routing_v4");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800160 public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN_OUTPUT =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800161 PiActionId.of("FabricIngress.next.set_vlan_output");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800162 public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800163 PiActionId.of("FabricIngress.forwarding.set_next_id");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800164 public static final PiActionId FABRIC_INGRESS_FILTERING_PUSH_INTERNAL_VLAN =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800165 PiActionId.of("FabricIngress.filtering.push_internal_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800166 public static final PiActionId FABRIC_INGRESS_FORWARDING_DROP =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800167 PiActionId.of("FabricIngress.forwarding.drop");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800168 public static final PiActionId FABRIC_INGRESS_NEXT_OUTPUT =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800169 PiActionId.of("FabricIngress.next.output");
Yi Tsengbe342052017-11-03 10:21:23 -0700170 // Action Param IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800171 public static final PiActionParamId DMAC = PiActionParamId.of("dmac");
172 public static final PiActionParamId PORT_NUM =
Yi Tsengc6844f52017-12-19 11:58:25 -0800173 PiActionParamId.of("port_num");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800174 public static final PiActionParamId LABEL = PiActionParamId.of("label");
175 public static final PiActionParamId SMAC = PiActionParamId.of("smac");
176 public static final PiActionParamId GID = PiActionParamId.of("gid");
177 public static final PiActionParamId NEW_VLAN_ID =
Yi Tsengc6844f52017-12-19 11:58:25 -0800178 PiActionParamId.of("new_vlan_id");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800179 public static final PiActionParamId FWD_TYPE =
Yi Tsengc6844f52017-12-19 11:58:25 -0800180 PiActionParamId.of("fwd_type");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800181 public static final PiActionParamId NEXT_ID = PiActionParamId.of("next_id");
Yi Tsengbe342052017-11-03 10:21:23 -0700182 // Action Profile IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800183 public static final PiActionProfileId FABRIC_INGRESS_NEXT_ECMP_SELECTOR =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800184 PiActionProfileId.of("FabricIngress.next.ecmp_selector");
Yi Tsengbe342052017-11-03 10:21:23 -0700185 // Packet Metadata IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800186 public static final PiControlMetadataId INGRESS_PORT =
Yi Tsengc6844f52017-12-19 11:58:25 -0800187 PiControlMetadataId.of("ingress_port");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800188 public static final PiControlMetadataId EGRESS_PORT =
Yi Tsengc6844f52017-12-19 11:58:25 -0800189 PiControlMetadataId.of("egress_port");
Yi Tsengfa4a1c72017-11-03 10:22:38 -0700190 public static final int PORT_BITWIDTH = 9;
Yi Tseng43ee7e82018-04-12 16:37:34 +0800191}