Skip to content
Snippets Groups Projects
Commit f3b474e4 authored by Simone Spinelli's avatar Simone Spinelli
Browse files

Architecture section: intro and config decomposition

parent a37f8039
No related branches found
No related tags found
2 merge requests!16update documentation, update vale rules, reduce warnings and suggestions made by vale,!15Architecture section
Pipeline #83944 failed
# Integration with Kentik
# Integration with LibreNMS
# Components of GAP
\ No newline at end of file
# Configuration decomposition
## Functional decomposition
Every configuration statement express a particular function, we currently decompose the configuration according to this taxonomy:
![](../../assets/images/TNC23_diagrams-ConfigSlicing.drawio.png){ width='300' }
### Base configuration
It is present on all the nodes it performs exactly the same function adapting to particular values or characteristic of the node itself.
Examples are:
- SNMP communities: are the same for all the routers, including the client list
- AAA (local user and radius authentication): the same on all the routers, but the source address of Radius requests is the loopback of the specific device
Once the router has been configured with the base configuration, it is ready for the installation of one or more IPtrunks that will connect it to the rest of the network.
At this point, the router's loopback is reachable via IGP and the new device can be inserted in the network configuring iBGP mesh and adding it to tooling.
Now the router is in service, ready to carry services.
### Service prerequisites
L3VPNs must exist on the router before customer facing services can be configured, there might be also specific communities or routing policies that are generic and are considered as prerequisite for customer connections.
This functional block is responsible for this.
### Service
This block represent a service on the edge: a L2circuit or a BGP peer. This block is itself decomposed in other parts, according to the functional parts needed by configuration.
In general, we use a meta-service called demarcation point, to identify the physical interface on which the service should be delivered:
![](../../assets/images/TNC23_diagrams-Service_stitching.drawio.png){ width='400' }
A service is always delivered on a VLAN (that can be native VLAN in some particula cases, for example IPtrunk). The VLAN is called "Service Delivery Point".
## Separation of data and configuration
Configuration can be seen as the composition of some abstract data structure that represent the business logic, and a template that match the router's specific config dialect.
In the following example we are going to configure DNS servers on a Juniper and a Nokia router:
DNS servers (abstract data):
```
system_name_servers:
- 192.168.1.1
- 192.168.1.254
```
Junos template:
```
system {
replace: name-server {
{%- for name_server in system_name_servers %}
{{ name_server }};
{%- endfor %}
}
}
```
Nokia template:
```
```
\ No newline at end of file
...@@ -9,6 +9,9 @@ The diagram, shows how GAP position itself as a single point of access not only ...@@ -9,6 +9,9 @@ The diagram, shows how GAP position itself as a single point of access not only
GAP is responsible not only to allocate and release these resources but also to verify that all the systems are in sync over time. GAP is responsible not only to allocate and release these resources but also to verify that all the systems are in sync over time.
In other words, operators are no longer responsible to prepare resources before doing changes (for example allocating IP networks or addresses and configuring accordingly DNS): the GAP component responsible for the interaction with that particular system will take care of allocating and configure the necessary resources. In other words, operators are no longer responsible to prepare resources before doing changes (for example allocating IP networks or addresses and configuring accordingly DNS): the GAP component responsible for the interaction with that particular system will take care of allocating and configure the necessary resources.
Included in the orchestration layer, there is a service database that stores all the instances of the services in accordance to the domain models. More details are available in the section [GAP components](../architecture/components/index.md)
## OSS/BSS systems currently in scope ## OSS/BSS systems currently in scope
### Infoblox ### Infoblox
...@@ -24,7 +27,7 @@ More detailed information about this integration is available in the [Ipam integ ...@@ -24,7 +27,7 @@ More detailed information about this integration is available in the [Ipam integ
### Netbox ### Netbox
Netbox is responsible of managing physical resources such as nodes and interfaces. Netbox is responsible of managing physical resources such as nodes and interfaces. More specifically, it contains all the routers and the interfaces and provides to WFO the list of free interfaces.
An interface can be in 3 different states: An interface can be in 3 different states:
...@@ -36,9 +39,17 @@ More detailed information about this integration is available in the [Physical r ...@@ -36,9 +39,17 @@ More detailed information about this integration is available in the [Physical r
### LibreNMS ### LibreNMS
LibreNMS is a general purpose monitoring system in use at GÉANT to gather relevant metrics as well as checks and facts. LibreNMS is also the inventory for Oxidized: a network configuration backup system that is used to have versioned configuration backups of routers, switches and any other network device that is supported.
More detailed information about this integration is available in the [LibreNMS integration module](../admin_guide/oss_bss/librenms.md) More detailed information about this integration is available in the [LibreNMS integration module](../admin_guide/oss_bss/librenms.md)
### Kentik (planned) ### Kentik (planned)
Kentik is a Network Observability tool and it collects serveral information from our PE routers. For this reason it is not in scope for PHASE1.
### Inventory Provider (planned)
At the time of writing, Inventory provider gets the list of the routers from network engineering SOT servers. This will change and Inventory provider can directly query coreDB.
## Interaction with a technical domain: IP/MPLS ## Interaction with a technical domain: IP/MPLS
GAP
\ No newline at end of file
...@@ -45,15 +45,17 @@ nav: ...@@ -45,15 +45,17 @@ nav:
- Home: index.md - Home: index.md
- Architecture: - Architecture:
- architecture/index.md - architecture/index.md
- architecture/config_decomposition/index.md
- Components:
- architecture/components/index.md
- WFO: architecture/components/wfo/index.md
- Netbox: architecture/components/netbox/index.md
- Ansible: architecture/components/ansible/index.md
- DTAP: - DTAP:
- architecture/dtap/index.md - architecture/dtap/index.md
- Test: architecture/dtap/test.md - Test: architecture/dtap/test.md
- Acceptance: architecture/dtap/acceptance.md - Acceptance: architecture/dtap/acceptance.md
- Production: architecture/dtap/production.md - Production: architecture/dtap/production.md
- Components:
- Ansible: architecture/components/ansible/index.md
- WorkflowOrchestrator: architecture/components/wfo/index.md
- Netbox: architecture/components/netbox/index.md
- User Guide: - User Guide:
- user_guide/index.md - user_guide/index.md
- Sites: - Sites:
...@@ -72,6 +74,11 @@ nav: ...@@ -72,6 +74,11 @@ nav:
- Sites: admin_guide/WFO/sites.md - Sites: admin_guide/WFO/sites.md
- Routers: admin_guide/WFO/routers.md - Routers: admin_guide/WFO/routers.md
- Iptrunks: admin_guide/WFO/iptrunks.md - Iptrunks: admin_guide/WFO/iptrunks.md
- OSS/BSS integration:
- Infoblox: admin_guide/oss_bss/ipam.md
- Netbox: admin_guide/oss_bss/netbox.md
- LibreNMS: admin_guide/oss_bss/librenms.md
- Kentik: admin_guide/oss_bss/kentik.md
- Legacy Platform: - Legacy Platform:
- Overview: legacy_platform/overview.md - Overview: legacy_platform/overview.md
- New Router Deployment: legacy_platform/new_router_deployment.md - New Router Deployment: legacy_platform/new_router_deployment.md
...@@ -80,6 +87,7 @@ nav: ...@@ -80,6 +87,7 @@ nav:
markdown_extensions: markdown_extensions:
- abbr - abbr
- attr_list - attr_list
- md_in_html
- pymdownx.snippets: - pymdownx.snippets:
auto_append: auto_append:
- includes/glossary.md - includes/glossary.md
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment