ProbLink is a probabilistic AS relationship inference algorithm, which does inference based on key AS-interconnection features derived from stochastically informative signals. Learn more about ProbLink in our NSDI paper.
To get started using ProbLink, clone or download this GitHub repo.
Install Python dependencies
$ pip install --user -r requirements.txtPrepare BGP paths
You can prepare BGP paths of your interest and save them to a file 'rib.txt'. The ASes on each BGP path should be delimited by '|' on each line, for example, AS1|AS2|AS3.
We provide a script (bgp_path_downloader.py) for downloading BGP paths collected from all route collectors in RouteViews and RIPE NCC towards IPv4 prefixes by using BGPStream. Follow the instructions to install BGPStream V2 first and then install pybgpstream.
$ python bgp_path_downloader.py -s <start date> -d <duration (in seconds)>
# for example, to download BGP paths on 06/01/2019 from all available route collectors
$ python bgp_path_downloader.py -s 06/01/2019 -d 86400
# BGP paths are written to 'rib.txt'.Download AS to Organization Mapping Dataset from CAIDA
Download PeeringDB Dataset from CAIDA
Parse downloaded BGP paths
$ python bgp_path_parser.py <peeringdb file>
# Output is written to 'sanitized_rib.txt'.Run AS-Rank algorithm to bootstrap ProbLink
$ ./asrank.pl sanitized_rib.txt > asrank_result.txtRun ProbLink
$ python problink.py -p <peeringdb file> -a <AS to organization mapping file><provider-as>|<customer-as>|-1
<peer-as>|<peer-as>|0
<sibling-as>|<sibling-as>|1
You can contact us at [email protected].
You may want to download the monthly inferred AS relationships here.