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>
This commit is contained in:
Sam 2026-07-20 16:49:40 -07:00
parent b480615ca2
commit 65fd88a0a2
5 changed files with 26 additions and 10 deletions

View File

@ -130,12 +130,11 @@ configuration:
! !
bmp server 1 bmp server 1
host 10.40.40.202 port 1790 host 10.40.40.202 port 1790
description OpenBMP description OpenBMP-Collector
update-source Gi0/0/0/0 update-source Gi0/0/0/0
flapping-delay 60 initial-delay 60
initial-delay 5
stats-reporting-period 300 stats-reporting-period 300
initial-refresh delay 30 spread 2 initial-refresh delay 60 spread 30
! !
ssh server v2 ssh server v2
end end

View File

@ -81,9 +81,10 @@ it before configuring. Covers:
`HOST_IP`** on WSL deployments — the WSL VM's NAT address is `HOST_IP`** on WSL deployments — the WSL VM's NAT address is
unreachable from real routers; see unreachable from real routers; see
[PORTABILITY-FINDINGS.md](PORTABILITY-FINDINGS.md) finding 4). [PORTABILITY-FINDINGS.md](PORTABILITY-FINDINGS.md) finding 4).
- Which port (`ROUTER_FACING_PORT`, defaults to 1790 — the IANA BMP port; - Which port (`ROUTER_FACING_PORT` — 1790, the IANA BMP port, standardized
existing lab routers configured for 5000 need `--router-port 5000` 2026-07; the legacy 5000 is retired. Routers still configured for 5000
until reconfigured). must be re-applied — `cml/proxmox_bmp_config.py` pushes the current
`.env` values).
- The BMP `bmp server 1` block, flat formal form. - The BMP `bmp server 1` block, flat formal form.
- Activation via `neighbor-group BMP-MONITORED`. - Activation via `neighbor-group BMP-MONITORED`.
- **RR-scope-only activation** for load reduction — the single biggest - **RR-scope-only activation** for load reduction — the single biggest

View File

@ -5,7 +5,7 @@ present for the OpenBMP Docker stack to ingest data from it. Copy, edit
the `<PLACEHOLDER>` values for your topology, paste. the `<PLACEHOLDER>` values for your topology, paste.
For the walkthrough (what each ingest path does, in what order to apply, For the walkthrough (what each ingest path does, in what order to apply,
how to verify), see [docs/router-config-guide.md](../docs/router-config-guide.md). how to verify), see [docs/router-integration.md](../docs/router-integration.md).
## Layout ## Layout

View File

@ -62,4 +62,5 @@ router bgp <LOCAL_ASN>
! !
! On the stack side: ! On the stack side:
! docker logs obmp-collector 2>&1 | grep -i "peer up" ! docker logs obmp-collector 2>&1 | grep -i "peer up"
! Grafana -> OBMP-Operations -> Base-1001 -> Peers Table ! Grafana -> OBMP-Operations -> Inventory (router appears, connected)
! Grafana -> OBMP-Operations -> Peer Detail (per-session state + prefixes)

View File

@ -32,6 +32,21 @@ router bgp <LOCAL_ASN>
bmp-activate server 1 bmp-activate server 1
address-family ipv4 unicast address-family ipv4 unicast
route-reflector-client 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 next-hop-self
! !
address-family link-state link-state address-family link-state link-state
@ -54,4 +69,4 @@ router bgp <LOCAL_ASN>
! show bgp neighbors <CLIENT_LOOPBACK> advertised-routes | count ! show bgp neighbors <CLIENT_LOOPBACK> advertised-routes | count
! !
! On the stack side (once the routers are BMP-reporting and reflecting): ! On the stack side (once the routers are BMP-reporting and reflecting):
! Grafana -> OBMP-Learning -> RR Loc-RIB Diff (should populate) ! Grafana -> OBMP-Reference -> RR Loc-RIB Diff (should populate)