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 filefitlers
: optional a dictionary of filters, available filters are:origin_asn
: origin AS numberprefix
: exact match prefixprefix_super
: exact prefix and its super prefixesprefix_sub
: exact prefix and its sub prefixesprefix_super_sub
: exact prefix and its super and sub prefixes
peer_ip
: peer's IP addresspeer_ips
: peers' IP addressespeer_asn
: peer's ASNtype
: message type (withdraw
orannounce
)ts_start
: start unix timestampts_end
: end unix timestampas_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 timestampelem_type
: str,A
, announcement;W
, withdrawnpeer_ip
: str, peer IP addresspeer_asn
: int, peer ASNprefix
: str, the announced/withdrawn IP prefixnext_hop
: str or None, next hop IP addressas_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 prefixorigin
: str or None,IGP
,EGP
, orINCOMPLETE
local_pref
: int or None, local preferencemed
: int or None, multi-exitmultiple exit discriminatorcommunities
: [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, andNAG
for non-atomic aggregateaggr_ip
: str or None, aggregator IP addressaggr_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 formatts_end
: end timestamp for MRT file, UNIX timestamp formatcollector
: collector name, e.g.rrc00
orroute-views2
data_type
:rib
orupdate
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 instr
asn
: AS number to query inint
tal
: trust anchor to query instr
, 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 lengthdebug
: boolean toggle to display debug information, defaultFalse
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
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72e253d4c2edbe7fad1f62e06d48942662ae67746d05a52aeab45b622e66a41f |
|
MD5 | 5cb6c4bfe762fc5a249a2376b124a99d |
|
BLAKE2b-256 | ddb2f5ae8d81e68d793ae303da18208d0e9e7d7a6cbed9c272965a998614f303 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f86a151b1864f61d5be08b3858f64d7435eba9e935a572f84f4a1d10723e42a |
|
MD5 | 0d348a921990ffc954ac5b900e880697 |
|
BLAKE2b-256 | ac3e33064532b9a191fabca2c4064beaab100f69e79c7e1e2af18b50a847dd99 |