Releases: bgpfix/bgpipe
Release list
v0.22.0
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.gzSupported: 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.json4.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: MRTTABLE_DUMPandTABLE_DUMP_V2RIB snapshots, with peer tagging and prefix bundlingaspa:--first-hopoption- 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:--permanentkeeps withdrawals; corrected the--min-lengtherror messagelisten: close the listener on error pathsspeaker: invalid--idreports an error instead of panickingconfig: 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 failurepprof: standalone server support and a shutdown fixrv-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_DUMPandTABLE_DUMP_V2parsing plus RIB-to-UPDATE conversion inmrt.Reader metapackage carrying per-message parser metadata, replacing the olddirpackage
Fixed
attrs: out-of-bounds panic decoding IPv6 flowspecrtr: flush the cache on every full resync, so stale VRP and ASPA records no longer survive into a new snapshotrtr: clear serial state when sending a Reset Query, preventing a stale Serial Query on a fresh connectionrtr: fixed-version clients no longer drift on reconnect; only auto-negotiation adjusts the versionrtr: a version downgrade reconnects instead of resending on the same connectionmrt: 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
v0.21.0
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
v0.20.0
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
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
What's Changed
- docs: add json, attr, time, dir, seq filter documentation by @pforemski in #31
Full Changelog: v0.17.3...v0.18.0