Skip to content

Releases: bgpfix/bgpipe

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 22:43

Highlights

MRT table dumps: read RIB snapshots as BGP updates

bgpipe could already read MRT update dumps. It now reads table dumps too, so a full
RIB snapshot from RouteViews or RIPE RIS becomes a stream of BGP UPDATE messages:

bgpipe -o -- read https://data.ris.ripe.net/rrc01/latest-bview.gz

Supported: TABLE_DUMP_V2 (PEER_INDEX_TABLE, RIB_IPV4_UNICAST, RIB_IPV6_UNICAST)
and legacy TABLE_DUMP (v1). Each RIB entry becomes a synthetic UPDATE tagged with
PEER_AS and PEER_IP, and consecutive prefixes sharing attributes are bundled into one
message, the way a real router would pack them.

The point is not the parser. Because snapshots enter the pipeline as ordinary updates,
every existing stage works on them unchanged, which makes things like RPKI-validating an
entire routing table a one-liner:

bgpipe --rpki <cache> -- read rib.20260723.0600.bz2 \
    -- rov --invalid keep \
    -- grep 'tag[rov/status] == INVALID' \
    -- write invalid-routes.json

4.1M routes parse in about 7 seconds and validate in about 8 on a laptop. Output was
checked route for route against bgpkit-parser on RouteViews v1, v2 and IPv6 RIBs plus a
RIPE RIS bview, and matches exactly. RIB file names (rib.*, bview.*, latest-bview.gz)
are auto-detected. See the new MRT reference.

Output tail loss fixed

The write stage returned as soon as its context was cancelled, without draining messages
already queued for it. On normal pipeline completion the cancel arrives after everything
is queued, so an arbitrary tail of the output was silently dropped, nondeterministically,
on any file read. If you have generated files with bgpipe, they may be short. Both write
and the shared shutdown path now drain before exiting.

Added

  • read: MRT TABLE_DUMP and TABLE_DUMP_V2 RIB snapshots, with peer tagging and prefix bundling
  • aspa: --first-hop option
  • Auto-detection of RouteViews and RIPE RIS RIB file names

Fixed

  • write: dropped an arbitrary tail of the output at shutdown
  • core: buffered output could be lost at pipeline shutdown
  • update: no longer adds path attributes to pure withdrawals (RFC 4271)
  • limit: --permanent keeps withdrawals; corrected the --min-length error message
  • listen: close the listener on error paths
  • speaker: invalid --id reports an error instead of panicking
  • config: empty stage arguments are rejected cleanly instead of panicking
  • HTTP API: no panic when two stages produce colliding slugs
  • RPKI: reconnect immediately on RTR version downgrade; warn when an RTR v1 server is used with ASPA
  • RPKI: idempotent metric registration, fixing a panic under go test -count>1
  • extio: return pooled buffers on send failure
  • pprof: standalone server support and a shutdown fix
  • rv-live: cleanup and documentation corrections

Docs and testing

  • New MRT reference page covering both dump families, peer tags, bundling, format detection and use cases
  • New HTTP API reference
  • Docker-based integration suite against GoBGP, BIRD, FRR, StayRTR and rtrtr, covering transparent proxying, MRT replay, ASPA over RTR and ROA revocation
  • Numerous stage documentation corrections (speaker, update, rv-live, connect, filters, quickstart)

bgpfix v0.20.1 to v0.22.1

bgpipe's BGP library moved three releases in this cycle.

Added

  • MRT TABLE_DUMP and TABLE_DUMP_V2 parsing plus RIB-to-UPDATE conversion in mrt.Reader
  • meta package carrying per-message parser metadata, replacing the old dir package

Fixed

  • attrs: out-of-bounds panic decoding IPv6 flowspec
  • rtr: flush the cache on every full resync, so stale VRP and ASPA records no longer survive into a new snapshot
  • rtr: clear serial state when sending a Reset Query, preventing a stale Serial Query on a fresh connection
  • rtr: fixed-version clients no longer drift on reconnect; only auto-negotiation adjusts the version
  • rtr: a version downgrade reconnects instead of resending on the same connection
  • mrt: bounded table dump peer state and no peer index wraparound, so a corrupt or hostile v1 dump cannot exhaust memory or misattribute routes to the wrong peer (v0.22.1)

Performance

  • Attribute objects and scratch buffers are reused across parse and marshal cycles

Note for library users: the dir package was replaced by meta, and NoCtx was
renamed back to NoTags on the MRT and BMP readers. This does not affect the bgpipe CLI.

Full Changelog: v0.21.0...v0.22.0

v0.21.1

Choose a tag to compare

@github-actions github-actions released this 03 Jul 14:05
c796101

What's Changed

Full Changelog: v0.21.0...v0.21.1

v0.21.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 12:20
cb1bc04

What's Changed

  • RPKI rov/aspa stages, shared cache, transparent proxy mode by @pforemski in #36

Full Changelog: v0.20.1...v0.21.0

v0.20.1

Choose a tag to compare

@github-actions github-actions released this 10 Apr 12:59

Full Changelog: v0.20.0...v0.20.1

v0.20.0

Choose a tag to compare

@github-actions github-actions released this 10 Apr 12:37
b30dfdf

What's Changed

  • feat: ASPA path validation in rpki stage + HTTP auth, websocket and stage fixes by @pforemski in #34

Full Changelog: v0.19.0...v0.20.0

v0.19.0

Choose a tag to compare

@github-actions github-actions released this 06 Mar 13:12
eb58e07

What's Changed

  • feat: HTTP API, Prometheus metrics stage, RPKI metrics by @pforemski in #32

Full Changelog: v0.18.0...v0.19.0

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 16 Feb 16:29
c4c34a8

What's Changed

  • docs: add json, attr, time, dir, seq filter documentation by @pforemski in #31

Full Changelog: v0.17.3...v0.18.0

v0.17.3

Choose a tag to compare

@github-actions github-actions released this 12 Feb 13:17

Full Changelog: v0.17.2...v0.17.3

v0.17.2

Choose a tag to compare

@github-actions github-actions released this 12 Feb 12:59
34dd9f9

What's Changed

Full Changelog: v0.17.1...v0.17.2

v0.17.1

Choose a tag to compare

@pforemski pforemski released this 10 Feb 15:52
c1cbc9b

The release updates bgpipe documentation and navigation, bumps the bgpfix dependency, and introduces a configurable stage stop timeout along with lifecycle unit tests to validate stage start/stop behavior (see #29).