...
Table of Contents | ||
---|---|---|
|
Overview
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 a switch, or optical lambdas (wavelengths) being reserved.
Although the ONOS core provides a suite of built-in intents and their compilers and installers, the intent framework is designed to be extensible. It allows additional intents and their compilers or installers to be added to ONOS dynamically at run-time. This allows others to enhance the initial arsenal of connectivity and policy-based intents available in ONOS by default.
Intents
An Intent
is an immutable model object that describes an application's request to the ONOS core to alter the network's behavior. At the lowest levels, Intents may be described in terms of:
...
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
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 Intent framework relies on the Java Future for handling the asynchronous intent compilation process.
Compilers and Installers
Intent
s are ultimately compiled down into a set of FlowRule
model objects. The process may include:
...
The IntentManager
coordinates the compilation and installation of FlowRule
s by managing the invocation of available IntentCompiler
s and IntentInstaller
s.
FlowRule Installation
FlowRuleBatchOperations
are handed off to the FlowRuleManager
to be written down as protocol-specific messages. In the case of OpenFlow, the 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.
...