Skip to main content

BGPKIT tools Python bindings

Project description

PyBGPKIT

Python bindings for BGPKIT software. For all software offerings, please check out our GitHub repository at https://github.com/bgpkit.

SDKs

BGPKIT Parser

Original Rust BGPKIT Parser code available at: https://github.com/bgpkit/bgpkit-parser-py

Example:

import bgpkit
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

The Parser constructor takes the following parameters:

  • url: the URL or local file path toward an MRT file
  • fitlers: optional a dictionary of filters, available filters are:
    • origin_asn: origin AS number
    • prefix: exact match prefix
      • prefix_super: exact prefix and its super prefixes
      • prefix_sub: exact prefix and its sub prefixes
      • prefix_super_sub: exact prefix and its super and sub prefixes
    • peer_ip: peer's IP address
    • peer_ips: peers' IP addresses
    • peer_asn: peer's ASN
    • type: message type (withdraw or announce)
    • ts_start: start unix timestamp
    • ts_end: end unix timestamp
    • as_path: regular expression for AS path string
  • cache_dir: optional string for specifying a download cache directory

Each returning item has the following field:

  • timestamp: float, unix timestamp
  • elem_type: str, A, announcement; W, withdrawn
  • peer_ip: str, peer IP address
  • peer_asn: int, peer ASN
  • prefix: str, the announced/withdrawn IP prefix
  • next_hop: str or None, next hop IP address
  • as_path: str or None, AS path str, e.g. 60924 6939 58715 63969 135490
  • origin_asns: [int] or None, array of originating ASNs of the prefix
  • origin: str or None, IGP, EGP, or INCOMPLETE
  • local_pref: int or None, local preference
  • med: int or None, multi-exitmultiple exit discriminator
  • communities: [str] or None, community values, e.g. ['60924:6', '60924:150', '60924:502', '60924:2002', 'ecop:67:0:000000000000']
  • atomic: str, AG for atomic aggregate, and NAG for non-atomic aggregate
  • aggr_ip: str or None, aggregator IP address
  • aggr_asn: int or None, aggregator ASN

BGPKIT Broker

Original Rust version BGPKIT Broker code available at: https://github.com/bgpkit/bgpkit-broker

Example:

import bgpkit
broker = bgpkit.Broker()
items = broker.query(ts_start="1634693400", ts_end="2021-10-20T01:30:00")
for item in items:
    print(item)
print(len(items))
assert len(items) == 58

Available fields:

  • Broker()
    • api_url: the base URL for the BGPKIT Broker instance. Default: https://api.broker.bgpkit.com/v2
    • page_size: the number of items per API call (no need to change it). Default: 100.
  • query()
    • ts_start: start timestamp for MRT file, UNIX timestamp format
    • ts_end: end timestamp for MRT file, UNIX timestamp format
    • collector: collector name, e.g. rrc00 or route-views2
    • data_type: rib or update

BGPKIT ROAS Lookup

BGPKIT ROAS lookup API provides lookup for historical RPKI ROAS data lookup. The following example shows a query that asks for all the validated ROA payload for RIPE NCC on the date of 2018-01-01.

import bgpkit
roas = bgpkit.Roas()
data = roas.query(debug=True, asn=3333, date="2018-01-01")
for entry in data:
    print(entry)
assert len(data) == 10
{'tal': 'ripencc', 'prefix': '193.0.0.0/21', 'asn': 3333, 'max_len': 21, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}
{'tal': 'ripencc', 'prefix': '193.0.10.0/23', 'asn': 3333, 'max_len': 23, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}
{'tal': 'ripencc', 'prefix': '193.0.12.0/23', 'asn': 3333, 'max_len': 23, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}
{'tal': 'ripencc', 'prefix': '193.0.18.0/23', 'asn': 3333, 'max_len': 23, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}
{'tal': 'ripencc', 'prefix': '193.0.20.0/23', 'asn': 3333, 'max_len': 23, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}
{'tal': 'ripencc', 'prefix': '193.0.22.0/23', 'asn': 3333, 'max_len': 23, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}
{'tal': 'ripencc', 'prefix': '193.0.24.0/22', 'asn': 3333, 'max_len': 26, 'date_ranges': [['2017-01-14', '2018-12-27'], ['2019-01-03', '2019-06-24']]}
{'tal': 'ripencc', 'prefix': '193.0.24.0/24', 'asn': 3333, 'max_len': 24, 'date_ranges': [['2017-02-25', '2018-12-27'], ['2019-01-03', '2019-06-24']]}
{'tal': 'ripencc', 'prefix': '2001:610:240::/42', 'asn': 3333, 'max_len': 42, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}
{'tal': 'ripencc', 'prefix': '2001:67c:2e8::/48', 'asn': 3333, 'max_len': 48, 'date_ranges': [['2015-03-10', '2016-01-26'], ['2016-01-30', '2018-12-27'], ['2019-01-03', '2019-10-21'], ['2019-10-23', '2020-02-23'], ['2020-02-25', '2020-04-05'], ['2020-04-07', '2020-08-02'], ['2020-08-04', '2021-04-21'], ['2021-04-23', '2021-04-24'], ['2021-04-28', '2022-02-26']]}

Available query fields:

  • Roas()
    • api_url: the base URL for the BGPKIT ROAS instance. Default: https://api.roas.bgpkit.com
  • query()
    • prefix: prefix to query in str
    • asn: AS number to query in int
    • tal: trust anchor to query in str, available values: ripencc, arin, apnic, afrinic, lacnic
    • date: date to query, format: YYYY-MM-DD, e.g. 2022-01-01
    • max_len: filter results to only VRP's with specific max length
    • debug: boolean toggle to display debug information, default False

Build and Upload

Install python-build module:

python3 -m pip install build twine

Build current package:

python3 -m build

Upload to PyPi (needs credentials)

python3 -m twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybgpkit-0.5.2.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

pybgpkit-0.5.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file pybgpkit-0.5.2.tar.gz.

File metadata

  • Download URL: pybgpkit-0.5.2.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for pybgpkit-0.5.2.tar.gz
Algorithm Hash digest
SHA256 72e253d4c2edbe7fad1f62e06d48942662ae67746d05a52aeab45b622e66a41f
MD5 5cb6c4bfe762fc5a249a2376b124a99d
BLAKE2b-256 ddb2f5ae8d81e68d793ae303da18208d0e9e7d7a6cbed9c272965a998614f303

See more details on using hashes here.

File details

Details for the file pybgpkit-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: pybgpkit-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for pybgpkit-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7f86a151b1864f61d5be08b3858f64d7435eba9e935a572f84f4a1d10723e42a
MD5 0d348a921990ffc954ac5b900e880697
BLAKE2b-256 ac3e33064532b9a191fabca2c4064beaab100f69e79c7e1e2af18b50a847dd99

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page