#bgp #ip #bgpkit #rpki #system-information #mrt #lookup

bgpkit-commons

A library for common BGP-related data and functions

15 unstable releases (6 breaking)

0.7.3 Oct 31, 2024
0.6.0 Jun 26, 2024
0.5.2 Mar 21, 2024
0.4.3 Nov 29, 2023

#1393 in Network programming

Download history 3/week @ 2024-08-14 11/week @ 2024-08-21 6/week @ 2024-09-18 8/week @ 2024-09-25 274/week @ 2024-10-02 189/week @ 2024-10-09 22/week @ 2024-10-16 125/week @ 2024-10-30 32/week @ 2024-11-06 4/week @ 2024-11-13 5/week @ 2024-11-20

52 downloads per month
Used in bgpkit-broker

MIT license

77KB
2K SLoC

BGPKIT Commons

This readme is generated from the library's doc comments using cargo-readme. Please refer to the Rust docs website for the full documentation

Crates.io Docs.rs License Discord

Overview

BGPKIT-Commons is a library for common BGP-related data and functions.

It provides the following modules:

  • mrt_collectors: public RouteViews and RIPE RIS MRT mrt_collectors information extracted from their official APIs
  • asinfo: Autonomous System (AS) information and country lookup
  • countries: country code to name and other information lookup
  • rpki: RPKI validation data. Historical data from RIPE NCC and real-time data from Cloudflare
  • bogons: IP prefix and ASN bogon lookup
  • as2rel: AS-level relationship data, generated by BGPKIT

Basic Usage

Add bgpkit-commons to your Cargo.toml's dependencies section:

bgpkit-commons = "0.7"

bgpkit-commons is designed to load only the data you need. Here is an example of checking if an ASN is a bogon ASN:

use bgpkit_commons::BgpkitCommons;

let mut bgpkit = BgpkitCommons::new();
bgpkit.load_bogons().unwrap();
assert!(bgpkit.bogons_match("23456").unwrap());

The common steps include:

  1. create a mutable BgpkitCommons instance
  2. load the data you need by calling bgpkit.load_xxx() functions
  3. use the data by calling the corresponding functions, named as bgpkit.xxx_yyy()

For detailed usages, please refer to the module documentation.

Feature Flags

  • rustls (default): use rustls instead of native-tls for the underlying HTTPS requests
  • native-tls: use native-tls as the backend

License

MIT

Dependencies

~6–23MB
~377K SLoC