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 filefilters: 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 (withdraworannounce)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 135490origin_asns: [int] or None, array of originating ASNs of the prefixorigin: str or None,IGP,EGP, orINCOMPLETElocal_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,AGfor atomic aggregate, andNAGfor 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/v2page_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 or string formatts_end: end timestamp for MRT file, UNIX timestamp or string formatcollector_id: collector name, e.g.rrc00orroute-views2data_type:riborupdate
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 instrasn: AS number to query ininttal: trust anchor to query instr, available values:ripencc,arin,apnic,afrinic,lacnicdate: date to query, format:YYYY-MM-DD, e.g.2022-01-01max_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 --skip-existing 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
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 pybgpkit-0.6.2.tar.gz.
File metadata
- Download URL: pybgpkit-0.6.2.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c7f8df1fcc4a773d0dbacf0b3b66b0a5e6f71c87a71a4739ef58561bb3be47f
|
|
| MD5 |
57476729590007ae57d13a3563d163c8
|
|
| BLAKE2b-256 |
e20a935c823e81f75712e8f04f3cfe57974b0bb5f0ee3050b1e1ff3ac29e3d15
|
File details
Details for the file pybgpkit-0.6.2-py3-none-any.whl.
File metadata
- Download URL: pybgpkit-0.6.2-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24f601bd5ef33818237de017cd1d29fde852fe6306e077b4048e6754b5ebf017
|
|
| MD5 |
a8f5261d4e195164065b97b04fc73a2b
|
|
| BLAKE2b-256 |
fac039fc38ef729b35146c3c34c284a81a27c0fd306dc56009bb8fc877ef67ff
|