Skip to content
Thomas Mangin edited this page May 14, 2026 · 5 revisions

Pre-Alpha. This page describes behavior that may change.

Ze implements RFC 7854 BMP in both directions: as a receiver (accepting feeds from routers) and as a sender (streaming state to collectors). Adj-RIB-Out support per RFC 8671 is included.

Configuration

Receiver

The receiver listens for TCP connections from BMP-enabled routers:

environment {
    bmp {
        enabled true;
        server default {
            ip 0.0.0.0;
            port 11019;
        }
        max-sessions 100;
    }
}
Field Default Description
enabled false Enable BMP receiver.
server - Named listener endpoints (same pattern as SSH/web).
port 11019 Listen TCP port (IANA assigned for BMP).
max-sessions 100 Maximum concurrent BMP sessions (1-1000).

Multiple listeners are supported. Port conflicts with other ze listeners are detected at config commit time.

Sender

The sender connects to external BMP collectors:

bgp {
    bmp {
        sender {
            collector monitoring-station {
                address 10.0.0.100;
                port 11019;
            }
            route-monitoring-policy pre-policy;
            statistics-timeout 0;
        }
    }
}
Field Default Description
collector - Named collector endpoints.
route-monitoring-policy all pre-policy (Adj-RIB-In), post-policy (Adj-RIB-Out, RFC 8671), or all.
statistics-timeout 0 Seconds between statistics reports (0 = disabled).

The sender reconnects automatically with exponential backoff (30s to 720s).

CLI commands

Command Description
ze bmp sessions Active BMP receiver sessions (router address, sysName, uptime).
ze bmp peers Monitored BGP peers (AS, BGP ID, up/down status).
ze bmp collectors Sender collector connection status.
ze bmp rib show Show all BMP-monitored routes.

Protocol details

Ze handles all 7 BMP message types:

Type Receiver Sender
Initiation Parses sysName/sysDescr Sends ze identity on connect
Termination Closes session cleanly Sends before disconnect
Peer Up Tracks monitored peer Sends on BGP Established
Peer Down Marks peer down Sends on BGP session close
Route Monitoring Decodes inner BGP UPDATE Wraps received/sent UPDATEs
Statistics Report Stores per-peer counters Periodic (if configured)
Route Mirroring Logs raw BGP PDUs Not implemented (follow-up)

Adj-RIB-Out (RFC 8671)

The sender wraps sent BGP UPDATEs as Route Monitoring with O+L flags (post-policy). The route-monitoring-policy controls which direction(s) are streamed.

Looking glass integration

When the BMP receiver is enabled, monitored routes are stored in the RIB under a separate "bmp" protocol namespace. These routes are visible through dedicated looking glass endpoints and CLI commands but never enter best-path selection or the FIB.

API endpoints

Endpoint Description
GET /api/looking-glass/protocols/bmp List BMP-monitored peers.
GET /api/looking-glass/routes/bmp/{name} Routes from a specific BMP peer.

The {name} parameter is the composite peer key in <router>:<peer-address> format (e.g., 10.0.0.1:12345:192.168.1.1). Responses follow the birdwatcher format for compatibility with Alice-LG.

Route lifecycle

  • Injection: Route Monitoring messages inject BGP UPDATE routes under a BMP-specific ProtocolID with composite keys <router>:<peer-address>.
  • Peer Down: All routes for the monitored peer are withdrawn.
  • Session disconnect: All routes for all peers of that router are withdrawn.
  • Best-path isolation: BMP routes are stored under a separate ProtocolID. The best-path algorithm only iterates BGP peers, so BMP routes are automatically excluded with zero filter code.

BMP routes are separate from BGP routes: ze bgp rib show excludes BMP-monitored routes, and ze bmp rib show excludes real BGP routes.

Limitations

  • Peer Up messages contain minimal synthetic OPENs built from AS metadata. Capabilities are not reflected.
  • Per-NLRI ribout dedup is not yet implemented; all UPDATEs are forwarded as-is.
  • Loc-RIB monitoring (RFC 9069) is not yet wired.
  • Route Mirroring encoding on the sender side is not implemented.

See also

Adapted from main/docs/guide/bmp.md.

Home

About

First Steps

Configuration

Operation

Interfaces

Plugins

Plugin Development

Chaos Testing

Blueprints

Development

Reference

Clone this wiki locally