Drop-in replacement for PyBGPStream using BGPKIT
Project description
PyBGPFlux
A drop-in replacement for PyBGPStream using BGPKIT
Features
- Generates time-ordered BGP messages on the fly from RIBs and updates MRT files of multiple collectors
- Stream the same BGP messages as PyBGPStream, enabling seamless, drop-in replacement
- Lazy loading consumes minimal memory, making it suitable for large datasets
- Multiple BGP parsers supported:
pybgpkit(default but slow),bgpkit-parser,bgpdumpandpybgpstreamsingle file backend (the latter three are system dependencies) - Caching with concurrent downloading fully compatible with the BGPKIT parser's caching functionality.
- Performance: for updates, typically 3–10× faster than PyBGPStream; for RIB-only processing, currently about 3–4× slower (see perf.md for test details).
- A CLI tool
Quick start
Installation:
pip install pybgpflux
Usage:
import datetime
from pybgpflux import BGPStreamConfig, BGPStream
config = BGPStreamConfig(
start_time=datetime.datetime(2010, 9, 1, 0, 0),
end_time=datetime.datetime(2010, 9, 1, 1, 59),
collectors=["route-views.wide", "rrc04"],
data_types=["ribs", "updates"],
)
stream = BGPStream.from_config(config)
n_elems = 0
for elem in stream:
n_elems += 1
print(f"Processed {n_elems} BGP elements")
or in the terminal:
pybgpflux --start-time 2010-09-01T00:00:00 --end-time 2010-09-01T01:59:00 --collectors route-views.sydney route-views.wide --data-types updates > updates.txt
Motivation
PyBGPStream is great but the implementation is complex and stops working when UC San Diego experiences a power outage.
BGPKIT broker and parser are great, but cannot be used to create an ordered stream of BGP messages from multiple collectors and multiple data types.
Missing features
- Live mode for RouteViews collectors
- Some PyBGPStream data interface options like csv or sqlite
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pybgpflux-0.5.1.tar.gz.
File metadata
- Download URL: pybgpflux-0.5.1.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3c3417d03f43c95b0fa1fdd0059f774aca98a1dfc2497623ce0bb9d39b2c84f
|
|
| MD5 |
4462c3fe438e648cbf8a52fc1e0483f7
|
|
| BLAKE2b-256 |
928cd08343004fa6918d0d131e09ec2da13178a456539b51b25b3a02b7027e6a
|
File details
Details for the file pybgpflux-0.5.1-py3-none-any.whl.
File metadata
- Download URL: pybgpflux-0.5.1-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
637508544f66fdc196462f8d438cb7b296324910f4b542588520ed3e6349df6c
|
|
| MD5 |
2cf4f266dc80cf23f45246626f521bc4
|
|
| BLAKE2b-256 |
be7e09a062008cff6defa8cd94146d365051a5a801f0004e425821b5a696f5cd
|