Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Intent Framework is a subsystem that allows applications to specify their network control desires in form of policy rather than mechanism. We refer to these policy-based directives as intents. The ONOS core accepts the intent specifications and translates them, via intent compilation, into 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, such as tunnel links being provisioned, flow rules being installed on the data-planea switch, or optical lambdas (wavelengths) being reserved.

...

In addition, Intents are always identified by both the ApplicationId of the application that submitted it, and a unique IntentId, generated at creation. 

Intent Compilation

State Machine

The following diagram depicts the state transition diagram for the compilation process of each top-level intent:

...

  • the system determines where to perform the compilation, or
  • it performs global recomputation/optimization across all prior intents.

General Operation

After an intent is submitted by an application, it will be sent immediately (but asynchronously) into a compiling phase, then to the installing phase, and finally, to the installed state. An intent may also be withdrawn if an application decides that it no longer wishes for the intent to hold.

The rest of the states account for various issues that may arise:

  • An application may ask for an objective that is not currently achievable, e.g. connectivity across to unconnected network segments. In this case, the compiling phase may fail. A change in the environment that results in the objectives being met can trigger a transition back to the compiling state.
  • The installation phase may be disrupted. In this case, the framework will attempt to recompile the intent to see if an alternate approach is available. If recompilation succeeds, it will return to the installing phase.
  • A loss of throughput or connectivity may impact the viability of a successfully compiled and installed intent. In this case, the framework will attempt to recompile the intent, and if an alternate approach is available, its installation will be attempted. 

The failure mode for the above cases is the failed state. 

The Intent framework relies on the Java Future for handling the asynchronous intent compilation process. 

Compilers and Installers

Intents are ultimately compiled down into a set of FlowRule model objects. The process may include:

...

FlowRuleBatchOperations are handed off to the FlowRuleManager to be written down as protocol-specific messages. In the case of the OpenFlow subsystem, the FlowRules are used to generate OFFlowMod messages before being sent to OpenFlowRuleProvider is responsible for generating OFFlowMod messages from FlowRules, and sending it to the appropriate network switch. It relies on the OpenFlow subsystem for its message factories and OpenFlowSwitch references for this task.