{"id":15650232,"url":"https://github.com/ipspace/mpls-infrastructure","last_synced_at":"2025-04-23T13:45:54.109Z","repository":{"id":148025866,"uuid":"81637758","full_name":"ipspace/MPLS-infrastructure","owner":"ipspace","description":"Ansible playbooks used to deploy a multi-AS MPLS infrastructure including MPLS/VPN services","archived":false,"fork":false,"pushed_at":"2018-04-30T07:17:01.000Z","size":19,"stargazers_count":37,"open_issues_count":0,"forks_count":9,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-30T00:14:04.140Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ipspace.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-11T07:22:20.000Z","updated_at":"2025-03-22T08:29:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"bb9be648-a18b-4063-9ad0-9753dd0567bf","html_url":"https://github.com/ipspace/MPLS-infrastructure","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipspace%2FMPLS-infrastructure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipspace%2FMPLS-infrastructure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipspace%2FMPLS-infrastructure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipspace%2FMPLS-infrastructure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipspace","download_url":"https://codeload.github.com/ipspace/MPLS-infrastructure/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250442240,"owners_count":21431288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T12:34:07.481Z","updated_at":"2025-04-23T13:45:54.090Z","avatar_url":"https://github.com/ipspace.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deploy IGP+BGP routing and MPLS/VPN services in a multi-provider network\r\n\r\nThis set of playbooks deploys routing protocol (OSPF/IBGP/EBGP) configurations and\r\nMPLS/VPN configurations on a set of Cisco IOS routers residing in one or more closely\r\ncoupled autonomous systems.\r\n\r\n## Overview\r\n\r\nThe 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.\r\n\r\nThe 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:\r\n\r\n* **configs** - create the configuration files in *configs* directory\r\n* **deploy** - deploy the configuration files from the *configs* directory to the devices\r\n* **verify** - verify OSPF or BGP adjacencies\r\n\r\nThe *hosts* file in this repository was used with [this VIRL topology](https://github.com/ipspace/NetOpsWorkshop/blob/master/topologies/VIRL/Inter-AS.virl).\r\n\r\n## Data model\r\n\r\nThe *infrastructure* data model in **fabric.yml** has these sections:\r\n\r\n* **services** - a list of services supported by the network. Elements of this list can be *IPv4*, *VPNv4* and *InterAS* (for inter-as VPNv4)\r\n* **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\r\n* **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.\r\n* **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.\r\n* **interas** - list of inter-AS links (similar to intra-AS links). EBGP is configured on inter-AS links.\r\n\r\nThe *services-vpnv4* data model is a dictionary of customers with every customer having these elements:\r\n\r\n* **rd** - value used for MPLS/VPN RD and import/export RT (the data model and the playbooks support only simple non-overlapping VPNs)\r\n* **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)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipspace%2Fmpls-infrastructure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipspace%2Fmpls-infrastructure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipspace%2Fmpls-infrastructure/lists"}