public class OvsOfdpaPipeline extends Ofdpa2Pipeline
Ofdpa2Pipeline.RetryFlowsACL_TABLE, ALLOW_VLAN_TRANSLATION, appKryo, BRIDGING_TABLE, COPY_FIELD_NBITS, COPY_FIELD_OFFSET, coreService, DEFAULT_PRIORITY, deviceId, deviceService, driverId, EGRESS_DSCP_PCP_REMARK_FLOW_TABLE, EGRESS_TPID_FLOW_TABLE, EGRESS_VLAN_FLOW_TABLE, flowObjectiveStore, flowRuleService, groupHandler, groupService, HIGHEST_PRIORITY, LOWEST_PRIORITY, MAC_LEARNING_TABLE, MPLS_L2_PORT_FLOW_TABLE, MPLS_L2_PORT_PCP_TRUST_FLOW_TABLE, MPLS_L2_PORT_PRIORITY, MPLS_L3_TYPE_TABLE, MPLS_NNI_PORT_BASE, MPLS_NNI_PORT_MAX, MPLS_TABLE_0, MPLS_TABLE_1, MPLS_TUNNEL_ID_BASE, MPLS_TUNNEL_ID_MAX, MPLS_TYPE_TABLE, MPLS_UNI_PORT_MAX, MULTICAST_ROUTING_TABLE, OFPP_MAX, PORT_TABLE, serviceDirectory, TMAC_TABLE, UNICAST_ROUTING_TABLE, VLAN_1_TABLE, VLAN_TABLE| Constructor and Description |
|---|
OvsOfdpaPipeline() |
| Modifier and Type | Method and Description |
|---|---|
void |
init(org.onosproject.net.DeviceId deviceId,
org.onosproject.net.behaviour.PipelinerContext context) |
protected void |
initDriverId() |
protected void |
initGroupHander(org.onosproject.net.behaviour.PipelinerContext context) |
protected void |
initializePipeline() |
protected Collection<org.onosproject.net.flow.FlowRule> |
processDoubleTaggedFwd(org.onosproject.net.flowobjective.ForwardingObjective fwd)
Handles forwarding rules to the IP Unicast Routing.
|
protected Collection<org.onosproject.net.flow.FlowRule> |
processEgress(org.onosproject.net.flowobjective.ForwardingObjective fwd)
In the OF-DPA 2.0 pipeline, egress forwarding objectives go to the
egress tables.
|
protected List<List<org.onosproject.net.flow.FlowRule>> |
processEthDstFilter(org.onosproject.net.flow.criteria.PortCriterion portCriterion,
org.onosproject.net.flow.criteria.EthCriterion ethCriterion,
org.onosproject.net.flow.criteria.VlanIdCriterion vidCriterion,
org.onlab.packet.VlanId assignedVlan,
org.onlab.packet.MacAddress unicastMac,
org.onosproject.core.ApplicationId applicationId)
Allows routed packets with correct destination MAC to be directed
to unicast routing table, multicast routing table or MPLS forwarding table.
|
protected List<List<org.onosproject.net.flow.FlowRule>> |
processEthDstOnlyFilter(org.onosproject.net.flow.criteria.EthCriterion ethCriterion,
org.onosproject.core.ApplicationId applicationId) |
protected Collection<org.onosproject.net.flow.FlowRule> |
processEthDstSpecific(org.onosproject.net.flowobjective.ForwardingObjective fwd)
Handles forwarding rules to the L2 bridging table.
|
protected Collection<org.onosproject.net.flow.FlowRule> |
processEthTypeSpecific(org.onosproject.net.flowobjective.ForwardingObjective fwd)
Handles forwarding rules to the IP and MPLS tables.
|
protected void |
processFilter(org.onosproject.net.flowobjective.FilteringObjective filteringObjective,
boolean install,
org.onosproject.core.ApplicationId applicationId)
As per OFDPA 2.0 TTP, filtering of VLAN ids and MAC addresses (for routing)
configured on switch ports happen in different tables.
|
protected List<List<org.onosproject.net.flow.FlowRule>> |
processVlanIdFilter(org.onosproject.net.flow.criteria.PortCriterion portCriterion,
org.onosproject.net.flow.criteria.VlanIdCriterion vidCriterion,
org.onlab.packet.VlanId assignedVlan,
org.onosproject.core.ApplicationId applicationId)
Internal implementation of processVlanIdFilter.
|
protected boolean |
requireVlanExtensions()
Determines whether this pipeline requires OFDPA match and set VLAN extensions.
|
protected org.onosproject.net.flow.TrafficTreatment.Builder |
versatileTreatmentBuilder(org.onosproject.net.flowobjective.ForwardingObjective fwd)
Helper function to create traffic treatment builder for versatile forwarding objectives.
|
fail, filter, forward, getNextMappings, isAccumulatorEnabled, matchInPortTmacTable, next, pass, processEthTypeSpecificInternal, processVersatile, readEthDstFromTreatment, requireMplsBosMatch, requireMplsPop, requireMplsTtlModification, requirePuntTable, requireUnicastBeforeMulticast, shouldRetry, supportIpv6L4Dst, supportsUnicastBlackHole, versatileSelectorBuilderhandler, setHandlerprotected boolean requireVlanExtensions()
Ofdpa2PipelinerequireVlanExtensions in class Ofdpa2Pipelineprotected void initDriverId()
initDriverId in class Ofdpa2Pipelineprotected void initGroupHander(org.onosproject.net.behaviour.PipelinerContext context)
initGroupHander in class Ofdpa2Pipelinepublic void init(org.onosproject.net.DeviceId deviceId,
org.onosproject.net.behaviour.PipelinerContext context)
init in interface org.onosproject.net.behaviour.Pipelinerinit in class Ofdpa2Pipelineprotected void processFilter(org.onosproject.net.flowobjective.FilteringObjective filteringObjective,
boolean install,
org.onosproject.core.ApplicationId applicationId)
Ofdpa2PipelineprocessFilter in class Ofdpa2PipelinefilteringObjective - the filtering objectiveinstall - indicates whether to add or remove the objectiveapplicationId - the application that sent this objectiveprotected Collection<org.onosproject.net.flow.FlowRule> processEgress(org.onosproject.net.flowobjective.ForwardingObjective fwd)
processEgress in class Ofdpa2Pipelinefwd - the forwarding objective of type 'egress'protected Collection<org.onosproject.net.flow.FlowRule> processDoubleTaggedFwd(org.onosproject.net.flowobjective.ForwardingObjective fwd)
fwd - the forwarding objectiveprotected List<List<org.onosproject.net.flow.FlowRule>> processVlanIdFilter(org.onosproject.net.flow.criteria.PortCriterion portCriterion, org.onosproject.net.flow.criteria.VlanIdCriterion vidCriterion, org.onlab.packet.VlanId assignedVlan, org.onosproject.core.ApplicationId applicationId)
Ofdpa2PipelineThe is_present bit in set_vlan_vid action is required to be 0 in OFDPA i12. Since it is non-OF spec, we need an extension treatment for that. The useVlanExtension must be set to false for OFDPA i12.
NOTE: Separate VLAN filtering rules and assignment rules into different stages in order to guarantee that filtering rules always go first, as required by OFDPA.
processVlanIdFilter in class Ofdpa2PipelineportCriterion - port on device for which this filter is programmedvidCriterion - vlan assigned to port, or NONE for untaggedassignedVlan - assigned vlan-id for untagged packetsapplicationId - for application programming this filterprotected List<List<org.onosproject.net.flow.FlowRule>> processEthDstFilter(org.onosproject.net.flow.criteria.PortCriterion portCriterion, org.onosproject.net.flow.criteria.EthCriterion ethCriterion, org.onosproject.net.flow.criteria.VlanIdCriterion vidCriterion, org.onlab.packet.VlanId assignedVlan, org.onlab.packet.MacAddress unicastMac, org.onosproject.core.ApplicationId applicationId)
Ofdpa2PipelineprocessEthDstFilter in class Ofdpa2PipelineportCriterion - port on device for which this filter is programmedethCriterion - dstMac of device for which is filter is programmedvidCriterion - vlan assigned to port, or NONE for untaggedassignedVlan - assigned vlan-id for untagged packetsunicastMac - some switches require a unicast TMAC flow to be programmed before multicast
TMAC flow. This MAC address will be used for the unicast TMAC flow.
This is unused if the filtering objective is a unicast.applicationId - for application programming this filterprotected List<List<org.onosproject.net.flow.FlowRule>> processEthDstOnlyFilter(org.onosproject.net.flow.criteria.EthCriterion ethCriterion, org.onosproject.core.ApplicationId applicationId)
processEthDstOnlyFilter in class Ofdpa2Pipelineprotected Collection<org.onosproject.net.flow.FlowRule> processEthTypeSpecific(org.onosproject.net.flowobjective.ForwardingObjective fwd)
Ofdpa2PipelineprocessEthTypeSpecific in class Ofdpa2Pipelinefwd - the forwarding objectiveprotected Collection<org.onosproject.net.flow.FlowRule> processEthDstSpecific(org.onosproject.net.flowobjective.ForwardingObjective fwd)
Ofdpa2PipelineprocessEthDstSpecific in class Ofdpa2Pipelinefwd - the forwarding objectiveprotected org.onosproject.net.flow.TrafficTreatment.Builder versatileTreatmentBuilder(org.onosproject.net.flowobjective.ForwardingObjective fwd)
Ofdpa2PipelineversatileTreatmentBuilder in class Ofdpa2Pipelinefwd - original forwarding objectiveprotected void initializePipeline()
initializePipeline in class Ofdpa2Pipeline