obmp-docker/router-blueprints
sam 0c91cad55f docs: add router-integration guide + router-blueprints/ fragments
The stack side is portable; the router side had no reference material -- a
new operator standing up OBMP has no guide for what to configure on their
devices to feed it. Adds two artifacts, both vendor-neutral in intent,
IOS-XR-specific in syntax:

  docs/router-integration.md
    Multi-path tour of the four ingest paths (BMP, BGP-LS, gNMI,
    NETCONF) with a bring-up checklist and cross-references. The BMP
    section is deliberately thin -- it hands off to docs/router-bmp-config.md
    for the address-selection, port-choice, and RR-scope activation
    detail already covered there.

  router-blueprints/iosxr/*.cfg
    Copy-paste config fragments, one per ingest path plus a
    role-route-reflector overlay. All values are <PLACEHOLDER>
    substitutions -- no hardcoded IPs, no lab-gear names. Fragments
    align to the ROUTER_FACING_IP / ROUTER_FACING_PORT convention
    introduced in docs/router-bmp-config.md.

  router-blueprints/README.md
    Substitution legend + layout, cross-links to PORTABILITY-FINDINGS.md
    finding 4 (why routers can't target HOST_IP on WSL).

Also appends the multi-path guide link to the Greenfield deploy section
in README.md so router-side integration is discoverable from the top.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-20 16:31:06 -07:00
..

Router Blueprints

Vendor-native configuration fragments that describe what a router must present for the OpenBMP Docker stack to ingest data from it. Copy, edit the <PLACEHOLDER> values for your topology, paste.

For the walkthrough (what each ingest path does, in what order to apply, how to verify), see docs/router-config-guide.md.

Layout

router-blueprints/
├── README.md                           <- this file
└── iosxr/
    ├── 00-netconf.cfg                  <- prerequisite: enable NETCONF/SSH
    ├── 01-bmp-basic.cfg                <- BMP session to the collector
    ├── 02-bgp-ls.cfg                   <- BGP-LS export for topology
    ├── 03-gnmi.cfg                     <- gNMI streaming telemetry
    └── role-route-reflector.cfg        <- add-on for RR-role routers

Number-prefixed fragments are applied in order for a fresh router bring-up. role-*.cfg fragments are additive overlays for routers that fill a specific role.

Substitutions

Every fragment uses <ANGLE_BRACKET> placeholders. Substitute the following before pasting:

Placeholder What it is
<ROUTER_FACING_IP> ROUTER_FACING_IP in the stack's .env — the address routers target to reach the collector. NOT HOST_IP on WSL (see docs/PORTABILITY-FINDINGS.md finding 4).
<ROUTER_FACING_PORT> ROUTER_FACING_PORT in .env — collector port routers connect to (defaults to 1790, the IANA BMP port).
<LOCAL_ASN> The router's own BGP AS number.
<ROUTER_LOOPBACK> This router's Loopback0 address (also its BGP router-id).
<RR_LOOPBACK_1/2> The two route-reflector loopbacks in this router's AS.
<ISIS_INSTANCE> The router's IS-IS instance tag.
<MGMT_INTERFACE> Interface whose source IP the collector should see.
<GNMI_USER> GNMI_USERNAME in .env — the user Telegraf authenticates as.
<GNMI_PASS> GNMI_PASSWORD in .env.
<NETCONF_USER> IOSXR_NETCONF_USER in .env — user the automation logs in as.

Vendor scope

IOS-XR only. The four ingest paths themselves (BMP, BGP-LS, gNMI, NETCONF) are standards, so the behavior the stack expects is vendor-neutral — see the "Extending to another vendor" section in the guide. Only the syntax below is IOS-XR-specific; a sibling router-blueprints/<vendor>/ tree can be added the same way once someone has an end-to-end deployment to base it on.

Credentials

Credentials come from your stack's .env. There is no shipped default — whatever you set for IOSXR_NETCONF_USER, IOSXR_NETCONF_PASS, GNMI_USERNAME, and GNMI_PASSWORD is what the fragments' user creation blocks must match. Standardize on one account per role (read-only for gNMI, config-capable for NETCONF) rather than reusing shell logins.