https://github.com/ipspace/mpls-infrastructure
Ansible playbooks used to deploy a multi-AS MPLS infrastructure including MPLS/VPN services
https://github.com/ipspace/mpls-infrastructure
Last synced: about 1 year ago
JSON representation
Ansible playbooks used to deploy a multi-AS MPLS infrastructure including MPLS/VPN services
- Host: GitHub
- URL: https://github.com/ipspace/mpls-infrastructure
- Owner: ipspace
- Created: 2017-02-11T07:22:20.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-04-30T07:17:01.000Z (about 8 years ago)
- Last Synced: 2025-03-30T00:14:04.140Z (about 1 year ago)
- Size: 18.6 KB
- Stars: 37
- Watchers: 10
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Deploy IGP+BGP routing and MPLS/VPN services in a multi-provider network
This set of playbooks deploys routing protocol (OSPF/IBGP/EBGP) configurations and
MPLS/VPN configurations on a set of Cisco IOS routers residing in one or more closely
coupled autonomous systems.
## Overview
The playbooks use a data model describing infrastructure (**fabric.yml**) and services (**services-vpnv4.yml**). The **create-data-model-yml** playbook transforms these data models (described in more details below) into per-node data models (stored in **nodes.yml**) that are easier to work with when generating device configurations.
The playbooks in *bgp*, *ospf* and *vpnv4* directories read per-node data models from **nodes.yml**, create and deploy device configurations, and verify OSPF/BGP adjacencies. Invoke them from the main directory (otherwise the won't find the **nodes.yml**) with one or more of these tags:
* **configs** - create the configuration files in *configs* directory
* **deploy** - deploy the configuration files from the *configs* directory to the devices
* **verify** - verify OSPF or BGP adjacencies
The *hosts* file in this repository was used with [this VIRL topology](https://github.com/ipspace/NetOpsWorkshop/blob/master/topologies/VIRL/Inter-AS.virl).
## Data model
The *infrastructure* data model in **fabric.yml** has these sections:
* **services** - a list of services supported by the network. Elements of this list can be *IPv4*, *VPNv4* and *InterAS* (for inter-as VPNv4)
* **nodes** - a list of nodes in the network. Every node has *name*, *mgmt* IP address (used to access the node) and router ID IP address (*rid*) configured on its loopback interface
* **asn** - a dictionary of AS numbers. Each ASN has two elements: *members* is a list of device names belonging to the AS, *rr* is the list of route reflectors in that AS.
* **fabric** - list of intra-AS links. Every link has *left* and *right* nodes, *left_ip* and *right_ip* IP addresses and *left_port* and *right_port* interfaces. *cost* is optional. OSPF is configured on intra-AS links.
* **interas** - list of inter-AS links (similar to intra-AS links). EBGP is configured on inter-AS links.
The *services-vpnv4* data model is a dictionary of customers with every customer having these elements:
* **rd** - value used for MPLS/VPN RD and import/export RT (the data model and the playbooks support only simple non-overlapping VPNs)
* **nodes** - a dictionary of PE-routers used in this service. The values of these elements is a dictionary of VRF interfaces with each interface having **ip** element (IP prefix configured on PE-router VRF interface)