Monitoring 2,800 BGP Sessions using BMP Protocol#
NANOG 97 digest Program Core pick 1–3 June 2026
Pavel Odintsov – FastNetMon Inc (production network: Gcore)
- Why: Per-peer, route-level BGP visibility at scale is something SNMP, gNMI, and periodic full-table dumps each demonstrably fail to deliver — and this talk backs the claim with numbers rather than assertion.
- What: Benchmarks on a ~1.04M-route table: GoBGP text dump 2.0GB/73s; JSON 543MB/75s; gRPC/protobuf 25.5–27.5s; binary NLRI 15–15.5s; Rotonda (Rust, NLnet Labs) 9.6s JSON with 6.5x lower peak memory than GoBGP. Then the case for BMP (RFC 7854): per-peer exports across pre-policy, post-policy, and Loc-RIB stages, plus per-session stats (policy-rejected prefixes, duplicate advertisements, loop-invalidated updates, adj-rib-in/loc-rib counts). Production numbers: 2,728 peers and 68.9M routes re-emitted as a 9.8GB BMP dump in ~318s.
- How: BMP stations configured on Nokia, Juniper, Cisco XR, and Arista (config snippets shown for all four); Rotonda used as BMP collector and re-emitter, so downstream consumers get one initial full-table dump plus incremental updates instead of repeated snapshots. A Netomics fork addresses Rotonda's memory wall (112GB at 80M routes) with gzip, JSON streaming, TLS, and BMP output.
- Where applicable: Multi-vendor networks of meaningful scale (Gcore: 210+ PoPs, 4 routing platforms, 194M routes). Open-source tooling throughout (GoBGP, Rotonda, benchmark code published). Explicitly complements rather than replaces SNMP/gNMI for session-level health and hardware counters.
