Package org.onosproject.net.intent
The controller core provides a suite of built-in intents and their compilers and installers. However, the intent framework is extensible in that it allows additional intents and their compilers or installers to be added dynamically at run-time. This allows others to enhance the initial arsenal of connectivity and policy-based intents available in base controller software.
The following diagram depicts the state transition diagram for each top-level intent:
The controller core accepts the intent specifications and translates them, via a process referred to as intent compilation, to installable intents, which are essentially actionable operations on the network environment. These actions are carried out by intent installation process, which results in some changes to the environment, e.g. tunnel links being provisioned, flow rules being installed on the data-plane, optical lambdas being reserved.
After an intent is submitted by an application, it will be sent immediately (but asynchronously) into a compiling phase, then to installing phase and if all goes according to plan into installed state. Once an application decides it no longer wishes the intent to hold, it can withdraw it. This describes the nominal flow. However, it may happen that some issue is encountered. For example, an application may ask for an objective that is not currently achievable, e.g. connectivity across to unconnected network segments. If this is the case, the compiling phase may fail to produce a set of installable intents and instead result in a failed compile. If this occurs, only a change in the environment can trigger a transition back to the compiling state.
Similarly, an issue may be encountered during the installation phase in which case the framework will attempt to recompile the intent to see if an alternate approach is available. If so, the intent will be sent back to installing phase. Otherwise, it will be parked in the failed state. Another scenario that’s very likely to be encountered is where the intent is successfully compiled and installed, but due to some topology event, such as a downed or downgraded link, loss of throughput may occur or connectivity may be lost altogether, thus impacting the viability of a previously satisfied intent. If this occurs, the framework will attempt to recompile the intent, and if an alternate approach is available, its installation will be attempted. Otherwise, the original top-level intent will be parked in the failed state.
Please note that all *ing states, depicted in orange, are transitional and are expected to last only a brief amount of time. The rest of the states are parking states where the intent may spent some time; except for the submitted state of course. There, the intent may pause, but only briefly, while the system determines where to perform the compilation or while it performs global recomputation/optimization across all prior intents.
The figure below depicts the general interactions between different
components of the intent subsystem.
-
Interface Summary Interface Description Constraint Representation of a connectivity constraint capable of evaluating a link and determining the cost of traversing that link in the context of this constraint.IntentBatchDelegate Facade for receiving notifications from the intent batch service.IntentClockService Logical clock service that issues per-intent timestamps.IntentCompiler<T extends Intent> Abstraction of a compiler which is capable of taking an intent and translating it to other, potentially installable, intents.IntentExtensionService Service for extending the capability of intent framework by adding additional compilers or/and installers.IntentInstallCoordinator Contact point for installers to report progress of intent installation and to update intent-specific status and context appropriately.IntentInstaller<T extends Intent> Manage installation process for specific installable Intents.IntentListener Listener forintent events
.IntentService Service for application submitting or withdrawing their intents.IntentSetMultimap IntentStore Manages inventory of end-station intents; not intended for direct use.IntentStoreDelegate Intent store delegate abstraction.ObjectiveTrackerService Auxiliary service for tracking intent path flows and for notifying the intent service of environment changes via topology change delegate.ResourceContext Class providing resource information to constraints.TopologyChangeDelegate Auxiliary delegate for integration of intent manager and flow trackerService.WorkPartitionEventListener Entity capable of receiving device partition-related events.WorkPartitionService Service for partitioning work, represented via a unique identifier, onto cluster nodes. -
Class Summary Class Description ConnectivityIntent Abstraction of connectivity intent for traffic matching some criteria.ConnectivityIntent.Builder Abstract builder for connectivity intents.FlowObjectiveIntent Intent expressed as (and backed by) a collection of flow objectives through which the intent is to be accomplished.FlowRuleIntent An intent that enables to tell flow level operation.HostToHostIntent Abstraction of end-station to end-station bidirectional connectivity.HostToHostIntent.Builder Builder of a host to host intent.Intent Abstraction of an application level intent.Intent.Builder Abstract builder for intents.IntentData A wrapper class that contains an intents, its state, and other metadata for internal use.IntentEvent A class to represent an intent related event.IntentId Intent identifier suitable as an external key.IntentInstallationContext Installation context for a high level Intent.IntentOperation Abstraction of an intent-related operation, e.g.IntentOperationContext<T extends Intent> Operation context for installable Intent.IntentUtils Utilities for dealing with intents.Key Key class for Intents.LinkCollectionIntent Abstraction of a connectivity intent that is implemented by a set of path segments.LinkCollectionIntent.Builder Builder of a single point to multi point intent.MultiPointToSinglePointIntent Abstraction of multiple source to single destination connectivity intent.MultiPointToSinglePointIntent.Builder Builder of a multi point to single point intent.OpticalCircuitIntent An optical layer intent for circuits between two OduClt ports.OpticalCircuitIntent.Builder Builder for optical circuit intents.OpticalConnectivityIntent An optical layer intent for connectivity between two OCh ports.OpticalConnectivityIntent.Builder Builder for optical connectivity intents.OpticalOduIntent An optical layer intent between two OduClt ports - in an OTN Topology.OpticalOduIntent.Builder Builder for optical ODU intents.OpticalPathIntent An optical layer intent with explicitly selected path.OpticalPathIntent.Builder Builder for optical path intents.PathIntent Abstraction of explicitly path specified connectivity intent.PathIntent.Builder Builder of a host to host intent.PointToPointIntent Abstraction of point-to-point connectivity.PointToPointIntent.Builder Builder of a point to point intent.ProtectedTransportIntent Intent to create a protected linear path.ProtectedTransportIntent.Builder Builder forProtectedTransportIntent
.ProtectionEndpointIntent Installable Intent for the ProtectionEndpoint (head/tail).ProtectionEndpointIntent.Builder Builder forProtectionEndpointIntent
.SinglePointToMultiPointIntent Abstraction of single source, multiple destination connectivity intent.SinglePointToMultiPointIntent.Builder Builder of a single point to multi point intent.TwoWayP2PIntent Abstraction of bidirectional connectivity between two points in the network.TwoWayP2PIntent.Builder Builder of a point to point intent.WorkPartitionEvent Partition event. -
Enum Summary Enum Description IntentEvent.Type IntentInstaller.Direction The installation direction.IntentOperation.Type Operation type.IntentState Representation of the phases an intent may attain during its lifecycle.PathIntent.ProtectionType WorkPartitionEvent.Type -
Exception Summary Exception Description IntentCompilationException An exception thrown when a intent compilation fails.IntentException Represents an intent related error.