High-performance tools for BGP data discovery, parsing, and investigation. Built by network operators, for network operators.
Step 1
Discover files (Broker)
Select a time window, collectors, and dump type to get deterministic URLs.
ts_start / ts_end → URL list
Step 2
Parse data (Parser)
Stream parse MRT/BGP/BMP and apply filters early to reduce CPU and output.
BgpElem iterator + filters
Step 3
Investigate (Monocle)
Use a single CLI for search, parse, inspect, and RPKI validation with local caching.
inspect / search / rpki
discover → parse → investigate
Get Started with BGPKIT SDKs
Search BGP archives and parse data with our SDKs. Available in Rust and Python.
Search BGP files and find relevant announcements
use bgpkit_broker::BgpkitBroker;
use bgpkit_parser::BgpkitParser;
// Find UPDATE files within a time window, then parse them.
// Broker timestamps accept RFC3339, unix, or pure dates.
let broker = BgpkitBroker::new()
.ts_start("2024-01-01T00:00:00Z")
.ts_end("2024-01-01T01:00:00Z")
.data_type("updates");
// Parse each matching file and print elements originated from AS13335.
for item in broker.into_iter().take(3) {
let parser = BgpkitParser::new(&item.url)
.unwrap()
.add_filter("origin_asn", "13335").unwrap();
for elem in parser {
println!("{}", elem);
}
} Search BGP files and find relevant announcements
import bgpkit
# Parse an MRT file with filters (remote URL)
parser = bgpkit.Parser(
url="https://spaces.bgpkit.org/parser/update-example",
filters={"peer_ips": "185.1.8.65, 2001:7f8:73:0:3:fa4:0:1"},
)
count = 0
for elem in parser:
count += 1
print(elem)
assert count == 4227 All-in-one CLI tool for BGP investigation
# Install (macOS Homebrew)
brew install monocle
# Search for announcements for a prefix during a time window
monocle search -t 2024-01-01T00:00:00Z -T 2024-01-01T00:01:00Z -c rrc00 -p 1.1.1.0/24 -m a
# Parse a single (remote) MRT file with filters
monocle parse https://data.ris.ripe.net/rrc00/2024.01/updates.20240101.0000.gz -p 1.1.1.0/24 -m a | head -5
# Unified AS / prefix inspection
monocle inspect 13335
monocle inspect 1.1.1.0/24
# RPKI validation (prefix + ASN)
monocle rpki validate 1.1.1.0/24 13335
# Help
monocle --help Why Choose BGPKIT?
Built for performance, designed for simplicity
High Performance
Built in Rust for maximum speed. Comparable to C-based implementations like bgpdump.
Easy to Use
Ergonomic SDKs that get you started with just a few lines of code. Battery-included with remote file support.
Actively Maintained
Regular updates, bug fixes, and support for the latest BGP RFCs. Community-driven development.
Open Source
MIT licensed and completely open source. Use it anywhere, contribute back, or build commercial products.
High-performance MRT/BGP/BMP message parsing library with ergonomic SDKs. Built for speed, designed for simplicity.
Multiple Formats
Supports MRT, BGP, BMP messages. Handles both local and remote files with automatic decompression.
Powerful Filtering
Built-in filter system for prefix, ASN, peer, time range, and AS path filtering.
Real-time Streaming
Support for real-time data streams including RIS-Live and BMP/OpenBMP messages.
Parse BGP data with filters
use bgpkit_parser::BgpkitParser;
// Filter by IP prefix during parsing (built-in filter mechanism)
let parser = BgpkitParser::new(
"http://archive.routeviews.org/bgpdata/2021.10/UPDATES/updates.20211001.0000.bz2"
).unwrap()
.add_filter("prefix", "211.98.251.0/24").unwrap();
for elem in parser {
println!("{}", elem);
} Search BGP archives with advanced filters
use bgpkit_broker::BgpkitBroker;
// Configure broker with builder pattern
let broker = BgpkitBroker::new()
.ts_start("2022-01-01") // RFC3339, Unix epoch, or pure dates
.ts_end("2022-01-02T00:00:00Z")
.collector_id("rrc00,route-views2") // comma-separated collectors
.project("riperis") // "riperis" or "routeviews"
.data_type("rib") // "rib" or "updates"
.page_size(100) // 1-100000
.page(1);
// Iterate (auto-pagination)
for item in &broker {
println!("{}", item);
} Search and discover BGP archive files across public data collection projects. Real-time indexing with powerful filtering capabilities.
Real-time Indexing
BGP data files are indexed in near real-time with less than 2 minutes delay.
Multiple Data Sources
Indexes data from RouteViews and RIPE RIS with 70+ collectors and 1000+ full-feed peers.
Self-hostable
Deploy your own broker instance with Docker or CLI for custom data sources and privacy.
See through all Border Gateway Protocol (BGP) data with a monocle. All-in-one CLI tool for BGP data investigation, analysis, and monitoring.
All-in-One Tool
Parse, search, analyze - everything you need for BGP data investigation in one command.
RPKI Integration
Built-in RPKI validation, ROA parsing, and prefix origin validation using Cloudflare's validator.
Rich Utilities
Time conversion, country lookups, AS information, and IP address details - all built-in.
One tool, infinite possibilities
# Search for BGP announcements for a prefix during a time window
monocle search -t 2024-01-01T00:00:00Z -T 2024-01-01T00:01:00Z -c rrc00 -p 1.1.1.0/24 -m a
# Inspect an ASN (unified lookup)
monocle inspect 13335
# Validate a prefix-ASN pair with cached RPKI data
monocle rpki validate 1.1.1.0/24 13335 Trusted by Industry Leaders
Organizations worldwide rely on BGPKIT for BGP data analysis
Using BGPKIT in production? Let us know!
Open-Source Sponsors
Thanks to our amazing sponsors who support BGPKIT development
Want to support BGPKIT development?
Become a SponsorReady to Get Started?
Join thousands of developers and researchers using BGPKIT for BGP data analysis. Start your journey into BGP data processing today.