obmp-docker/router-blueprints/iosxr/role-route-reflector.cfg
Sam 65fd88a0a2 blueprints: fix cross-references, flag next-hop-self caveat, sync XRd timers
Review findings from verifying the router-blueprints drop against the
deployed stack:

- router-blueprints/README.md linked docs/router-config-guide.md, which
  does not exist -- the guide is docs/router-integration.md
- router-integration.md still advised --router-port 5000 for lab routers;
  1790 is the standard now, the note points at re-applying via
  cml/proxmox_bmp_config.py instead
- verify sections referenced Grafana paths that don't exist in the
  provisioned UI: 'Base-1001 -> Peers Table' -> Inventory / Peer Detail,
  and folder 'OBMP-Learning' -> OBMP-Reference
- role-route-reflector.cfg: loud caveat block on next-hop-self -- it only
  rewrites eBGP-learned/local routes (what this lab wants); reflected
  iBGP routes need 'ibgp policy out enforce-modifications', so on a pure
  RR the line is a silent no-op
- cml/xrd-node-definition.yaml BMP timers synced to the blueprint values
  (initial-delay 60, refresh 60/30, drop flapping-delay) per the
  keep-hand-config-and-automation-in-sync rule

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 16:49:40 -07:00

73 lines
3.1 KiB
INI

! ============================================================================
! role-route-reflector.cfg -- RR-specific overlay for CORE routers
! ============================================================================
! Apply ONLY on routers that act as iBGP route reflectors for their AS.
! Skip on the client routers -- there this overlay is a no-op at best and
! creates inadvertent reflection at worst.
!
! Complements 01-bmp-basic.cfg (defines the BMP-MONITORED neighbor-group)
! and 02-bgp-ls.cfg (which activates the LS AF toward peers). The
! RR-specific bit here is `route-reflector-client` under the AFs for
! every client neighbor.
!
! Two conventions worth preserving:
! - Put every RR client into a `RR-CLIENT` neighbor-group so the
! reflector attribute is set once at group scope.
! - Combine with BMP-MONITORED via `use neighbor-group` at the neighbor
! itself -- IOS-XR only allows one `use neighbor-group` per neighbor,
! so nest common bits by inheritance if you need multiple groups.
! ============================================================================
router bgp <LOCAL_ASN>
!
! Cluster-id -- set to the RR's loopback so RR<->RR pairs recognize each
! other's reflected routes and don't loop. Both RRs in a pair share the
! same cluster-id if you want them to act as a single logical RR.
bgp cluster-id <ROUTER_LOOPBACK>
!
! RR-CLIENT neighbor-group: applied to every iBGP client peer.
neighbor-group RR-CLIENT
remote-as <LOCAL_ASN>
update-source Loopback0
bmp-activate server 1
address-family ipv4 unicast
route-reflector-client
!
! *** NEXT-HOP-SELF CAVEAT *********************************************
! next-hop-self here ONLY rewrites the next-hop of eBGP-learned and
! locally-originated routes advertised to clients. That is exactly what
! this lab wants: the full table enters at the cores via eBGP (GoBGP/
! ExaBGP) and clients must resolve those routes via the RR's loopback.
!
! IOS-XR will NOT rewrite the next-hop of iBGP-REFLECTED routes unless
! you ALSO configure:
! router bgp <LOCAL_ASN>
! ibgp policy out enforce-modifications
! On a pure route reflector with no eBGP feed, this line is a silent
! no-op and clients must resolve next-hops via the IGP instead. Do not
! copy it into such a design expecting reflected-route NH rewrite.
! **********************************************************************
next-hop-self
!
address-family link-state link-state
route-reflector-client
!
!
!
! Per-client wiring (repeat per client, replacing <CLIENT_LOOPBACK>):
!
! router bgp <LOCAL_ASN>
! neighbor <CLIENT_LOOPBACK>
! use neighbor-group RR-CLIENT
! !
! !
! --- Verify -----------------------------------------------------------------
! show bgp neighbors <CLIENT_LOOPBACK> | include Route-Reflector
! show bgp summary ! all clients Established
! show bgp neighbors <CLIENT_LOOPBACK> advertised-routes | count
!
! On the stack side (once the routers are BMP-reporting and reflecting):
! Grafana -> OBMP-Reference -> RR Loc-RIB Diff (should populate)