[ONOS-7255] Remove next id mapping table from fabric.p4
Change-Id: Ibcdc49f7c802cb4a4175d51314713725d8b05a77
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
index 63badda..dca2182 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
@@ -91,7 +91,6 @@
public static final PiTableId TBL_HASHED_ID = PiTableId.of("next.hashed");
public static final PiTableId TBL_INGRESS_PORT_VLAN_ID = PiTableId.of("filtering.ingress_port_vlan");
public static final PiTableId TBL_FWD_CLASSIFIER_ID = PiTableId.of("filtering.fwd_classifier");
- public static final PiTableId TBL_NEXT_ID_MAPPING_ID = PiTableId.of("next.next_id_mapping");
public static final PiTableId TBL_UNICAST_V6_ID = PiTableId.of("forwarding.unicast_v6");
public static final PiTableId TBL_SIMPLE_ID = PiTableId.of("next.simple");
public static final PiTableId TBL_BRIDGING_ID = PiTableId.of("forwarding.bridging");
@@ -113,7 +112,6 @@
public static final PiCounterId CNT_FWD_CLASSIFIER_COUNTER_ID = PiCounterId.of("filtering.fwd_classifier_counter");
public static final PiCounterId CNT_UNICAST_V6_COUNTER_ID = PiCounterId.of("forwarding.unicast_v6_counter");
public static final PiCounterId CNT_BRIDGING_COUNTER_ID = PiCounterId.of("forwarding.bridging_counter");
- public static final PiCounterId CNT_NEXT_ID_MAPPING_COUNTER_ID = PiCounterId.of("next.next_id_mapping_counter");
public static final PiCounterId CNT_SIMPLE_COUNTER_ID = PiCounterId.of("next.simple_counter");
public static final PiCounterId CNT_HASHED_COUNTER_ID = PiCounterId.of("next.hashed_counter");
public static final PiCounterId CNT_BROADCAST_COUNTER_ID = PiCounterId.of("next.broadcast_counter");
@@ -130,7 +128,6 @@
public static final PiActionId ACT_MPLS_ROUTING_V6_ID = PiActionId.of("next.mpls_routing_v6");
public static final PiActionId ACT_SET_FORWARDING_TYPE_ID = PiActionId.of("filtering.set_forwarding_type");
public static final PiActionId ACT_POP_MPLS_AND_NEXT_ID = PiActionId.of("forwarding.pop_mpls_and_next");
- public static final PiActionId ACT_SET_NEXT_TYPE_ID = PiActionId.of("next.set_next_type");
public static final PiActionId ACT_L3_ROUTING_ID = PiActionId.of("next.l3_routing");
public static final PiActionId ACT_OUTPUT_ID = PiActionId.of("next.output");
public static final PiActionId ACT_NOP_ID = PiActionId.of("nop");
@@ -146,11 +143,10 @@
public static final PiActionParamId ACT_PRM_GID_ID = PiActionParamId.of("gid");
public static final PiActionParamId ACT_PRM_NEW_VLAN_ID_ID = PiActionParamId.of("new_vlan_id");
public static final PiActionParamId ACT_PRM_FWD_TYPE_ID = PiActionParamId.of("fwd_type");
- public static final PiActionParamId ACT_PRM_NEXT_TYPE_ID = PiActionParamId.of("next_type");
public static final PiActionParamId ACT_PRM_NEXT_ID_ID = PiActionParamId.of("next_id");
// Action Profile IDs
- public static final PiActionProfileId ACT_PRF_ECMP_SELECTOR_ID = PiActionProfileId.of("next.ecmp_selector");
+ public static final PiActionProfileId ACT_PRF_NEXT_ECMP_SELECTOR_ID = PiActionProfileId.of("next.ecmp_selector");
// Packet Metadata IDs
public static final PiControlMetadataId CTRL_META_EGRESS_PORT_ID = PiControlMetadataId.of("egress_port");
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
index 65729c0..69a686e 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
@@ -75,10 +75,9 @@
.put(7, FabricConstants.TBL_BRIDGING_ID)
.put(8, FabricConstants.TBL_ACL_ID)
// Next
- .put(9, FabricConstants.TBL_NEXT_ID_MAPPING_ID)
- .put(10, FabricConstants.TBL_SIMPLE_ID)
- .put(11, FabricConstants.TBL_HASHED_ID)
- .put(12, FabricConstants.TBL_BROADCAST_ID)
+ .put(9, FabricConstants.TBL_SIMPLE_ID)
+ .put(10, FabricConstants.TBL_HASHED_ID)
+ .put(11, FabricConstants.TBL_BROADCAST_ID)
.build();
private static final Set<PiTableId> FILTERING_CTRL_TBLS = ImmutableSet.of(FabricConstants.TBL_INGRESS_PORT_VLAN_ID,
@@ -90,8 +89,7 @@
FabricConstants.TBL_MULTICAST_V6_ID,
FabricConstants.TBL_BRIDGING_ID,
FabricConstants.TBL_ACL_ID);
- private static final Set<PiTableId> NEXT_CTRL_TBLS = ImmutableSet.of(FabricConstants.TBL_NEXT_ID_MAPPING_ID,
- FabricConstants.TBL_SIMPLE_ID,
+ private static final Set<PiTableId> NEXT_CTRL_TBLS = ImmutableSet.of(FabricConstants.TBL_SIMPLE_ID,
FabricConstants.TBL_HASHED_ID,
FabricConstants.TBL_BROADCAST_ID);
@@ -104,7 +102,6 @@
.put(FabricConstants.TBL_BROADCAST_ID, FabricConstants.CNT_BROADCAST_COUNTER_ID)
.put(FabricConstants.TBL_HASHED_ID, FabricConstants.CNT_HASHED_COUNTER_ID)
.put(FabricConstants.TBL_INGRESS_PORT_VLAN_ID, FabricConstants.CNT_INGRESS_PORT_VLAN_COUNTER_ID)
- .put(FabricConstants.TBL_NEXT_ID_MAPPING_ID, FabricConstants.CNT_NEXT_ID_MAPPING_COUNTER_ID)
.put(FabricConstants.TBL_UNICAST_V6_ID, FabricConstants.CNT_UNICAST_V6_COUNTER_ID)
.put(FabricConstants.TBL_SIMPLE_ID, FabricConstants.CNT_SIMPLE_COUNTER_ID)
.put(FabricConstants.TBL_BRIDGING_ID, FabricConstants.CNT_BRIDGING_COUNTER_ID)
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java
index 324a4f5..9177237 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java
@@ -16,7 +16,6 @@
package org.onosproject.pipelines.fabric.pipeliner;
-import com.google.common.collect.ImmutableMap;
import org.onosproject.net.DeviceId;
import org.onosproject.net.flow.DefaultFlowRule;
import org.onosproject.net.flow.DefaultTrafficSelector;
@@ -33,23 +32,16 @@
import org.onosproject.net.group.GroupBucket;
import org.onosproject.net.group.GroupBuckets;
import org.onosproject.net.group.GroupDescription;
-import org.onosproject.net.pi.runtime.PiAction;
import org.onosproject.net.pi.runtime.PiActionGroupId;
-import org.onosproject.net.pi.runtime.PiActionParam;
import org.onosproject.net.pi.runtime.PiGroupKey;
import org.slf4j.Logger;
import java.util.List;
-import java.util.Map;
import java.util.stream.Collectors;
-import static org.onlab.util.ImmutableByteSequence.copyFrom;
-import static org.onosproject.pipelines.fabric.FabricConstants.ACT_PRF_ECMP_SELECTOR_ID;
-import static org.onosproject.pipelines.fabric.FabricConstants.ACT_PRM_NEXT_TYPE_ID;
-import static org.onosproject.pipelines.fabric.FabricConstants.ACT_SET_NEXT_TYPE_ID;
+import static org.onosproject.pipelines.fabric.FabricConstants.ACT_PRF_NEXT_ECMP_SELECTOR_ID;
import static org.onosproject.pipelines.fabric.FabricConstants.HF_FABRIC_METADATA_NEXT_ID_ID;
import static org.onosproject.pipelines.fabric.FabricConstants.TBL_HASHED_ID;
-import static org.onosproject.pipelines.fabric.FabricConstants.TBL_NEXT_ID_MAPPING_ID;
import static org.onosproject.pipelines.fabric.FabricConstants.TBL_SIMPLE_ID;
import static org.slf4j.LoggerFactory.getLogger;
@@ -59,18 +51,6 @@
public class FabricNextPipeliner {
private static final Logger log = getLogger(FabricNextPipeliner.class);
- // Next types
- private static final byte NXT_TYPE_SIMPLE = 0;
- private static final byte NXT_TYPE_HASHED = 1;
- private static final byte NXT_TYPE_BROADCAST = 2;
- private static final byte NXT_TYPE_PUNT = 3;
- private static final Map<NextObjective.Type, Byte> NEXT_TYPE_MAP =
- ImmutableMap.<NextObjective.Type, Byte>builder()
- .put(NextObjective.Type.SIMPLE, NXT_TYPE_SIMPLE)
- .put(NextObjective.Type.HASHED, NXT_TYPE_HASHED)
- .put(NextObjective.Type.BROADCAST, NXT_TYPE_BROADCAST)
- .build();
-
protected DeviceId deviceId;
public FabricNextPipeliner(DeviceId deviceId) {
@@ -79,7 +59,6 @@
public PipelinerTranslationResult next(NextObjective nextObjective) {
PipelinerTranslationResult.Builder resultBuilder = PipelinerTranslationResult.builder();
- processNextIdMapping(nextObjective, resultBuilder);
switch (nextObjective.type()) {
case SIMPLE:
@@ -97,23 +76,6 @@
return resultBuilder.build();
}
- private void processNextIdMapping(NextObjective next,
- PipelinerTranslationResult.Builder resultBuilder) {
- // program the next id mapping table
- TrafficSelector nextIdSelector = buildNextIdSelector(next.id());
- TrafficTreatment setNextTypeTreatment = buildSetNextTypeTreatment(next.type());
-
- resultBuilder.addFlowRule(DefaultFlowRule.builder()
- .withSelector(nextIdSelector)
- .withTreatment(setNextTypeTreatment)
- .forDevice(deviceId)
- .forTable(TBL_NEXT_ID_MAPPING_ID)
- .makePermanent()
- .withPriority(next.priority())
- .fromApp(next.appId())
- .build());
- }
-
private void processSimpleNext(NextObjective next,
PipelinerTranslationResult.Builder resultBuilder) {
@@ -165,7 +127,7 @@
GroupBuckets buckets = new GroupBuckets(bucketList);
PiGroupKey groupKey = new PiGroupKey(TBL_HASHED_ID,
- ACT_PRF_ECMP_SELECTOR_ID,
+ ACT_PRF_NEXT_ECMP_SELECTOR_ID,
groupId);
resultBuilder.addGroup(new DefaultGroupDescription(deviceId,
@@ -200,17 +162,4 @@
.matchPi(nextIdCriterion)
.build();
}
-
- private TrafficTreatment buildSetNextTypeTreatment(NextObjective.Type nextType) {
- byte nextTypeVal = NEXT_TYPE_MAP.getOrDefault(nextType, NXT_TYPE_PUNT);
- PiActionParam nextTypeParam = new PiActionParam(ACT_PRM_NEXT_TYPE_ID,
- copyFrom(nextTypeVal));
- PiAction nextTypeAction = PiAction.builder()
- .withId(ACT_SET_NEXT_TYPE_ID)
- .withParameter(nextTypeParam)
- .build();
- return DefaultTrafficTreatment.builder()
- .piTableAction(nextTypeAction)
- .build();
- }
}