Skip to content

Commit 4bc1ce3

Browse files
add some initial documentation for the NIC project
Change-Id: I53789181e7f9a827fcace4a23b367977e869199d Signed-off-by: David K. Bainbridge <[email protected]>
1 parent cf7d65f commit 4bc1ce3

File tree

5 files changed

+156
-22
lines changed

5 files changed

+156
-22
lines changed

manuals/developer-guide/src/main/asciidoc/bk-developers-guide.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ include::iotdm/iotdm-dev.adoc[]
5252

5353
include::lacp/lacp-dev.adoc[]
5454

55-
include::nic/nic-model-dev.adoc[]
55+
include::nic/nic-dev.adoc[]
5656

5757
include::neutron/neutron.adoc[]
5858

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
== Network Intent Composition (NIC) Developer Guide
2+
3+
=== Overview
4+
The Network Intent Composition (NIC) provides four features:
5+
6+
* odl-nic-core - the basic model and infrastructure for the NIC capabilities
7+
8+
* odl-nic-cli - support for the Karaf console CLI NIC commands
9+
10+
* odl-nic-renderer-vtn - a feature that transforms an intent to a network
11+
modification using the VTN project
12+
13+
* odl-nic-renderer-gbp - a feature that transforms an intent to a network
14+
modification using the Group Policy project
15+
16+
_Only a single renderer feature should be installed at a time for the Lithium
17+
release._
18+
19+
=== odl-nic-core
20+
This feature supplies the base models for the Network Intent Composition (NIC)
21+
capability. This includes the definition of intent as well as the configuration
22+
and operational data trees.
23+
24+
This feature only provides an information model. The interface for NIC is to
25+
modify the information model via the configuraiton data tree, which will
26+
trigger the renderer to make the appropriate changes in the controlled
27+
network.
28+
29+
==== POST / PUT (configuration)
30+
This operations create instances of an intent in the configuration data tree
31+
and trigger the creation or modification of an intent.
32+
33+
==== GET (configuration / operational)
34+
This operation lists all or fetches a single intent from the data tree.
35+
36+
==== DELETE (configuration)
37+
This operation will cause an intent to be removed from the system and trigger
38+
any configuration changes on the network rendered from this intent to be
39+
removed.
40+
41+
=== odl-nic-cli
42+
This feature provides karaf console CLI command to manipulate the intent
43+
data model. The CLI essentailly invokes the equivalent data operations.
44+
45+
==== intent:add
46+
Creates a new intent in the configuration data tree
47+
48+
==== intent:update
49+
Updates an existing intent in the configuration data tree
50+
51+
==== intent:delete
52+
Removes an existing intent from the system
53+
54+
==== intent:list
55+
Lists all the intents in the system
56+
57+
==== intent:show
58+
Displayes the details of a single intent

manuals/developer-guide/src/main/asciidoc/nic/nic-model-dev.adoc

Lines changed: 0 additions & 20 deletions
This file was deleted.

manuals/user-guide/src/main/asciidoc/bk-user-guide.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,12 @@ include::usc/odl-usc-channel-user.adoc[USC]
4242

4343
include::ttp/ttp-cli-tools-user.adoc[TTP]
4444

45-
include::capwap/capwap-user.adoc[CAPWAP]
45+
include::capwap/capwap-user.adoc[CAPWAP]
4646

4747
include::tsdr/tsdr-hbase-user.adoc[]
4848

4949
include::tsdr/tsdr-h2-user.adoc[]
5050

5151
include::didm/didm-user.adoc[]
52+
53+
include::nic/nic-user.adoc[NIC]
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
== Network Intent Composition (NIC) User Guide
2+
3+
=== Overview
4+
Network Intent Composition (NIC) is an interface that allows clients to
5+
express a desired state in an implementation-neutral form that will be
6+
enforced via modification of available resources under the control of
7+
the OpenDaylight system.
8+
9+
This description is purposely abstract as an intent interface might
10+
encompass network services, virtual devices, storage, etc.
11+
12+
The intent interface is meant to be a controller-agnostic interface
13+
so that "intents" are portable across implementations, such as OpenDaylight
14+
and ONOS. Thus an intent specification should not contain implementation
15+
or technology specifics.
16+
17+
The intent specification will be implemented by decomposing the intent
18+
and augmenting it with implementation specifics that are driven by
19+
local implementation rules, policies, and/or settings.
20+
21+
=== Network Intent Composition (NIC) Architecture
22+
The core of the NIC architecture is the intent model, which specifies
23+
the details of the desired state. It is the responsibility of the NIC
24+
implementation transforms this desired state to the resources under
25+
the control of OpenDaylight. The component that transforms the
26+
intent to the implementation is typically referred to as a renderer.
27+
28+
For the Lithium release, multiple, simultaneous renderers will not be supported.
29+
Instead either the VTN or GBP renderer feature can be installed, but
30+
not both.
31+
32+
For the Litium release, the only actions supported are "ALLOW" and
33+
"BLOCK". The "ALLOW" action indicates that traffic can flow between
34+
the source and destination end points, while "BLOCK" prevents that
35+
flow; although it is possible that an given implementation may augment
36+
the available actions with additional actions.
37+
38+
Besides transforming a desired state to an actual state it is the
39+
responsibility of a renderer to update the operational state tree for
40+
the NIC data model in OpenDaylight to reflect the intent which the
41+
renderer implemented.
42+
43+
=== Configuring Network Intent Composition (NIC)
44+
For the Litium release there is no default implementation of a renderer,
45+
thus without an additional module installed the NIC will not function.
46+
47+
=== Administering or Managing Network Intent Composition (NIC)
48+
There is no additional administration of management capabilities
49+
related to the Network Intent Composition features.
50+
51+
=== Interactions
52+
A user can interact with the Network Intent Composition (NIC) either
53+
through the RESTful interface using standard RESTCONF operations and
54+
syntax or via the Karaf console CLI.
55+
56+
==== REST
57+
58+
===== Configuration
59+
The Network Intent Composition (NIC) feature supports the following REST
60+
operations against the configuration data store.
61+
62+
* POST - creates a new instance of an intent in the configuration store,
63+
which will trigger the realization of that intent. An ID _must_ be specified
64+
as part of this request as an attribute of the intent.
65+
66+
* PUT - creates or updates an instance of an intent in the configuration store,
67+
which will trigger the realization of that intent.
68+
69+
* GET - fetches a list of all configured intents or a specific configured
70+
intent.
71+
72+
* DETELE - removes a configured intent from the configuration store, which
73+
triggers the removal of the intent from the network.
74+
75+
===== Operational
76+
The Network Intent Composition (NIC) feature supports the following REST
77+
operations against the operational data store.
78+
79+
* GET - fetches a list of all operational intents or a specific operational
80+
intent.
81+
82+
==== Karaf Console CLI
83+
Using the Karaf console CLI intents can be manipulated. The following Karaf
84+
console CLI commands are available.
85+
86+
* intent:add <intent-data> - creates a new intent
87+
88+
* intent:update <id> <intent-data> - updates an existing intent
89+
90+
* intent:list - lists all intents in the system
91+
92+
* intent:show <id> - display the details of a specific intent
93+
94+
* intent:delete <id> - removes an intent from the system

0 commit comments

Comments
 (0)