From 503181824b051eed3e5026d685e19a96d81a1224 Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Tue, 4 Apr 2023 10:06:45 +0200
Subject: [PATCH] Add documentation on data models

Signed-off-by: Karel van Klink <karel.vanklink@geant.org>
---
 docs/architecture/index.md                    |  51 ++----------------
 docs/glossary.md                              |   3 ++
 docs/index.md                                 |   9 +++-
 docs/modeling/index.md                        |  23 ++++++++
 docs/modeling/ports.md                        |  38 +++++++++++++
 docs/static/geant_ip_ports_diagram.png        | Bin 0 -> 24056 bytes
 .../vale/styles/Vocab/geant-jargon/accept.txt |   3 ++
 7 files changed, 80 insertions(+), 47 deletions(-)
 create mode 100644 docs/modeling/index.md
 create mode 100644 docs/modeling/ports.md
 create mode 100644 docs/static/geant_ip_ports_diagram.png

diff --git a/docs/architecture/index.md b/docs/architecture/index.md
index e37b829..cca0329 100644
--- a/docs/architecture/index.md
+++ b/docs/architecture/index.md
@@ -8,7 +8,8 @@ versions all configuration, and it's also responsible for managing mechanisms su
 
 The stack of tools is kept limited:
 
-* Ansible is the tool that deploys configuration and orchestrates changes.
+* Workflow Orchestrator ({term}`WFO`) orchestrates all changes.
+* Ansible is the tool that deploys configuration.
 * If needed, custom Python scripts can support extra functionality.
 
 This approach works well for the deployment of 'base configuration'. For service fulfillment, three more components are
@@ -18,7 +19,10 @@ introduced:
 * A service database.
 * A workflow engine.
 
+All three of these components are deployed as part of {term}`WFO`. More information about {term}`WFO` can be found on
+their website <a href="https://workfloworchestrator.org/" target="_blank">here</a>.
 
+(configuration-decomposition)=
 ## Configuration (de)composition
 
 The configuration of a network element can be decomposed in different functional parts:
@@ -75,48 +79,3 @@ All services offered can be summarised in the following four categories. Some ex
 |---------|-------------|------------------|
 | Layer 2 | VPLS / EVPN | Layer 2 circuits |
 | Layer 3 | L3VPN       | Core links       |
-
-### Decomposition of objects
-
-Every object -- both services and access ports -- is composed of the following building blocks:
-* Administrative metadata
-  * Object ID
-  * Status
-  * Owner
-* Configuration data that depends on the specific service, some examples:
-  * Access port
-    * Access port type
-    * Physical interfaces
-  * IP trunk
-    * IPv4 network
-    * IPv6 network
-    * IS-IS metric
-* Placement metadata
-  * Access node
-  * Service delivery point
-
-
-### Services and ports
-
-While a port shouldn't be configured in case there is no service insisting on it, it could happen that multiple
-services are insisting on the same port. For this reason, we define the following entities:
-
-{term}`SDP`
-: Service Delivery Point: the logical interface where a service is delivered
-
-{term}`GA`
-: Access Port: an access point into the GÉANT network
-
-{term}`GP`
-: Physical Port: the physical boundary for the {term}`GA`
-
-{term}`GAN`
-: Access Node: the node where a service is delivered
-
-These concepts apply to both {term}`CFS`es and {term}`IFS`es.
-
-```{figure} ../static/access_port_diagram.png
-:alt: Diagram that displays the different entities that make up a GÉANT service.
-
-A visualisation of how services insist on ports.
-```
diff --git a/docs/glossary.md b/docs/glossary.md
index 64541eb..232a073 100644
--- a/docs/glossary.md
+++ b/docs/glossary.md
@@ -34,6 +34,9 @@ MPLS
 MTTR
 : Mean Time To Repair
 
+MTU
+: Maximum Transmission Unit
+
 OOB
 : Out-of-band
 
diff --git a/docs/index.md b/docs/index.md
index 528a162..b567f7e 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -3,7 +3,7 @@
 Welcome to the documentation of the GÉANT Automation Platform, or {term}`GAP` for short. \
 The focus of this platform is configuration management and service orchestration for the GÉANT IP/{term}`MPLS` network.
 
-This documentation contains the following sections:
+This documentation has the following sections:
 
 ```{toctree}
 :caption: Background
@@ -12,6 +12,13 @@ overview/index.md
 architecture/index.md
 ```
 
+```{toctree}
+:caption: Modeling
+:maxdepth: 2
+modeling/index.md
+modeling/ports.md
+```
+
 ```{toctree}
 :caption: Processes
 :maxdepth: 2
diff --git a/docs/modeling/index.md b/docs/modeling/index.md
new file mode 100644
index 0000000..e883929
--- /dev/null
+++ b/docs/modeling/index.md
@@ -0,0 +1,23 @@
+# Data models
+
+To be able to model network objects, a data model must exist for every configuration item in the network. This allows
+for describing the network, and the services as a composition of abstract objects.
+
+## Decomposition of objects
+
+Every object -- both services and access ports -- is composed of the following building blocks:
+* Administrative metadata
+  * Object ID
+  * Status
+  * Owner
+* Configuration data that depends on the specific service, some examples:
+  * Access port
+    * Access port type
+    * Physical interfaces
+  * IP trunk
+    * IPv4 network
+    * IPv6 network
+    * IS-IS metric
+* Placement metadata
+  * Access node
+  * Service delivery point
diff --git a/docs/modeling/ports.md b/docs/modeling/ports.md
new file mode 100644
index 0000000..99e1cb9
--- /dev/null
+++ b/docs/modeling/ports.md
@@ -0,0 +1,38 @@
+# Services and ports
+
+While a port shouldn't be configured in case there is no service insisting on it, it could happen that more than one
+service is insisting on one port. For this reason, the following entities exist:
+
+{term}`SDP`
+: Service Delivery Point: the logical interface where a service is delivered
+
+{term}`GA`
+: Access Port: an access point into the GÉANT network
+
+{term}`GP`
+: Physical Port: the physical boundary for the {term}`GA`
+
+{term}`GAN`
+: Access Node: the node where a service is delivered
+
+These concepts apply to both {term}`CFS`es and {term}`IFS`es.
+
+```{figure} ../static/access_port_diagram.png
+:alt: Diagram that displays the different entities that make up a GÉANT service.
+
+A visualisation of how services insist on ports.
+```
+
+## Peer-to-peer and multipoint services
+
+There is a distinction between services -- as mentioned in [configuration (de)composition](#configuration-decomposition)
+-- between peer-to-peer and multipoint services. In both cases, {term}`SDP` is the delivery point of a service.
+However, for multipoint services customers are supposed to be dual-homed in at least two different {term}`GAN`s.
+
+To give some examples, the figure below shows a decomposition of a GeantIP service for an NREN.
+
+```{figure} ../static/geant_ip_ports_diagram.png
+:alt: Diagram that displays the different entities that make up a GeantIP service instance.
+
+A visualisation of an instance of a GeantIP service that consists of different configuration objects.
+```
diff --git a/docs/static/geant_ip_ports_diagram.png b/docs/static/geant_ip_ports_diagram.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e72025208d9a219a648a0507242dd29a68dd3ad
GIT binary patch
literal 24056
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

literal 0
HcmV?d00001

diff --git a/docs/vale/styles/Vocab/geant-jargon/accept.txt b/docs/vale/styles/Vocab/geant-jargon/accept.txt
index b164bf9..670f894 100644
--- a/docs/vale/styles/Vocab/geant-jargon/accept.txt
+++ b/docs/vale/styles/Vocab/geant-jargon/accept.txt
@@ -17,3 +17,6 @@ GAP
 WFO
 BGP
 FXP
+NREN
+MTU
+OOB
-- 
GitLab