You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/ARCHITECTURE.md
+20-11Lines changed: 20 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,22 +5,31 @@ CNF Integration
5
5
---------------
6
6
7
7
Each CNF remains to be packaged and delivered as a single docker image. The same image can be used to deploy the
8
-
CNF either as **Standalone** (i.e. inside a chain/mesh of CNFs) or as a **StoneWork Module** or SW-Module for short.
8
+
CNF either as **Standalone** (i.e. inside a chain/mesh of CNFs) or as a **StoneWork Module** or *SW-Module* for short.
9
+
9
10
Simply by setting the environment variable `CNF_MODE` to `STANDALONE` or `STONEWORK_MODULE`, the CNF will either start
10
11
its own instance of VPP or connect with the single shared VPP instance managed by Stonework, respectively.
11
12
12
-
StoneWork image itself consists of VPP (from upstream with some additional PANTHEON.tech plugins) and a control agent,
13
-
which is effectively [Ligato VPP-Agent][ligato-vpp-agent] extended with only two additional plugins --
14
-
[PuntManager][punt-manager-plugin] and [CNFRegistry][cnf-registry-plugin], working together to find and dynamically
15
-
load all enabled CNFs.
13
+
The StoneWork image itself consists of VPP (from upstream, with some additional PANTHEON.tech plugins) and a control agent,
14
+
which is effectively [Ligato VPP-Agent][ligato-vpp-agent], extended with two additional plugins:
15
+
16
+
-[PuntManager][punt-manager-plugin]
17
+
-[CNFRegistry][cnf-registry-plugin],
18
+
19
+
Both working together to find and dynamically load all enabled CNFs.
20
+
16
21
Neither control-plane nor data-plane features of any CNF are built-in to the StoneWork image directly. Not even
17
22
the protobuf configuration models. This means that the StoneWork image remains quite small and doesn't have
18
-
to be rebuilt even if a new CNF feature is added into the StoneWork. Instead every CNF runs as a separate container
19
-
from its own image, running its own control-plane agent that communicates with StoneWork to cooperatively
20
-
manage the single shared data-plane. All (enabled) CNFs and the StoneWork itself are typically orchestrated by
21
-
docker-compose. To enable a new CNF feature is then as easy as to add a container entry into docker-compose.yaml
23
+
to be rebuilt, even if a new CNF feature is added into StoneWork.
24
+
25
+
Instead, every CNF runs as a separate container from its own image, running its own control-plane agent that communicates with StoneWork to cooperatively
26
+
manage the single, shared data-plane.
27
+
28
+
All (enabled) CNFs and the StoneWork itself are typically orchestrated by
29
+
*docker-compose*. To enable a new CNF feature is then as easy, as to add a container entry into *docker-compose.yaml*
22
30
for the CNF, restart the deployment and let the StoneWork to discover it.
23
-
If instead for a particular deployment a given CNF is never used, it doesn't have to be mentioned in docker-compose.yaml
31
+
32
+
If a given CNF is never used, it doesn't have to be mentioned in *docker-compose.yaml*
24
33
and the image itself does not have to be shipped to the target device. This means that only CNFs that are actually
25
34
needed will use the system resources.
26
35
@@ -29,7 +38,7 @@ learn their configuration models over gRPC and prepare KVDescriptors for them th
29
38
between StoneWork and CNFs. [PuntManager][punt-manager-plugin] then allows to establish shared or separate data paths
30
39
for punted packets (i.e. packets received by VPP but forwarded to the data-plane of a CNF for further processing).
31
40
32
-
The following diagram visually depicts StoneWork deployment consisting of one StoneWork container and one container
41
+
The following diagram visually depicts StoneWork deployment, consisting of one StoneWork container and one container
33
42
per CNF. The established data path links are marked with blue color, while control-plane links are orange colored.
34
43
The proxying of CRUD operations is highlighted using the red color:
0 commit comments