## Summary Closes #23. Implements a single unified `bgp_yang_transform` covering the complete BGP router stanza for all 10 fabric devices. **Design decision:** One transform (one query + one template) rather than 4 separate transforms, because all BGP components (process config, peer groups, neighbors, AFs) live under a single `router bgp <ASN>` stanza and must be consistent. This avoids multiple API calls per device and keeps the data model coherent. | File | Description | |------|-------------| | `infrahub/transforms/queries/bgp_intent.gql` | Unified GraphQL query — `InfraBGPRouterConfig` (with peer_groups, sessions) + `InfraBGPAddressFamily` (with active_peer_groups, active_sessions, networks, optional vrf) | | `infrahub/transforms/templates/bgp_yang.j2` | Jinja2 template — renders `bgp.global`, `bgp.peer_groups`, `bgp.neighbors`, `bgp.address_families`, `bgp.vrf_neighbors`, `bgp.vrf_address_families`; returns `[]` for devices with no BGP config | | `infrahub/transforms/tests/bgp_yang/test.yml` | Smoke check + unit render tests for leaf1, spine1, leaf7 | | `infrahub/transforms/tests/bgp_yang/leaf1/` | 3 peer-groups, 5 global neighbors, 2 global AFs | | `infrahub/transforms/tests/bgp_yang/spine1/` | 1 peer-group (evpn/next-hop-unchanged), 16 neighbors (8 direct underlay + 8 EVPN), IPv4 AF activates individual sessions | | `infrahub/transforms/tests/bgp_yang/leaf7/` | leaf1 pattern + VRF gold border session (AS 64999) + VRF-scoped IPv4 unicast AF | | `.infrahub.yml` | Registers `bgp_intent` query and `bgp_yang_transform` | ## Validation | Device | Expected output | |--------|----------------| | `leaf1` | 3 peer-groups, 5 global neighbors (underlay×2, iBGP×1, EVPN×2), 2 AFs, empty VRF sections | | `spine1` | 1 peer-group (evpn, next-hop-unchanged), 16 neighbors (8 direct with `remote_asn`, 8 EVPN via peer-group), IPv4 AF activates individual sessions | | `leaf7` | Same as leaf1 (AS 65004) + `vrf_neighbors: [{10.90.90.1, AS 64999, VRF gold}]` + `vrf_address_families: [{ipv4, VRF gold, active_sessions: [10.90.90.1]}]` | ```bash infrahubctl render bgp_yang_transform device_name=leaf1 infrahubctl render bgp_yang_transform device_name=spine1 infrahubctl render bgp_yang_transform device_name=leaf7 ``` ## Design notes - Follows identical conventions to existing transforms (#20–#22) - All optional relationships (`remote_asn`, `peer_group`, `vrf`, `peer_device`, `update_source`, etc.) wrapped in `is defined and is not none` guards - `send_community` value `"none"` (schema default) is normalised to `null` in the output — keeps the rendered JSON clean for downstream consumers - VRF-scoped sessions and AFs are separated into `vrf_neighbors` / `vrf_address_families` arrays, each entry carrying a `"vrf"` key, so the template consumer can trivially iterate per-VRF without filtering
749 lines
24 KiB
YAML
749 lines
24 KiB
YAML
# BGP Sessions and Address Families
|
|
# Depends on: 09-bgp (RouterConfig and PeerGroups must exist), 10-vrfs (InfraVRF must exist before VRF references)
|
|
---
|
|
apiVersion: infrahub.app/v1
|
|
kind: Object
|
|
spec:
|
|
kind: InfraBGPSession
|
|
data:
|
|
# ============================================================
|
|
# Spine1 sessions
|
|
# ============================================================
|
|
# Spine1 underlay (direct neighbors, no peer-group — use remote_asn)
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.1"
|
|
peer_address: "10.0.1.1"
|
|
description: "underlay to leaf1"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf1"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.3"
|
|
peer_address: "10.0.1.3"
|
|
description: "underlay to leaf2"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf2"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.5"
|
|
peer_address: "10.0.1.5"
|
|
description: "underlay to leaf3"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf3"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.7"
|
|
peer_address: "10.0.1.7"
|
|
description: "underlay to leaf4"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf4"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.9"
|
|
peer_address: "10.0.1.9"
|
|
description: "underlay to leaf5"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf5"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.11"
|
|
peer_address: "10.0.1.11"
|
|
description: "underlay to leaf6"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf6"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.13"
|
|
peer_address: "10.0.1.13"
|
|
description: "underlay to leaf7"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf7"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.1.15"
|
|
peer_address: "10.0.1.15"
|
|
description: "underlay to leaf8"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf8"]
|
|
# Spine1 EVPN (via evpn peer-group)
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.11"
|
|
peer_address: "10.0.250.11"
|
|
description: "EVPN to leaf1"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf1"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.12"
|
|
peer_address: "10.0.250.12"
|
|
description: "EVPN to leaf2"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf2"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.13"
|
|
peer_address: "10.0.250.13"
|
|
description: "EVPN to leaf3"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf3"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.14"
|
|
peer_address: "10.0.250.14"
|
|
description: "EVPN to leaf4"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf4"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.15"
|
|
peer_address: "10.0.250.15"
|
|
description: "EVPN to leaf5"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf5"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.16"
|
|
peer_address: "10.0.250.16"
|
|
description: "EVPN to leaf6"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf6"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.17"
|
|
peer_address: "10.0.250.17"
|
|
description: "EVPN to leaf7"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf7"]
|
|
- bgp_config: ["spine1"]
|
|
local_identifier: "spine1__10.0.250.18"
|
|
peer_address: "10.0.250.18"
|
|
description: "EVPN to leaf8"
|
|
peer_group: "spine1__evpn"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf8"]
|
|
# ============================================================
|
|
# Spine2 sessions
|
|
# ============================================================
|
|
# Spine2 underlay
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.1"
|
|
peer_address: "10.0.2.1"
|
|
description: "underlay to leaf1"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf1"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.3"
|
|
peer_address: "10.0.2.3"
|
|
description: "underlay to leaf2"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf2"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.5"
|
|
peer_address: "10.0.2.5"
|
|
description: "underlay to leaf3"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf3"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.7"
|
|
peer_address: "10.0.2.7"
|
|
description: "underlay to leaf4"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf4"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.9"
|
|
peer_address: "10.0.2.9"
|
|
description: "underlay to leaf5"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf5"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.11"
|
|
peer_address: "10.0.2.11"
|
|
description: "underlay to leaf6"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf6"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.13"
|
|
peer_address: "10.0.2.13"
|
|
description: "underlay to leaf7"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf7"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.2.15"
|
|
peer_address: "10.0.2.15"
|
|
description: "underlay to leaf8"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf8"]
|
|
# Spine2 EVPN
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.11"
|
|
peer_address: "10.0.250.11"
|
|
description: "EVPN to leaf1"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf1"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.12"
|
|
peer_address: "10.0.250.12"
|
|
description: "EVPN to leaf2"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65001"]
|
|
peer_device: ["leaf2"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.13"
|
|
peer_address: "10.0.250.13"
|
|
description: "EVPN to leaf3"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf3"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.14"
|
|
peer_address: "10.0.250.14"
|
|
description: "EVPN to leaf4"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65002"]
|
|
peer_device: ["leaf4"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.15"
|
|
peer_address: "10.0.250.15"
|
|
description: "EVPN to leaf5"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf5"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.16"
|
|
peer_address: "10.0.250.16"
|
|
description: "EVPN to leaf6"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65003"]
|
|
peer_device: ["leaf6"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.17"
|
|
peer_address: "10.0.250.17"
|
|
description: "EVPN to leaf7"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf7"]
|
|
- bgp_config: ["spine2"]
|
|
local_identifier: "spine2__10.0.250.18"
|
|
peer_address: "10.0.250.18"
|
|
description: "EVPN to leaf8"
|
|
peer_group: "spine2__evpn"
|
|
remote_asn: ["65004"]
|
|
peer_device: ["leaf8"]
|
|
# ============================================================
|
|
# Leaf1 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf1"]
|
|
local_identifier: "leaf1__10.0.1.0"
|
|
peer_address: "10.0.1.0"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf1__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf1"]
|
|
local_identifier: "leaf1__10.0.2.0"
|
|
peer_address: "10.0.2.0"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf1__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf1"]
|
|
local_identifier: "leaf1__10.0.3.1"
|
|
peer_address: "10.0.3.1"
|
|
description: "iBGP to leaf2"
|
|
peer_group: "leaf1__underlay_ibgp"
|
|
peer_device: ["leaf2"]
|
|
- bgp_config: ["leaf1"]
|
|
local_identifier: "leaf1__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf1__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf1"]
|
|
local_identifier: "leaf1__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf1__evpn"
|
|
peer_device: ["spine2"]
|
|
# ============================================================
|
|
# Leaf2 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf2"]
|
|
local_identifier: "leaf2__10.0.1.2"
|
|
peer_address: "10.0.1.2"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf2__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf2"]
|
|
local_identifier: "leaf2__10.0.2.2"
|
|
peer_address: "10.0.2.2"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf2__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf2"]
|
|
local_identifier: "leaf2__10.0.3.0"
|
|
peer_address: "10.0.3.0"
|
|
description: "iBGP to leaf1"
|
|
peer_group: "leaf2__underlay_ibgp"
|
|
peer_device: ["leaf1"]
|
|
- bgp_config: ["leaf2"]
|
|
local_identifier: "leaf2__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf2__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf2"]
|
|
local_identifier: "leaf2__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf2__evpn"
|
|
peer_device: ["spine2"]
|
|
# ============================================================
|
|
# Leaf3 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf3"]
|
|
local_identifier: "leaf3__10.0.1.4"
|
|
peer_address: "10.0.1.4"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf3__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf3"]
|
|
local_identifier: "leaf3__10.0.2.4"
|
|
peer_address: "10.0.2.4"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf3__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf3"]
|
|
local_identifier: "leaf3__10.0.3.3"
|
|
peer_address: "10.0.3.3"
|
|
description: "iBGP to leaf4"
|
|
peer_group: "leaf3__underlay_ibgp"
|
|
peer_device: ["leaf4"]
|
|
- bgp_config: ["leaf3"]
|
|
local_identifier: "leaf3__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf3__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf3"]
|
|
local_identifier: "leaf3__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf3__evpn"
|
|
peer_device: ["spine2"]
|
|
# ============================================================
|
|
# Leaf4 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf4"]
|
|
local_identifier: "leaf4__10.0.1.6"
|
|
peer_address: "10.0.1.6"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf4__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf4"]
|
|
local_identifier: "leaf4__10.0.2.6"
|
|
peer_address: "10.0.2.6"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf4__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf4"]
|
|
local_identifier: "leaf4__10.0.3.2"
|
|
peer_address: "10.0.3.2"
|
|
description: "iBGP to leaf3"
|
|
peer_group: "leaf4__underlay_ibgp"
|
|
peer_device: ["leaf3"]
|
|
- bgp_config: ["leaf4"]
|
|
local_identifier: "leaf4__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf4__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf4"]
|
|
local_identifier: "leaf4__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf4__evpn"
|
|
peer_device: ["spine2"]
|
|
# ============================================================
|
|
# Leaf5 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf5"]
|
|
local_identifier: "leaf5__10.0.1.8"
|
|
peer_address: "10.0.1.8"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf5__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf5"]
|
|
local_identifier: "leaf5__10.0.2.8"
|
|
peer_address: "10.0.2.8"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf5__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf5"]
|
|
local_identifier: "leaf5__10.0.3.5"
|
|
peer_address: "10.0.3.5"
|
|
description: "iBGP to leaf6"
|
|
peer_group: "leaf5__underlay_ibgp"
|
|
peer_device: ["leaf6"]
|
|
- bgp_config: ["leaf5"]
|
|
local_identifier: "leaf5__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf5__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf5"]
|
|
local_identifier: "leaf5__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf5__evpn"
|
|
peer_device: ["spine2"]
|
|
# ============================================================
|
|
# Leaf6 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf6"]
|
|
local_identifier: "leaf6__10.0.1.10"
|
|
peer_address: "10.0.1.10"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf6__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf6"]
|
|
local_identifier: "leaf6__10.0.2.10"
|
|
peer_address: "10.0.2.10"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf6__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf6"]
|
|
local_identifier: "leaf6__10.0.3.4"
|
|
peer_address: "10.0.3.4"
|
|
description: "iBGP to leaf5"
|
|
peer_group: "leaf6__underlay_ibgp"
|
|
peer_device: ["leaf5"]
|
|
- bgp_config: ["leaf6"]
|
|
local_identifier: "leaf6__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf6__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf6"]
|
|
local_identifier: "leaf6__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf6__evpn"
|
|
peer_device: ["spine2"]
|
|
# ============================================================
|
|
# Leaf7 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf7"]
|
|
local_identifier: "leaf7__10.0.1.12"
|
|
peer_address: "10.0.1.12"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf7__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf7"]
|
|
local_identifier: "leaf7__10.0.2.12"
|
|
peer_address: "10.0.2.12"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf7__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf7"]
|
|
local_identifier: "leaf7__10.0.3.7"
|
|
peer_address: "10.0.3.7"
|
|
description: "iBGP to leaf8"
|
|
peer_group: "leaf7__underlay_ibgp"
|
|
peer_device: ["leaf8"]
|
|
- bgp_config: ["leaf7"]
|
|
local_identifier: "leaf7__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf7__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf7"]
|
|
local_identifier: "leaf7__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf7__evpn"
|
|
peer_device: ["spine2"]
|
|
# Leaf7 VRF gold border peering
|
|
- bgp_config: ["leaf7"]
|
|
local_identifier: "leaf7__10.90.90.1"
|
|
peer_address: "10.90.90.1"
|
|
description: "border peering to AS 64999 in VRF gold"
|
|
remote_asn: ["64999"]
|
|
vrf: "gold"
|
|
# ============================================================
|
|
# Leaf8 sessions
|
|
# ============================================================
|
|
- bgp_config: ["leaf8"]
|
|
local_identifier: "leaf8__10.0.1.14"
|
|
peer_address: "10.0.1.14"
|
|
description: "underlay to spine1"
|
|
peer_group: "leaf8__underlay"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf8"]
|
|
local_identifier: "leaf8__10.0.2.14"
|
|
peer_address: "10.0.2.14"
|
|
description: "underlay to spine2"
|
|
peer_group: "leaf8__underlay"
|
|
peer_device: ["spine2"]
|
|
- bgp_config: ["leaf8"]
|
|
local_identifier: "leaf8__10.0.3.6"
|
|
peer_address: "10.0.3.6"
|
|
description: "iBGP to leaf7"
|
|
peer_group: "leaf8__underlay_ibgp"
|
|
peer_device: ["leaf7"]
|
|
- bgp_config: ["leaf8"]
|
|
local_identifier: "leaf8__10.0.250.1"
|
|
peer_address: "10.0.250.1"
|
|
description: "EVPN to spine1"
|
|
peer_group: "leaf8__evpn"
|
|
peer_device: ["spine1"]
|
|
- bgp_config: ["leaf8"]
|
|
local_identifier: "leaf8__10.0.250.2"
|
|
peer_address: "10.0.250.2"
|
|
description: "EVPN to spine2"
|
|
peer_group: "leaf8__evpn"
|
|
peer_device: ["spine2"]
|
|
# Leaf8 VRF gold border peering
|
|
- bgp_config: ["leaf8"]
|
|
local_identifier: "leaf8__10.90.90.1"
|
|
peer_address: "10.90.90.1"
|
|
description: "border peering to AS 64999 in VRF gold"
|
|
remote_asn: ["64999"]
|
|
vrf: "gold"
|
|
---
|
|
apiVersion: infrahub.app/v1
|
|
kind: Object
|
|
spec:
|
|
kind: InfraBGPAddressFamily
|
|
data:
|
|
# ============================================================
|
|
# Spine1 address families
|
|
# ============================================================
|
|
- bgp_config: ["spine1"]
|
|
device: ["spine1"]
|
|
local_identifier: "spine1__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_sessions:
|
|
- ["spine1__10.0.1.1"]
|
|
- ["spine1__10.0.1.3"]
|
|
- ["spine1__10.0.1.5"]
|
|
- ["spine1__10.0.1.7"]
|
|
- ["spine1__10.0.1.9"]
|
|
- ["spine1__10.0.1.11"]
|
|
- ["spine1__10.0.1.13"]
|
|
- ["spine1__10.0.1.15"]
|
|
networks:
|
|
- ["10.0.250.1/32"]
|
|
- bgp_config: ["spine1"]
|
|
device: ["spine1"]
|
|
local_identifier: "spine1__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["spine1__evpn"]
|
|
# ============================================================
|
|
# Spine2 address families
|
|
# ============================================================
|
|
- bgp_config: ["spine2"]
|
|
device: ["spine2"]
|
|
local_identifier: "spine2__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_sessions:
|
|
- ["spine2__10.0.2.1"]
|
|
- ["spine2__10.0.2.3"]
|
|
- ["spine2__10.0.2.5"]
|
|
- ["spine2__10.0.2.7"]
|
|
- ["spine2__10.0.2.9"]
|
|
- ["spine2__10.0.2.11"]
|
|
- ["spine2__10.0.2.13"]
|
|
- ["spine2__10.0.2.15"]
|
|
networks:
|
|
- ["10.0.250.2/32"]
|
|
- bgp_config: ["spine2"]
|
|
device: ["spine2"]
|
|
local_identifier: "spine2__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["spine2__evpn"]
|
|
# ============================================================
|
|
# Leaf1 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf1"]
|
|
device: ["leaf1"]
|
|
local_identifier: "leaf1__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf1__underlay"]
|
|
- ["leaf1__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.11/32"]
|
|
- ["10.0.255.11/32"]
|
|
- bgp_config: ["leaf1"]
|
|
device: ["leaf1"]
|
|
local_identifier: "leaf1__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf1__evpn"]
|
|
# ============================================================
|
|
# Leaf2 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf2"]
|
|
device: ["leaf2"]
|
|
local_identifier: "leaf2__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf2__underlay"]
|
|
- ["leaf2__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.12/32"]
|
|
- ["10.0.255.11/32"]
|
|
- bgp_config: ["leaf2"]
|
|
device: ["leaf2"]
|
|
local_identifier: "leaf2__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf2__evpn"]
|
|
# ============================================================
|
|
# Leaf3 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf3"]
|
|
device: ["leaf3"]
|
|
local_identifier: "leaf3__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf3__underlay"]
|
|
- ["leaf3__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.13/32"]
|
|
- ["10.0.255.12/32"]
|
|
- bgp_config: ["leaf3"]
|
|
device: ["leaf3"]
|
|
local_identifier: "leaf3__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf3__evpn"]
|
|
# ============================================================
|
|
# Leaf4 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf4"]
|
|
device: ["leaf4"]
|
|
local_identifier: "leaf4__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf4__underlay"]
|
|
- ["leaf4__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.14/32"]
|
|
- ["10.0.255.12/32"]
|
|
- bgp_config: ["leaf4"]
|
|
device: ["leaf4"]
|
|
local_identifier: "leaf4__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf4__evpn"]
|
|
# ============================================================
|
|
# Leaf5 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf5"]
|
|
device: ["leaf5"]
|
|
local_identifier: "leaf5__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf5__underlay"]
|
|
- ["leaf5__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.15/32"]
|
|
- ["10.0.255.13/32"]
|
|
- bgp_config: ["leaf5"]
|
|
device: ["leaf5"]
|
|
local_identifier: "leaf5__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf5__evpn"]
|
|
# ============================================================
|
|
# Leaf6 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf6"]
|
|
device: ["leaf6"]
|
|
local_identifier: "leaf6__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf6__underlay"]
|
|
- ["leaf6__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.16/32"]
|
|
- ["10.0.255.13/32"]
|
|
- bgp_config: ["leaf6"]
|
|
device: ["leaf6"]
|
|
local_identifier: "leaf6__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf6__evpn"]
|
|
# ============================================================
|
|
# Leaf7 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf7"]
|
|
device: ["leaf7"]
|
|
local_identifier: "leaf7__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf7__underlay"]
|
|
- ["leaf7__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.17/32"]
|
|
- ["10.0.255.14/32"]
|
|
- bgp_config: ["leaf7"]
|
|
device: ["leaf7"]
|
|
local_identifier: "leaf7__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf7__evpn"]
|
|
# Leaf7 IPv4 unicast in VRF gold (border peering)
|
|
- bgp_config: ["leaf7"]
|
|
device: ["leaf7"]
|
|
local_identifier: "leaf7__vrf_gold__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
vrf: "gold"
|
|
active_sessions:
|
|
- ["leaf7__10.90.90.1"]
|
|
# ============================================================
|
|
# Leaf8 address families
|
|
# ============================================================
|
|
- bgp_config: ["leaf8"]
|
|
device: ["leaf8"]
|
|
local_identifier: "leaf8__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf8__underlay"]
|
|
- ["leaf8__underlay_ibgp"]
|
|
networks:
|
|
- ["10.0.250.18/32"]
|
|
- ["10.0.255.14/32"]
|
|
- bgp_config: ["leaf8"]
|
|
device: ["leaf8"]
|
|
local_identifier: "leaf8__evpn_unicast"
|
|
afi: evpn
|
|
safi: unicast
|
|
active_peer_groups:
|
|
- ["leaf8__evpn"]
|
|
# Leaf8 IPv4 unicast in VRF gold (border peering)
|
|
- bgp_config: ["leaf8"]
|
|
device: ["leaf8"]
|
|
local_identifier: "leaf8__vrf_gold__ipv4_unicast"
|
|
afi: ipv4
|
|
safi: unicast
|
|
vrf: "gold"
|
|
active_sessions:
|
|
- ["leaf8__10.90.90.1"]
|